tr29124_test
tr29124_test copied to clipboard
Add sinh(tanh(x)) and other similar functions.
Work on double exp integrals and recent fast math work in gcc indicates that sinh(tanh(x)), cosh(tanh(x)), sinh(atanh(x)), and cosh(atanh(x)). I'm not interested in optimizing but in accuracy.
Hi, do you have a pointer on what is needed for the hyperbolic functions? Are you interested in reliable series for e.g. sinh(tanh(x)) ?
On 6/21/19 9:01 AM, CaptainSifff wrote:
Hi, do you have a pointer on what is needed for the hyperbolic functions? Are you interested in reliable series for e.g. sinh(tanh(x)) ?
??? You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/emsr/tr29124_test/issues/165?email_source=notifications&email_token=AAOYYX2WABPWRBVAZE4KJQLP3TGKLA5CNFSM4GHV4E4KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYIMWSY#issuecomment-504417099, or mute the thread https://github.com/notifications/unsubscribe-auth/AAOYYX6J7PUPOLUZ77B3CNLP3TGKLANCNFSM4GHV4E4A.
Yes, I would like a good series for sinh(tanh(x)).
Maybe for sinh(a*tanh(x)) since these are used in double exponential quadrature rules (exp a = pi/2).
Thanks!
And directly evaluating that function is not fast enough? or lacks precision for certain values since some overflow/underflow occurs?
Hi Ed, I've got something to play for you... We consider the functions C(x) = Cosh(a Tanh(x)) and S(x) = Sinh(a Tanh(x)) and consider the behaviour for large x. Denoting real infinity as "inf" We find C(inf) = Cosh(a) and S(inf) = Sinh(a) I think I can show that the large-x behaviour is given by C(x) ~ C(inf) * F(a,x) and S(x) ~ S(inf) * F(a,x) with the same function F(a,x). Now we have F(a,x) = y(a,x) * K_1(y(a,x)) with y(a,x) = 2 * a * exp(-x) and K_1 denoting the modified Bessel function of the second kind (http://mathworld.wolfram.com/ModifiedBesselFunctionoftheSecondKind.html) Since y(a,x) becomes exponentially small for large x we can use any Series around x=0 for K_1. To give an approximation to first order that only relies on elementary functions we have: F(a,x) ~ 1 + a^2 * exp(-2x) * (-1+2 \gamma + 2* ln(a) -x) + ... Here \gamma is the Euler-Mascheroni constant(https://en.wikipedia.org/wiki/Euler%E2%80%93Mascheroni_constant) I get good agreement in Mathematica between C(x) evaluated in Mathematica for a=1 and x>20. If you have questions or my notation is unclear, just ask!
Forget what I have previously written... I found a "minor" bug in my calculation that makes everything far simpler.... To begin again: We consider the functions C(x) = Cosh(a Tanh(x)) and S(x) = Sinh(a Tanh(x)) and consider the behaviour for large x. Denoting real infinity as "inf" We find C(inf) = Cosh(a) and S(inf) = Sinh(a) I think I can show that the large-x behaviour is given by C(x) ~ C(inf) * F(a,x) and S(x) ~ S(inf) * F(a,x) with the same function F(a,x). Now we have F(a,x) = Cosh(2 * a * exp(-2 * x)) Since exp(-2 * x) becomes exponentially small for large x we can use any Series around x=0 for Cosh(x). To give an approximation to second order in exp(-2x) that only relies on elementary functions we have: F(a,x) ~ 1 + 2 * a^2 * exp(-4x) (more terms could be obtained from the Taylor series of cosh(x) but they are probably not required...) I get good agreement in Mathematica of C(x) evaluated in Mathematica for a=1 and x>20. If you have questions or my notation is unclear, just ask!
Very nice. I'm going to play with this myself. I'm not sure what I'd call these ;-) but we'll think of something.
the most unimaginative I could come up with is: C_a(x) := cosh(a * tanh(x)) S_a(x) := sinh( a * tanh(x))