(math-standard-units): Update values. Put in exact values when

possible.
(math-unit-prefixes): Replace floats with powers of ten.
(math-standard-units-systems): Replace floats with integers.
(math-make-unit-string): Remove extra spaces in output.
This commit is contained in:
Jay Belanger 2007-08-15 15:42:58 +00:00
parent 57407fb419
commit a21f3259fd

View file

@ -40,45 +40,47 @@
;;; with some additions by Przemek Klosowski (przemek@rrdstrad.nist.gov)
;;; Updated April 2002 by Jochen Küpper
;;; for CODATA 1998 see one of
;;; - Journal of Physical and Chemical Reference Data, 28(6), 1713-1852, 1999.
;;; - Reviews of Modern Physics, 72(2), 351-495, 2000.
;;; for CODATA 2005 see
;;; - http://physics.nist.gov/cuu/Constants/index.html
;;; Updated August 2007, using
;;; CODATA (http://physics.nist.gov/cuu/Constants/index.html)
;;; NIST (http://physics.nist.gov/Pubs/SP811/appenB9.html)
;;; ESUWM (Encyclopaedia of Scientific Units, Weights and
;;; Measures, by François Cardarelli)
;;; All conversions are exact unless otherwise noted.
(defvar math-standard-units
'( ;; Length
( m nil "*Meter" )
( in "2.54 cm" "Inch" )
( in "254*10^(-2) cm" "Inch" )
( ft "12 in" "Foot" )
( yd "3 ft" "Yard" )
( mi "5280 ft" "Mile" )
( au "149597870691 m" "Astronomical Unit" ) ;; NASA JPL (http://neo.jpl.nasa.gov/glossary/au.html)
( lyr "9460536207068016 m" "Light Year" )
( pc "206264.80625 au" "Parsec" )
( au "149597870691. m" "Astronomical Unit" )
;; (approx) NASA JPL (http://neo.jpl.nasa.gov/glossary/au.html)
( lyr "c yr" "Light Year" )
( pc "3.0856775854e16 m" "Parsec" ) ;; (approx) ESUWM
( nmi "1852 m" "Nautical Mile" )
( fath "6 ft" "Fathom" )
( mu "1 um" "Micron" )
( mil "in/1000" "Mil" )
( point "in/72" "Point (1/72 inch)" )
( Ang "1e-10 m" "Angstrom" )
( Ang "10^(-10) m" "Angstrom" )
( mfi "mi+ft+in" "Miles + feet + inches" )
;; TeX lengths
( texpt "in/72.27" "Point (TeX conventions)" )
( texpt "(100/7227) in" "Point (TeX conventions)" )
( texpc "12 texpt" "Pica" )
( texbp "point" "Big point (TeX conventions)" )
( texdd "1238/1157 texpt" "Didot point" )
( texdd "(1238/1157) texpt" "Didot point" )
( texcc "12 texdd" "Cicero" )
( texsp "1/66536 texpt" "Scaled TeX point" )
( texsp "(1/65536) texpt" "Scaled TeX point" )
;; Area
( hect "10000 m^2" "*Hectare" )
( a "100 m^2" "Are")
( acre "mi^2 / 640" "Acre" )
( b "1e-28 m^2" "Barn" )
( b "10^(-28) m^2" "Barn" )
;; Volume
( L "1e-3 m^3" "*Liter" )
( L "10^(-3) m^3" "*Liter" )
( l "L" "Liter" )
( gal "4 qt" "US Gallon" )
( qt "2 pt" "Quart" )
@ -87,10 +89,10 @@
( ozfl "2 tbsp" "Fluid Ounce" )
( floz "2 tbsp" "Fluid Ounce" )
( tbsp "3 tsp" "Tablespoon" )
( tsp "4.92892159375 ml" "Teaspoon" )
( tsp "4.92892159373 ml" "Teaspoon" ) ;; (approx) ESUWM
( vol "tsp+tbsp+ozfl+cup+pt+qt+gal" "Gallons + ... + teaspoons" )
( galC "4.54609 L" "Canadian Gallon" )
( galUK "4.546092 L" "UK Gallon" )
( galC "galUK" "Canadian Gallon" )
( galUK "454609*10^(-5) L" "UK Gallon" ) ;; NIST
;; Time
( s nil "*Second" )
@ -100,44 +102,44 @@
( day "24 hr" "Day" )
( wk "7 day" "Week" )
( hms "wk+day+hr+min+s" "Hours, minutes, seconds" )
( yr "365.25 day" "Year" )
( yr "365.25 day" "Year" ) ;; (approx, but keep)
( Hz "1/s" "Hertz" )
;; Speed
( mph "mi/hr" "*Miles per hour" )
( kph "km/hr" "Kilometers per hour" )
( knot "nmi/hr" "Knot" )
( c "299792458 m/s" "Speed of light" ) ;;; CODATA 2005
( c "299792458 m/s" "Speed of light" ) ;;; CODATA
;; Acceleration
( ga "9.80665 m/s^2" "*\"g\" acceleration" ) ;; CODATA 2005
( ga "980665*10^(-5) m/s^2" "*\"g\" acceleration" ) ;; CODATA
;; Mass
( g nil "*Gram" )
( lb "16 oz" "Pound (mass)" )
( oz "28.349523125 g" "Ounce (mass)" )
( oz "28349523125*10^(-9) g" "Ounce (mass)" ) ;; ESUWM
( ton "2000 lb" "Ton" )
( tpo "ton+lb+oz" "Tons + pounds + ounces (mass)" )
( t "1000 kg" "Metric ton" )
( tonUK "1016.0469088 kg" "UK ton" )
( tonUK "10160469088*10^(-7) kg" "UK ton" ) ;; ESUWM
( lbt "12 ozt" "Troy pound" )
( ozt "31.103475 g" "Troy ounce" )
( ct ".2 g" "Carat" )
( u "1.66053886e-27 kg" "Unified atomic mass" ) ;; CODATA 2005
( ozt "31.10347680 g" "Troy ounce" ) ;; (approx) ESUWM
( ct "(2/10) g" "Carat" ) ;; ESUWM
( u "1.660538782e-27 kg" "Unified atomic mass" );;(approx) CODATA
;; Force
( N "m kg/s^2" "*Newton" )
( dyn "1e-5 N" "Dyne" )
( dyn "10^(-5) N" "Dyne" )
( gf "ga g" "Gram (force)" )
( lbf "4.44822161526 N" "Pound (force)" )
( lbf "ga lb" "Pound (force)" )
( kip "1000 lbf" "Kilopound (force)" )
( pdl "0.138255 N" "Poundal" )
( pdl "138254954376*10^(-12) N" "Poundal" ) ;; ESUWM
;; Energy
( J "N m" "*Joule" )
( erg "1e-7 J" "Erg" )
( cal "4.1868 J" "International Table Calorie" )
( Btu "1055.05585262 J" "International Table Btu" )
( erg "10^(-7) J" "Erg" )
( cal "4.18674 J" "International Table Calorie" );;(approx) ESUWM
( Btu "105505585262*10^(-8) J" "International Table Btu" ) ;; ESUWM
( eV "ech V" "Electron volt" )
( ev "eV" "Electron volt" )
( therm "105506000 J" "EEC therm" )
@ -151,7 +153,7 @@
;; Power
( W "J/s" "*Watt" )
( hp "745.7 W" "Horsepower" )
( hp "745.699871581 W" "Horsepower" ) ;;(approx) ESUWM
;; Temperature
( K nil "*Degree Kelvin" K )
@ -164,24 +166,24 @@
;; Pressure
( Pa "N/m^2" "*Pascal" )
( bar "1e5 Pa" "Bar" )
( atm "101325 Pa" "Standard atmosphere" ) ;; CODATA 2005
( Torr " 1.333224e2 Pa" "Torr" ) ;; NIST (http://physics.nist.gov/Pubs/SP811/appenB9.html)
( bar "10^5 Pa" "Bar" )
( atm "101325 Pa" "Standard atmosphere" ) ;; CODATA
( Torr "1.333224e2 Pa" "Torr" ) ;;(approx) NIST
( mHg "1000 Torr" "Meter of mercury" )
( inHg "25.4 mmHg" "Inch of mercury" )
( inH2O "2.490889e2 Pa" "Inch of water" ) ;; NIST (http://physics.nist.gov/Pubs/SP811/appenB9.html)
( psi "6894.75729317 Pa" "Pound per square inch" )
( inHg "254*10^(-1) mmHg" "Inch of mercury" )
( inH2O "2.490889e2 Pa" "Inch of water" ) ;;(approx) NIST
( psi "lbf/in^2" "Pounds per square inch" )
;; Viscosity
( P "0.1 Pa s" "*Poise" )
( St "1e-4 m^2/s" "Stokes" )
( P "(1/10) Pa s" "*Poise" )
( St "10^(-4) m^2/s" "Stokes" )
;; Electromagnetism
( A nil "*Ampere" )
( C "A s" "Coulomb" )
( Fdy "ech Nav" "Faraday" )
( e "1.60217653e-19 C" "Elementary charge" ) ;; CODATA 2005
( ech "1.60217653e-19 C" "Elementary charge" ) ;; CODATA 2005
( e "ech" "Elementary charge" )
( ech "1.602176487e-19 C" "Elementary charge" ) ;;(approx) CODATA
( V "W/A" "Volt" )
( ohm "V/A" "Ohm" )
( mho "A/V" "Mho" )
@ -189,26 +191,26 @@
( F "C/V" "Farad" )
( H "Wb/A" "Henry" )
( T "Wb/m^2" "Tesla" )
( Gs "1e-4 T" "Gauss" )
( Gs "10^(-4) T" "Gauss" )
( Wb "V s" "Weber" )
;; Luminous intensity
( cd nil "*Candela" )
( sb "1e4 cd/m^2" "Stilb" )
( sb "10000 cd/m^2" "Stilb" )
( lm "cd sr" "Lumen" )
( lx "lm/m^2" "Lux" )
( ph "1e4 lx" "Phot" )
( fc "10.76391 lx" "Footcandle" ) ;; NIST (http://physics.nist.gov/Pubs/SP811/appenB9.html)
( lam "1e4 lm/m^2" "Lambert" )
( flam "3.426259 cd/m^2" "Footlambert" ) ;; NIST (http://physics.nist.gov/Pubs/SP811/appenB9.html)
( ph "10000 lx" "Phot" )
( fc "10.76391 lx" "Footcandle" ) ;;(approx) NIST
( lam "10000 lm/m^2" "Lambert" )
( flam "3.426259 cd/m^2" "Footlambert" ) ;;(approx) NIST
;; Radioactivity
( Bq "1/s" "*Becquerel" )
( Ci "3.7e10 Bq" "Curie" )
( Ci "37*10^9 Bq" "Curie" ) ;; ESUWM
( Gy "J/kg" "Gray" )
( Sv "Gy" "Sievert" )
( R "2.58e-4 C/kg" "Roentgen" )
( rd ".01 Gy" "Rad" )
( R "258*10^(-6) C/kg" "Roentgen" ) ;; NIST
( rd "(1/100) Gy" "Rad" )
( rem "rd" "Rem" )
;; Amount of substance
@ -228,23 +230,24 @@
( sr nil "*Steradian" )
;; Other physical quantities
( h "6.6260693e-34 J s" "*Planck's constant" ) ;; CODATA 2005
( hbar "h / 2 pi" "Planck's constant" )
( mu0 "4 pi 1e-7 H/m" "Permeability of vacuum" )
( G "6.6742e-11 m^3/kg^1/s^2" "Gravitational constant" ) ;; CODATA 2005
( Nav "6.02214115e23 / mol" "Avagadro's constant" ) ;; CODATA 2005
( me "9.1093826e-31 kg" "Electron rest mass" ) ;; CODATA 2005
( mp "1.67262171e-27 kg" "Proton rest mass" ) ;; CODATA 2005
( mn "1.67492728e-27 kg" "Neutron rest mass" ) ;; CODATA 2005
( mmu "1.88353140e-28 kg" "Muon rest mass" ) ;; CODATA 2005
( Ryd "10973731.568525 /m" "Rydberg's constant" ) ;; CODATA 2005
( k "1.3806505e-23 J/K" "Boltzmann's constant" ) ;; CODATA 2005
( alpha "7.297352568e-3" "Fine structure constant" ) ;; CODATA 2005
( muB "927.400949e-26 J/T" "Bohr magneton" ) ;; CODATA 2005
( muN "5.05078343e-27 J/T" "Nuclear magneton" ) ;; CODATA 2005
( mue "-928.476412e-26 J/T" "Electron magnetic moment" ) ;; CODATA 2005
( mup "1.41060671e-26 J/T" "Proton magnetic moment" ) ;; CODATA 2005
( R0 "8.314472 J/mol/K" "Molar gas constant" ) ;; CODATA 2005
;; The values are from CODATA, and are approximate.
( h "6.62606896e-34 J s" "*Planck's constant" )
( hbar "h / (2 pi)" "Planck's constant" )
( mu0 "4 pi 10^(-7) H/m" "Permeability of vacuum" )
( G "6.67428e-11 m^3/(kg s^2)" "Gravitational constant" )
( Nav "6.02214179e23 / mol" "Avagadro's constant" )
( me "9.10938215e-31 kg" "Electron rest mass" )
( mp "1.672621637e-27 kg" "Proton rest mass" )
( mn "1.674927211e-27 kg" "Neutron rest mass" )
( mmu "1.88353130e-28 kg" "Muon rest mass" )
( Ryd "10973731.568527 /m" "Rydberg's constant" )
( k "1.3806504e-23 J/K" "Boltzmann's constant" )
( alpha "7.2973525376e-3" "Fine structure constant" )
( muB "927.400915e-26 J/T" "Bohr magneton" )
( muN "5.05078324e-27 J/T" "Nuclear magneton" )
( mue "-928.476377e-26 J/T" "Electron magnetic moment" )
( mup "1.410606662e-26 J/T" "Proton magnetic moment" )
( R0 "8.314472 J/(mol K)" "Molar gas constant" )
( V0 "22.710981e-3 m^3/mol" "Standard volume of ideal gas" )))
@ -255,35 +258,35 @@ If this is changed, be sure to set math-units-table to nil to ensure
that the combined units table will be rebuilt.")
(defvar math-unit-prefixes
'( ( ?Y (float 1 24) "Yotta" )
( ?Z (float 1 21) "Zetta" )
( ?E (float 1 18) "Exa" )
( ?P (float 1 15) "Peta" )
( ?T (float 1 12) "Tera" )
( ?G (float 1 9) "Giga" )
( ?M (float 1 6) "Mega" )
( ?k (float 1 3) "Kilo" )
( ?K (float 1 3) "Kilo" )
( ?h (float 1 2) "Hecto" )
( ?H (float 1 2) "Hecto" )
( ?D (float 1 1) "Deka" )
( 0 (float 1 0) nil )
( ?d (float 1 -1) "Deci" )
( ?c (float 1 -2) "Centi" )
( ?m (float 1 -3) "Milli" )
( ?u (float 1 -6) "Micro" )
( ?n (float 1 -9) "Nano" )
( ?p (float 1 -12) "Pico" )
( ?f (float 1 -15) "Femto" )
( ?a (float 1 -18) "Atto" )
( ?z (float 1 -21) "zepto" )
( ?y (float 1 -24) "yocto" )))
'( ( ?Y (^ 10 24) "Yotta" )
( ?Z (^ 10 21) "Zetta" )
( ?E (^ 10 18) "Exa" )
( ?P (^ 10 15) "Peta" )
( ?T (^ 10 12) "Tera" )
( ?G (^ 10 9) "Giga" )
( ?M (^ 10 6) "Mega" )
( ?k (^ 10 3) "Kilo" )
( ?K (^ 10 3) "Kilo" )
( ?h (^ 10 2) "Hecto" )
( ?H (^ 10 2) "Hecto" )
( ?D (^ 10 1) "Deka" )
( 0 (^ 10 0) nil )
( ?d (^ 10 -1) "Deci" )
( ?c (^ 10 -2) "Centi" )
( ?m (^ 10 -3) "Milli" )
( ?u (^ 10 -6) "Micro" )
( ?n (^ 10 -9) "Nano" )
( ?p (^ 10 -12) "Pico" )
( ?f (^ 10 -15) "Femto" )
( ?a (^ 10 -18) "Atto" )
( ?z (^ 10 -21) "zepto" )
( ?y (^ 10 -24) "yocto" )))
(defvar math-standard-units-systems
'( ( base nil )
( si ( ( g '(* (var kg var-kg) (float 1 -3)) ) ) )
( mks ( ( g '(* (var kg var-kg) (float 1 -3)) ) ) )
( cgs ( ( m '(* (var cm var-cm) 100 ) ) ) )))
( si ( ( g '(/ (var kg var-kg) 1000) ) ) )
( mks ( ( g '(/ (var kg var-kg) 1000) ) ) )
( cgs ( ( m '(* (var cm var-cm) 100 ) ) ) )))
(defvar math-units-table nil
"Internal units table derived from math-defined-units.
@ -337,9 +340,11 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
If EXPR is nil, return nil."
(if expr
(let ((cexpr (math-compose-expr expr 0)))
(if (stringp cexpr)
cexpr
(math-composition-to-string cexpr)))))
(replace-regexp-in-string
" / " "/"
(if (stringp cexpr)
cexpr
(math-composition-to-string cexpr))))))
(defvar math-default-units-table
(make-hash-table :test 'equal)