
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> [20200211 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.