This looks like a bug in mingw-w64 CRT. The problem can be produced with C++ without R:
#include <iostream> #include <cmath> #include <complex> int main(){ std::cout << std::fixed; std::complex<double> z(356, 0); std::cout << "tanh" << z << " = " << std::tanh(z) << " (tanh(356) = " << std::tanh(356) << ")\n"; } On OS-X we get: tanh(356.000000,0.000000) = (1.000000,-0.000000) (tanh(356) = 1.000000) But on Windows we get: tanh(356.000000,0.000000) = (nan,0.000000) (tanh(356) = 1.000000) I was also able to reproduce the problem with gcc 6.3 in msys2 so it has not been fixed upstream. You should file a bug report for mingw-w64. FWIF, we have run into NaN edge-case bugs before with mingw-w64. - https://sourceforge.net/p/mingw-w64/mingw-w64/ci/6617ebd5fc6b790c80071d5b1d950e737fc670e1/ - https://github.com/wch/r-source/commit/e9aaf8fdeddf27c2a9078cd214a41475c8ff6f40 I am cc'ing Ray Donnelly who is an expert on mingw-w64. ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel