FLOATING
v0.3.0 - Result wrapper と checked 合成の基準
このドキュメントは、現在のブランチにある v0.3.0 の実装基準を説明します。
パッケージの位置づけ
def:Sign、PartialOrder、狭いFloatingtrait、および arithmetic 境界型の互換 reexport を提供します。bin_float: 仮数、2 進指数、作業精度で表現される任意精度 2 進浮動小数点。decimal: 係数、10 進指数、作業精度で表現される任意精度 10 進浮動小数点。ball_float: 外向き丸めされた上下界で表現される、bin_floatベースの interval/ball 値。bin_float_result:Result[BinFloat, ArithmeticError]を閉じた数値合成オブジェクトとして包みます。decimal_result:Result[Decimal, ArithmeticError]を閉じた数値合成オブジェクトとして包みます。ball_float_result:Result[BallFloat, ArithmeticError]を閉じた区間合成オブジェクトとして包みます。internal: 正規化、因子除去、丸め、10 進文字列解析の共有補助ロジック。consistency: 正規化、算術、変換、パッケージ間意味論を検証するリポジトリテスト。
現在の基準の特徴
Luna-Flow/arithmeticの checked capability boundary に依存します。bin_floatとdecimalは checked scalar trait を実装します。ball_floatは enclosure relation と checked division / checked integer power を実装します。- 3 つの
*_resultサブパッケージは checked 演算をSelf -> Selfと(Self, Self) -> Selfの閉じた合成へ持ち上げます。 compare_checkedのような observer API は非Selfを返す自然な形を保ち、閉包代数へ無理に押し込みません。ball_float_resultはゼロを含む除数に対する whole real enclosure を維持し、そのケースをErrには変換しません。decimalとbin_floatの相互変換を提供します。- 上位の超越関数レイヤー、微積分、行列、複素数、特殊関数はこのパスでは再導入しません。
- 正しさ優先の whitebox テストを含み、checked error path と enclosure 境界を検証します。
クイックスタート
moonbit
let x = @bin_float.BinFloat::make(3N, -1, 32)
let y = @bin_float.BinFloat::make(5N, -1, 32)
let sum = x + y
let dec = @decimal.Decimal::from_string("12.34", precision=32).unwrap()
let as_bin = dec.to_bin_float(precision=32)
let ball = @ball_float.BallFloat::exact(as_bin)
inspect(sum.to_string(), content="1p2")
inspect(ball.contains(as_bin).to_string(), content="true")ドキュメント
多言語 README:
パッケージ文書:
開発
よく使うコマンド:
bash
moon fmt
moon check
moon test
moon test --enable-coverageリリースチェックリスト
moon.modのバージョンを更新する。README.mdと多言語ドキュメントを現在の実装に合わせて更新する。moon checkとmoon testを実行する。publish-packageworkflow を起動する。
コントリビューション案内は CONTRIBUTING.md を参照してください。