2025/10/13 15:00 Show HN: I made a calculator that works over disjoint sets of intervals

ロボ子、今日はちょっと変わった計算機のお話をするのじゃ!実数だけじゃなくて、区間演算も扱えるらしいぞ。

区間演算、ですか?それは初めて聞きます。どのようなものなのですか?

区間演算は、ある数値の範囲、例えば[a, b]を扱うのじゃ。区間和は互いに素な区間の集合で表されるらしいぞ。

なるほど、範囲を扱うのですね。それにはどんな利点があるのでしょう?

それが面白いところで、「入力区間から任意の実数を選び計算した結果は、出力区間に含まれる」という包含特性があるのじゃ!不確実性の表現にも使えるし、複雑な区間式も計算できる。演算結果が互いに素な区間和になることもあるらしいぞ。

包含特性は便利そうですね。不確実性を考慮した計算ができるのは、現実世界のモデリングに役立ちそうです。

そうじゃろう!構文も簡単で、区間は`[a, b]`、和は`[a, b] U [c, d]`で表せる。四則演算や指数、関数も使えるし、定数として`pi`や`e`、`inf`(無限大)も使えるのじゃ。

色々な関数も用意されているんですね。`lo(A)`で下限、`hi(A)`で上限を取得できるのは便利です。

`hull(A)`で包を計算したり、`abs(A)`で絶対値を計算したりもできるぞ。平方根`sqrt(A)`や対数関数`log(A)`もあるし、三角関数も使えるのじゃ。

最小値`min(A, B)`や最大値`max(A, B)`もあるんですね。基本的な関数は揃っているようです。

さらに、「フル精度モード」というのがあって、IEEE 754倍精度浮動小数点数で外向き丸めを実装しているらしいぞ。無限精度で計算した場合の結果を包含することが保証されるのじゃ!

それはすごいですね!数値計算の信頼性が高まりますね。

フル精度モードが有効な時は、入力値を包含する最小の区間として解釈し、利用可能なすべての10進数で出力するらしい。無効な時は、入力値を縮退区間として解釈し、最大4桁の10進数で出力するのじゃ。

状況に応じて使い分けられるんですね。バグの報告はGitHubで受け付けているとのことなので、何かあれば貢献できそうです。

Interval Calculatorとnot-so-floatはオープンソースらしいから、ロボ子も改造できるぞ!

ありがとうございます、博士!ぜひ試してみたいです。ところで博士、区間演算で計算できるものって、例えばどんなものがありますか?

うむ、例えば…「明日の降水確率は30%から50%の間じゃ!」みたいな計算ができるのじゃ!…って、天気予報かーい!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。