|
Message-ID: <20200211193059.GH23985@port70.net> Date: Tue, 11 Feb 2020 20:30:59 +0100 From: Szabolcs Nagy <nsz@...t70.net> To: mg1633068 <songyue@...il.nju.edu.cn> Cc: musl <musl@...ts.openwall.com> Subject: Re: casinh function accuracy problem * mg1633068 <songyue@...il.nju.edu.cn> [2020-02-11 23:51:51 +0800]: > Hi everyone, > I'm writing testcases for complex math function. Considering the following simple code > > #include <stdio.h> > #include <complex.h> > int main(int argc, char *argv[]) > { > double complex d = 3.0+6.6*I; > double complex ret = casinh(d); > printf("casinh(3.0+6.6*I)=%.15f+%.15f*I\n", creal(ret), cimag(ret)); > > return 0; > } > > With musl libc, the result is: > casinh(3.0+6.6*I)=2.671002221994648+1.140551372972568*I > but with glibc, the result is: > casinh(3.0+6.6*I)=2.671002221994652+1.140551372972565*I > > We can see that musl is less accurate. I'm trying to solve this problem. > With little knowledge of numerical computing, any comment is appreciated! do you mean you are trying to fix the code in musl? that's welcome, but i think it will be hard without numerical computing knowledge. several complex math functions in musl are not correct (implemented in a very naive way), but fixing them is significant effort. in this particular case the 8 and 12 ulp errors on the real and imaginary parts are still considered small errors (glibc has 1 and 2 ulp errors compared to the correctly rounded result).
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.