浮動小数点数を比較できない理由、仮数と指数のバイナリ表現について知っていますが、私は専門家ではありません。私は何かに出くわしを得ることはありません:浮動小数点数の乗算よりも除算が大きく異なる理由
はつまり、あなたが何か持って言うことができます:異なる結果をもたらすことができる私の知識異なるプへ
float denominator, numerator, resultone, resulttwo;
resultone = numerator/denominator;
float buff = 1/denominator;
resulttwo = numerator * buff;
を、これは珍しいことではありません。しかし、いくつかのエッジケースでは、これらの2つの結果は大きく異なるようです。
float a = (facetSlopeRMS * facetSlopeRMS * pow(clampedCosHalfNormal, 4));
facetDlopeDistribution = exp(b/c)/a;
なぜそれがないと
float a = 1/(facetSlopeRMS * facetSlopeRMS * pow(clampedCosHalfNormal, 4));
float b = clampedCosHalfNormal * clampedCosHalfNormal - 1.0;
float c = facetSlopeRMS * facetSlopeRMS * clampedCosHalfNormal * clampedCosHalfNormal;
facetSlopeDistribution = a * exp(b/c);
利回りは非常に、非常に異なる結果:クック - トーランスlighitngモデルのベックマンファセット傾斜分布を計算私のGLSLコードで、より具体的には?式の第2の形式は問題があります。
式の2番目の形式を色に追加しようとすると、式が常に正の数になるはずですが、黒色になります。無限になっていますか? NaN?もしそうなら、なぜですか?
これはあなたにとって興味深いかもしれません: http://www.cs.princeton.edu/introcs/91float/ –