# commons-issues mailing list archives

##### Site index · List index
Message view
Top
From "Thomas Neidhart (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (MATH-905) FastMath.[cosh, sinh] do not support the same range of values as the Math counterparts
Date Sun, 25 Nov 2012 21:32:58 GMT
```
[ https://issues.apache.org/jira/browse/MATH-905?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13503560#comment-13503560
]

Thomas Neidhart commented on MATH-905:
--------------------------------------

Looks good to me.

Any specific reason why you prefer multiplication by 0.5 over division by 2, or just personal
preference?
Searching in the FastMath source, there are several occurrences of both variants.

> FastMath.[cosh, sinh] do not support the same range of values as the Math counterparts
> --------------------------------------------------------------------------------------
>
>                 Key: MATH-905
>                 URL: https://issues.apache.org/jira/browse/MATH-905
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 3.0
>            Reporter: Thomas Neidhart
>             Fix For: 3.1
>
>         Attachments: MATH-905.diff
>
>
> As reported by Jeff Hain:
> cosh(double) and sinh(double):
> Math.cosh(709.783) = 8.991046692770538E307
> FastMath.cosh(709.783) = Infinity
> Math.sinh(709.783) = 8.991046692770538E307
> FastMath.sinh(709.783) = Infinity
> ===> This is due to using exp( x )/2 for values of |x|
> above 20: the result sometimes should not overflow,
> but exp( x ) does, so we end up with some infinity.
> ===> for values of |x| >= StrictMath.log(Double.MAX_VALUE),
> exp will overflow, so you need to use that instead:
> for x positive:
> double t = exp(x*0.5);
> return (0.5*t)*t;
> for x negative:
> double t = exp(-x*0.5);
> return (-0.5*t)*t;

--
This message is automatically generated by JIRA.