Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
ASIN(z) = -I*log(I*z + sqrt(1 - z^2)); ACOS(z) = -I*log(z + I*sqrt(1 - z^2)); ATAN(z) = (log(1+I*z) - log(1-I*z))/(2*I); ASINH(z) = log(z + sqrt(1 + z^2)); ACOSH(z) = 2*log(sqrt((z-1)/2) + sqrt((z+1)/2)); ATANH(z) = (log(1+z) - log(1-z))/2; fun = [asin,acos,atan,asinh,acosh,atanh]; FUN = [ASIN,ACOS,ATAN,ASINH,ACOSH,ATANH]; test(f, F, N = 4) = { my (h = 1 / N); forstep (re = -N, N, h, forstep (im = -N, N, h, iferr( my(mr, cr, dt); mr = f(re+im*I); cr = F(re+im*I); dt = mr - cr; if (abs(dt) > 1e-10, printf("%s(%.1f + I*%.1f):\t%.2g + I*%.2g\n", f, re, im, real(dt), imag(dt)); ), ERR, printf ("%s: %.1f + I*%.1f is a pole ?\n", f, re, im)) ) ); } for(k = 1, #fun, test(fun[k], FUN[k])); default(realprecision,1155); a=sqrt(2)/2; sin(asin(a)) - a cos(acos(a)) - a tan(atan(a)) - a sinh(asinh(a)) - a cosh(acosh(a)) - a tanh(atanh(a)) - a default(realprecision,38); a *= 1.; cotan(a) cotan(I) cotan(a+I) tanh(I) atanh(2^64) atanh(3/2^64)