昔は使ってた

新たな発見が一杯の現場に居たりしています。固定小数点なソレですが、昔数値型で一桁に 1 byte 使ってた時がこの方式だった記憶はあれど、数値型で 2 byte とか 4 byte で云々な世界に来てしまうと実数型は浮動小数点な形が当り前だった訳で。

今回

小数な桁に 10 bit 確保します、との事で 1024 掛ければ OK ですよね、って言われてむむむと言いつつ色々確認。検算に Gauche を使わなかったので間違えましたorz
例えば以下なカンジで、とのこと。

gosh> (/ 1 (sqrt 2))
0.7071067811865475
gosh> (* 1024 (/ 1 (sqrt 2)))
724.0773439350246
gosh> (/ 724 1024.0)
0.70703125

10 bit であればこの程度の回復なのかどうか。で、ナチュラルだったのが負の場合で無理矢理符号ビットだけをアレしてました。Gauche で検算してみるに普通の計算で無問題な模様。

gosh> (/ -1 (sqrt 2))
-0.7071067811865475
gosh> (* 1024 (/ -1 (sqrt 2)))
-724.0773439350246
gosh> (/ -724 1024.0)
-0.70703125

つうか MBAGauche 使えるように (というか Emacs で M-x run-schemeGauche が動くように) なって効率良いです。やはり Gauche は手元に持っておく道具として良質。