「FPU関連の質問」の編集履歴(バックアップ)一覧に戻る
FPU関連の質問 - (2006/11/17 (金) 01:22:07) の編集履歴(バックアップ)
FPU関連の質問等
なんかcollisionして書き込みに失敗することが多かったので、
意見を書き込むところを勝手に分離しました。(buyobuyon)
- そうですね。
確かコンテストルールでは指数部が1~254で表される数と+0が適切に表現されていれば
良いのでしたよね(あまりよくルールを読んでいないので間違っているかも…)。
あと、-0をどうするかについてちょっと気になっているのですが。
-0があると整数と同じ方法で比較が行えないことをすっかり忘れていて、
浮動小数の比較命令を用意していなかったのですが…。
一般にはどのように扱われているようですか? -- buyobuyon (2006-10-24 22:21:13)
- 丸め方式は…、詳しくないのでよくわからないのですが。
なんか感覚としては、銀行で使われるとk林先生が仰っていたあの丸め方式が、
一番誤差が少なくなりそうな気はするけど、
Firexhlとかで部分的に切り捨て方式が使われているということは、
たぶん速度の面で問題があるのでしょうね。
どうしましょう…。 -- buyobuyon (2006-10-24 22:33:01)
- -0…。
1.使わない
2.検出したら+0に変える
3.特別扱いでcmpを実装
とかですかねぇ。
1,2は本質的にそんなに変わらないのかな?
3はできなくはないと思うのですが回路的にどうなんだろう?(よくわからんです) -- yastak (2006-10-25 14:22:52)
- コメント書き込もうとしたら、collision起こして、書いたことすべて消えてしまった(; ;) -- buyobuyon (2006-10-25 15:26:31)
- 改めて…。
-0の件ですが、やや勘違いしていました。
-0があると整数と同じ方法で比較が行えない → 負の値があると整数と同じ方法で比較が行えない
でした。すみません。
そういうわけで、結局、浮動小数点数比較命令flessが必要だと思います。
flessを作成するとなると、-0ありにして、-0 < +0という扱いにすると良いかと。
簡単だし。ルール違反じゃないよね?
それから、浮動小数点数では=による比較は+-0との比較以外は普通使わないでしょうし、
+-0との比較は0x80000000Uとのxorをとることで代用できますし、
(もしどうしても必要なときは)0以外との比較は not(a > b or a < b)で代用できますので、
浮動小数点数比較命令は<だけあれば良いと思います。
というのが今の私の見解なのですが、どうでしょう。素人の意見なので、あまり信用しないでね。 -- buyobuyon (2006-10-25 15:33:37)
- flessの仕様について。整数比較命令の仕様を決めるときには、とりあえず、
真 → -1 (0xffffffffU) , 偽 → 0 (0x00000000U)
としましたが、特に意味があってのことではないので、
整数比較とflessとで形式があっていれば別に-1でも1でも良いかと。
とは言いつつも、何となく-1の方が使い勝手がよさそうに見えるかな…。 -- buyobuyon (2006-10-25 21:33:01)
- ごめん、比較結果をnotしたときに真偽が入れ替わるようにしたかったから
真 → -1
としたのでした。-1でお願いします。 -- buyobuyon (2006-10-25 21:55:00)
- FDIVの仕様で、「±0で割る場合、出力の符合はSRC1の符号と一致」としているけど、
0以外で割る場合と同様に、被除数の符号と除数の符号のxorをとって商の符号とした方が
自然じゃないかな? -- buyobuyon (2006-11-17 01:22:07)