MoonBit のための科学計算

連携して動く代数 trait、数値型、数値計算手法。アルゴリズムを一度書けば、整数、浮動小数点数、十進数、複素数、行列の上で動かせます。

ドキュメントを開くビジョンを読む

数値の意味論

同じ方程式、二つの数の体系。

同じ Runge–Kutta 積分器で、同じ点から Lorenz 系を二度解きます。一度は Float、一度は Double で。丸めだけで二つの軌道は離れていきます。Luna Flow では、数の体系は明示的な選択です。

1 つのアルゴリズム

一度書けば、どの世界でも評価できる

Horner 法に必要なのは半環だけです。同じ関数が、機械整数、浮動小数点数、多倍長整数、複素数、行列の上で 1+x21 + x^2 を評価します。この多項式は整数の中には根を持たず、複素数では ii を根に持ち、行列では回転を根に持ちます。

/// Horner's rule, written once for every semiring.
fn[R : Semiring] horner(coefficients : Array[R], x : R) -> R {
  let mut acc : R = Zero::zero()
  for i = coefficients.length() - 1; i >= 0; i = i - 1 {
    acc = acc * x + coefficients[i]
  }
  acc
}
horner([1, 0, 1], 7)
// => 50
R[x]S[x]RSh[x]hevaevh(a)

構造を保つ写像

構造は写像とともに運ばれる

一度証明した準同型は、新たな証明なしに多項式、行列、直積へ持ち上がります。一致すべき 2 つの経路は、実際に一致します。評価してから写すか、写してから評価するかです。

ev⁡h(a)∘h[x]  =  h∘ev⁡a\operatorname{ev}_{h(a)} \circ h[x] \;=\; h \circ \operatorname{ev}_a

原則

  1. 実装より先に抽象

    構造と法則から始めます。実装の詳細は、それを必要とする層の中にとどめます。

  2. 明示された意味論

    浮動小数点、任意精度、十進の値はどれも足し算ができますが、意味は同じではありません。Luna Flow はその違いを見えるままにします。

  3. 孤立より相互運用

    独立したライブラリが小さな trait と軽量アダプタを通じて参加し、1 つの計算世界へと組み合わさります。

数学は一度だけ書く。数の体系はあとで選ぶ。

代数 trait はアルゴリズムに必要なものを記述し、数値型はその意味を決めます。Luna Flow は両者を分けておくので、選択はいつでもあなたの手にあります。

ライブラリ

ドキュメントを開く

どのリポジトリも、API・設計・チュートリアルを同じ構成で、英語・中国語・日本語でドキュメント化しています。

基礎抽象

エコシステムを結ぶ共有 trait、汎用構造、基盤ユーティリティ。

  • arithmetic

    Luna Flow の数値型のための解析的能力トレイト。初等関数、明示的な精度と診断を伴う検査付き・コンテキスト付き演算、包含区間の関係を提供する。

    100%
  • luna-generic

    LunaFlow の数学パッケージの汎用的な基盤となる代数 trait と既定の数値インスタンス。

    100%
  • luna-utils

    luna-generic の trait を制約に用いる、Luna-Flow プロジェクト向けの汎用的な配列・比較ヘルパー。

    100%

数値と表現

数値計算のための具体的・汎用的な表現。

  • floating

    MoonBit 向けの任意精度の二進・十進・ボール(区間)演算ライブラリで、checked 演算と明示的な数値意味論を備えます。

    100%
  • luna-complex

    LunaFlow のための汎用複素数演算ライブラリ。倍精度複素数向けの解析関数・超越関数も備えます。

    100%
  • quaternion

    算術演算、正規化、3D 回転、補間、オイラー角変換を備えた MoonBit 向けの汎用四元数ライブラリ。

    100%
  • luna-poly

    MoonBit 向けの正規形を持つ密・疎・名前付き変数の多項式を、イミュータブルな値とミュータブルなコンテナとして提供します。

    100%

解析と最適化

高水準の数学計算を支える線形・数値・記号ツール。

  • linear-algebra

    MoonBit 向けの稠密行列とベクトルを不変形式とインプレース形式の両方で提供し、検査付きの数値ルーチンと汎用線形代数のための能力 trait を備えます。

    100%
  • linear-program

    線形計画問題を定義し、二段階単体法で解くための MoonBit ライブラリ。

    100%
  • calculus-numerical

    MoonBit 向けの実関数の数値微分と Gauss–Kronrod 数値積分のライブラリ。Luna-Flow の一部です。

    100%
  • autodiff

    Luna Flow の代数構造と算術構造の上での前進モード自動微分。

    100%

システムと研究

実験的システム、証明ツール、エコシステム規模のプロジェクト。

  • luna_thread

    MoonBit のための並列プランとワークフローグラフ。MoonBit で検証し、FFI を通じてネイティブ C ランタイムで実行します。

    100%
  • QED

    MoonBit で書かれたカーネル優先の定理証明器で、形式仕様に準拠する。

    100%
  • stella

    MoonBit で書かれた開発中の証明支援系で、Martin-Löf 型理論の型検査器を中核とする。

    100%
  • mooncake_impact_factor

    依存、リリース、ダウンロードのシグナルを組み合わせた、MoonBit パッケージ向けのローカルなランキング・検索ツールキット。

    100%
  • type_theory

    Luna Flow の記号処理パッケージが共有する名前、束縛、捕獲回避代入、書き換え、λ計算の正規化器。

    100%
  • geometry3d

    Luna-Flow/linear-algebra 上に構築された MoonBit 向けの小さな 3D レンダリングパイプライン。ターミナル、Canvas、GSAP SVG のバックエンドを備えます。

    100%
  • mare_mark

    MoonBit のペイロードを対象とした、再現可能なベンチマーク、統計的比較、チューニング、自己完結型レポート。

    100%
  • diff_bench

    Luna-Flow の MoonBit パッケージ向けの差分正確性・性能ベンチマーク。

    100%