erg/crates/erg_compiler/lib/std/unit.er
2024-09-20 18:26:29 +09:00

96 lines
2.2 KiB
Python

unsound = import "unsound"
unsound.pyexec("""
kg = Dimension(1)
m = Dimension(1)
s = Dimension(1)
a = Dimension(1)
k = Dimension(1)
mol = Dimension(1)
cd = Dimension(1)
""")
.kg = unsound.pyeval("kg")
.m = unsound.pyeval("m")
.s = unsound.pyeval("s")
.a = unsound.pyeval("a")
.k = unsound.pyeval("k")
.mol = unsound.pyeval("mol")
.cd = unsound.pyeval("cd")
assert .kg in Dimension(Int, 1, 0, 0, 0, 0, 0, 0)
assert .m in Dimension(Int, 0, 1, 0, 0, 0, 0, 0)
assert .s in Dimension(Int, 0, 0, 1, 0, 0, 0, 0)
assert .a in Dimension(Int, 0, 0, 0, 1, 0, 0, 0)
assert .k in Dimension(Int, 0, 0, 0, 0, 1, 0, 0)
assert .mol in Dimension(Int, 0, 0, 0, 0, 0, 1, 0)
assert .cd in Dimension(Int, 0, 0, 0, 0, 0, 0, 1)
# Base unit types
'''
Kilogram
'''
.Kg = Dimension(Int, 1, 0, 0, 0, 0, 0, 0)
'''
Meter
'''
.M = Dimension(Int, 0, 1, 0, 0, 0, 0, 0)
'''
Second
'''
.S = Dimension(Int, 0, 0, 1, 0, 0, 0, 0)
'''
Ampere
'''
.A = Dimension(Int, 0, 0, 0, 1, 0, 0, 0)
'''
Kelvin
'''
.K = Dimension(Int, 0, 0, 0, 0, 1, 0, 0)
.Mol = Dimension(Int, 0, 0, 0, 0, 0, 1, 0)
'''
Candela
'''
.Cd = Dimension(Int, 0, 0, 0, 0, 0, 0, 1)
# Derived unit types
.Hz = Dimension(Int, 0, 0, -1, 0, 0, 0, 0)
.J = Dimension(Int, 1, 2, -2, 0, 0, 0, 0)
.N = Dimension(Int, 1, 1, -2, 0, 0, 0, 0)
.Pa = Dimension(Int, 1, -1, -2, 0, 0, 0, 0)
.W = Dimension(Int, 1, 2, -3, 0, 0, 0, 0)
.C = Dimension(Int, 0, 0, 1, 1, 0, 0, 0)
.V = Dimension(Int, 1, 2, -3, -1, 0, 0, 0)
.F = Dimension(Int, -1, -2, 4, 2, 0, 0, 0)
.Ohm = Dimension(Int, 1, 2, -3, -2, 0, 0, 0)
.Siemens = Dimension(Int, -1, -2, 3, 2, 0, 0, 0)
.Wb = Dimension(Int, 1, 2, -2, -1, 0, 0, 0)
.Tesla = Dimension(Int, 1, 0, -2, -1, 0, 0, 0)
.Henry = Dimension(Int, 1, 2, -2, -2, 0, 0, 0)
.Bq = Dimension(Int, 0, 0, -1, 0, 0, 0, 0)
.Gy = Dimension(Int, 2, 0, -2, 0, 0, 0, 0)
.Sv = Dimension(Int, 2, 0, -2, 0, 0, 0, 0)
.Kat = Dimension(Int, 0, 0, -1, 0, 0, 1, 0)
.quecto = 1e-30
.ronto = 1e-27
.yocto = 1e-24
.zepto = 1e-21
.atto = 1e-18
.femto = 1e-15
.pico = 1e-12
.nano = 1e-9
.micro = 1e-6
.milli = 1e-3
.centi = 1e-2
.deci = 1e-1
.deca = 1e+1
.hecto = 1e+2
.kilo = 1e+3
.mega = 1e+6
.giga = 1e+9
.tera = 1e+12
.peta = 1e+15
.exa = 1e+18
.zetta = 1e+21
.yotta = 1e+24
.ronna = 1e+27
.quetta = 1e+30