Arithmetic ドキュメント
このディレクトリは arithmetic 0.2.1 の日本語ドキュメント入口です。
概要
- 代数構造は引き続き
luna-genericが担います。 arithmeticは関数能力だけを表現し、「実数らしさ」を束ねた抽象は定義しません。FloatとDoubleのインスタンス自体はルートパッケージにあり、Kaida-Amethyst/mathを直接呼び出します。BigIntと整数族の基本型には、整数冪Powerのような閉じた能力だけを実装します。- 浮動小数点の既定インスタンスは
Kaida-Amethyst/mathをそのままバックエンドとして使います。 - このパッケージは順序・位相・分岐・主値のような高次の解析的意味論までは扱いません。
能力レイヤー
- unchecked の elementary traits は、ネイティブ scalar や他の文脈非依存バックエンド向けに残します。
- checked/contextual traits は
Result[Self, ArithmeticError]を返し、ArithmeticContextを受け取ります。 - enclosure traits は包含・重なり・確定比較を表し、無理に全順序を与えません。
意味論ノート
- 公開 trait は具体的な
Self型を保ち、補助的な結果型へ自動的に拡張しません。 - 具体インスタンスがより強い保証を明記しない限り、定義域の妥当性は呼び出し側契約の一部です。
FloatとDoubleの特殊値、境界値、分岐の意味論はKaida-Amethyst/mathを継承します。- 整数族のサポートは意図的に狭く、その型で閉じたまま扱える能力だけを実装します。
arithmeticは capability-boundary package であり、この層で微積分・行列・複素数・記号代数・特殊関数を再導入しません。
Power の事前条件
Power::powは浮動小数点族と整数族で同じインターフェースを共有しますが、全インスタンスが同じ引数領域を受け付けるわけではありません。BigInt、Int、Int16、Int64では指数は非負でなければなりません。- これらの符号付き整数インスタンスに負の指数を渡すと実行時に
abortします。 UInt、UInt16、UInt64は指数型そのものが非負なので、この追加チェックは不要です。- このパッケージは前提条件を文書化しますが、数学的な定義域を満たす引数選択は依然として一部が利用者責務です。
PowNatCheckedとPowIntCheckedは整数指数能力を checked な境界として分離します。- この checked レイヤーでは
x^0は常に 1 を返し、0^0も含みます。