非常に集中的な計算を行う従来の FORTRAN プロジェクトがあります。この数学コードに C/C++ コードからアクセスできるようにしたいので、FORTRAN dll を作成し、それを C/C++ にインポートして、FORTRAN dll から浮動小数点アンダーフローを受け取り始めました。
同時に、FORTRAN アプリケーションから呼び出した場合、FORTRAN dll コードは正常に実行されます。
最後に、私が使用しているコンパイラ (VS2013 に統合された FTN 95 です) にはオプション ( /UNDERFLOW ) があることがわかりました。このフラグが指定されていない場合、デフォルトですべてのアンダーフローがゼロに変換されます。それはFORTRANアプリで起こります。C コードを使用してこの dll からメソッドを実行すると、アンダーフローが発生します。
質問は、VC++ コンパイラにアンダーフローをゼロに変換させる方法はありますか?
PS: はい、浮動小数点例外をスローするコードにずっと依存するのはばかげていることは理解しています。ただし、このコードは古く、現時点で最新の手法を使用して完全に書き直すことは不可能です。