# [Boost-bugs] [Boost C++ Libraries] #6171: nonconforming behavior of inverse functions on branch cuts

Subject: [Boost-bugs] [Boost C++ Libraries] #6171: nonconforming behavior of inverse functions on branch cuts
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2011-11-24 09:04:07

#6171: nonconforming behavior of inverse functions on branch cuts
---------------------------------------------------+------------------------
Reporter: Richard B. Kreckel <kreckel@â€¦> | Owner: johnmaddock
Type: Bugs | Status: new
Milestone: To Be Determined | Component: math
Version: Boost 1.48.0 | Severity: Problem
Keywords: |
---------------------------------------------------+------------------------
The inverse trigonometric and hyperbolic functions in boost/math treat
signed zero incorrectly. The positions of the branch cuts are right, but
C99 specifies to "''map a cut so the function is continuous as the cut is
approached coming around the finite endpoint of the cut in a counter
clockwise direction''" and so does C++11.

Here are some examples of failures:
* asin(-1.75-0.0*I) returns -1.5708+1.1588*I (should be -1.5708-1.1588*I)
* acos(-1.25+0.0*I) returns +3.1416+0.6932*I (should be +3.1416-0.6932*I)
* atan(-0.0-1.75*I) returns +1.5708-0.6496*I (should be -1.5708-0.6496*I)
* asinh(+0.0+1.5*I) returns -0.9624+1.5708*I (should be +0.9624+1.5708*I)
* acosh(-2.5+0.0*I) returns +1.5668-3.1416*I (should be +1.5668+3.1416*I)
* atanh(-2.0-0.0*I) returns -0.5493+1.5708*I (should be -0.5493-1.5708*I)

I'm attaching a patch.

```--
Ticket URL: <https://svn.boost.org/trac/boost/ticket/6171>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.
```

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:07 UTC