La cobertura de traducción es parcial. Consulte la fuente en inglés para la referencia técnica completa. Ver versión en inglés →

Unidades e Incertidumbre

Verificación de unidades en tiempo de compilación y propagación de incertidumbre GUM en Sounio

Unidades e Incertidumbre

¿Sounio tiene verificación de unidades integrada? Sí. Las dimensiones físicas se verifican en tiempo de compilación.

¿Cómo propagar la incertidumbre de medición? Use Knowledge<T> con propagación GUM (Guía para la Expresión de la Incertidumbre en la Medición).

Análisis dimensional — verificación de unidades en tiempo de compilación

Sounio verifica las dimensiones físicas a nivel de tipo. Sumar metros con segundos es un error de compilación.

fn main() with IO {
    let distance: m = 100.0
    let time: s = 9.58
    
    // Esto compila: m / s = m/s
    let velocity = distance / time
    println(velocity)  // 10.438413
    
    // Esto es ERROR DE COMPILACIÓN:
    // let wrong = distance + time  
    // error[E041]: unit mismatch
}

Ejemplo verificado

El ejemplo completo de seguridad dimensional está en examples/showcase/type_safe_units.sio.

Propagación de incertidumbre — Knowledge<T> y GUM

Knowledge<T> representa un valor medido con su incertidumbre estándar. La incertidumbre se propaga a través de los cálculos siguiendo la Guía para la Expresión de la Incertidumbre en la Medición (JCGM 100:2008).

Ejemplo verificado

El ejemplo completo de propagación GUM está en examples/science/uncertainty_propagation.sio.

Estado y limitaciones

  • Unidades: La verificación en tiempo de compilación funciona. Las unidades derivadas (m/s, kg·m/s²) se componen correctamente.

  • Incertidumbre (Knowledge<T>): La propagación GUM para f64, bool y tipos struct está implementada.

  • No implementado: Knowledge<f128> y GUM sobre flotantes de 128 bits (KL-15).

  • Este es software pre-1.0. Vea KNOWN_LIMITATIONS.md.