[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 10/30 03:13 / Filesize : 322 KB / Number-of Response : 1026
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part129



921 名前:98
いやその話じゃない。FSIN,FCOSの誤差の話は、
Intelは 1.0ulp 誤差だと言っているのにそうなってない、という話。
(とは言え仮数部が10bit多いのだが)

君が言っているのは数学的なものとだろ?
それは浮動小数点では誤差があるのが仕様。

> floorで切り捨てているから、52+1=53 になるはずなのに、54になる!
これは間違い。以下。
Math.floor(Math.log2(Math.pow(2,53)-1))+1 // 54で正しい。
Math.log2(Math.pow(2,53)-1) は、52よりも53に限りなく近いから、53になる。

> これは、除数・被除数ともに誤差があるから、時々おかしくなる
これも上記の通り、認識間違い。
Math.LN2はそもそも「浮動小数点的には」誤差がない。
というより計算済みの値が使われる(はず)
Math.log2(x)等の関数は一般的に割り算での実装はされないはず。
理由は以下。
・割り算は誤差が出やすい(多分テーラー展開式等が使われる)
・割り算は遅い
・そもそも固定値割り算は逆数の掛け算に変更される
(とはいえ、現実的にはこの方法は割り算よりも誤差が出たりするが)
だから、
> Math.log2(x) = Math.log(x) / Math.LN2
が成立しない時も、それは浮動小数点計算による誤差であり、仕様。
[]
[ここ壊れてます]






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<322KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef