On Sat, May 28, 2022 at 12:43:45AM -0700, John Denker via gnumeric-list wrote:
> In any serious application it would be better to use tanpi(0.5) > which produces #NUM! which is IMHO the right answer. Note that > cospi(0.5) is exactly zero, as it should be. Can you point me at the source code for cospi please? > OTOH if for some reason we can't do that, the value of pi()/2 > is 1.5707963267948966192313217 (to high accuracy). However an > IEEE double cannot represent that; the closest it can come is > 1.5707963267948965579989817 > > If you take the tangent of that (to high accuracy) you get > 16331239353195369.755 for which the closest IEEE double is > 16331239353195370. So I don't consider that a failure. Using Python 3.10 on Linux, I get tan(pi/2) as 1.633123935319537e+16 which matches your result. > tan() produces an output that is grossly > nonlinear (indeed wildly non-monotonic). Why is that? The mathematical function tan is monotonically increasing in the range [0, π/2). Shouldn't tan() be the same? Using Python (as above), and starting at pi/2 and working backwards, I was unable to find any non-monotonic behaviour in tan() in the range 1.5707963260321207 through pi/2. (That's 3435237 doubles.) Obviously this result can depend on the quality of your platform's maths library. Do you have any examples of where it fails? Thanks, -- Steve _______________________________________________ gnumeric-list mailing list gnumeric-list@gnome.org https://mail.gnome.org/mailman/listinfo/gnumeric-list