UUlpNacre
AIコーディングワークスペース

有限binary64のULP距離

符号付きゼロを等しいとみなし、2つの有限binary64間の表現可能なステップ数を測ってください。

● ● ●UlpNacre●
ワークフロー · 有限binary64のULP距離 ×
import math, struct

def ulp_distance(a, b):
    if any(type(x) is not float or not math.isfinite(x) for x in (a, b)):
        raise ValueError("ulp.finite")
    def key(value):
        bits = struct.unpack(">Q", struct.pack(">d", value))[0]
        magnitude = bits & ((1 << 63)-1)
        return (1 << 63)-magnitude if bits >> 63 else (1 << 63)+magnitude
    return abs(key(a)-key(b))
✳有限binary64のULP距離
✓ 変更内容適用前に確認 ↗
ワークスペースのイメージ
モデル
OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。
プロジェクト
隣接する非正規化数と両符号を試し、整数、無限大、NaNを拒否して相対誤差とは解釈しないでください。
適用前に確認
実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
ワークフロー

有限binary64のULP距離

ワークフロー ↗
ワークフロー
import math, struct

def ulp_distance(a, b):
    if any(type(x) is not float or not math.isfinite(x) for x in (a, b)):
        raise ValueError("ulp.finite")
    def key(value):
        bits = struct.unpack(">Q", struct.pack(">d", value))[0]
        magnitude = bits & ((1 << 63)-1)
        return (1 << 63)-magnitude if bits >> 63 else (1 << 63)+magnitude
    return abs(key(a)-key(b))
AIコーディングワークスペース

数値の不一致に適した比較規則を与える

二つの数値出力は同じ表示でも、内部の表現が異なることがあります。UlpNacreは、その違いがアプリケーションで重要か調べるWindows向けAIコーディング環境です。問題となった実際の入力、計算、比較を提示してください。等価判定を別の規則へ置き換える前に、値の生成と判定の方法をアシスタントに調べてもらいます。

浮動小数点の表現間距離の例は、検討できる作業の一つです。有限の入力と符号付きゼロを調べ、距離をテストや診断にどう生かすか議論できます。アプリケーションの許容誤差の判断は測定自体と分けてください。ソース例はPythonです。ドメイン名はPHP専用デバッガーの存在や、あらゆる数値実行環境で前提が有効なことを示しません。

対応するOpenAI互換またはAnthropicのエンドポイントで、利用可能な拒否応答を抑える処理を施したAIモデル(abliteratedモデル)を選び、必要なら認証情報を使います。コンテキスト、ツール、制限はモデルとサーバーに依存します。比較コード案をレビューし、アプリケーションに関係する代表値で実行してください。別途起動するローカルモデルサーバーが扱うのは推論で、接続したツールは外部サービス経由で動作する場合があります。

表現の違いを調べる

表現間距離が小さければ常に等しいとすべきですか?

それは測定から得られる結論ではなく、アプリケーションの要件です。値の用途を考慮して許容する比較規則を定義してください。提案の限界を説明してもらい、ソフトウェアが実際に判断する境界付近の値をテストします。

値を生成した計算も含めるのはなぜですか?

生成元から、差が生じる理由や想定内かどうかが分かることがあります。最後の比較を変える前に変換と演算を調べてください。計算経路が説明されないまま許容誤差を加えると、他の不具合を隠す恐れがあります。

例はあらゆる数値入力を比較できますか?

いいえ。示された仕様では有限の浮動小数点入力を受け付け、他の値には明示的な方針が必要です。あらゆる数値型や例外的な値を扱えると思い込まず、拒否する入力もレビューで明確にしてください。

別の実行環境へ移す際は何を検証しますか?

数値表現、変換動作、利用可能な演算を確認し、その環境で関係する境界ケースを再現してください。Pythonの例は調査の出発点であり、未検証の移植が同じ動作をする証拠ではありません。

Windows版をダウンロード ↗

UlpNacre · 更新日 2026-10-25