Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: rpetrov в Sep 19, 2008, 11:49



Титла: програмна реализация на asinh
Публикувано от: rpetrov в Sep 19, 2008, 11:49
Интересувам се от документация, описваща програмната реализация на "обратен хиперболичен синус" (в Си asinh). Така например, име на книга, глава, къде може да се прочете (интернет връзка), ще са от полза.
Функцията трябва да работи, без препълване, при числа с голяма експонента, например asinh(1.0000000000000002e+299).

Също става и посочване на програмна реализация, която е "public domain".

П.П.: Да погледна в кода - отдавна съм го направил, поне в 5 библитеки.


Титла: програмна реализация на asinh
Публикувано от: dvasilev в Sep 19, 2008, 13:45
Ако отговорът на горния пример е 689.1661, то може да хвърлиш поглед на следната GPL реализация, която е базирана на следната библиотека за "свободно използване" с автор един от авторите на тази книга.

Не би трябвало да имаш проблем да използваш кода в някакво твое приложение, но ако основният ти въпрос е защо acosh може да се апроксимира по съответния начин, от опит знам, че това не е най-рационалното запълване на времето.





Титла: програмна реализация на asinh
Публикувано от: rpetrov в Sep 19, 2008, 18:28
Това от cephes съм го прегледах и от там остана висящ въпросът, дали е "public domain"? GPL не става.


Титла: програмна реализация на asinh
Публикувано от: rpetrov в Sep 23, 2008, 19:34
Относно реализацията на asinh в cmath: защо за големи числа, се взимат тези, които са по-големи от 10^8 ?

Лесно ми е да го обясня, ако числото е по-голямо от 0.5/епсилон. Но така се получава, много, много голямо число.

Би трябвало границата 2^28 да е достатъчно (28 е половината от дължината на мантисата , ако не ме лъже паметта за  вътрешното представяне на число тип double).

Формулата за asinh при големи числа е ясно, че е базирана на това, че при тях sqrt(x*x+1) и sqrt(x*x) дават един и същ резултат.

Идеи за обосноваване на границата 2^28 ?