単位と不確かさ
Sounioにおけるコンパイル時の単位チェックとGUM不確かさ伝播
単位と不確かさ
Sounioには組み込みの単位チェックがありますか? はい。物理次元はコンパイル時にチェックされます。
測定の不確かさを伝播するには? GUM(測定における不確かさの表現のガイド)伝播を伴うKnowledge<T>を使用します。
次元解析 — コンパイル時の単位チェック
Sounioは型レベルで物理次元をチェックします。メートルと秒を加算することはコンパイルエラーです。
fn main() with IO {
let distance: m = 100.0
let time: s = 9.58
// これはコンパイルされます: m / s = m/s
let velocity = distance / time
println(velocity) // 10.438413
// これはコンパイルエラーです:
// let wrong = distance + time
// error[E041]: unit mismatch
}
検証済みの例
完全な次元安全性の例はexamples/showcase/type_safe_units.sioにあります。
不確かさの伝播 — Knowledge<T>とGUM
Knowledge<T>は、標準不確かさを持つ測定値を表します。不確かさは、測定における不確かさの表現のガイド(JCGM 100:2008)に従って計算を通じて伝播します。
検証済みの例
完全なGUM伝播の例はexamples/science/uncertainty_propagation.sioにあります。
ステータスと制限
-
単位: コンパイル時チェックが機能します。派生単位(
m/s、kg·m/s²)は正しく合成されます。 -
不確かさ(
Knowledge<T>):f64、bool、および構造体型のGUM伝播が実装されています。 -
未実装:
Knowledge<f128>および128ビット浮動小数点数上のGUM(KL-15)。 -
これはpre-1.0ソフトウェアです。KNOWN_LIMITATIONS.mdを参照してください。