This was reduced from a ghc test. The results of the program differ between OpenBSD 7.0-current-amd64 and a couple of other systems:
% cat tanf.c #include <math.h> #include <stdio.h> int main(int a, char**b) { float x = 1e18; printf("tanf(%f)=%f\n", x, tanf(x)); float y = 1e19; printf("tanf(%f)=%f\n", y, tanf(y)); } % uname -sr; cc tanf.c -o tanf -lm && ./tanf FreeBSD 13.0-STABLE tanf(999999984306749440.000000)=-0.222015 tanf(9999999980506447872.000000)=0.708482 % uname -sr; cc tanf.c -o tanf -lm; ./tanf Linux 5.11.0-38-generic tanf(999999984306749440.000000)=-0.222015 tanf(9999999980506447872.000000)=0.708482 % uname -sr; cc tanf.c -o tanf -lm && ./tanf OpenBSD 7.0 tanf(999999984306749440.000000)=-0.220665 tanf(9999999980506447872.000000)=-nan Notice also the precision loss starting at 1e18. This behavior has likely been broken for a long time as I remember the original ghc test to fail last year too. Thanks Greg