2026/06/28(日)kv-0.4.61

kvライブラリを0.4.61にアップデートしました。

今回は、精度保証は破れていないものの精度で損をする可能性があった不具合の修正です。具体的には、文字列からdoubleなどの数値へ上向き丸めで変換するとき、"9007199254740992" (ぴったり2^{53})などいくつかの誤差無しでdoubleに変換できるはずの数が1ulp上に丸まってしまうというバグがありました。これにより、区間xをx = "9007199254740992";みたいに初期化すると本来幅0の区間になるはずが僅かに幅のある区間になって損をしてしまっていました。

この不具合を修正しました。

これにより、例えば以下の文字列を上向き丸めで変換したときの結果が正常になりました。
変換先の型文字列修正前修正後
double"9007199254740992"90071992547409949007199254740992
long double"18446744073709551616"1844674407370955161818446744073709551616
dd"162259276829213372398777265029120"1.6225927682921336\cdots \times 10^{32} + 90071992547409941.6225927682921336\cdots \times 10^{32} + 9007199254740992
ddx"680564733841876926963642703010955526144"6.80564733841876927\cdots\times 10^{38} -368934881474191032306.80564733841876927\cdots\times 10^{38} -36893488147419103232
他は、コンパイルやワーニングに関する細かい修正です。
OK キャンセル 確認 その他