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