Автор Тема: програмна реализация на asinh  (Прочетена 1776 пъти)

rpetrov

  • Напреднали
  • *****
  • Публикации: 571
    • Профил
    • WWW
Интересувам се от документация, описваща програмната реализация на "обратен хиперболичен синус" (в Си asinh). Така например, име на книга, глава, къде може да се прочете (интернет връзка), ще са от полза.
Функцията трябва да работи, без препълване, при числа с голяма експонента, например asinh(1.0000000000000002e+299).

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

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

dvasilev

  • Напреднали
  • *****
  • Публикации: 200
  • Distribution: Kubuntu, Debian
  • Window Manager: KDE
    • Профил
    • WWW
програмна реализация на asinh
« Отговор #1 -: Sep 19, 2008, 13:45 »
Ако отговорът на горния пример е 689.1661, то може да хвърлиш поглед на следната GPL реализация, която е базирана на следната библиотека за "свободно използване" с автор един от авторите на тази книга.

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



Активен

rpetrov

  • Напреднали
  • *****
  • Публикации: 571
    • Профил
    • WWW
програмна реализация на asinh
« Отговор #2 -: Sep 19, 2008, 18:28 »
Това от cephes съм го прегледах и от там остана висящ въпросът, дали е "public domain"? GPL не става.
Активен

rpetrov

  • Напреднали
  • *****
  • Публикации: 571
    • Профил
    • WWW
програмна реализация на asinh
« Отговор #3 -: 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 ?
Активен