kvライブラリを0.4.62にアップデートしました。
- dd.hppで、numeric_limitsを整備し、きちんとすべての項目を埋めました。その過程できちんと数値を見直し、numeric_limits<dd>::epsilonを2^(-105)から2^(-106)に、numeric_limits<dd>::digitsを106から107に変更しました。これは、double-doubleの上位と下位の符号を異なるものに出来る効果により、下位の符号bitが実質的に仮数部を1bit増やしてくれる効果を考慮したものです。また、minは、2^(-1022)から2^(-968)に、min_exponentは-1021から-967に、 min_exponent10は-307から-291に変更しました。こちらは、下位が非正規化数の領域に入ったら非正規化数とみなす、という変更です。
- ddx.hppもdd.hppと同様に変更しました。
- mpfr.hppもnumeric_limitsの項目を埋めました。
- dd.hpp, ddx.hpp, mpfr.hppで、NaNをきちんと取り扱えるようにし、NaNが混ざったときの比較演算子が正しく動くようにしました。
- affine.hppで、atanが正しく動いていなかったバグを修正しました (Thanks to 西田 陸人さん)。これは精度保証が破壊されていた重大なバグです。atanを含んだ計算をaffineを用いて行っていた場合は、計算をやりなおす必要があります。
affineのatanの問題以外は、いずれもClaude CodeやCodexを使って精度保証のコードを書いたユーザの指摘によるものです。Linuxやブラウザなどをはじめとした多くのソフトウェアと同じように、AIの指摘で大量の修正が入る時代なんだなあ、という感想を持ちました。
OK
キャンセル
確認
その他