mirror of
https://github.com/erg-lang/erg.git
synced 2025-07-12 23:55:20 +00:00
124 lines
2.7 KiB
Python
124 lines
2.7 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")
|
|
.meter = .m
|
|
.sec = .s
|
|
.ampere = .a
|
|
.kelvin = .k
|
|
.candela = .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)
|
|
assert .meter in Dimension(Int, 0, 1, 0, 0, 0, 0, 0)
|
|
assert .sec in Dimension(Int, 0, 0, 1, 0, 0, 0, 0)
|
|
assert .ampere in Dimension(Int, 0, 0, 0, 1, 0, 0, 0)
|
|
assert .kelvin in Dimension(Int, 0, 0, 0, 0, 1, 0, 0)
|
|
assert .candela 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)
|
|
.Meter = .M
|
|
'''
|
|
Second
|
|
'''
|
|
.S = Dimension(Int, 0, 0, 1, 0, 0, 0, 0)
|
|
.Sec = .S
|
|
'''
|
|
Ampere
|
|
'''
|
|
.A = Dimension(Int, 0, 0, 0, 1, 0, 0, 0)
|
|
.Ampere = .A
|
|
'''
|
|
Kelvin
|
|
'''
|
|
.K = Dimension(Int, 0, 0, 0, 0, 1, 0, 0)
|
|
.Kelvin = .K
|
|
.Mol = Dimension(Int, 0, 0, 0, 0, 0, 1, 0)
|
|
'''
|
|
Candela
|
|
'''
|
|
.Cd = Dimension(Int, 0, 0, 0, 0, 0, 0, 1)
|
|
.Candela = .Cd
|
|
# Derived unit types
|
|
.Hz = Dimension(Int, 0, 0, -1, 0, 0, 0, 0)
|
|
.Hertz = .Hz
|
|
.J = Dimension(Int, 1, 2, -2, 0, 0, 0, 0)
|
|
.Joule = .J
|
|
.N = Dimension(Int, 1, 1, -2, 0, 0, 0, 0)
|
|
.Newton = .N
|
|
.Pa = Dimension(Int, 1, -1, -2, 0, 0, 0, 0)
|
|
.Pascal = .Pa
|
|
.W = Dimension(Int, 1, 2, -3, 0, 0, 0, 0)
|
|
.Watt = .W
|
|
.C = Dimension(Int, 0, 0, 1, 1, 0, 0, 0)
|
|
.Coulomb = .C
|
|
.V = Dimension(Int, 1, 2, -3, -1, 0, 0, 0)
|
|
.Volt = .V
|
|
.F = Dimension(Int, -1, -2, 4, 2, 0, 0, 0)
|
|
.Farad = .F
|
|
.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)
|
|
.Weber = .Wb
|
|
.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)
|
|
.Becquerel = .Bq
|
|
.Gy = Dimension(Int, 2, 0, -2, 0, 0, 0, 0)
|
|
.Gray = .Gy
|
|
.Sv = Dimension(Int, 2, 0, -2, 0, 0, 0, 0)
|
|
.Sievert = .Sv
|
|
.Kat = Dimension(Int, 0, 0, -1, 0, 0, 1, 0)
|
|
.Katal = .Kat
|
|
|
|
.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
|