翻訳の対象範囲は一部です。完全な技術リファレンスは英語の原文を参照してください。 英語版を見る →

単位と不確かさ

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を参照してください。