Skip to content

units ¤

Explicit scalar unit conversion at the schematic/library boundary.

Functions:

Name Description
convert_unit

Convert explicitly declared units; reject incompatible dimensions.

convert_unit ¤

convert_unit(value: float, source: str, target: str) -> float

Convert explicitly declared units; reject incompatible dimensions.

@tags circulax-simulation

Source code in circulax/netlist_io/units.py
def convert_unit(value: float, source: str, target: str) -> float:
    """Convert explicitly declared units; reject incompatible dimensions.

    @tags circulax-simulation
    """
    source_dimension, source_power, source_scale = _unit(source)
    target_dimension, target_power, target_scale = _unit(target)
    if (source_dimension, source_power) != (target_dimension, target_power):
        msg = f"incompatible units {source!r} and {target!r}"
        raise ValueError(msg)
    result = float(value) * source_scale / target_scale
    if not math.isfinite(result):
        msg = "unit conversion requires finite values"
        raise ValueError(msg)
    return result