# commons-issues mailing list archives

##### Site index · List index
Message view
Top
From Sébastien Brisard (Commented) (JIRA) <j...@apache.org>
Subject [jira] [Commented] (MATH-722) [math] Complex Tanh for "big" numbers
Date Fri, 27 Jan 2012 03:55:41 GMT
```
[ https://issues.apache.org/jira/browse/MATH-722?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13194419#comment-13194419
]

Sébastien Brisard commented on MATH-722:
----------------------------------------

I've run some tests comparing the two formulas: I didn't notice any major difference. Therefore
I suggest to stick with the existing formula.
Meanwhile, the fix proposed by Juan must be implemented. It can be proved mathematically that
for any value of {{b}}, the value of {{tanh(a + i * b)}} is within one ulp of 1.0 for {{abs(a)
> 18.9}}, so the proposed threshold (20.0) is fairly safe, and consistent with other parts
of CM. Note that the same fix must be implemented for {{tan}} also.

> [math] Complex Tanh for "big" numbers
> -------------------------------------
>
>                 Key: MATH-722
>                 URL: https://issues.apache.org/jira/browse/MATH-722
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 2.2
>         Environment: I'm working with Eclipse 3.6.2 on Windows XP, but the bug is Enviroment
independent
>            Reporter: Juan Barandiaran
>            Assignee: Sébastien Brisard
>            Priority: Minor
>              Labels: patch
>             Fix For: 3.0
>
>   Original Estimate: 0.25h
>  Remaining Estimate: 0.25h
>
> Hi,
> In Complex.java the tanh is computed with the following formula:
> tanh(a + bi) = sinh(2a)/(cosh(2a)+cos(2b)) + [sin(2b)/(cosh(2a)+cos(2b))]i
> The problem that I'm finding is that as soon as "a" is a "big" number,
> both sinh(2a) and cosh(2a) are infinity and then the method tanh returns in
> the real part NaN (infinity/infinity) when it should return 1.0.
> Wouldn't it be appropiate to add something as in the FastMath library??:
> if (real>20.0){
>       return createComplex(1.0, 0.0);
> }
> if (real<-20.0){
>       return createComplex(-1.0, 0.0);
> }
> Best regards,
> JBB

--
This message is automatically generated by JIRA.