プログラミングのお題スレ Part22 (854レス)
プログラミングのお題スレ Part22 http://mevius.5ch.net/test/read.cgi/tech/1691038333/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
321: デフォルトの名無しさん [] 2024/04/13(土) 23:01:22.75 ID:wFZkrOeZ >>319 https://ideone.com/YCi6qe ヘロンが作ったもう1つの式である平方根を加算と除算の繰り返しで求める式も使用。 sqrt関数を呼び出すより実行形式ファイルサイズがほんの少しだけ小さくなる。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/321
322: デフォルトの名無しさん [sage] 2024/04/14(日) 00:59:32.83 ID:ujzJ2+0Y >>321 無限ループにならない? 機械イプシロン(DBL_EPSILON)とか気になる http://mevius.5ch.net/test/read.cgi/tech/1691038333/322
324: デフォルトの名無しさん [] 2024/04/14(日) 18:36:52.16 ID:MHeAinLP >>321 さすがですね http://mevius.5ch.net/test/read.cgi/tech/1691038333/324
325: デフォルトの名無しさん [] 2024/04/15(月) 21:01:04.41 ID:dSNEYg5r >>322 p < 0 のとき(= 三角形を作れない場合)は浮動小数点数の特性に関係なく無限ループになる。 sqrt(p) と同様にNANを返すには、if (p < 0) return 0 / (p - p); を追加すれば良い。 p > 0 のときは無限ループにならないはず。以下が検証プログラム。 https://ideone.com/mzemEM x = sqrt(p), y = p / x とすると、浮動小数点数の特性により x == y とならない場合は存在する。 このとき、xとyの仮数部を整数と見なした値(以降では「仮数整数」と呼ぶ)の差は1なので、 z = (x + y) / 2 はxとyのうち仮数整数が偶数の方に一致する。zを新たなxとして代入しyとzを 再計算すれば、今度はxの仮数整数が偶数なのでzはxに必ず一致し、>>321の収束判定条件が成立する。 具体例で見ると、p = 2 のときはxの仮数整数が奇数なので x != z となるが、zを新たなxとして代入し 再計算すれば x == z が成立する。桁上がりが起こる p = 3.9999999999999996 のときも、同様に 再計算で x == z が成立する。p = 3 のときはxの仮数整数が偶数なので x == z が成立し再計算は不要。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/325
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.036s