Windows ソフトウェアの gcc/Linux 移植バージョンで、まったく同じ浮動小数点結果を実現したいと考えています。そのため、すべての倍精度演算を 64 ビット精度にしたいと考えています。これは、たとえば -mpc64 または -msse2 または -fstore-floats (すべて副作用あり) を使用して実行できます。ただし、修正できないことの 1 つは、sin/asin などの超越関数です。ドキュメントによると、内部的に long double 精度が期待されている (そして使用されていると思われます)。
これらの関数が 64 ビットの浮動小数点精度を使用して結果を計算するにはどうすればよいですか?
更新: 私は間違っていました。正しい double の結果を誤って丸めるのは printf("%.17f") です。gdb の "print x" は、数値自体が正しいことを示しています。これについては別の質問が必要だと思います...おそらく、printfを内部的に拡張として二重に扱わないようにする方法について。多分 stringstream を使用すると、期待される結果が得られます...はい、そうです。