Complex arg-trig functions

Steve Kargl sgk at troutmask.apl.washington.edu
Sun Aug 26 22:25:28 UTC 2012


On Sun, Aug 26, 2012 at 04:50:18PM -0500, Stephen Montgomery-Smith wrote:
> On 08/23/2012 10:07 PM, Stephen Montgomery-Smith wrote:
> >I just found out that the boost libraries implement the complex asin
> >function.  I think their implementation is more faithful to the paper by
> >Hull et al than my implementation is.  It does seem to have a BSD style
> >license.  The only problem with it is that it is written in C++.
> >
> >http://www.boost.org/doc/libs/1_43_0/boost/math/complex/asin.hpp
> 
> It turns out that this version of asin.hpp had a bug.  Look instead at
> http://www.boost.org/doc/libs/1_51_0/boost/math/complex/asin.hpp
> 
> Their acos is a bit buggier.  Their atanh is quite a lot buggier.  Here 
> are bugfixes:
> https://svn.boost.org/trac/boost/ticket/7290
> https://svn.boost.org/trac/boost/ticket/7291
> 
> Their asin seems to be about 10-15% faster than mine.  Their error is 
> slightly higher (4.5 ULP instead of 4ULP).  The algorithm they used will 
> work directly for float, whereas my algorithm needed adjustments from 
> the double to the float version.

I don't know others opinion on C++ and libm, but I would much 
prefer to keep libm sources based in C.  First, I don't C++
so can't work on the source as either a reviewer or debugging.
Second, does this then mean that one needs to link with libc++?
Finally, the start of the file is

#ifndef BOOST_MATH_COMPLEX_DETAILS_INCLUDED
#  include <boost/math/complex/details.hpp>
#endif
#ifndef BOOST_MATH_LOG1P_INCLUDED
#  include <boost/math/special_functions/log1p.hpp>
#endif
#include <boost/assert.hpp>

So, we would need to include three additional files.

-- 
Steve


More information about the freebsd-numerics mailing list