mirror of
https://github.com/erg-lang/erg.git
synced 2025-08-04 02:39:20 +00:00
feat: add Dimension
and unit
module
This commit is contained in:
parent
82848c10d6
commit
4651a383ae
16 changed files with 392 additions and 10 deletions
|
@ -1,6 +1,5 @@
|
|||
unsound = import "unsound"
|
||||
|
||||
# TODO: exception: Exception
|
||||
unsound.pyexec("""
|
||||
def try_(p, exc=lambda _: None, els=lambda: None, fin=lambda: None):
|
||||
__result = None
|
||||
|
|
96
crates/erg_compiler/lib/std/unit.er
Normal file
96
crates/erg_compiler/lib/std/unit.er
Normal file
|
@ -0,0 +1,96 @@
|
|||
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
|
Loading…
Add table
Add a link
Reference in a new issue