タグ

japaneseとdoubleに関するmasterqのブックマーク (2)

  • x86でdoubleがfloatより速いかどうかを検証してみた - Qiita

    昔話 それは昔々のこと。 x86には浮動小数点演算を行う手段がなく、外付けの浮動小数点演算ユニットを接続するという手法で、浮動小数点演算を実現していたのであった。 x87と呼ばれたそれはとてもエクセレントなシステムで…という話はwikipediaに譲ろう。 https://ja.wikipedia.org/wiki/Intel_8087 重要なのは、x87が内部表現として80bitの拡張倍精度を使っている、ということ。 これのおかげで、x87においては、確かにdoubleのほうが速かった (floatだとdoubleへのキャストコストが発生するため) 嘘だろそれ。ASM見たら別にキャストとかしてなかったわ。 どっちかというと丸めの影響で精度が異なることのほうが重要だわ。 改めて調べてみると、doubleが速いとされている資料についてはあんまりないことに気付く。 (同等としている資料はher

    x86でdoubleがfloatより速いかどうかを検証してみた - Qiita
  • 浮動小数点数型と誤差

    有限桁 C言語で扱える実数値は,2進数の有限小数で表された数値である.例えば次のようなものである. 1.5(10) = 1.1(2) 3.25(10) = 11.01(2) 理論的には小数が無限に続く値でも,そのうちの有限個の桁数でその値を表すしかない. 例えば,0.1 を2進数の小数で表すと 0.1(10) = 0.000110011001100110011...(2) と無限に続くが,コンピュータの内部では有限桁で丸められている. このような場合には,当の値ではなく,近似値でしか表すことができない. 指数表記(浮動小数点表記) 科学計算では非常に大きな実数値や非常に小さな実数値も扱うことがある. そのようなときには,通常の10進数の表記ではなくて,次のような指数表記で表すれば 無駄な 000...000 という桁を表記しなくてもよくなる. 1234567890000000000000

    masterq
    masterq 2019/11/22
    "float 型の精度(有効桁数)は2進数にして 24 (=23+1) 桁であり,10進数では約 7 桁となる."
  • 1