Unit-aware measured values and standard uncertainty propagation for MoonBit.
Dependencies
x = nominal ± standard_uncertaintymoon add FrozenLemonTee/LunarUncertaintyimport {
"FrozenLemonTee/LunarUncertainty/measure",
"FrozenLemonTee/LunarUnits/quantities/qelectromagnetism",
"FrozenLemonTee/LunarUnits/quantities/qgeometry",
"FrozenLemonTee/LunarUnits/quantities/qmass",
"FrozenLemonTee/LunarUnits/quantities/qsi",
"FrozenLemonTee/LunarUnits/units/mass",
"FrozenLemonTee/LunarUnits/units/mechanics",
}let distance = @measure.MeasuredQuantity::new(
@qgeometry.meters(10.0),
@qgeometry.meters(0.2),
)
let time = @measure.MeasuredQuantity::new(
@qsi.seconds(2.0),
@qsi.seconds(0.1),
)
let speed = distance.div(time)
let text = @measure.format_measured_quantity(speed)
// "5 ± 0.26925824035672524 m/s"let length = @measure.MeasuredQuantity::new(
@qgeometry.meters(10.0),
@qgeometry.centimeters(20.0),
)
// Stored as 10.0 ± 0.2 m.let length = @measure.MeasuredQuantity::from_relative(
@qgeometry.meters(10.0),
0.02,
)
// Stored as 10.0 ± 0.2 m.let mass = @measure.MeasuredQuantity::new(
@qmass.kilograms(12.0),
@qmass.kilograms(0.1),
)
let volume = @measure.MeasuredQuantity::new(
@qgeometry.liters(3.0),
@qgeometry.liters(0.05),
)
let density = mass.div(volume)
let density_si = density.to(@mass.kilogram_per_cubic_meter)
// density_si.value() == 4000.0let voltage = @measure.MeasuredQuantity::new(
@qelectromagnetism.volts(12.0),
@qelectromagnetism.volts(0.1),
)
let current = @measure.MeasuredQuantity::new(
@qsi.amperes(2.0),
@qsi.amperes(0.02),
)
let power = voltage.mul(current)
// power.unit().is_compatible(@mechanics.watt)moon testmoon info
moon fmtUnit-aware measured values and standard uncertainty propagation for MoonBit.
Dependencies