0

cmathexp()log()関数は常に対称ですか?

そうすればエルゴ

double x;
double y = exp(log(x));
assert(x == y);

アサートが失敗することはありますか? その場合: どのような状況で? 有理数 > 0xであると仮定できます。

4

2 に答える 2

11

浮動小数点logは 1 対 1 にすることはできません。単調に増加し、 を満たす必要がlog(64) > 4.15ありlog(128) < 4.86ます。64 と 128 の間には 2 52 秒がありますが、4.15 と 4.86 の間には 2 50double秒未満です。その範囲には倍精度対数が同じものが複数あるため、そのうちの少なくとも 1 つで失敗する必要があります。 doubledoublesexp(log(x)) == x

于 2013-06-04T12:31:21.773 に答える