[DRE-commits] [ruby-numru-units] 02/05: Refresh patches
Youhei SASAKI
uwabami-guest at moszumanska.debian.org
Thu Aug 31 00:58:08 UTC 2017
This is an automated email from the git hooks/post-receive script.
uwabami-guest pushed a commit to branch master
in repository ruby-numru-units.
commit 5bf92a4913d6657a4459a2f8027681422b4f970a
Author: Youhei SASAKI <uwabami at gfd-dennou.org>
Date: Thu Aug 31 09:54:02 2017 +0900
Refresh patches
Signed-off-by: Youhei SASAKI <uwabami at gfd-dennou.org>
---
debian/patches/0002-Import-upstream-gemspec.patch | 6510 ---------------------
debian/patches/series | 1 -
2 files changed, 6511 deletions(-)
diff --git a/debian/patches/0002-Import-upstream-gemspec.patch b/debian/patches/0002-Import-upstream-gemspec.patch
deleted file mode 100644
index d7ddcfe..0000000
--- a/debian/patches/0002-Import-upstream-gemspec.patch
+++ /dev/null
@@ -1,6510 +0,0 @@
-From: Youhei SASAKI <uwabami at gfd-dennou.org>
-Date: Fri, 25 Nov 2016 14:03:28 +0900
-Subject: Import upstream gemspec
-
-Signed-off-by: Youhei SASAKI <uwabami at gfd-dennou.org>
----
- Gemfile | 4 +
- README.rdoc | 232 ++++
- Rakefile | 2 +
- lib/numru/units.rb | 3101 +-------------------------------------------
- lib/numru/units/units.rb | 3099 +++++++++++++++++++++++++++++++++++++++++++
- lib/numru/units/version.rb | 5 +
- numru-units.gemspec | 25 +
- 7 files changed, 3369 insertions(+), 3099 deletions(-)
- create mode 100644 Gemfile
- create mode 100644 README.rdoc
- create mode 100644 Rakefile
- create mode 100644 lib/numru/units/units.rb
- create mode 100644 lib/numru/units/version.rb
- create mode 100644 numru-units.gemspec
-
---- /dev/null
-+++ b/Gemfile
-@@ -0,0 +1,4 @@
-+source 'https://rubygems.org'
-+
-+# Specify your gem's dependencies in numru-units.gemspec
-+gemspec
---- /dev/null
-+++ b/README.rdoc
-@@ -0,0 +1,232 @@
-+=begin
-+=class NumRu::Units
-+
-+* ((<Overview>))
-+* ((<Installation>))
-+* ((<Usage Examples>))
-+* ((<Class Methods>))
-+* ((<Instance Methods>))
-+* ((<Supported units|URL:http://ruby.gfd-dennou.org/products/numru-units/doc/dcunits.txt>)) (Plural form allowed if the second field is "P")
-+
-+==Overview
-+
-+A class of units of physical quantities.
-+
-+This class covers most functionality of UNIDATA's
-+((<UDUNITS Library|URL:http://www.unidata.ucar.edu/packages/udunits/>)),
-+however, with a more sophisticated handling of string expressions.
-+
-+UDUNITS always decomposes units into the four base units and discards
-+the original string expressions. Therefore, 'hPa' always becomes
-+'100 kg.m-1.sec-1', and 'day' always becomes '86400 sec'. On the other
-+hand, this library tries to keep the original expressions as much as
-+possible by default, while allowing partial to complete decompositions
-+if needed.
-+
-+==Installation
-+
-+Move to the top directly of this library (where you find
-+the file install.rb). Then, type in the following:
-+
-+ % ruby install.rb
-+
-+==Usage Examples
-+
-+Here is an example using the "irb" interactive shell ("(('%'))" is the
-+command prompt, and "(('>>'))" is the irb prompt -- Type in those after it
-+to test. "(('=>'))" shows the result.):
-+
-+ % irb --simple-prompt
-+ >> require "numru/units"
-+ => true
-+ >> un1 = NumRu::Units.new('kg.m2/s')
-+ => Units{kg.m2/s}
-+ >> un2 = NumRu::Units.new('g.m')
-+ => Units{g.m}
-+ >> un3 = un1 / un2
-+ => Units[Multi[Pow[Name[g], Number[-1]], Name[kg], Pow[Name[m], Number[1]], Pow[Name[s], Number[-1]]]]
-+ >> un1.to_s
-+ => "kg.m2/s"
-+ >> un2.to_s
-+ => "g.m"
-+ >> un3.to_s
-+ => "g-1 kg.m1 s-1"
-+ >> un3.reduce5
-+ => Units[Multi[Number[1000], Pow[Name[m], Number[1]], Pow[Name[s], Number[-1]]]]
-+ >> un3.to_s
-+ => "1000 m1 s-1"
-+
-+Note the difference between the results of (('un3.to_s'))
-+before and after (('un3.reduce5')),
-+where the former retains the literal expression
-+of each atomic unit, while the latter does the maximum reduction.
-+You can change the default behavior by using the class method
-+(('reduce_level=')):
-+
-+ >> NumRu::Units.reduce_level = 5
-+ => :reduce5
-+ >> un3.to_s
-+ => "1000 m1 s-1"
-+
-+Note that you can eliminate the prefix (('NumRu::')) by "including"
-+it:
-+
-+ >> require "numru/units"
-+ => true
-+ >> include NumRu
-+ => Object
-+ >> un1 = Units.new('kg.m2/s')
-+ => Units{kg.m2/s}
-+ >> Units.reduce_level = 5
-+ => :reduce5
-+
-+==Class Methods
-+
-+In what follows, the prefix (('NumRu::')) is omitted for conciseness.
-+See ((<Usage Examples>)) on this issue.
-+
-+---Units.new(string)
-+ Constructor.
-+
-+ ARGUMENTS
-+ * string (String): string expression of the units.
-+ [factor] units; [factor] time units [since ...] (see EXAMPLES below)
-+
-+ RETURN VALUE
-+ * a Units
-+
-+ EXAMPLE
-+
-+ units = Units.new('kg.m2/s')
-+ units = Units.new('100 m')
-+ units = Units.new('g/kg')
-+ units = Units.new('hour since 2003-10-01 00:00:0 +0:00')
-+ units = Units.new('hour since 2003-10-01') # same as above
-+ units = Units.new('minutes since 2003-10-01 03:15:22.5 -6:00')
-+
-+---Units[string]
-+
-+ Same as ((<Units.new>))
-+
-+---Units.reduce_level=(n)
-+ Set the reduction level before ((<to_s>)) is applied.
-+
-+ ARGUMENTS
-+ * n (Integer): the reduction level. The default value is 4.
-+ Use 5 if you want a full reduction. Levels lower than 4
-+ will not be needed.
-+
-+==Instance Methods
-+
-+---to_s
-+ Returns a string expression of the units.
-+
-+---*(other)
-+ Multiplies self with another units.
-+ Applies ((<reduce4>)) to format the string expression of the result.
-+
-+ ARGUMENTS
-+ * other [Units]: the other units
-+
-+ RETURN VALUE
-+ * a Units
-+
-+---/(other)
-+ Divides self with another units.
-+ Applies ((<reduce4>)) to format the string expression of the result.
-+
-+ ARGUMENTS
-+ * other [Units]: the other units
-+
-+ RETURN VALUE
-+ * a Units
-+
-+---**(pow)
-+ Power.
-+ Applies ((<reduce4>)) to format the string expression of the result.
-+
-+ ARGUMENTS
-+ * pow [Numeric -- Integer, Rational, or Float]
-+
-+ RETURN VALUE
-+ * a Units
-+
-+---==(other)
-+ Whether the two units are the same.
-+ ('m/s' and 'm.s-1' are the same, for instance.)
-+
-+---===(other)
-+ Same as ((<==>)).
-+
-+---=~(other)
-+ Whether the two units are compatible (i.e., with the same dimensionality).
-+ ('m/s' and '10 m.s-1' are compatible, for instance.)
-+
-+---reduce4
-+ Moderately reduces the string expression of the units (destructive method).
-+ This method preserves string expression of atomic units.
-+ See also ((<reduce5>)).
-+
-+ RETURN VALUE
-+ * self
-+
-+ EXAMPLE
-+ Untis.new('hour/hour').reduce4.to_s
-+ # => "1"
-+ Units.new('mm/m').reduce4.to_s
-+ # => "mm.m-1"
-+
-+---reduce5
-+ Aggressively reduces the string expression of the units (destructive method).
-+ See also ((<reduce4>)).
-+
-+ RETURN VALUE
-+ * self
-+
-+ EXAMPLE
-+ Units.new('hour/hour').reduce4.to_s
-+ # => "1"
-+ Units.new('mm/m').reduce5.to_s
-+ # => "0.001"
-+
-+---convert(numeric, to_units)
-+ Converts a numeric of the current units (=self) to ((|to_units|)).
-+
-+ ARGUMENTS
-+ * numeric [Numeric]: the numeric to convert
-+ * to_units [Units]: the units converted into
-+
-+ RETURN VALUE
-+ * a Numeric
-+
-+ EXCEPTIONS
-+ * ((|self|)) and ((|to_units|)) are incompatible.
-+
-+---convert2(val, to_units)
-+ Like ((<convert>)), but (1) accpets any Numeric-like objects, and (2)
-+ does not raise an exception even if the two units are incompatible --
-+ in this case, simply returns ((|val|)) (warned).
-+
-+ ARGUMENTS
-+ * val [a Numeric-like class, for which (('*')) and (('+')) are defined]:
-+ the value to convert
-+ * to_units [Units]: the units converted into
-+
-+ RETURN VALUE
-+ * an object with the same class as ((|val|)).
-+
-+---factor_and_offset(to_units)
-+ Returns the factor and offset to convert from ((|self|)) to ((|to_units|)).
-+ The conversion is done as (('scale_factor * operand + add_offset')).
-+
-+ ARGUMENTS
-+ * to_units [Units]: the units to be converted into
-+
-+ RETURN VALUE
-+ * [ scale_factor, add_offset ] (a 2-element Array, where both are Numeric)
-+
-+ EXAMPLE
-+ scale_factor, add_offset = from_units.factor_and_offset(to_units)
-+ to = scale_factor * from + add_offset
-+
-+=end
---- /dev/null
-+++ b/Rakefile
-@@ -0,0 +1,2 @@
-+require "bundler/gem_tasks"
-+
---- a/lib/numru/units.rb
-+++ b/lib/numru/units.rb
-@@ -1,3099 +1,2 @@
--#
--# DO NOT MODIFY!!!!
--# This file is automatically generated by Racc 1.4.8
--# from Racc grammer file "".
--#
--
--require 'racc/parser.rb'
--
--
--require 'date'
--
--module NumRu
-- class Units < Racc::Parser
--
--module_eval(<<'...end units.racc/module_eval...', 'units.racc', 65)
--
--VERSION = "1.9"
--
--=begin
--= class Node
--Node is a parent class for classes of parse tree node.
--This is not expected to be instanciated directly.
--=end
--
--class Node
--
-- def initialize(*args)
-- raise "#{self.class} is virtual."
-- end
--
-- def to_s(*args)
-- raise "#{self.class}#to_s is virtual."
-- end
--
--=begin
----- pow other
-- simply constructs a PowNode object.
-- No reduction is performed.
--=end
--
-- def pow(other)
-- PowNode.new(self, other)
-- end
--
--=begin
----- mul other
-- simply constructs a MulNode object.
-- No reduction is performed.
--=end
--
-- def mul(other)
-- other = NumberNode.new(other) if Numeric === other
-- MulNode.new(self, other)
-- end
--
--=begin
----- divide other
-- simply constructs a MulNode object.
-- No reduction is performed.
--=end
--
-- def divide(other)
-- MulNode.new(self, PowNode.new(other, NumberNode.new(-1)))
-- end
--
--=begin
----- shift other
-- simply constructs a ShiftNode object.
-- No reduction is performed.
--=end
--
-- def shift(other)
-- ShiftNode.new(self, other)
-- end
--
--=begin
----- pow_eval other
-- similar to ((<pow other>)), but reduces PowNode[PowNode[...]] into
-- single PowNode[...], so overriden at PowNode class.
--=end
--
-- def pow_eval(other)
-- pow(other)
-- end
--
--=begin
----- inspect
--=end
--
-- def inspect2; "#{self.class}[#{to_s}]"; end
--
-- def inspect; inspect2.gsub(/Units::/, '').gsub(/NumRu::/, '').gsub(/Node\[/, '['); end
--
--=begin
----- trim
-- in most subclasses, "trim" is redirected into "trim2".
--=end
--
-- def trim
-- trim2
-- end
--
--=begin
----- flatten
-- in most subclasses, "flatten" is redirected into "flatten2".
--=end
--
-- def flatten
-- flatten2
-- end
--
--=begin
----- sort
--=end
--
-- def sort
-- raise "#{self.class}#sort is virtual: call after flatten"
-- end
--
--=begin
----- reduce1
----- reduce2
----- reduce3
----- reduce4
----- reduce5
--=end
--
-- def reduce1
-- self
-- end
--
-- def reduce2
-- trim
-- end
--
-- def reduce3
-- trim.flatten
-- end
--
-- def reduce4
-- # unalias(Hash.new).trim.flatten.sort
-- foldnumber(nil).trim.flatten.sort
-- end
--
-- def reduce5
-- expand(Hash.new).trim.flatten.sort
-- end
--
--=begin
----- ref
-- to be overriden at ShiftNode
----- deref
-- to be overriden at ShiftNode
--=end
--
-- def ref
-- NumberNode::ZERO
-- end
--
-- def deref
-- self
-- end
--
--end
--
--class ErrorNode < Node
--
-- def initialize(string)
-- @a = string
-- end
--
-- def to_s; @a; end
--
--end
--
--class ContainerNode < Node
--
-- def trim2
-- x = []
-- for child in self
-- x.push child.trim2
-- end
-- self.class.new(*x)
-- end
--
-- def inspect2
-- a = []
-- for child in self
-- a.push child.inspect2
-- end
-- "#{self.class}[#{a.join(', ')}]"
-- end
--
--end
--
--module BinaryNode
--
-- def each
-- yield @lhs
-- yield @rhs
-- end
--
-- def expand(stopper)
-- self.class.new(@lhs.expand(stopper), @rhs.expand(stopper))
-- end
--
-- def unalias(stopper)
-- self.class.new(@lhs.unalias(stopper), @rhs.unalias(stopper))
-- end
--
-- def foldnumber(stopper)
-- self.class.new(@lhs.foldnumber(stopper), @rhs.foldnumber(stopper))
-- end
--
--end
--
--class TerminalNode < Node
--
-- def trim2; self; end
-- def flatten2; self; end
--
-- def expand(stopper); self; end
-- alias :unalias :expand
-- alias :foldnumber :expand
--
-- def sort; self; end
--
--end
--class NameNode < TerminalNode
--
-- def initialize(string)
-- @a = string
-- end
--
-- def to_s; @a; end
--
-- alias :name :to_s
--
-- def power; NumberNode::UNITY; end
--
-- def mul_eval(another)
-- raise "internal error (#{name}, #{another.name})" if name != another.name
-- PowNode.new(self, self.power.add_eval(another.power))
-- end
--
-- def expand(stopper)
-- raise "circular dependency for #{@a}" if stopper[@a]
-- return self if basic?
-- return CACHE[@a] if CACHE.include?(@a)
-- CACHE[@a] = expand2(stopper)
-- end
--
-- def expand2(stopper)
-- newstopper = stopper.dup
-- newstopper[@a] = true
-- if UDEFS.include?(@a) then
-- Units.new(UDEFS[@a]).ptree.expand(newstopper)
-- else
-- p, n = UALIASES[@a]
-- u = Units.new(UDEFS[n] || n).ptree.expand(newstopper)
-- MulNode.new(u, PowNode.new(NumberNode.new(10), NumberNode.new(p)))
-- end
-- end
--
-- def unalias(stopper)
-- raise "circular dependency for #{@a}" if stopper[@a]
-- return self unless UALIASES.include?(@a)
-- p, n = UALIASES[@a]
-- u = NameNode.new(n)
-- q = PowNode.new(NumberNode.new(10), NumberNode.new(p))
-- MulNode.new(u, q)
-- end
--
-- def foldnumber(stopper)
-- return self unless UPLURALS.include?(@a)
-- n = UPLURALS[@a]
-- NameNode.new(n)
-- end
--
-- def basic?
-- not (UDEFS.include?(@a) or UALIASES.include?(@a))
-- end
--
-- CACHE = {}
--
-- def factor
-- 1
-- end
--
--end
--
--class NameNode
--UDEFS = {
-- "%" => "1e-2", "Au" => "astronomical_unit", "Bq" => "s-1",
-- "C" => "A.s", "Celsius" => "K @ 273.15", "F" => "C/V",
-- "Fahrenheit" => "degree_F", "G" => "gauss", "Gal" => "cm s-2",
-- "Gy" => "J.kg-1", "H" => "Wb.A-1", "Hg" => "mercury",
-- "Hz" => "1/s", "J" => "N.m", "Julian_year" => "365.25 day",
-- "L" => "litre", "N" => "kg.m.s-2", "P" => "poise", "Pa" => "N.m-2",
-- "Pascal" => "Pa", "S" => "A/V", "St" => "stokes", "Sv" => "J.kg-1",
-- "T" => "Wb.m-2", "V" => "J/C", "W" => "J/s", "Wb" => "V.s",
-- "a" => "are", "ac" => "acre", "acre" => "10 chain2",
-- "ampere" => "A", "angstrom" => "1.0e-10 m",
-- "angular_degree" => "degree", "angular_minute" => "minute_angle",
-- "angular_second" => "second_angle", "are" => "100 m2",
-- "astronomical_unit" => "1.49597870e11 m",
-- "astronomical_units" => "1.49597870e11 m", "atm" => "atmosphere",
-- "atmosphere" => "101325 Pa", "bar" => "1e6 dyn.cm-2",
-- "cal" => "calorie", "calorie" => "4.18605 J",
-- "celsius" => "K @ 273.15", "centigrade" => "K @ 273.15",
-- "century" => "100 year", "chain" => "22 yard",
-- "common_year" => "365 day",
-- "conventional_mercury" => "gravity 13595.10 kg/m3", "coulomb" => "C",
-- "d" => "24 hour", "day" => "24 hour", "degC" => "K @ 273.15",
-- "degF" => "degree_F", "degK" => "K", "deg_C" => "K @ 273.15",
-- "deg_F" => "degree_F", "deg_K" => "K", "degree" => "pi.rad/180",
-- "degreeC" => "K @ 273.15", "degreeF" => "degree_F",
-- "degreeK" => "K", "degree_C" => "K @ 273.15",
-- "degree_E" => "degree", "degree_F" => "degree_R @ 459.67",
-- "degree_N" => "degree", "degree_R" => "K / 1.8",
-- "degree_S" => "degree", "degree_W" => "degree",
-- "degree_c" => "K @ 273.15", "degree_east" => "degree_E",
-- "degree_f" => "degree_R @ 459.67", "degree_north" => "degree_N",
-- "degree_south" => "degree_S", "degree_west" => "degree_W",
-- "degrees_east" => "degree_E", "degrees_north" => "degree_N",
-- "degrees_south" => "degree_S", "degrees_west" => "degree_W",
-- "dyn" => "g.cm.s-2", "dyne" => "g.cm.s-2", "erg" => "dyn cm",
-- "fahrenheit" => "degree_F", "farad" => "coulomb/volt",
-- "feet" => "foot", "fermi" => "1.0e-15 m", "foot" => "12 inch",
-- "force" => "9.80665 m.s-2", "ft" => "foot", "g" => "kg/1000",
-- "gal" => "cm s-2", "gauss" => "T / 10000", "gram" => "kg/1000",
-- "gravity" => "9.806650 meter/second2", "h" => "60 min",
-- "hectare" => "100 are", "hertz" => "Hz", "hg" => "mercury",
-- "horse_power" => "75 m kilogram-force / s", "hour" => "60 min",
-- "hr" => "60 min", "in" => "inch", "inch" => "2.54 cm",
-- "joule" => "J", "kelvin" => "K", "kgf" => "kilogram-force",
-- "kilogram" => "kg", "knot" => "nautical_mile / hour",
-- "kph" => "km / hour", "lb" => "pound",
-- "light_speed" => "299792458 m/s", "light_year" => "9.46e15 m",
-- "light_years" => "9.46e15 m", "litre" => "1.0e-3 m3",
-- "lm" => "cd.sr", "lx" => "lm.m-2", "ly" => "light_year",
-- "mb" => "bar / 1000", "mercury" => "conventional_mercury",
-- "meter" => "metre", "metre" => "m", "mgal" => "cm s-2 / 1000",
-- "micron" => "1.0e-6 m", "mile" => "1760 yard",
-- "millibar" => "bar / 1000", "min" => "60 s", "minute" => "60 s",
-- "minute_angle" => "pi.rad/180/60", "mole" => "mol",
-- "mon" => "month", "month" => "6 pentad", "mph" => "mile / hour",
-- "nautical_mile" => "1852 m", "nautical_miles" => "1852 m",
-- "newton" => "N", "ohm" => "V/A", "ounce" => "pound / 16",
-- "oz" => "ounce", "parsec" => "3.0857e16 m", "pascal" => "Pa",
-- "pc" => "parsec", "percent" => "1e-2", "permil" => "1e-3",
-- "pi" => "3.141592653589793238462", "poise" => "dyn s / cm2",
-- "pound" => "453.6 g", "psi" => "pound-force / inch2",
-- "radian" => "rad", "second" => "s",
-- "second_angle" => "pi.rad/180/60/60", "steradian" => "sr",
-- "stokes" => "cm2 / s", "t" => "ton", "tesla" => "Wb.m-2",
-- "ton" => "1000 kg", "tonne" => "ton", "torr" => "133.322 Pa",
-- "volt" => "V", "watt" => "W", "weber" => "Wb", "yard" => "6 feet",
-- "yd" => "yard", "year" => "12 month", "yr" => "year",
--}
--UALIASES = {
-- "Celsiuses" => [0, "Celsius"], "E%" => [18, "%"], "EA" => [18, "A"],
-- "EAu" => [18, "Au"], "EBq" => [18, "Bq"], "EC" => [18, "C"],
-- "EF" => [18, "F"], "EG" => [18, "G"], "EGal" => [18, "Gal"],
-- "EGy" => [18, "Gy"], "EH" => [18, "H"], "EHg" => [18, "Hg"],
-- "EHz" => [18, "Hz"], "EJ" => [18, "J"], "EK" => [18, "K"],
-- "EL" => [18, "L"], "EN" => [18, "N"], "EP" => [18, "P"],
-- "EPa" => [18, "Pa"], "ES" => [18, "S"], "ESt" => [18, "St"],
-- "ESv" => [18, "Sv"], "ET" => [18, "T"], "EV" => [18, "V"],
-- "EW" => [18, "W"], "EWb" => [18, "Wb"], "Ea" => [18, "a"],
-- "Eac" => [18, "ac"], "Eatm" => [18, "atm"], "Ebar" => [18, "bar"],
-- "Ecal" => [18, "cal"],
-- "Econventional_mercury" => [18, "conventional_mercury"],
-- "Ed" => [18, "d"], "EdegC" => [18, "degC"], "EdegF" => [18, "degF"],
-- "Edeg_C" => [18, "deg_C"], "Edeg_F" => [18, "deg_F"],
-- "EdegreeC" => [18, "degreeC"], "EdegreeF" => [18, "degreeF"],
-- "Edegree_C" => [18, "degree_C"], "Edegree_E" => [18, "degree_E"],
-- "Edegree_F" => [18, "degree_F"], "Edegree_N" => [18, "degree_N"],
-- "Edegree_R" => [18, "degree_R"], "Edegree_S" => [18, "degree_S"],
-- "Edegree_W" => [18, "degree_W"], "Edegree_c" => [18, "degree_c"],
-- "Edegree_east" => [18, "degree_east"],
-- "Edegree_f" => [18, "degree_f"],
-- "Edegree_north" => [18, "degree_north"],
-- "Edegree_south" => [18, "degree_south"],
-- "Edegree_west" => [18, "degree_west"],
-- "Edegrees_east" => [18, "degrees_east"],
-- "Edegrees_north" => [18, "degrees_north"],
-- "Edegrees_south" => [18, "degrees_south"],
-- "Edegrees_west" => [18, "degrees_west"], "Edyn" => [18, "dyn"],
-- "Eerg" => [18, "erg"], "Eforce" => [18, "force"], "Eg" => [18, "g"],
-- "Egravity" => [18, "gravity"], "Eh" => [18, "h"],
-- "Ehg" => [18, "hg"], "Ehr" => [18, "hr"], "Ein" => [18, "in"],
-- "Ekg" => [18, "kg"], "Ekgf" => [18, "kgf"], "Ekph" => [18, "kph"],
-- "Elb" => [18, "lb"], "Elm" => [18, "lm"], "Elx" => [18, "lx"],
-- "Ely" => [18, "ly"], "Em" => [18, "m"], "Emb" => [18, "mb"],
-- "Emercury" => [18, "mercury"], "Emgal" => [18, "mgal"],
-- "Emin" => [18, "min"], "Emol" => [18, "mol"], "Emon" => [18, "mon"],
-- "Emph" => [18, "mph"], "Eohm" => [18, "ohm"], "Eoz" => [18, "oz"],
-- "Epc" => [18, "pc"], "Epercent" => [18, "percent"],
-- "Epermil" => [18, "permil"], "Epsi" => [18, "psi"],
-- "Erad" => [18, "rad"], "Es" => [18, "s"], "Esr" => [18, "sr"],
-- "Et" => [18, "t"], "Eyr" => [18, "yr"],
-- "Fahrenheits" => [0, "Fahrenheit"], "G%" => [9, "%"],
-- "GA" => [9, "A"], "GAu" => [9, "Au"], "GBq" => [9, "Bq"],
-- "GC" => [9, "C"], "GF" => [9, "F"], "GG" => [9, "G"],
-- "GGal" => [9, "Gal"], "GGy" => [9, "Gy"], "GH" => [9, "H"],
-- "GHg" => [9, "Hg"], "GHz" => [9, "Hz"], "GJ" => [9, "J"],
-- "GK" => [9, "K"], "GL" => [9, "L"], "GN" => [9, "N"],
-- "GP" => [9, "P"], "GPa" => [9, "Pa"], "GS" => [9, "S"],
-- "GSt" => [9, "St"], "GSv" => [9, "Sv"], "GT" => [9, "T"],
-- "GV" => [9, "V"], "GW" => [9, "W"], "GWb" => [9, "Wb"],
-- "Ga" => [9, "a"], "Gac" => [9, "ac"], "Gatm" => [9, "atm"],
-- "Gbar" => [9, "bar"], "Gcal" => [9, "cal"],
-- "Gconventional_mercury" => [9, "conventional_mercury"],
-- "Gd" => [9, "d"], "GdegC" => [9, "degC"], "GdegF" => [9, "degF"],
-- "Gdeg_C" => [9, "deg_C"], "Gdeg_F" => [9, "deg_F"],
-- "GdegreeC" => [9, "degreeC"], "GdegreeF" => [9, "degreeF"],
-- "Gdegree_C" => [9, "degree_C"], "Gdegree_E" => [9, "degree_E"],
-- "Gdegree_F" => [9, "degree_F"], "Gdegree_N" => [9, "degree_N"],
-- "Gdegree_R" => [9, "degree_R"], "Gdegree_S" => [9, "degree_S"],
-- "Gdegree_W" => [9, "degree_W"], "Gdegree_c" => [9, "degree_c"],
-- "Gdegree_east" => [9, "degree_east"], "Gdegree_f" => [9, "degree_f"],
-- "Gdegree_north" => [9, "degree_north"],
-- "Gdegree_south" => [9, "degree_south"],
-- "Gdegree_west" => [9, "degree_west"],
-- "Gdegrees_east" => [9, "degrees_east"],
-- "Gdegrees_north" => [9, "degrees_north"],
-- "Gdegrees_south" => [9, "degrees_south"],
-- "Gdegrees_west" => [9, "degrees_west"], "Gdyn" => [9, "dyn"],
-- "Gerg" => [9, "erg"], "Gforce" => [9, "force"], "Gg" => [9, "g"],
-- "Ggravity" => [9, "gravity"], "Gh" => [9, "h"], "Ghg" => [9, "hg"],
-- "Ghr" => [9, "hr"], "Gin" => [9, "in"], "Gkg" => [9, "kg"],
-- "Gkgf" => [9, "kgf"], "Gkph" => [9, "kph"], "Glb" => [9, "lb"],
-- "Glm" => [9, "lm"], "Glx" => [9, "lx"], "Gly" => [9, "ly"],
-- "Gm" => [9, "m"], "Gmb" => [9, "mb"], "Gmercury" => [9, "mercury"],
-- "Gmgal" => [9, "mgal"], "Gmin" => [9, "min"], "Gmol" => [9, "mol"],
-- "Gmon" => [9, "mon"], "Gmph" => [9, "mph"], "Gohm" => [9, "ohm"],
-- "Goz" => [9, "oz"], "Gpc" => [9, "pc"],
-- "Gpercent" => [9, "percent"], "Gpermil" => [9, "permil"],
-- "Gpsi" => [9, "psi"], "Grad" => [9, "rad"], "Gs" => [9, "s"],
-- "Gsr" => [9, "sr"], "Gt" => [9, "t"], "Gyr" => [9, "yr"],
-- "Julians_year" => [0, "Julian_year"], "M%" => [6, "%"],
-- "MA" => [6, "A"], "MAu" => [6, "Au"], "MBq" => [6, "Bq"],
-- "MC" => [6, "C"], "MF" => [6, "F"], "MG" => [6, "G"],
-- "MGal" => [6, "Gal"], "MGy" => [6, "Gy"], "MH" => [6, "H"],
-- "MHg" => [6, "Hg"], "MHz" => [6, "Hz"], "MJ" => [6, "J"],
-- "MK" => [6, "K"], "ML" => [6, "L"], "MN" => [6, "N"],
-- "MP" => [6, "P"], "MPa" => [6, "Pa"], "MS" => [6, "S"],
-- "MSt" => [6, "St"], "MSv" => [6, "Sv"], "MT" => [6, "T"],
-- "MV" => [6, "V"], "MW" => [6, "W"], "MWb" => [6, "Wb"],
-- "Ma" => [6, "a"], "Mac" => [6, "ac"], "Matm" => [6, "atm"],
-- "Mbar" => [6, "bar"], "Mcal" => [6, "cal"],
-- "Mconventional_mercury" => [6, "conventional_mercury"],
-- "Md" => [6, "d"], "MdegC" => [6, "degC"], "MdegF" => [6, "degF"],
-- "Mdeg_C" => [6, "deg_C"], "Mdeg_F" => [6, "deg_F"],
-- "MdegreeC" => [6, "degreeC"], "MdegreeF" => [6, "degreeF"],
-- "Mdegree_C" => [6, "degree_C"], "Mdegree_E" => [6, "degree_E"],
-- "Mdegree_F" => [6, "degree_F"], "Mdegree_N" => [6, "degree_N"],
-- "Mdegree_R" => [6, "degree_R"], "Mdegree_S" => [6, "degree_S"],
-- "Mdegree_W" => [6, "degree_W"], "Mdegree_c" => [6, "degree_c"],
-- "Mdegree_east" => [6, "degree_east"], "Mdegree_f" => [6, "degree_f"],
-- "Mdegree_north" => [6, "degree_north"],
-- "Mdegree_south" => [6, "degree_south"],
-- "Mdegree_west" => [6, "degree_west"],
-- "Mdegrees_east" => [6, "degrees_east"],
-- "Mdegrees_north" => [6, "degrees_north"],
-- "Mdegrees_south" => [6, "degrees_south"],
-- "Mdegrees_west" => [6, "degrees_west"], "Mdyn" => [6, "dyn"],
-- "Merg" => [6, "erg"], "Mforce" => [6, "force"], "Mg" => [6, "g"],
-- "Mgravity" => [6, "gravity"], "Mh" => [6, "h"], "Mhg" => [6, "hg"],
-- "Mhr" => [6, "hr"], "Min" => [6, "in"], "Mkg" => [6, "kg"],
-- "Mkgf" => [6, "kgf"], "Mkph" => [6, "kph"], "Mlb" => [6, "lb"],
-- "Mlm" => [6, "lm"], "Mlx" => [6, "lx"], "Mly" => [6, "ly"],
-- "Mm" => [6, "m"], "Mmb" => [6, "mb"], "Mmercury" => [6, "mercury"],
-- "Mmgal" => [6, "mgal"], "Mmin" => [6, "min"], "Mmol" => [6, "mol"],
-- "Mmon" => [6, "mon"], "Mmph" => [6, "mph"], "Mohm" => [6, "ohm"],
-- "Moz" => [6, "oz"], "Mpc" => [6, "pc"],
-- "Mpercent" => [6, "percent"], "Mpermil" => [6, "permil"],
-- "Mpsi" => [6, "psi"], "Mrad" => [6, "rad"], "Ms" => [6, "s"],
-- "Msr" => [6, "sr"], "Mt" => [6, "t"], "Myr" => [6, "yr"],
-- "P%" => [15, "%"], "PA" => [15, "A"], "PAu" => [15, "Au"],
-- "PBq" => [15, "Bq"], "PC" => [15, "C"], "PF" => [15, "F"],
-- "PG" => [15, "G"], "PGal" => [15, "Gal"], "PGy" => [15, "Gy"],
-- "PH" => [15, "H"], "PHg" => [15, "Hg"], "PHz" => [15, "Hz"],
-- "PJ" => [15, "J"], "PK" => [15, "K"], "PL" => [15, "L"],
-- "PN" => [15, "N"], "PP" => [15, "P"], "PPa" => [15, "Pa"],
-- "PS" => [15, "S"], "PSt" => [15, "St"], "PSv" => [15, "Sv"],
-- "PT" => [15, "T"], "PV" => [15, "V"], "PW" => [15, "W"],
-- "PWb" => [15, "Wb"], "Pa" => [15, "a"], "Pac" => [15, "ac"],
-- "Pascals" => [0, "Pascal"], "Patm" => [15, "atm"],
-- "Pbar" => [15, "bar"], "Pcal" => [15, "cal"],
-- "Pconventional_mercury" => [15, "conventional_mercury"],
-- "Pd" => [15, "d"], "PdegC" => [15, "degC"], "PdegF" => [15, "degF"],
-- "Pdeg_C" => [15, "deg_C"], "Pdeg_F" => [15, "deg_F"],
-- "PdegreeC" => [15, "degreeC"], "PdegreeF" => [15, "degreeF"],
-- "Pdegree_C" => [15, "degree_C"], "Pdegree_E" => [15, "degree_E"],
-- "Pdegree_F" => [15, "degree_F"], "Pdegree_N" => [15, "degree_N"],
-- "Pdegree_R" => [15, "degree_R"], "Pdegree_S" => [15, "degree_S"],
-- "Pdegree_W" => [15, "degree_W"], "Pdegree_c" => [15, "degree_c"],
-- "Pdegree_east" => [15, "degree_east"],
-- "Pdegree_f" => [15, "degree_f"],
-- "Pdegree_north" => [15, "degree_north"],
-- "Pdegree_south" => [15, "degree_south"],
-- "Pdegree_west" => [15, "degree_west"],
-- "Pdegrees_east" => [15, "degrees_east"],
-- "Pdegrees_north" => [15, "degrees_north"],
-- "Pdegrees_south" => [15, "degrees_south"],
-- "Pdegrees_west" => [15, "degrees_west"], "Pdyn" => [15, "dyn"],
-- "Perg" => [15, "erg"], "Pforce" => [15, "force"], "Pg" => [15, "g"],
-- "Pgravity" => [15, "gravity"], "Ph" => [15, "h"],
-- "Phg" => [15, "hg"], "Phr" => [15, "hr"], "Pin" => [15, "in"],
-- "Pkg" => [15, "kg"], "Pkgf" => [15, "kgf"], "Pkph" => [15, "kph"],
-- "Plb" => [15, "lb"], "Plm" => [15, "lm"], "Plx" => [15, "lx"],
-- "Ply" => [15, "ly"], "Pm" => [15, "m"], "Pmb" => [15, "mb"],
-- "Pmercury" => [15, "mercury"], "Pmgal" => [15, "mgal"],
-- "Pmin" => [15, "min"], "Pmol" => [15, "mol"], "Pmon" => [15, "mon"],
-- "Pmph" => [15, "mph"], "Pohm" => [15, "ohm"], "Poz" => [15, "oz"],
-- "Ppc" => [15, "pc"], "Ppercent" => [15, "percent"],
-- "Ppermil" => [15, "permil"], "Ppsi" => [15, "psi"],
-- "Prad" => [15, "rad"], "Ps" => [15, "s"], "Psr" => [15, "sr"],
-- "Pt" => [15, "t"], "Pyr" => [15, "yr"], "T%" => [12, "%"],
-- "TA" => [12, "A"], "TAu" => [12, "Au"], "TBq" => [12, "Bq"],
-- "TC" => [12, "C"], "TF" => [12, "F"], "TG" => [12, "G"],
-- "TGal" => [12, "Gal"], "TGy" => [12, "Gy"], "TH" => [12, "H"],
-- "THg" => [12, "Hg"], "THz" => [12, "Hz"], "TJ" => [12, "J"],
-- "TK" => [12, "K"], "TL" => [12, "L"], "TN" => [12, "N"],
-- "TP" => [12, "P"], "TPa" => [12, "Pa"], "TS" => [12, "S"],
-- "TSt" => [12, "St"], "TSv" => [12, "Sv"], "TT" => [12, "T"],
-- "TV" => [12, "V"], "TW" => [12, "W"], "TWb" => [12, "Wb"],
-- "Ta" => [12, "a"], "Tac" => [12, "ac"], "Tatm" => [12, "atm"],
-- "Tbar" => [12, "bar"], "Tcal" => [12, "cal"],
-- "Tconventional_mercury" => [12, "conventional_mercury"],
-- "Td" => [12, "d"], "TdegC" => [12, "degC"], "TdegF" => [12, "degF"],
-- "Tdeg_C" => [12, "deg_C"], "Tdeg_F" => [12, "deg_F"],
-- "TdegreeC" => [12, "degreeC"], "TdegreeF" => [12, "degreeF"],
-- "Tdegree_C" => [12, "degree_C"], "Tdegree_E" => [12, "degree_E"],
-- "Tdegree_F" => [12, "degree_F"], "Tdegree_N" => [12, "degree_N"],
-- "Tdegree_R" => [12, "degree_R"], "Tdegree_S" => [12, "degree_S"],
-- "Tdegree_W" => [12, "degree_W"], "Tdegree_c" => [12, "degree_c"],
-- "Tdegree_east" => [12, "degree_east"],
-- "Tdegree_f" => [12, "degree_f"],
-- "Tdegree_north" => [12, "degree_north"],
-- "Tdegree_south" => [12, "degree_south"],
-- "Tdegree_west" => [12, "degree_west"],
-- "Tdegrees_east" => [12, "degrees_east"],
-- "Tdegrees_north" => [12, "degrees_north"],
-- "Tdegrees_south" => [12, "degrees_south"],
-- "Tdegrees_west" => [12, "degrees_west"], "Tdyn" => [12, "dyn"],
-- "Terg" => [12, "erg"], "Tforce" => [12, "force"], "Tg" => [12, "g"],
-- "Tgravity" => [12, "gravity"], "Th" => [12, "h"],
-- "Thg" => [12, "hg"], "Thr" => [12, "hr"], "Tin" => [12, "in"],
-- "Tkg" => [12, "kg"], "Tkgf" => [12, "kgf"], "Tkph" => [12, "kph"],
-- "Tlb" => [12, "lb"], "Tlm" => [12, "lm"], "Tlx" => [12, "lx"],
-- "Tly" => [12, "ly"], "Tm" => [12, "m"], "Tmb" => [12, "mb"],
-- "Tmercury" => [12, "mercury"], "Tmgal" => [12, "mgal"],
-- "Tmin" => [12, "min"], "Tmol" => [12, "mol"], "Tmon" => [12, "mon"],
-- "Tmph" => [12, "mph"], "Tohm" => [12, "ohm"], "Toz" => [12, "oz"],
-- "Tpc" => [12, "pc"], "Tpercent" => [12, "percent"],
-- "Tpermil" => [12, "permil"], "Tpsi" => [12, "psi"],
-- "Trad" => [12, "rad"], "Ts" => [12, "s"], "Tsr" => [12, "sr"],
-- "Tt" => [12, "t"], "Tyr" => [12, "yr"], "a%" => [-18, "%"],
-- "aA" => [-18, "A"], "aAu" => [-18, "Au"], "aBq" => [-18, "Bq"],
-- "aC" => [-18, "C"], "aF" => [-18, "F"], "aG" => [-18, "G"],
-- "aGal" => [-18, "Gal"], "aGy" => [-18, "Gy"], "aH" => [-18, "H"],
-- "aHg" => [-18, "Hg"], "aHz" => [-18, "Hz"], "aJ" => [-18, "J"],
-- "aK" => [-18, "K"], "aL" => [-18, "L"], "aN" => [-18, "N"],
-- "aP" => [-18, "P"], "aPa" => [-18, "Pa"], "aS" => [-18, "S"],
-- "aSt" => [-18, "St"], "aSv" => [-18, "Sv"], "aT" => [-18, "T"],
-- "aV" => [-18, "V"], "aW" => [-18, "W"], "aWb" => [-18, "Wb"],
-- "aa" => [-18, "a"], "aac" => [-18, "ac"], "aatm" => [-18, "atm"],
-- "abar" => [-18, "bar"], "acal" => [-18, "cal"],
-- "aconventional_mercury" => [-18, "conventional_mercury"],
-- "acres" => [0, "acre"], "ad" => [-18, "d"],
-- "adegC" => [-18, "degC"], "adegF" => [-18, "degF"],
-- "adeg_C" => [-18, "deg_C"], "adeg_F" => [-18, "deg_F"],
-- "adegreeC" => [-18, "degreeC"], "adegreeF" => [-18, "degreeF"],
-- "adegree_C" => [-18, "degree_C"], "adegree_E" => [-18, "degree_E"],
-- "adegree_F" => [-18, "degree_F"], "adegree_N" => [-18, "degree_N"],
-- "adegree_R" => [-18, "degree_R"], "adegree_S" => [-18, "degree_S"],
-- "adegree_W" => [-18, "degree_W"], "adegree_c" => [-18, "degree_c"],
-- "adegree_east" => [-18, "degree_east"],
-- "adegree_f" => [-18, "degree_f"],
-- "adegree_north" => [-18, "degree_north"],
-- "adegree_south" => [-18, "degree_south"],
-- "adegree_west" => [-18, "degree_west"],
-- "adegrees_east" => [-18, "degrees_east"],
-- "adegrees_north" => [-18, "degrees_north"],
-- "adegrees_south" => [-18, "degrees_south"],
-- "adegrees_west" => [-18, "degrees_west"], "adyn" => [-18, "dyn"],
-- "aerg" => [-18, "erg"], "aforce" => [-18, "force"],
-- "ag" => [-18, "g"], "agravity" => [-18, "gravity"],
-- "ah" => [-18, "h"], "ahg" => [-18, "hg"], "ahr" => [-18, "hr"],
-- "ain" => [-18, "in"], "akg" => [-18, "kg"], "akgf" => [-18, "kgf"],
-- "akph" => [-18, "kph"], "alb" => [-18, "lb"], "alm" => [-18, "lm"],
-- "alx" => [-18, "lx"], "aly" => [-18, "ly"], "am" => [-18, "m"],
-- "amb" => [-18, "mb"], "amercury" => [-18, "mercury"],
-- "amgal" => [-18, "mgal"], "amin" => [-18, "min"],
-- "amol" => [-18, "mol"], "amon" => [-18, "mon"],
-- "amperes" => [0, "ampere"], "amph" => [-18, "mph"],
-- "angstroms" => [0, "angstrom"],
-- "angulars_degree" => [0, "angular_degree"],
-- "angulars_minute" => [0, "angular_minute"],
-- "angulars_second" => [0, "angular_second"], "aohm" => [-18, "ohm"],
-- "aoz" => [-18, "oz"], "apc" => [-18, "pc"],
-- "apercent" => [-18, "percent"], "apermil" => [-18, "permil"],
-- "apsi" => [-18, "psi"], "arad" => [-18, "rad"],
-- "ares" => [0, "are"], "as" => [-18, "s"], "asr" => [-18, "sr"],
-- "at" => [-18, "t"], "atmospheres" => [0, "atmosphere"],
-- "attoCelsius" => [-18, "Celsius"],
-- "attoFahrenheit" => [-18, "Fahrenheit"],
-- "attoJulian_year" => [-18, "Julian_year"],
-- "attoPascal" => [-18, "Pascal"], "attoacre" => [-18, "acre"],
-- "attoampere" => [-18, "ampere"], "attoangstrom" => [-18, "angstrom"],
-- "attoangular_degree" => [-18, "angular_degree"],
-- "attoangular_minute" => [-18, "angular_minute"],
-- "attoangular_second" => [-18, "angular_second"],
-- "attoare" => [-18, "are"], "attoatmosphere" => [-18, "atmosphere"],
-- "attocalorie" => [-18, "calorie"], "attocelsius" => [-18, "celsius"],
-- "attocentigrade" => [-18, "centigrade"],
-- "attocentury" => [-18, "century"], "attochain" => [-18, "chain"],
-- "attocommon_year" => [-18, "common_year"],
-- "attocoulomb" => [-18, "coulomb"], "attoday" => [-18, "day"],
-- "attodegK" => [-18, "degK"], "attodeg_K" => [-18, "deg_K"],
-- "attodegree" => [-18, "degree"], "attodegreeK" => [-18, "degreeK"],
-- "attodyne" => [-18, "dyne"], "attoerg" => [-18, "erg"],
-- "attofahrenheit" => [-18, "fahrenheit"],
-- "attofarad" => [-18, "farad"], "attofermi" => [-18, "fermi"],
-- "attogal" => [-18, "gal"], "attogauss" => [-18, "gauss"],
-- "attogram" => [-18, "gram"], "attohectare" => [-18, "hectare"],
-- "attohertz" => [-18, "hertz"], "attohour" => [-18, "hour"],
-- "attoinch" => [-18, "inch"], "attojoule" => [-18, "joule"],
-- "attokelvin" => [-18, "kelvin"], "attokilogram" => [-18, "kilogram"],
-- "attoknot" => [-18, "knot"], "attolitre" => [-18, "litre"],
-- "attometer" => [-18, "meter"], "attometre" => [-18, "metre"],
-- "attomicron" => [-18, "micron"], "attomile" => [-18, "mile"],
-- "attomillibar" => [-18, "millibar"], "attominute" => [-18, "minute"],
-- "attominute_angle" => [-18, "minute_angle"],
-- "attomole" => [-18, "mole"], "attomonth" => [-18, "month"],
-- "attonewton" => [-18, "newton"], "attoounce" => [-18, "ounce"],
-- "attoparsec" => [-18, "parsec"], "attopascal" => [-18, "pascal"],
-- "attopentad" => [-18, "pentad"], "attopoise" => [-18, "poise"],
-- "attopound" => [-18, "pound"], "attoradian" => [-18, "radian"],
-- "attosecond" => [-18, "second"],
-- "attosecond_angle" => [-18, "second_angle"],
-- "attosteradian" => [-18, "steradian"],
-- "attostokes" => [-18, "stokes"], "attotesla" => [-18, "tesla"],
-- "attoton" => [-18, "ton"], "attotonne" => [-18, "tonne"],
-- "attotorr" => [-18, "torr"], "attovolt" => [-18, "volt"],
-- "attowatt" => [-18, "watt"], "attoweber" => [-18, "weber"],
-- "attoyard" => [-18, "yard"], "attoyd" => [-18, "yd"],
-- "attoyear" => [-18, "year"], "ayr" => [-18, "yr"],
-- "c%" => [-2, "%"], "cA" => [-2, "A"], "cAu" => [-2, "Au"],
-- "cBq" => [-2, "Bq"], "cC" => [-2, "C"], "cF" => [-2, "F"],
-- "cG" => [-2, "G"], "cGal" => [-2, "Gal"], "cGy" => [-2, "Gy"],
-- "cH" => [-2, "H"], "cHg" => [-2, "Hg"], "cHz" => [-2, "Hz"],
-- "cJ" => [-2, "J"], "cK" => [-2, "K"], "cL" => [-2, "L"],
-- "cN" => [-2, "N"], "cP" => [-2, "P"], "cPa" => [-2, "Pa"],
-- "cS" => [-2, "S"], "cSt" => [-2, "St"], "cSv" => [-2, "Sv"],
-- "cT" => [-2, "T"], "cV" => [-2, "V"], "cW" => [-2, "W"],
-- "cWb" => [-2, "Wb"], "ca" => [-2, "a"], "cac" => [-2, "ac"],
-- "calories" => [0, "calorie"], "catm" => [-2, "atm"],
-- "cbar" => [-2, "bar"], "ccal" => [-2, "cal"],
-- "cconventional_mercury" => [-2, "conventional_mercury"],
-- "cd" => [-2, "d"], "cdegC" => [-2, "degC"], "cdegF" => [-2, "degF"],
-- "cdeg_C" => [-2, "deg_C"], "cdeg_F" => [-2, "deg_F"],
-- "cdegreeC" => [-2, "degreeC"], "cdegreeF" => [-2, "degreeF"],
-- "cdegree_C" => [-2, "degree_C"], "cdegree_E" => [-2, "degree_E"],
-- "cdegree_F" => [-2, "degree_F"], "cdegree_N" => [-2, "degree_N"],
-- "cdegree_R" => [-2, "degree_R"], "cdegree_S" => [-2, "degree_S"],
-- "cdegree_W" => [-2, "degree_W"], "cdegree_c" => [-2, "degree_c"],
-- "cdegree_east" => [-2, "degree_east"],
-- "cdegree_f" => [-2, "degree_f"],
-- "cdegree_north" => [-2, "degree_north"],
-- "cdegree_south" => [-2, "degree_south"],
-- "cdegree_west" => [-2, "degree_west"],
-- "cdegrees_east" => [-2, "degrees_east"],
-- "cdegrees_north" => [-2, "degrees_north"],
-- "cdegrees_south" => [-2, "degrees_south"],
-- "cdegrees_west" => [-2, "degrees_west"], "cdyn" => [-2, "dyn"],
-- "celsiuses" => [0, "celsius"], "centiCelsius" => [-2, "Celsius"],
-- "centiFahrenheit" => [-2, "Fahrenheit"],
-- "centiJulian_year" => [-2, "Julian_year"],
-- "centiPascal" => [-2, "Pascal"], "centiacre" => [-2, "acre"],
-- "centiampere" => [-2, "ampere"], "centiangstrom" => [-2, "angstrom"],
-- "centiangular_degree" => [-2, "angular_degree"],
-- "centiangular_minute" => [-2, "angular_minute"],
-- "centiangular_second" => [-2, "angular_second"],
-- "centiare" => [-2, "are"], "centiatmosphere" => [-2, "atmosphere"],
-- "centicalorie" => [-2, "calorie"], "centicelsius" => [-2, "celsius"],
-- "centicentigrade" => [-2, "centigrade"],
-- "centicentury" => [-2, "century"], "centichain" => [-2, "chain"],
-- "centicommon_year" => [-2, "common_year"],
-- "centicoulomb" => [-2, "coulomb"], "centiday" => [-2, "day"],
-- "centidegK" => [-2, "degK"], "centideg_K" => [-2, "deg_K"],
-- "centidegree" => [-2, "degree"], "centidegreeK" => [-2, "degreeK"],
-- "centidyne" => [-2, "dyne"], "centierg" => [-2, "erg"],
-- "centifahrenheit" => [-2, "fahrenheit"],
-- "centifarad" => [-2, "farad"], "centifermi" => [-2, "fermi"],
-- "centigal" => [-2, "gal"], "centigauss" => [-2, "gauss"],
-- "centigrades" => [0, "centigrade"], "centigram" => [-2, "gram"],
-- "centihectare" => [-2, "hectare"], "centihertz" => [-2, "hertz"],
-- "centihour" => [-2, "hour"], "centiinch" => [-2, "inch"],
-- "centijoule" => [-2, "joule"], "centikelvin" => [-2, "kelvin"],
-- "centikilogram" => [-2, "kilogram"], "centiknot" => [-2, "knot"],
-- "centilitre" => [-2, "litre"], "centimeter" => [-2, "meter"],
-- "centimetre" => [-2, "metre"], "centimicron" => [-2, "micron"],
-- "centimile" => [-2, "mile"], "centimillibar" => [-2, "millibar"],
-- "centiminute" => [-2, "minute"],
-- "centiminute_angle" => [-2, "minute_angle"],
-- "centimole" => [-2, "mole"], "centimonth" => [-2, "month"],
-- "centinewton" => [-2, "newton"], "centiounce" => [-2, "ounce"],
-- "centiparsec" => [-2, "parsec"], "centipascal" => [-2, "pascal"],
-- "centipentad" => [-2, "pentad"], "centipoise" => [-2, "poise"],
-- "centipound" => [-2, "pound"], "centiradian" => [-2, "radian"],
-- "centisecond" => [-2, "second"],
-- "centisecond_angle" => [-2, "second_angle"],
-- "centisteradian" => [-2, "steradian"],
-- "centistokes" => [-2, "stokes"], "centitesla" => [-2, "tesla"],
-- "centiton" => [-2, "ton"], "centitonne" => [-2, "tonne"],
-- "centitorr" => [-2, "torr"], "centivolt" => [-2, "volt"],
-- "centiwatt" => [-2, "watt"], "centiweber" => [-2, "weber"],
-- "centiyard" => [-2, "yard"], "centiyd" => [-2, "yd"],
-- "centiyear" => [-2, "year"], "centuries" => [0, "century"],
-- "cerg" => [-2, "erg"], "cforce" => [-2, "force"], "cg" => [-2, "g"],
-- "cgravity" => [-2, "gravity"], "ch" => [-2, "h"],
-- "chains" => [0, "chain"], "chg" => [-2, "hg"], "chr" => [-2, "hr"],
-- "cin" => [-2, "in"], "ckg" => [-2, "kg"], "ckgf" => [-2, "kgf"],
-- "ckph" => [-2, "kph"], "clb" => [-2, "lb"], "clm" => [-2, "lm"],
-- "clx" => [-2, "lx"], "cly" => [-2, "ly"], "cm" => [-2, "m"],
-- "cmb" => [-2, "mb"], "cmercury" => [-2, "mercury"],
-- "cmgal" => [-2, "mgal"], "cmin" => [-2, "min"],
-- "cmol" => [-2, "mol"], "cmon" => [-2, "mon"], "cmph" => [-2, "mph"],
-- "cohm" => [-2, "ohm"], "commons_year" => [0, "common_year"],
-- "coulombs" => [0, "coulomb"], "coz" => [-2, "oz"],
-- "cpc" => [-2, "pc"], "cpercent" => [-2, "percent"],
-- "cpermil" => [-2, "permil"], "cpsi" => [-2, "psi"],
-- "crad" => [-2, "rad"], "cs" => [-2, "s"], "csr" => [-2, "sr"],
-- "ct" => [-2, "t"], "cyr" => [-2, "yr"], "d%" => [-1, "%"],
-- "dA" => [-1, "A"], "dAu" => [-1, "Au"], "dBq" => [-1, "Bq"],
-- "dC" => [-1, "C"], "dF" => [-1, "F"], "dG" => [-1, "G"],
-- "dGal" => [-1, "Gal"], "dGy" => [-1, "Gy"], "dH" => [-1, "H"],
-- "dHg" => [-1, "Hg"], "dHz" => [-1, "Hz"], "dJ" => [-1, "J"],
-- "dK" => [-1, "K"], "dL" => [-1, "L"], "dN" => [-1, "N"],
-- "dP" => [-1, "P"], "dPa" => [-1, "Pa"], "dS" => [-1, "S"],
-- "dSt" => [-1, "St"], "dSv" => [-1, "Sv"], "dT" => [-1, "T"],
-- "dV" => [-1, "V"], "dW" => [-1, "W"], "dWb" => [-1, "Wb"],
-- "da" => [-1, "a"], "da%" => [1, "%"], "daA" => [1, "A"],
-- "daAu" => [1, "Au"], "daBq" => [1, "Bq"], "daC" => [1, "C"],
-- "daF" => [1, "F"], "daG" => [1, "G"], "daGal" => [1, "Gal"],
-- "daGy" => [1, "Gy"], "daH" => [1, "H"], "daHg" => [1, "Hg"],
-- "daHz" => [1, "Hz"], "daJ" => [1, "J"], "daK" => [1, "K"],
-- "daL" => [1, "L"], "daN" => [1, "N"], "daP" => [1, "P"],
-- "daPa" => [1, "Pa"], "daS" => [1, "S"], "daSt" => [1, "St"],
-- "daSv" => [1, "Sv"], "daT" => [1, "T"], "daV" => [1, "V"],
-- "daW" => [1, "W"], "daWb" => [1, "Wb"], "daa" => [1, "a"],
-- "daac" => [1, "ac"], "daatm" => [1, "atm"], "dabar" => [1, "bar"],
-- "dac" => [-1, "ac"], "dacal" => [1, "cal"],
-- "daconventional_mercury" => [1, "conventional_mercury"],
-- "dad" => [1, "d"], "dadegC" => [1, "degC"], "dadegF" => [1, "degF"],
-- "dadeg_C" => [1, "deg_C"], "dadeg_F" => [1, "deg_F"],
-- "dadegreeC" => [1, "degreeC"], "dadegreeF" => [1, "degreeF"],
-- "dadegree_C" => [1, "degree_C"], "dadegree_E" => [1, "degree_E"],
-- "dadegree_F" => [1, "degree_F"], "dadegree_N" => [1, "degree_N"],
-- "dadegree_R" => [1, "degree_R"], "dadegree_S" => [1, "degree_S"],
-- "dadegree_W" => [1, "degree_W"], "dadegree_c" => [1, "degree_c"],
-- "dadegree_east" => [1, "degree_east"],
-- "dadegree_f" => [1, "degree_f"],
-- "dadegree_north" => [1, "degree_north"],
-- "dadegree_south" => [1, "degree_south"],
-- "dadegree_west" => [1, "degree_west"],
-- "dadegrees_east" => [1, "degrees_east"],
-- "dadegrees_north" => [1, "degrees_north"],
-- "dadegrees_south" => [1, "degrees_south"],
-- "dadegrees_west" => [1, "degrees_west"], "dadyn" => [1, "dyn"],
-- "daerg" => [1, "erg"], "daforce" => [1, "force"], "dag" => [1, "g"],
-- "dagravity" => [1, "gravity"], "dah" => [1, "h"],
-- "dahg" => [1, "hg"], "dahr" => [1, "hr"], "dain" => [1, "in"],
-- "dakg" => [1, "kg"], "dakgf" => [1, "kgf"], "dakph" => [1, "kph"],
-- "dalb" => [1, "lb"], "dalm" => [1, "lm"], "dalx" => [1, "lx"],
-- "daly" => [1, "ly"], "dam" => [1, "m"], "damb" => [1, "mb"],
-- "damercury" => [1, "mercury"], "damgal" => [1, "mgal"],
-- "damin" => [1, "min"], "damol" => [1, "mol"], "damon" => [1, "mon"],
-- "damph" => [1, "mph"], "daohm" => [1, "ohm"], "daoz" => [1, "oz"],
-- "dapc" => [1, "pc"], "dapercent" => [1, "percent"],
-- "dapermil" => [1, "permil"], "dapsi" => [1, "psi"],
-- "darad" => [1, "rad"], "das" => [1, "s"], "dasr" => [1, "sr"],
-- "dat" => [1, "t"], "datm" => [-1, "atm"], "dayr" => [1, "yr"],
-- "days" => [0, "day"], "dbar" => [-1, "bar"], "dcal" => [-1, "cal"],
-- "dconventional_mercury" => [-1, "conventional_mercury"],
-- "dd" => [-1, "d"], "ddegC" => [-1, "degC"], "ddegF" => [-1, "degF"],
-- "ddeg_C" => [-1, "deg_C"], "ddeg_F" => [-1, "deg_F"],
-- "ddegreeC" => [-1, "degreeC"], "ddegreeF" => [-1, "degreeF"],
-- "ddegree_C" => [-1, "degree_C"], "ddegree_E" => [-1, "degree_E"],
-- "ddegree_F" => [-1, "degree_F"], "ddegree_N" => [-1, "degree_N"],
-- "ddegree_R" => [-1, "degree_R"], "ddegree_S" => [-1, "degree_S"],
-- "ddegree_W" => [-1, "degree_W"], "ddegree_c" => [-1, "degree_c"],
-- "ddegree_east" => [-1, "degree_east"],
-- "ddegree_f" => [-1, "degree_f"],
-- "ddegree_north" => [-1, "degree_north"],
-- "ddegree_south" => [-1, "degree_south"],
-- "ddegree_west" => [-1, "degree_west"],
-- "ddegrees_east" => [-1, "degrees_east"],
-- "ddegrees_north" => [-1, "degrees_north"],
-- "ddegrees_south" => [-1, "degrees_south"],
-- "ddegrees_west" => [-1, "degrees_west"], "ddyn" => [-1, "dyn"],
-- "decaCelsius" => [1, "Celsius"],
-- "decaFahrenheit" => [1, "Fahrenheit"],
-- "decaJulian_year" => [1, "Julian_year"],
-- "decaPascal" => [1, "Pascal"], "decaacre" => [1, "acre"],
-- "decaampere" => [1, "ampere"], "decaangstrom" => [1, "angstrom"],
-- "decaangular_degree" => [1, "angular_degree"],
-- "decaangular_minute" => [1, "angular_minute"],
-- "decaangular_second" => [1, "angular_second"],
-- "decaare" => [1, "are"], "decaatmosphere" => [1, "atmosphere"],
-- "decacalorie" => [1, "calorie"], "decacelsius" => [1, "celsius"],
-- "decacentigrade" => [1, "centigrade"],
-- "decacentury" => [1, "century"], "decachain" => [1, "chain"],
-- "decacommon_year" => [1, "common_year"],
-- "decacoulomb" => [1, "coulomb"], "decaday" => [1, "day"],
-- "decadegK" => [1, "degK"], "decadeg_K" => [1, "deg_K"],
-- "decadegree" => [1, "degree"], "decadegreeK" => [1, "degreeK"],
-- "decadyne" => [1, "dyne"], "decaerg" => [1, "erg"],
-- "decafahrenheit" => [1, "fahrenheit"], "decafarad" => [1, "farad"],
-- "decafermi" => [1, "fermi"], "decagal" => [1, "gal"],
-- "decagauss" => [1, "gauss"], "decagram" => [1, "gram"],
-- "decahectare" => [1, "hectare"], "decahertz" => [1, "hertz"],
-- "decahour" => [1, "hour"], "decainch" => [1, "inch"],
-- "decajoule" => [1, "joule"], "decakelvin" => [1, "kelvin"],
-- "decakilogram" => [1, "kilogram"], "decaknot" => [1, "knot"],
-- "decalitre" => [1, "litre"], "decameter" => [1, "meter"],
-- "decametre" => [1, "metre"], "decamicron" => [1, "micron"],
-- "decamile" => [1, "mile"], "decamillibar" => [1, "millibar"],
-- "decaminute" => [1, "minute"],
-- "decaminute_angle" => [1, "minute_angle"], "decamole" => [1, "mole"],
-- "decamonth" => [1, "month"], "decanewton" => [1, "newton"],
-- "decaounce" => [1, "ounce"], "decaparsec" => [1, "parsec"],
-- "decapascal" => [1, "pascal"], "decapentad" => [1, "pentad"],
-- "decapoise" => [1, "poise"], "decapound" => [1, "pound"],
-- "decaradian" => [1, "radian"], "decasecond" => [1, "second"],
-- "decasecond_angle" => [1, "second_angle"],
-- "decasteradian" => [1, "steradian"], "decastokes" => [1, "stokes"],
-- "decatesla" => [1, "tesla"], "decaton" => [1, "ton"],
-- "decatonne" => [1, "tonne"], "decatorr" => [1, "torr"],
-- "decavolt" => [1, "volt"], "decawatt" => [1, "watt"],
-- "decaweber" => [1, "weber"], "decayard" => [1, "yard"],
-- "decayd" => [1, "yd"], "decayear" => [1, "year"],
-- "deciCelsius" => [-1, "Celsius"],
-- "deciFahrenheit" => [-1, "Fahrenheit"],
-- "deciJulian_year" => [-1, "Julian_year"],
-- "deciPascal" => [-1, "Pascal"], "deciacre" => [-1, "acre"],
-- "deciampere" => [-1, "ampere"], "deciangstrom" => [-1, "angstrom"],
-- "deciangular_degree" => [-1, "angular_degree"],
-- "deciangular_minute" => [-1, "angular_minute"],
-- "deciangular_second" => [-1, "angular_second"],
-- "deciare" => [-1, "are"], "deciatmosphere" => [-1, "atmosphere"],
-- "decicalorie" => [-1, "calorie"], "decicelsius" => [-1, "celsius"],
-- "decicentigrade" => [-1, "centigrade"],
-- "decicentury" => [-1, "century"], "decichain" => [-1, "chain"],
-- "decicommon_year" => [-1, "common_year"],
-- "decicoulomb" => [-1, "coulomb"], "deciday" => [-1, "day"],
-- "decidegK" => [-1, "degK"], "decideg_K" => [-1, "deg_K"],
-- "decidegree" => [-1, "degree"], "decidegreeK" => [-1, "degreeK"],
-- "decidyne" => [-1, "dyne"], "decierg" => [-1, "erg"],
-- "decifahrenheit" => [-1, "fahrenheit"], "decifarad" => [-1, "farad"],
-- "decifermi" => [-1, "fermi"], "decigal" => [-1, "gal"],
-- "decigauss" => [-1, "gauss"], "decigram" => [-1, "gram"],
-- "decihectare" => [-1, "hectare"], "decihertz" => [-1, "hertz"],
-- "decihour" => [-1, "hour"], "deciinch" => [-1, "inch"],
-- "decijoule" => [-1, "joule"], "decikelvin" => [-1, "kelvin"],
-- "decikilogram" => [-1, "kilogram"], "deciknot" => [-1, "knot"],
-- "decilitre" => [-1, "litre"], "decimeter" => [-1, "meter"],
-- "decimetre" => [-1, "metre"], "decimicron" => [-1, "micron"],
-- "decimile" => [-1, "mile"], "decimillibar" => [-1, "millibar"],
-- "deciminute" => [-1, "minute"],
-- "deciminute_angle" => [-1, "minute_angle"],
-- "decimole" => [-1, "mole"], "decimonth" => [-1, "month"],
-- "decinewton" => [-1, "newton"], "deciounce" => [-1, "ounce"],
-- "deciparsec" => [-1, "parsec"], "decipascal" => [-1, "pascal"],
-- "decipentad" => [-1, "pentad"], "decipoise" => [-1, "poise"],
-- "decipound" => [-1, "pound"], "deciradian" => [-1, "radian"],
-- "decisecond" => [-1, "second"],
-- "decisecond_angle" => [-1, "second_angle"],
-- "decisteradian" => [-1, "steradian"], "decistokes" => [-1, "stokes"],
-- "decitesla" => [-1, "tesla"], "deciton" => [-1, "ton"],
-- "decitonne" => [-1, "tonne"], "decitorr" => [-1, "torr"],
-- "decivolt" => [-1, "volt"], "deciwatt" => [-1, "watt"],
-- "deciweber" => [-1, "weber"], "deciyard" => [-1, "yard"],
-- "deciyd" => [-1, "yd"], "deciyear" => [-1, "year"],
-- "degKs" => [0, "degK"], "degreeKs" => [0, "degreeK"],
-- "degrees" => [0, "degree"], "degs_K" => [0, "deg_K"],
-- "derg" => [-1, "erg"], "dforce" => [-1, "force"], "dg" => [-1, "g"],
-- "dgravity" => [-1, "gravity"], "dh" => [-1, "h"],
-- "dhg" => [-1, "hg"], "dhr" => [-1, "hr"], "din" => [-1, "in"],
-- "dkg" => [-1, "kg"], "dkgf" => [-1, "kgf"], "dkph" => [-1, "kph"],
-- "dlb" => [-1, "lb"], "dlm" => [-1, "lm"], "dlx" => [-1, "lx"],
-- "dly" => [-1, "ly"], "dm" => [-1, "m"], "dmb" => [-1, "mb"],
-- "dmercury" => [-1, "mercury"], "dmgal" => [-1, "mgal"],
-- "dmin" => [-1, "min"], "dmol" => [-1, "mol"], "dmon" => [-1, "mon"],
-- "dmph" => [-1, "mph"], "dohm" => [-1, "ohm"], "doz" => [-1, "oz"],
-- "dpc" => [-1, "pc"], "dpercent" => [-1, "percent"],
-- "dpermil" => [-1, "permil"], "dpsi" => [-1, "psi"],
-- "drad" => [-1, "rad"], "ds" => [-1, "s"], "dsr" => [-1, "sr"],
-- "dt" => [-1, "t"], "dynes" => [0, "dyne"], "dyr" => [-1, "yr"],
-- "ergs" => [0, "erg"], "exaCelsius" => [18, "Celsius"],
-- "exaFahrenheit" => [18, "Fahrenheit"],
-- "exaJulian_year" => [18, "Julian_year"],
-- "exaPascal" => [18, "Pascal"], "exaacre" => [18, "acre"],
-- "exaampere" => [18, "ampere"], "exaangstrom" => [18, "angstrom"],
-- "exaangular_degree" => [18, "angular_degree"],
-- "exaangular_minute" => [18, "angular_minute"],
-- "exaangular_second" => [18, "angular_second"],
-- "exaare" => [18, "are"], "exaatmosphere" => [18, "atmosphere"],
-- "exacalorie" => [18, "calorie"], "exacelsius" => [18, "celsius"],
-- "exacentigrade" => [18, "centigrade"],
-- "exacentury" => [18, "century"], "exachain" => [18, "chain"],
-- "exacommon_year" => [18, "common_year"],
-- "exacoulomb" => [18, "coulomb"], "exaday" => [18, "day"],
-- "exadegK" => [18, "degK"], "exadeg_K" => [18, "deg_K"],
-- "exadegree" => [18, "degree"], "exadegreeK" => [18, "degreeK"],
-- "exadyne" => [18, "dyne"], "exaerg" => [18, "erg"],
-- "exafahrenheit" => [18, "fahrenheit"], "exafarad" => [18, "farad"],
-- "exafermi" => [18, "fermi"], "exagal" => [18, "gal"],
-- "exagauss" => [18, "gauss"], "exagram" => [18, "gram"],
-- "exahectare" => [18, "hectare"], "exahertz" => [18, "hertz"],
-- "exahour" => [18, "hour"], "exainch" => [18, "inch"],
-- "exajoule" => [18, "joule"], "exakelvin" => [18, "kelvin"],
-- "exakilogram" => [18, "kilogram"], "exaknot" => [18, "knot"],
-- "exalitre" => [18, "litre"], "exameter" => [18, "meter"],
-- "exametre" => [18, "metre"], "examicron" => [18, "micron"],
-- "examile" => [18, "mile"], "examillibar" => [18, "millibar"],
-- "examinute" => [18, "minute"],
-- "examinute_angle" => [18, "minute_angle"], "examole" => [18, "mole"],
-- "examonth" => [18, "month"], "exanewton" => [18, "newton"],
-- "exaounce" => [18, "ounce"], "exaparsec" => [18, "parsec"],
-- "exapascal" => [18, "pascal"], "exapentad" => [18, "pentad"],
-- "exapoise" => [18, "poise"], "exapound" => [18, "pound"],
-- "exaradian" => [18, "radian"], "exasecond" => [18, "second"],
-- "exasecond_angle" => [18, "second_angle"],
-- "exasteradian" => [18, "steradian"], "exastokes" => [18, "stokes"],
-- "exatesla" => [18, "tesla"], "exaton" => [18, "ton"],
-- "exatonne" => [18, "tonne"], "exatorr" => [18, "torr"],
-- "exavolt" => [18, "volt"], "exawatt" => [18, "watt"],
-- "exaweber" => [18, "weber"], "exayard" => [18, "yard"],
-- "exayd" => [18, "yd"], "exayear" => [18, "year"],
-- "f%" => [-15, "%"], "fA" => [-15, "A"], "fAu" => [-15, "Au"],
-- "fBq" => [-15, "Bq"], "fC" => [-15, "C"], "fF" => [-15, "F"],
-- "fG" => [-15, "G"], "fGal" => [-15, "Gal"], "fGy" => [-15, "Gy"],
-- "fH" => [-15, "H"], "fHg" => [-15, "Hg"], "fHz" => [-15, "Hz"],
-- "fJ" => [-15, "J"], "fK" => [-15, "K"], "fL" => [-15, "L"],
-- "fN" => [-15, "N"], "fP" => [-15, "P"], "fPa" => [-15, "Pa"],
-- "fS" => [-15, "S"], "fSt" => [-15, "St"], "fSv" => [-15, "Sv"],
-- "fT" => [-15, "T"], "fV" => [-15, "V"], "fW" => [-15, "W"],
-- "fWb" => [-15, "Wb"], "fa" => [-15, "a"], "fac" => [-15, "ac"],
-- "fahrenheits" => [0, "fahrenheit"], "farads" => [0, "farad"],
-- "fatm" => [-15, "atm"], "fbar" => [-15, "bar"],
-- "fcal" => [-15, "cal"],
-- "fconventional_mercury" => [-15, "conventional_mercury"],
-- "fd" => [-15, "d"], "fdegC" => [-15, "degC"],
-- "fdegF" => [-15, "degF"], "fdeg_C" => [-15, "deg_C"],
-- "fdeg_F" => [-15, "deg_F"], "fdegreeC" => [-15, "degreeC"],
-- "fdegreeF" => [-15, "degreeF"], "fdegree_C" => [-15, "degree_C"],
-- "fdegree_E" => [-15, "degree_E"], "fdegree_F" => [-15, "degree_F"],
-- "fdegree_N" => [-15, "degree_N"], "fdegree_R" => [-15, "degree_R"],
-- "fdegree_S" => [-15, "degree_S"], "fdegree_W" => [-15, "degree_W"],
-- "fdegree_c" => [-15, "degree_c"],
-- "fdegree_east" => [-15, "degree_east"],
-- "fdegree_f" => [-15, "degree_f"],
-- "fdegree_north" => [-15, "degree_north"],
-- "fdegree_south" => [-15, "degree_south"],
-- "fdegree_west" => [-15, "degree_west"],
-- "fdegrees_east" => [-15, "degrees_east"],
-- "fdegrees_north" => [-15, "degrees_north"],
-- "fdegrees_south" => [-15, "degrees_south"],
-- "fdegrees_west" => [-15, "degrees_west"], "fdyn" => [-15, "dyn"],
-- "femtoCelsius" => [-15, "Celsius"],
-- "femtoFahrenheit" => [-15, "Fahrenheit"],
-- "femtoJulian_year" => [-15, "Julian_year"],
-- "femtoPascal" => [-15, "Pascal"], "femtoacre" => [-15, "acre"],
-- "femtoampere" => [-15, "ampere"],
-- "femtoangstrom" => [-15, "angstrom"],
-- "femtoangular_degree" => [-15, "angular_degree"],
-- "femtoangular_minute" => [-15, "angular_minute"],
-- "femtoangular_second" => [-15, "angular_second"],
-- "femtoare" => [-15, "are"], "femtoatmosphere" => [-15, "atmosphere"],
-- "femtocalorie" => [-15, "calorie"],
-- "femtocelsius" => [-15, "celsius"],
-- "femtocentigrade" => [-15, "centigrade"],
-- "femtocentury" => [-15, "century"], "femtochain" => [-15, "chain"],
-- "femtocommon_year" => [-15, "common_year"],
-- "femtocoulomb" => [-15, "coulomb"], "femtoday" => [-15, "day"],
-- "femtodegK" => [-15, "degK"], "femtodeg_K" => [-15, "deg_K"],
-- "femtodegree" => [-15, "degree"], "femtodegreeK" => [-15, "degreeK"],
-- "femtodyne" => [-15, "dyne"], "femtoerg" => [-15, "erg"],
-- "femtofahrenheit" => [-15, "fahrenheit"],
-- "femtofarad" => [-15, "farad"], "femtofermi" => [-15, "fermi"],
-- "femtogal" => [-15, "gal"], "femtogauss" => [-15, "gauss"],
-- "femtogram" => [-15, "gram"], "femtohectare" => [-15, "hectare"],
-- "femtohertz" => [-15, "hertz"], "femtohour" => [-15, "hour"],
-- "femtoinch" => [-15, "inch"], "femtojoule" => [-15, "joule"],
-- "femtokelvin" => [-15, "kelvin"],
-- "femtokilogram" => [-15, "kilogram"], "femtoknot" => [-15, "knot"],
-- "femtolitre" => [-15, "litre"], "femtometer" => [-15, "meter"],
-- "femtometre" => [-15, "metre"], "femtomicron" => [-15, "micron"],
-- "femtomile" => [-15, "mile"], "femtomillibar" => [-15, "millibar"],
-- "femtominute" => [-15, "minute"],
-- "femtominute_angle" => [-15, "minute_angle"],
-- "femtomole" => [-15, "mole"], "femtomonth" => [-15, "month"],
-- "femtonewton" => [-15, "newton"], "femtoounce" => [-15, "ounce"],
-- "femtoparsec" => [-15, "parsec"], "femtopascal" => [-15, "pascal"],
-- "femtopentad" => [-15, "pentad"], "femtopoise" => [-15, "poise"],
-- "femtopound" => [-15, "pound"], "femtoradian" => [-15, "radian"],
-- "femtosecond" => [-15, "second"],
-- "femtosecond_angle" => [-15, "second_angle"],
-- "femtosteradian" => [-15, "steradian"],
-- "femtostokes" => [-15, "stokes"], "femtotesla" => [-15, "tesla"],
-- "femtoton" => [-15, "ton"], "femtotonne" => [-15, "tonne"],
-- "femtotorr" => [-15, "torr"], "femtovolt" => [-15, "volt"],
-- "femtowatt" => [-15, "watt"], "femtoweber" => [-15, "weber"],
-- "femtoyard" => [-15, "yard"], "femtoyd" => [-15, "yd"],
-- "femtoyear" => [-15, "year"], "ferg" => [-15, "erg"],
-- "fermis" => [0, "fermi"], "fforce" => [-15, "force"],
-- "fg" => [-15, "g"], "fgravity" => [-15, "gravity"],
-- "fh" => [-15, "h"], "fhg" => [-15, "hg"], "fhr" => [-15, "hr"],
-- "fin" => [-15, "in"], "fkg" => [-15, "kg"], "fkgf" => [-15, "kgf"],
-- "fkph" => [-15, "kph"], "flb" => [-15, "lb"], "flm" => [-15, "lm"],
-- "flx" => [-15, "lx"], "fly" => [-15, "ly"], "fm" => [-15, "m"],
-- "fmb" => [-15, "mb"], "fmercury" => [-15, "mercury"],
-- "fmgal" => [-15, "mgal"], "fmin" => [-15, "min"],
-- "fmol" => [-15, "mol"], "fmon" => [-15, "mon"],
-- "fmph" => [-15, "mph"], "fohm" => [-15, "ohm"],
-- "foz" => [-15, "oz"], "fpc" => [-15, "pc"],
-- "fpercent" => [-15, "percent"], "fpermil" => [-15, "permil"],
-- "fpsi" => [-15, "psi"], "frad" => [-15, "rad"], "fs" => [-15, "s"],
-- "fsr" => [-15, "sr"], "ft" => [-15, "t"], "fyr" => [-15, "yr"],
-- "gals" => [0, "gal"], "gausses" => [0, "gauss"],
-- "gigaCelsius" => [9, "Celsius"],
-- "gigaFahrenheit" => [9, "Fahrenheit"],
-- "gigaJulian_year" => [9, "Julian_year"],
-- "gigaPascal" => [9, "Pascal"], "gigaacre" => [9, "acre"],
-- "gigaampere" => [9, "ampere"], "gigaangstrom" => [9, "angstrom"],
-- "gigaangular_degree" => [9, "angular_degree"],
-- "gigaangular_minute" => [9, "angular_minute"],
-- "gigaangular_second" => [9, "angular_second"],
-- "gigaare" => [9, "are"], "gigaatmosphere" => [9, "atmosphere"],
-- "gigacalorie" => [9, "calorie"], "gigacelsius" => [9, "celsius"],
-- "gigacentigrade" => [9, "centigrade"],
-- "gigacentury" => [9, "century"], "gigachain" => [9, "chain"],
-- "gigacommon_year" => [9, "common_year"],
-- "gigacoulomb" => [9, "coulomb"], "gigaday" => [9, "day"],
-- "gigadegK" => [9, "degK"], "gigadeg_K" => [9, "deg_K"],
-- "gigadegree" => [9, "degree"], "gigadegreeK" => [9, "degreeK"],
-- "gigadyne" => [9, "dyne"], "gigaerg" => [9, "erg"],
-- "gigafahrenheit" => [9, "fahrenheit"], "gigafarad" => [9, "farad"],
-- "gigafermi" => [9, "fermi"], "gigagal" => [9, "gal"],
-- "gigagauss" => [9, "gauss"], "gigagram" => [9, "gram"],
-- "gigahectare" => [9, "hectare"], "gigahertz" => [9, "hertz"],
-- "gigahour" => [9, "hour"], "gigainch" => [9, "inch"],
-- "gigajoule" => [9, "joule"], "gigakelvin" => [9, "kelvin"],
-- "gigakilogram" => [9, "kilogram"], "gigaknot" => [9, "knot"],
-- "gigalitre" => [9, "litre"], "gigameter" => [9, "meter"],
-- "gigametre" => [9, "metre"], "gigamicron" => [9, "micron"],
-- "gigamile" => [9, "mile"], "gigamillibar" => [9, "millibar"],
-- "gigaminute" => [9, "minute"],
-- "gigaminute_angle" => [9, "minute_angle"], "gigamole" => [9, "mole"],
-- "gigamonth" => [9, "month"], "giganewton" => [9, "newton"],
-- "gigaounce" => [9, "ounce"], "gigaparsec" => [9, "parsec"],
-- "gigapascal" => [9, "pascal"], "gigapentad" => [9, "pentad"],
-- "gigapoise" => [9, "poise"], "gigapound" => [9, "pound"],
-- "gigaradian" => [9, "radian"], "gigasecond" => [9, "second"],
-- "gigasecond_angle" => [9, "second_angle"],
-- "gigasteradian" => [9, "steradian"], "gigastokes" => [9, "stokes"],
-- "gigatesla" => [9, "tesla"], "gigaton" => [9, "ton"],
-- "gigatonne" => [9, "tonne"], "gigatorr" => [9, "torr"],
-- "gigavolt" => [9, "volt"], "gigawatt" => [9, "watt"],
-- "gigaweber" => [9, "weber"], "gigayard" => [9, "yard"],
-- "gigayd" => [9, "yd"], "gigayear" => [9, "year"],
-- "grams" => [0, "gram"], "h%" => [2, "%"], "hA" => [2, "A"],
-- "hAu" => [2, "Au"], "hBq" => [2, "Bq"], "hC" => [2, "C"],
-- "hF" => [2, "F"], "hG" => [2, "G"], "hGal" => [2, "Gal"],
-- "hGy" => [2, "Gy"], "hH" => [2, "H"], "hHg" => [2, "Hg"],
-- "hHz" => [2, "Hz"], "hJ" => [2, "J"], "hK" => [2, "K"],
-- "hL" => [2, "L"], "hN" => [2, "N"], "hP" => [2, "P"],
-- "hPa" => [2, "Pa"], "hS" => [2, "S"], "hSt" => [2, "St"],
-- "hSv" => [2, "Sv"], "hT" => [2, "T"], "hV" => [2, "V"],
-- "hW" => [2, "W"], "hWb" => [2, "Wb"], "ha" => [2, "a"],
-- "hac" => [2, "ac"], "hatm" => [2, "atm"], "hbar" => [2, "bar"],
-- "hcal" => [2, "cal"],
-- "hconventional_mercury" => [2, "conventional_mercury"],
-- "hd" => [2, "d"], "hdegC" => [2, "degC"], "hdegF" => [2, "degF"],
-- "hdeg_C" => [2, "deg_C"], "hdeg_F" => [2, "deg_F"],
-- "hdegreeC" => [2, "degreeC"], "hdegreeF" => [2, "degreeF"],
-- "hdegree_C" => [2, "degree_C"], "hdegree_E" => [2, "degree_E"],
-- "hdegree_F" => [2, "degree_F"], "hdegree_N" => [2, "degree_N"],
-- "hdegree_R" => [2, "degree_R"], "hdegree_S" => [2, "degree_S"],
-- "hdegree_W" => [2, "degree_W"], "hdegree_c" => [2, "degree_c"],
-- "hdegree_east" => [2, "degree_east"], "hdegree_f" => [2, "degree_f"],
-- "hdegree_north" => [2, "degree_north"],
-- "hdegree_south" => [2, "degree_south"],
-- "hdegree_west" => [2, "degree_west"],
-- "hdegrees_east" => [2, "degrees_east"],
-- "hdegrees_north" => [2, "degrees_north"],
-- "hdegrees_south" => [2, "degrees_south"],
-- "hdegrees_west" => [2, "degrees_west"], "hdyn" => [2, "dyn"],
-- "hectares" => [0, "hectare"], "hectoCelsius" => [2, "Celsius"],
-- "hectoFahrenheit" => [2, "Fahrenheit"],
-- "hectoJulian_year" => [2, "Julian_year"],
-- "hectoPascal" => [2, "Pascal"], "hectoacre" => [2, "acre"],
-- "hectoampere" => [2, "ampere"], "hectoangstrom" => [2, "angstrom"],
-- "hectoangular_degree" => [2, "angular_degree"],
-- "hectoangular_minute" => [2, "angular_minute"],
-- "hectoangular_second" => [2, "angular_second"],
-- "hectoare" => [2, "are"], "hectoatmosphere" => [2, "atmosphere"],
-- "hectocalorie" => [2, "calorie"], "hectocelsius" => [2, "celsius"],
-- "hectocentigrade" => [2, "centigrade"],
-- "hectocentury" => [2, "century"], "hectochain" => [2, "chain"],
-- "hectocommon_year" => [2, "common_year"],
-- "hectocoulomb" => [2, "coulomb"], "hectoday" => [2, "day"],
-- "hectodegK" => [2, "degK"], "hectodeg_K" => [2, "deg_K"],
-- "hectodegree" => [2, "degree"], "hectodegreeK" => [2, "degreeK"],
-- "hectodyne" => [2, "dyne"], "hectoerg" => [2, "erg"],
-- "hectofahrenheit" => [2, "fahrenheit"], "hectofarad" => [2, "farad"],
-- "hectofermi" => [2, "fermi"], "hectogal" => [2, "gal"],
-- "hectogauss" => [2, "gauss"], "hectogram" => [2, "gram"],
-- "hectohectare" => [2, "hectare"], "hectohertz" => [2, "hertz"],
-- "hectohour" => [2, "hour"], "hectoinch" => [2, "inch"],
-- "hectojoule" => [2, "joule"], "hectokelvin" => [2, "kelvin"],
-- "hectokilogram" => [2, "kilogram"], "hectoknot" => [2, "knot"],
-- "hectolitre" => [2, "litre"], "hectometer" => [2, "meter"],
-- "hectometre" => [2, "metre"], "hectomicron" => [2, "micron"],
-- "hectomile" => [2, "mile"], "hectomillibar" => [2, "millibar"],
-- "hectominute" => [2, "minute"],
-- "hectominute_angle" => [2, "minute_angle"],
-- "hectomole" => [2, "mole"], "hectomonth" => [2, "month"],
-- "hectonewton" => [2, "newton"], "hectoounce" => [2, "ounce"],
-- "hectoparsec" => [2, "parsec"], "hectopascal" => [2, "pascal"],
-- "hectopentad" => [2, "pentad"], "hectopoise" => [2, "poise"],
-- "hectopound" => [2, "pound"], "hectoradian" => [2, "radian"],
-- "hectosecond" => [2, "second"],
-- "hectosecond_angle" => [2, "second_angle"],
-- "hectosteradian" => [2, "steradian"], "hectostokes" => [2, "stokes"],
-- "hectotesla" => [2, "tesla"], "hectoton" => [2, "ton"],
-- "hectotonne" => [2, "tonne"], "hectotorr" => [2, "torr"],
-- "hectovolt" => [2, "volt"], "hectowatt" => [2, "watt"],
-- "hectoweber" => [2, "weber"], "hectoyard" => [2, "yard"],
-- "hectoyd" => [2, "yd"], "hectoyear" => [2, "year"],
-- "herg" => [2, "erg"], "hertzes" => [0, "hertz"],
-- "hforce" => [2, "force"], "hg" => [2, "g"],
-- "hgravity" => [2, "gravity"], "hh" => [2, "h"], "hhg" => [2, "hg"],
-- "hhr" => [2, "hr"], "hin" => [2, "in"], "hkg" => [2, "kg"],
-- "hkgf" => [2, "kgf"], "hkph" => [2, "kph"], "hlb" => [2, "lb"],
-- "hlm" => [2, "lm"], "hlx" => [2, "lx"], "hly" => [2, "ly"],
-- "hm" => [2, "m"], "hmb" => [2, "mb"], "hmercury" => [2, "mercury"],
-- "hmgal" => [2, "mgal"], "hmin" => [2, "min"], "hmol" => [2, "mol"],
-- "hmon" => [2, "mon"], "hmph" => [2, "mph"], "hohm" => [2, "ohm"],
-- "hours" => [0, "hour"], "hoz" => [2, "oz"], "hpc" => [2, "pc"],
-- "hpercent" => [2, "percent"], "hpermil" => [2, "permil"],
-- "hpsi" => [2, "psi"], "hrad" => [2, "rad"], "hs" => [2, "s"],
-- "hsr" => [2, "sr"], "ht" => [2, "t"], "hyr" => [2, "yr"],
-- "inchs" => [0, "inch"], "joules" => [0, "joule"], "k%" => [3, "%"],
-- "kA" => [3, "A"], "kAu" => [3, "Au"], "kBq" => [3, "Bq"],
-- "kC" => [3, "C"], "kF" => [3, "F"], "kG" => [3, "G"],
-- "kGal" => [3, "Gal"], "kGy" => [3, "Gy"], "kH" => [3, "H"],
-- "kHg" => [3, "Hg"], "kHz" => [3, "Hz"], "kJ" => [3, "J"],
-- "kK" => [3, "K"], "kL" => [3, "L"], "kN" => [3, "N"],
-- "kP" => [3, "P"], "kPa" => [3, "Pa"], "kS" => [3, "S"],
-- "kSt" => [3, "St"], "kSv" => [3, "Sv"], "kT" => [3, "T"],
-- "kV" => [3, "V"], "kW" => [3, "W"], "kWb" => [3, "Wb"],
-- "ka" => [3, "a"], "kac" => [3, "ac"], "katm" => [3, "atm"],
-- "kbar" => [3, "bar"], "kcal" => [3, "cal"],
-- "kconventional_mercury" => [3, "conventional_mercury"],
-- "kd" => [3, "d"], "kdegC" => [3, "degC"], "kdegF" => [3, "degF"],
-- "kdeg_C" => [3, "deg_C"], "kdeg_F" => [3, "deg_F"],
-- "kdegreeC" => [3, "degreeC"], "kdegreeF" => [3, "degreeF"],
-- "kdegree_C" => [3, "degree_C"], "kdegree_E" => [3, "degree_E"],
-- "kdegree_F" => [3, "degree_F"], "kdegree_N" => [3, "degree_N"],
-- "kdegree_R" => [3, "degree_R"], "kdegree_S" => [3, "degree_S"],
-- "kdegree_W" => [3, "degree_W"], "kdegree_c" => [3, "degree_c"],
-- "kdegree_east" => [3, "degree_east"], "kdegree_f" => [3, "degree_f"],
-- "kdegree_north" => [3, "degree_north"],
-- "kdegree_south" => [3, "degree_south"],
-- "kdegree_west" => [3, "degree_west"],
-- "kdegrees_east" => [3, "degrees_east"],
-- "kdegrees_north" => [3, "degrees_north"],
-- "kdegrees_south" => [3, "degrees_south"],
-- "kdegrees_west" => [3, "degrees_west"], "kdyn" => [3, "dyn"],
-- "kelvins" => [0, "kelvin"], "kerg" => [3, "erg"],
-- "kforce" => [3, "force"], "kgravity" => [3, "gravity"],
-- "kh" => [3, "h"], "khg" => [3, "hg"], "khr" => [3, "hr"],
-- "kiloCelsius" => [3, "Celsius"],
-- "kiloFahrenheit" => [3, "Fahrenheit"],
-- "kiloJulian_year" => [3, "Julian_year"],
-- "kiloPascal" => [3, "Pascal"], "kiloacre" => [3, "acre"],
-- "kiloampere" => [3, "ampere"], "kiloangstrom" => [3, "angstrom"],
-- "kiloangular_degree" => [3, "angular_degree"],
-- "kiloangular_minute" => [3, "angular_minute"],
-- "kiloangular_second" => [3, "angular_second"],
-- "kiloare" => [3, "are"], "kiloatmosphere" => [3, "atmosphere"],
-- "kilocalorie" => [3, "calorie"], "kilocelsius" => [3, "celsius"],
-- "kilocentigrade" => [3, "centigrade"],
-- "kilocentury" => [3, "century"], "kilochain" => [3, "chain"],
-- "kilocommon_year" => [3, "common_year"],
-- "kilocoulomb" => [3, "coulomb"], "kiloday" => [3, "day"],
-- "kilodegK" => [3, "degK"], "kilodeg_K" => [3, "deg_K"],
-- "kilodegree" => [3, "degree"], "kilodegreeK" => [3, "degreeK"],
-- "kilodyne" => [3, "dyne"], "kiloerg" => [3, "erg"],
-- "kilofahrenheit" => [3, "fahrenheit"], "kilofarad" => [3, "farad"],
-- "kilofermi" => [3, "fermi"], "kilogal" => [3, "gal"],
-- "kilogauss" => [3, "gauss"], "kilogram" => [3, "gram"],
-- "kilograms" => [0, "kilogram"], "kilohectare" => [3, "hectare"],
-- "kilohertz" => [3, "hertz"], "kilohour" => [3, "hour"],
-- "kiloinch" => [3, "inch"], "kilojoule" => [3, "joule"],
-- "kilokelvin" => [3, "kelvin"], "kilokilogram" => [3, "kilogram"],
-- "kiloknot" => [3, "knot"], "kilolitre" => [3, "litre"],
-- "kilometer" => [3, "meter"], "kilometre" => [3, "metre"],
-- "kilomicron" => [3, "micron"], "kilomile" => [3, "mile"],
-- "kilomillibar" => [3, "millibar"], "kilominute" => [3, "minute"],
-- "kilominute_angle" => [3, "minute_angle"], "kilomole" => [3, "mole"],
-- "kilomonth" => [3, "month"], "kilonewton" => [3, "newton"],
-- "kiloounce" => [3, "ounce"], "kiloparsec" => [3, "parsec"],
-- "kilopascal" => [3, "pascal"], "kilopentad" => [3, "pentad"],
-- "kilopoise" => [3, "poise"], "kilopound" => [3, "pound"],
-- "kiloradian" => [3, "radian"], "kilosecond" => [3, "second"],
-- "kilosecond_angle" => [3, "second_angle"],
-- "kilosteradian" => [3, "steradian"], "kilostokes" => [3, "stokes"],
-- "kilotesla" => [3, "tesla"], "kiloton" => [3, "ton"],
-- "kilotonne" => [3, "tonne"], "kilotorr" => [3, "torr"],
-- "kilovolt" => [3, "volt"], "kilowatt" => [3, "watt"],
-- "kiloweber" => [3, "weber"], "kiloyard" => [3, "yard"],
-- "kiloyd" => [3, "yd"], "kiloyear" => [3, "year"],
-- "kin" => [3, "in"], "kkg" => [3, "kg"], "kkgf" => [3, "kgf"],
-- "kkph" => [3, "kph"], "klb" => [3, "lb"], "klm" => [3, "lm"],
-- "klx" => [3, "lx"], "kly" => [3, "ly"], "km" => [3, "m"],
-- "kmb" => [3, "mb"], "kmercury" => [3, "mercury"],
-- "kmgal" => [3, "mgal"], "kmin" => [3, "min"], "kmol" => [3, "mol"],
-- "kmon" => [3, "mon"], "kmph" => [3, "mph"], "knots" => [0, "knot"],
-- "kohm" => [3, "ohm"], "koz" => [3, "oz"], "kpc" => [3, "pc"],
-- "kpercent" => [3, "percent"], "kpermil" => [3, "permil"],
-- "kpsi" => [3, "psi"], "krad" => [3, "rad"], "ks" => [3, "s"],
-- "ksr" => [3, "sr"], "kt" => [3, "t"], "kyr" => [3, "yr"],
-- "litres" => [0, "litre"], "m%" => [-3, "%"], "mA" => [-3, "A"],
-- "mAu" => [-3, "Au"], "mBq" => [-3, "Bq"], "mC" => [-3, "C"],
-- "mF" => [-3, "F"], "mG" => [-3, "G"], "mGal" => [-3, "Gal"],
-- "mGy" => [-3, "Gy"], "mH" => [-3, "H"], "mHg" => [-3, "Hg"],
-- "mHz" => [-3, "Hz"], "mJ" => [-3, "J"], "mK" => [-3, "K"],
-- "mL" => [-3, "L"], "mN" => [-3, "N"], "mP" => [-3, "P"],
-- "mPa" => [-3, "Pa"], "mS" => [-3, "S"], "mSt" => [-3, "St"],
-- "mSv" => [-3, "Sv"], "mT" => [-3, "T"], "mV" => [-3, "V"],
-- "mW" => [-3, "W"], "mWb" => [-3, "Wb"], "ma" => [-3, "a"],
-- "mac" => [-3, "ac"], "matm" => [-3, "atm"], "mbar" => [-3, "bar"],
-- "mcal" => [-3, "cal"],
-- "mconventional_mercury" => [-3, "conventional_mercury"],
-- "md" => [-3, "d"], "mdegC" => [-3, "degC"], "mdegF" => [-3, "degF"],
-- "mdeg_C" => [-3, "deg_C"], "mdeg_F" => [-3, "deg_F"],
-- "mdegreeC" => [-3, "degreeC"], "mdegreeF" => [-3, "degreeF"],
-- "mdegree_C" => [-3, "degree_C"], "mdegree_E" => [-3, "degree_E"],
-- "mdegree_F" => [-3, "degree_F"], "mdegree_N" => [-3, "degree_N"],
-- "mdegree_R" => [-3, "degree_R"], "mdegree_S" => [-3, "degree_S"],
-- "mdegree_W" => [-3, "degree_W"], "mdegree_c" => [-3, "degree_c"],
-- "mdegree_east" => [-3, "degree_east"],
-- "mdegree_f" => [-3, "degree_f"],
-- "mdegree_north" => [-3, "degree_north"],
-- "mdegree_south" => [-3, "degree_south"],
-- "mdegree_west" => [-3, "degree_west"],
-- "mdegrees_east" => [-3, "degrees_east"],
-- "mdegrees_north" => [-3, "degrees_north"],
-- "mdegrees_south" => [-3, "degrees_south"],
-- "mdegrees_west" => [-3, "degrees_west"], "mdyn" => [-3, "dyn"],
-- "megaCelsius" => [6, "Celsius"],
-- "megaFahrenheit" => [6, "Fahrenheit"],
-- "megaJulian_year" => [6, "Julian_year"],
-- "megaPascal" => [6, "Pascal"], "megaacre" => [6, "acre"],
-- "megaampere" => [6, "ampere"], "megaangstrom" => [6, "angstrom"],
-- "megaangular_degree" => [6, "angular_degree"],
-- "megaangular_minute" => [6, "angular_minute"],
-- "megaangular_second" => [6, "angular_second"],
-- "megaare" => [6, "are"], "megaatmosphere" => [6, "atmosphere"],
-- "megacalorie" => [6, "calorie"], "megacelsius" => [6, "celsius"],
-- "megacentigrade" => [6, "centigrade"],
-- "megacentury" => [6, "century"], "megachain" => [6, "chain"],
-- "megacommon_year" => [6, "common_year"],
-- "megacoulomb" => [6, "coulomb"], "megaday" => [6, "day"],
-- "megadegK" => [6, "degK"], "megadeg_K" => [6, "deg_K"],
-- "megadegree" => [6, "degree"], "megadegreeK" => [6, "degreeK"],
-- "megadyne" => [6, "dyne"], "megaerg" => [6, "erg"],
-- "megafahrenheit" => [6, "fahrenheit"], "megafarad" => [6, "farad"],
-- "megafermi" => [6, "fermi"], "megagal" => [6, "gal"],
-- "megagauss" => [6, "gauss"], "megagram" => [6, "gram"],
-- "megahectare" => [6, "hectare"], "megahertz" => [6, "hertz"],
-- "megahour" => [6, "hour"], "megainch" => [6, "inch"],
-- "megajoule" => [6, "joule"], "megakelvin" => [6, "kelvin"],
-- "megakilogram" => [6, "kilogram"], "megaknot" => [6, "knot"],
-- "megalitre" => [6, "litre"], "megameter" => [6, "meter"],
-- "megametre" => [6, "metre"], "megamicron" => [6, "micron"],
-- "megamile" => [6, "mile"], "megamillibar" => [6, "millibar"],
-- "megaminute" => [6, "minute"],
-- "megaminute_angle" => [6, "minute_angle"], "megamole" => [6, "mole"],
-- "megamonth" => [6, "month"], "meganewton" => [6, "newton"],
-- "megaounce" => [6, "ounce"], "megaparsec" => [6, "parsec"],
-- "megapascal" => [6, "pascal"], "megapentad" => [6, "pentad"],
-- "megapoise" => [6, "poise"], "megapound" => [6, "pound"],
-- "megaradian" => [6, "radian"], "megasecond" => [6, "second"],
-- "megasecond_angle" => [6, "second_angle"],
-- "megasteradian" => [6, "steradian"], "megastokes" => [6, "stokes"],
-- "megatesla" => [6, "tesla"], "megaton" => [6, "ton"],
-- "megatonne" => [6, "tonne"], "megatorr" => [6, "torr"],
-- "megavolt" => [6, "volt"], "megawatt" => [6, "watt"],
-- "megaweber" => [6, "weber"], "megayard" => [6, "yard"],
-- "megayd" => [6, "yd"], "megayear" => [6, "year"],
-- "merg" => [-3, "erg"], "meters" => [0, "meter"],
-- "metres" => [0, "metre"], "mforce" => [-3, "force"],
-- "mg" => [-3, "g"], "mgravity" => [-3, "gravity"], "mh" => [-3, "h"],
-- "mhg" => [-3, "hg"], "mhr" => [-3, "hr"],
-- "microCelsius" => [-6, "Celsius"],
-- "microFahrenheit" => [-6, "Fahrenheit"],
-- "microJulian_year" => [-6, "Julian_year"],
-- "microPascal" => [-6, "Pascal"], "microacre" => [-6, "acre"],
-- "microampere" => [-6, "ampere"], "microangstrom" => [-6, "angstrom"],
-- "microangular_degree" => [-6, "angular_degree"],
-- "microangular_minute" => [-6, "angular_minute"],
-- "microangular_second" => [-6, "angular_second"],
-- "microare" => [-6, "are"], "microatmosphere" => [-6, "atmosphere"],
-- "microcalorie" => [-6, "calorie"], "microcelsius" => [-6, "celsius"],
-- "microcentigrade" => [-6, "centigrade"],
-- "microcentury" => [-6, "century"], "microchain" => [-6, "chain"],
-- "microcommon_year" => [-6, "common_year"],
-- "microcoulomb" => [-6, "coulomb"], "microday" => [-6, "day"],
-- "microdegK" => [-6, "degK"], "microdeg_K" => [-6, "deg_K"],
-- "microdegree" => [-6, "degree"], "microdegreeK" => [-6, "degreeK"],
-- "microdyne" => [-6, "dyne"], "microerg" => [-6, "erg"],
-- "microfahrenheit" => [-6, "fahrenheit"],
-- "microfarad" => [-6, "farad"], "microfermi" => [-6, "fermi"],
-- "microgal" => [-6, "gal"], "microgauss" => [-6, "gauss"],
-- "microgram" => [-6, "gram"], "microhectare" => [-6, "hectare"],
-- "microhertz" => [-6, "hertz"], "microhour" => [-6, "hour"],
-- "microinch" => [-6, "inch"], "microjoule" => [-6, "joule"],
-- "microkelvin" => [-6, "kelvin"], "microkilogram" => [-6, "kilogram"],
-- "microknot" => [-6, "knot"], "microlitre" => [-6, "litre"],
-- "micrometer" => [-6, "meter"], "micrometre" => [-6, "metre"],
-- "micromicron" => [-6, "micron"], "micromile" => [-6, "mile"],
-- "micromillibar" => [-6, "millibar"], "microminute" => [-6, "minute"],
-- "microminute_angle" => [-6, "minute_angle"],
-- "micromole" => [-6, "mole"], "micromonth" => [-6, "month"],
-- "micronewton" => [-6, "newton"], "microns" => [0, "micron"],
-- "microounce" => [-6, "ounce"], "microparsec" => [-6, "parsec"],
-- "micropascal" => [-6, "pascal"], "micropentad" => [-6, "pentad"],
-- "micropoise" => [-6, "poise"], "micropound" => [-6, "pound"],
-- "microradian" => [-6, "radian"], "microsecond" => [-6, "second"],
-- "microsecond_angle" => [-6, "second_angle"],
-- "microsteradian" => [-6, "steradian"],
-- "microstokes" => [-6, "stokes"], "microtesla" => [-6, "tesla"],
-- "microton" => [-6, "ton"], "microtonne" => [-6, "tonne"],
-- "microtorr" => [-6, "torr"], "microvolt" => [-6, "volt"],
-- "microwatt" => [-6, "watt"], "microweber" => [-6, "weber"],
-- "microyard" => [-6, "yard"], "microyd" => [-6, "yd"],
-- "microyear" => [-6, "year"], "miles" => [0, "mile"],
-- "milliCelsius" => [-3, "Celsius"],
-- "milliFahrenheit" => [-3, "Fahrenheit"],
-- "milliJulian_year" => [-3, "Julian_year"],
-- "milliPascal" => [-3, "Pascal"], "milliacre" => [-3, "acre"],
-- "milliampere" => [-3, "ampere"], "milliangstrom" => [-3, "angstrom"],
-- "milliangular_degree" => [-3, "angular_degree"],
-- "milliangular_minute" => [-3, "angular_minute"],
-- "milliangular_second" => [-3, "angular_second"],
-- "milliare" => [-3, "are"], "milliatmosphere" => [-3, "atmosphere"],
-- "millibars" => [0, "millibar"], "millicalorie" => [-3, "calorie"],
-- "millicelsius" => [-3, "celsius"],
-- "millicentigrade" => [-3, "centigrade"],
-- "millicentury" => [-3, "century"], "millichain" => [-3, "chain"],
-- "millicommon_year" => [-3, "common_year"],
-- "millicoulomb" => [-3, "coulomb"], "milliday" => [-3, "day"],
-- "millidegK" => [-3, "degK"], "millideg_K" => [-3, "deg_K"],
-- "millidegree" => [-3, "degree"], "millidegreeK" => [-3, "degreeK"],
-- "millidyne" => [-3, "dyne"], "millierg" => [-3, "erg"],
-- "millifahrenheit" => [-3, "fahrenheit"],
-- "millifarad" => [-3, "farad"], "millifermi" => [-3, "fermi"],
-- "milligal" => [-3, "gal"], "milligauss" => [-3, "gauss"],
-- "milligram" => [-3, "gram"], "millihectare" => [-3, "hectare"],
-- "millihertz" => [-3, "hertz"], "millihour" => [-3, "hour"],
-- "milliinch" => [-3, "inch"], "millijoule" => [-3, "joule"],
-- "millikelvin" => [-3, "kelvin"], "millikilogram" => [-3, "kilogram"],
-- "milliknot" => [-3, "knot"], "millilitre" => [-3, "litre"],
-- "millimeter" => [-3, "meter"], "millimetre" => [-3, "metre"],
-- "millimicron" => [-3, "micron"], "millimile" => [-3, "mile"],
-- "millimillibar" => [-3, "millibar"], "milliminute" => [-3, "minute"],
-- "milliminute_angle" => [-3, "minute_angle"],
-- "millimole" => [-3, "mole"], "millimonth" => [-3, "month"],
-- "millinewton" => [-3, "newton"], "milliounce" => [-3, "ounce"],
-- "milliparsec" => [-3, "parsec"], "millipascal" => [-3, "pascal"],
-- "millipentad" => [-3, "pentad"], "millipoise" => [-3, "poise"],
-- "millipound" => [-3, "pound"], "milliradian" => [-3, "radian"],
-- "millisecond" => [-3, "second"],
-- "millisecond_angle" => [-3, "second_angle"],
-- "millisteradian" => [-3, "steradian"],
-- "millistokes" => [-3, "stokes"], "millitesla" => [-3, "tesla"],
-- "milliton" => [-3, "ton"], "millitonne" => [-3, "tonne"],
-- "millitorr" => [-3, "torr"], "millivolt" => [-3, "volt"],
-- "milliwatt" => [-3, "watt"], "milliweber" => [-3, "weber"],
-- "milliyard" => [-3, "yard"], "milliyd" => [-3, "yd"],
-- "milliyear" => [-3, "year"], "min" => [-3, "in"],
-- "minutes" => [0, "minute"], "minutes_angle" => [0, "minute_angle"],
-- "mkg" => [-3, "kg"], "mkgf" => [-3, "kgf"], "mkph" => [-3, "kph"],
-- "mlb" => [-3, "lb"], "mlm" => [-3, "lm"], "mlx" => [-3, "lx"],
-- "mly" => [-3, "ly"], "mm" => [-3, "m"], "mmb" => [-3, "mb"],
-- "mmercury" => [-3, "mercury"], "mmgal" => [-3, "mgal"],
-- "mmin" => [-3, "min"], "mmol" => [-3, "mol"], "mmon" => [-3, "mon"],
-- "mmph" => [-3, "mph"], "mohm" => [-3, "ohm"],
-- "moles" => [0, "mole"], "months" => [0, "month"],
-- "moz" => [-3, "oz"], "mpc" => [-3, "pc"],
-- "mpercent" => [-3, "percent"], "mpermil" => [-3, "permil"],
-- "mpsi" => [-3, "psi"], "mrad" => [-3, "rad"], "ms" => [-3, "s"],
-- "msr" => [-3, "sr"], "mt" => [-3, "t"], "myr" => [-3, "yr"],
-- "n%" => [-9, "%"], "nA" => [-9, "A"], "nAu" => [-9, "Au"],
-- "nBq" => [-9, "Bq"], "nC" => [-9, "C"], "nF" => [-9, "F"],
-- "nG" => [-9, "G"], "nGal" => [-9, "Gal"], "nGy" => [-9, "Gy"],
-- "nH" => [-9, "H"], "nHg" => [-9, "Hg"], "nHz" => [-9, "Hz"],
-- "nJ" => [-9, "J"], "nK" => [-9, "K"], "nL" => [-9, "L"],
-- "nN" => [-9, "N"], "nP" => [-9, "P"], "nPa" => [-9, "Pa"],
-- "nS" => [-9, "S"], "nSt" => [-9, "St"], "nSv" => [-9, "Sv"],
-- "nT" => [-9, "T"], "nV" => [-9, "V"], "nW" => [-9, "W"],
-- "nWb" => [-9, "Wb"], "na" => [-9, "a"], "nac" => [-9, "ac"],
-- "nanoCelsius" => [-9, "Celsius"],
-- "nanoFahrenheit" => [-9, "Fahrenheit"],
-- "nanoJulian_year" => [-9, "Julian_year"],
-- "nanoPascal" => [-9, "Pascal"], "nanoacre" => [-9, "acre"],
-- "nanoampere" => [-9, "ampere"], "nanoangstrom" => [-9, "angstrom"],
-- "nanoangular_degree" => [-9, "angular_degree"],
-- "nanoangular_minute" => [-9, "angular_minute"],
-- "nanoangular_second" => [-9, "angular_second"],
-- "nanoare" => [-9, "are"], "nanoatmosphere" => [-9, "atmosphere"],
-- "nanocalorie" => [-9, "calorie"], "nanocelsius" => [-9, "celsius"],
-- "nanocentigrade" => [-9, "centigrade"],
-- "nanocentury" => [-9, "century"], "nanochain" => [-9, "chain"],
-- "nanocommon_year" => [-9, "common_year"],
-- "nanocoulomb" => [-9, "coulomb"], "nanoday" => [-9, "day"],
-- "nanodegK" => [-9, "degK"], "nanodeg_K" => [-9, "deg_K"],
-- "nanodegree" => [-9, "degree"], "nanodegreeK" => [-9, "degreeK"],
-- "nanodyne" => [-9, "dyne"], "nanoerg" => [-9, "erg"],
-- "nanofahrenheit" => [-9, "fahrenheit"], "nanofarad" => [-9, "farad"],
-- "nanofermi" => [-9, "fermi"], "nanogal" => [-9, "gal"],
-- "nanogauss" => [-9, "gauss"], "nanogram" => [-9, "gram"],
-- "nanohectare" => [-9, "hectare"], "nanohertz" => [-9, "hertz"],
-- "nanohour" => [-9, "hour"], "nanoinch" => [-9, "inch"],
-- "nanojoule" => [-9, "joule"], "nanokelvin" => [-9, "kelvin"],
-- "nanokilogram" => [-9, "kilogram"], "nanoknot" => [-9, "knot"],
-- "nanolitre" => [-9, "litre"], "nanometer" => [-9, "meter"],
-- "nanometre" => [-9, "metre"], "nanomicron" => [-9, "micron"],
-- "nanomile" => [-9, "mile"], "nanomillibar" => [-9, "millibar"],
-- "nanominute" => [-9, "minute"],
-- "nanominute_angle" => [-9, "minute_angle"],
-- "nanomole" => [-9, "mole"], "nanomonth" => [-9, "month"],
-- "nanonewton" => [-9, "newton"], "nanoounce" => [-9, "ounce"],
-- "nanoparsec" => [-9, "parsec"], "nanopascal" => [-9, "pascal"],
-- "nanopentad" => [-9, "pentad"], "nanopoise" => [-9, "poise"],
-- "nanopound" => [-9, "pound"], "nanoradian" => [-9, "radian"],
-- "nanosecond" => [-9, "second"],
-- "nanosecond_angle" => [-9, "second_angle"],
-- "nanosteradian" => [-9, "steradian"], "nanostokes" => [-9, "stokes"],
-- "nanotesla" => [-9, "tesla"], "nanoton" => [-9, "ton"],
-- "nanotonne" => [-9, "tonne"], "nanotorr" => [-9, "torr"],
-- "nanovolt" => [-9, "volt"], "nanowatt" => [-9, "watt"],
-- "nanoweber" => [-9, "weber"], "nanoyard" => [-9, "yard"],
-- "nanoyd" => [-9, "yd"], "nanoyear" => [-9, "year"],
-- "natm" => [-9, "atm"], "nbar" => [-9, "bar"], "ncal" => [-9, "cal"],
-- "nconventional_mercury" => [-9, "conventional_mercury"],
-- "nd" => [-9, "d"], "ndegC" => [-9, "degC"], "ndegF" => [-9, "degF"],
-- "ndeg_C" => [-9, "deg_C"], "ndeg_F" => [-9, "deg_F"],
-- "ndegreeC" => [-9, "degreeC"], "ndegreeF" => [-9, "degreeF"],
-- "ndegree_C" => [-9, "degree_C"], "ndegree_E" => [-9, "degree_E"],
-- "ndegree_F" => [-9, "degree_F"], "ndegree_N" => [-9, "degree_N"],
-- "ndegree_R" => [-9, "degree_R"], "ndegree_S" => [-9, "degree_S"],
-- "ndegree_W" => [-9, "degree_W"], "ndegree_c" => [-9, "degree_c"],
-- "ndegree_east" => [-9, "degree_east"],
-- "ndegree_f" => [-9, "degree_f"],
-- "ndegree_north" => [-9, "degree_north"],
-- "ndegree_south" => [-9, "degree_south"],
-- "ndegree_west" => [-9, "degree_west"],
-- "ndegrees_east" => [-9, "degrees_east"],
-- "ndegrees_north" => [-9, "degrees_north"],
-- "ndegrees_south" => [-9, "degrees_south"],
-- "ndegrees_west" => [-9, "degrees_west"], "ndyn" => [-9, "dyn"],
-- "nerg" => [-9, "erg"], "newtons" => [0, "newton"],
-- "nforce" => [-9, "force"], "ng" => [-9, "g"],
-- "ngravity" => [-9, "gravity"], "nh" => [-9, "h"],
-- "nhg" => [-9, "hg"], "nhr" => [-9, "hr"], "nin" => [-9, "in"],
-- "nkg" => [-9, "kg"], "nkgf" => [-9, "kgf"], "nkph" => [-9, "kph"],
-- "nlb" => [-9, "lb"], "nlm" => [-9, "lm"], "nlx" => [-9, "lx"],
-- "nly" => [-9, "ly"], "nm" => [-9, "m"], "nmb" => [-9, "mb"],
-- "nmercury" => [-9, "mercury"], "nmgal" => [-9, "mgal"],
-- "nmin" => [-9, "min"], "nmol" => [-9, "mol"], "nmon" => [-9, "mon"],
-- "nmph" => [-9, "mph"], "nohm" => [-9, "ohm"], "noz" => [-9, "oz"],
-- "npc" => [-9, "pc"], "npercent" => [-9, "percent"],
-- "npermil" => [-9, "permil"], "npsi" => [-9, "psi"],
-- "nrad" => [-9, "rad"], "ns" => [-9, "s"], "nsr" => [-9, "sr"],
-- "nt" => [-9, "t"], "nyr" => [-9, "yr"], "ounces" => [0, "ounce"],
-- "p%" => [-12, "%"], "pA" => [-12, "A"], "pAu" => [-12, "Au"],
-- "pBq" => [-12, "Bq"], "pC" => [-12, "C"], "pF" => [-12, "F"],
-- "pG" => [-12, "G"], "pGal" => [-12, "Gal"], "pGy" => [-12, "Gy"],
-- "pH" => [-12, "H"], "pHg" => [-12, "Hg"], "pHz" => [-12, "Hz"],
-- "pJ" => [-12, "J"], "pK" => [-12, "K"], "pL" => [-12, "L"],
-- "pN" => [-12, "N"], "pP" => [-12, "P"], "pPa" => [-12, "Pa"],
-- "pS" => [-12, "S"], "pSt" => [-12, "St"], "pSv" => [-12, "Sv"],
-- "pT" => [-12, "T"], "pV" => [-12, "V"], "pW" => [-12, "W"],
-- "pWb" => [-12, "Wb"], "pa" => [-12, "a"], "pac" => [-12, "ac"],
-- "parsecs" => [0, "parsec"], "pascals" => [0, "pascal"],
-- "patm" => [-12, "atm"], "pbar" => [-12, "bar"],
-- "pcal" => [-12, "cal"],
-- "pconventional_mercury" => [-12, "conventional_mercury"],
-- "pd" => [-12, "d"], "pdegC" => [-12, "degC"],
-- "pdegF" => [-12, "degF"], "pdeg_C" => [-12, "deg_C"],
-- "pdeg_F" => [-12, "deg_F"], "pdegreeC" => [-12, "degreeC"],
-- "pdegreeF" => [-12, "degreeF"], "pdegree_C" => [-12, "degree_C"],
-- "pdegree_E" => [-12, "degree_E"], "pdegree_F" => [-12, "degree_F"],
-- "pdegree_N" => [-12, "degree_N"], "pdegree_R" => [-12, "degree_R"],
-- "pdegree_S" => [-12, "degree_S"], "pdegree_W" => [-12, "degree_W"],
-- "pdegree_c" => [-12, "degree_c"],
-- "pdegree_east" => [-12, "degree_east"],
-- "pdegree_f" => [-12, "degree_f"],
-- "pdegree_north" => [-12, "degree_north"],
-- "pdegree_south" => [-12, "degree_south"],
-- "pdegree_west" => [-12, "degree_west"],
-- "pdegrees_east" => [-12, "degrees_east"],
-- "pdegrees_north" => [-12, "degrees_north"],
-- "pdegrees_south" => [-12, "degrees_south"],
-- "pdegrees_west" => [-12, "degrees_west"], "pdyn" => [-12, "dyn"],
-- "pentads" => [0, "pentad"], "perg" => [-12, "erg"],
-- "petaCelsius" => [15, "Celsius"],
-- "petaFahrenheit" => [15, "Fahrenheit"],
-- "petaJulian_year" => [15, "Julian_year"],
-- "petaPascal" => [15, "Pascal"], "petaacre" => [15, "acre"],
-- "petaampere" => [15, "ampere"], "petaangstrom" => [15, "angstrom"],
-- "petaangular_degree" => [15, "angular_degree"],
-- "petaangular_minute" => [15, "angular_minute"],
-- "petaangular_second" => [15, "angular_second"],
-- "petaare" => [15, "are"], "petaatmosphere" => [15, "atmosphere"],
-- "petacalorie" => [15, "calorie"], "petacelsius" => [15, "celsius"],
-- "petacentigrade" => [15, "centigrade"],
-- "petacentury" => [15, "century"], "petachain" => [15, "chain"],
-- "petacommon_year" => [15, "common_year"],
-- "petacoulomb" => [15, "coulomb"], "petaday" => [15, "day"],
-- "petadegK" => [15, "degK"], "petadeg_K" => [15, "deg_K"],
-- "petadegree" => [15, "degree"], "petadegreeK" => [15, "degreeK"],
-- "petadyne" => [15, "dyne"], "petaerg" => [15, "erg"],
-- "petafahrenheit" => [15, "fahrenheit"], "petafarad" => [15, "farad"],
-- "petafermi" => [15, "fermi"], "petagal" => [15, "gal"],
-- "petagauss" => [15, "gauss"], "petagram" => [15, "gram"],
-- "petahectare" => [15, "hectare"], "petahertz" => [15, "hertz"],
-- "petahour" => [15, "hour"], "petainch" => [15, "inch"],
-- "petajoule" => [15, "joule"], "petakelvin" => [15, "kelvin"],
-- "petakilogram" => [15, "kilogram"], "petaknot" => [15, "knot"],
-- "petalitre" => [15, "litre"], "petameter" => [15, "meter"],
-- "petametre" => [15, "metre"], "petamicron" => [15, "micron"],
-- "petamile" => [15, "mile"], "petamillibar" => [15, "millibar"],
-- "petaminute" => [15, "minute"],
-- "petaminute_angle" => [15, "minute_angle"],
-- "petamole" => [15, "mole"], "petamonth" => [15, "month"],
-- "petanewton" => [15, "newton"], "petaounce" => [15, "ounce"],
-- "petaparsec" => [15, "parsec"], "petapascal" => [15, "pascal"],
-- "petapentad" => [15, "pentad"], "petapoise" => [15, "poise"],
-- "petapound" => [15, "pound"], "petaradian" => [15, "radian"],
-- "petasecond" => [15, "second"],
-- "petasecond_angle" => [15, "second_angle"],
-- "petasteradian" => [15, "steradian"], "petastokes" => [15, "stokes"],
-- "petatesla" => [15, "tesla"], "petaton" => [15, "ton"],
-- "petatonne" => [15, "tonne"], "petatorr" => [15, "torr"],
-- "petavolt" => [15, "volt"], "petawatt" => [15, "watt"],
-- "petaweber" => [15, "weber"], "petayard" => [15, "yard"],
-- "petayd" => [15, "yd"], "petayear" => [15, "year"],
-- "pforce" => [-12, "force"], "pg" => [-12, "g"],
-- "pgravity" => [-12, "gravity"], "ph" => [-12, "h"],
-- "phg" => [-12, "hg"], "phr" => [-12, "hr"],
-- "picoCelsius" => [-12, "Celsius"],
-- "picoFahrenheit" => [-12, "Fahrenheit"],
-- "picoJulian_year" => [-12, "Julian_year"],
-- "picoPascal" => [-12, "Pascal"], "picoacre" => [-12, "acre"],
-- "picoampere" => [-12, "ampere"], "picoangstrom" => [-12, "angstrom"],
-- "picoangular_degree" => [-12, "angular_degree"],
-- "picoangular_minute" => [-12, "angular_minute"],
-- "picoangular_second" => [-12, "angular_second"],
-- "picoare" => [-12, "are"], "picoatmosphere" => [-12, "atmosphere"],
-- "picocalorie" => [-12, "calorie"], "picocelsius" => [-12, "celsius"],
-- "picocentigrade" => [-12, "centigrade"],
-- "picocentury" => [-12, "century"], "picochain" => [-12, "chain"],
-- "picocommon_year" => [-12, "common_year"],
-- "picocoulomb" => [-12, "coulomb"], "picoday" => [-12, "day"],
-- "picodegK" => [-12, "degK"], "picodeg_K" => [-12, "deg_K"],
-- "picodegree" => [-12, "degree"], "picodegreeK" => [-12, "degreeK"],
-- "picodyne" => [-12, "dyne"], "picoerg" => [-12, "erg"],
-- "picofahrenheit" => [-12, "fahrenheit"],
-- "picofarad" => [-12, "farad"], "picofermi" => [-12, "fermi"],
-- "picogal" => [-12, "gal"], "picogauss" => [-12, "gauss"],
-- "picogram" => [-12, "gram"], "picohectare" => [-12, "hectare"],
-- "picohertz" => [-12, "hertz"], "picohour" => [-12, "hour"],
-- "picoinch" => [-12, "inch"], "picojoule" => [-12, "joule"],
-- "picokelvin" => [-12, "kelvin"], "picokilogram" => [-12, "kilogram"],
-- "picoknot" => [-12, "knot"], "picolitre" => [-12, "litre"],
-- "picometer" => [-12, "meter"], "picometre" => [-12, "metre"],
-- "picomicron" => [-12, "micron"], "picomile" => [-12, "mile"],
-- "picomillibar" => [-12, "millibar"], "picominute" => [-12, "minute"],
-- "picominute_angle" => [-12, "minute_angle"],
-- "picomole" => [-12, "mole"], "picomonth" => [-12, "month"],
-- "piconewton" => [-12, "newton"], "picoounce" => [-12, "ounce"],
-- "picoparsec" => [-12, "parsec"], "picopascal" => [-12, "pascal"],
-- "picopentad" => [-12, "pentad"], "picopoise" => [-12, "poise"],
-- "picopound" => [-12, "pound"], "picoradian" => [-12, "radian"],
-- "picosecond" => [-12, "second"],
-- "picosecond_angle" => [-12, "second_angle"],
-- "picosteradian" => [-12, "steradian"],
-- "picostokes" => [-12, "stokes"], "picotesla" => [-12, "tesla"],
-- "picoton" => [-12, "ton"], "picotonne" => [-12, "tonne"],
-- "picotorr" => [-12, "torr"], "picovolt" => [-12, "volt"],
-- "picowatt" => [-12, "watt"], "picoweber" => [-12, "weber"],
-- "picoyard" => [-12, "yard"], "picoyd" => [-12, "yd"],
-- "picoyear" => [-12, "year"], "pin" => [-12, "in"],
-- "pkg" => [-12, "kg"], "pkgf" => [-12, "kgf"],
-- "pkph" => [-12, "kph"], "plb" => [-12, "lb"], "plm" => [-12, "lm"],
-- "plx" => [-12, "lx"], "ply" => [-12, "ly"], "pm" => [-12, "m"],
-- "pmb" => [-12, "mb"], "pmercury" => [-12, "mercury"],
-- "pmgal" => [-12, "mgal"], "pmin" => [-12, "min"],
-- "pmol" => [-12, "mol"], "pmon" => [-12, "mon"],
-- "pmph" => [-12, "mph"], "pohm" => [-12, "ohm"],
-- "poises" => [0, "poise"], "pounds" => [0, "pound"],
-- "poz" => [-12, "oz"], "ppc" => [-12, "pc"],
-- "ppercent" => [-12, "percent"], "ppermil" => [-12, "permil"],
-- "ppsi" => [-12, "psi"], "prad" => [-12, "rad"], "ps" => [-12, "s"],
-- "psr" => [-12, "sr"], "pt" => [-12, "t"], "pyr" => [-12, "yr"],
-- "radians" => [0, "radian"], "seconds" => [0, "second"],
-- "seconds_angle" => [0, "second_angle"],
-- "steradians" => [0, "steradian"], "stokeses" => [0, "stokes"],
-- "telaCelsius" => [12, "Celsius"],
-- "telaFahrenheit" => [12, "Fahrenheit"],
-- "telaJulian_year" => [12, "Julian_year"],
-- "telaPascal" => [12, "Pascal"], "telaacre" => [12, "acre"],
-- "telaampere" => [12, "ampere"], "telaangstrom" => [12, "angstrom"],
-- "telaangular_degree" => [12, "angular_degree"],
-- "telaangular_minute" => [12, "angular_minute"],
-- "telaangular_second" => [12, "angular_second"],
-- "telaare" => [12, "are"], "telaatmosphere" => [12, "atmosphere"],
-- "telacalorie" => [12, "calorie"], "telacelsius" => [12, "celsius"],
-- "telacentigrade" => [12, "centigrade"],
-- "telacentury" => [12, "century"], "telachain" => [12, "chain"],
-- "telacommon_year" => [12, "common_year"],
-- "telacoulomb" => [12, "coulomb"], "teladay" => [12, "day"],
-- "teladegK" => [12, "degK"], "teladeg_K" => [12, "deg_K"],
-- "teladegree" => [12, "degree"], "teladegreeK" => [12, "degreeK"],
-- "teladyne" => [12, "dyne"], "telaerg" => [12, "erg"],
-- "telafahrenheit" => [12, "fahrenheit"], "telafarad" => [12, "farad"],
-- "telafermi" => [12, "fermi"], "telagal" => [12, "gal"],
-- "telagauss" => [12, "gauss"], "telagram" => [12, "gram"],
-- "telahectare" => [12, "hectare"], "telahertz" => [12, "hertz"],
-- "telahour" => [12, "hour"], "telainch" => [12, "inch"],
-- "telajoule" => [12, "joule"], "telakelvin" => [12, "kelvin"],
-- "telakilogram" => [12, "kilogram"], "telaknot" => [12, "knot"],
-- "telalitre" => [12, "litre"], "telameter" => [12, "meter"],
-- "telametre" => [12, "metre"], "telamicron" => [12, "micron"],
-- "telamile" => [12, "mile"], "telamillibar" => [12, "millibar"],
-- "telaminute" => [12, "minute"],
-- "telaminute_angle" => [12, "minute_angle"],
-- "telamole" => [12, "mole"], "telamonth" => [12, "month"],
-- "telanewton" => [12, "newton"], "telaounce" => [12, "ounce"],
-- "telaparsec" => [12, "parsec"], "telapascal" => [12, "pascal"],
-- "telapentad" => [12, "pentad"], "telapoise" => [12, "poise"],
-- "telapound" => [12, "pound"], "telaradian" => [12, "radian"],
-- "telasecond" => [12, "second"],
-- "telasecond_angle" => [12, "second_angle"],
-- "telasteradian" => [12, "steradian"], "telastokes" => [12, "stokes"],
-- "telatesla" => [12, "tesla"], "telaton" => [12, "ton"],
-- "telatonne" => [12, "tonne"], "telatorr" => [12, "torr"],
-- "telavolt" => [12, "volt"], "telawatt" => [12, "watt"],
-- "telaweber" => [12, "weber"], "telayard" => [12, "yard"],
-- "telayd" => [12, "yd"], "telayear" => [12, "year"],
-- "teslas" => [0, "tesla"], "tonnes" => [0, "tonne"],
-- "tons" => [0, "ton"], "torrs" => [0, "torr"], "u%" => [-6, "%"],
-- "uA" => [-6, "A"], "uAu" => [-6, "Au"], "uBq" => [-6, "Bq"],
-- "uC" => [-6, "C"], "uF" => [-6, "F"], "uG" => [-6, "G"],
-- "uGal" => [-6, "Gal"], "uGy" => [-6, "Gy"], "uH" => [-6, "H"],
-- "uHg" => [-6, "Hg"], "uHz" => [-6, "Hz"], "uJ" => [-6, "J"],
-- "uK" => [-6, "K"], "uL" => [-6, "L"], "uN" => [-6, "N"],
-- "uP" => [-6, "P"], "uPa" => [-6, "Pa"], "uS" => [-6, "S"],
-- "uSt" => [-6, "St"], "uSv" => [-6, "Sv"], "uT" => [-6, "T"],
-- "uV" => [-6, "V"], "uW" => [-6, "W"], "uWb" => [-6, "Wb"],
-- "ua" => [-6, "a"], "uac" => [-6, "ac"], "uatm" => [-6, "atm"],
-- "ubar" => [-6, "bar"], "ucal" => [-6, "cal"],
-- "uconventional_mercury" => [-6, "conventional_mercury"],
-- "ud" => [-6, "d"], "udegC" => [-6, "degC"], "udegF" => [-6, "degF"],
-- "udeg_C" => [-6, "deg_C"], "udeg_F" => [-6, "deg_F"],
-- "udegreeC" => [-6, "degreeC"], "udegreeF" => [-6, "degreeF"],
-- "udegree_C" => [-6, "degree_C"], "udegree_E" => [-6, "degree_E"],
-- "udegree_F" => [-6, "degree_F"], "udegree_N" => [-6, "degree_N"],
-- "udegree_R" => [-6, "degree_R"], "udegree_S" => [-6, "degree_S"],
-- "udegree_W" => [-6, "degree_W"], "udegree_c" => [-6, "degree_c"],
-- "udegree_east" => [-6, "degree_east"],
-- "udegree_f" => [-6, "degree_f"],
-- "udegree_north" => [-6, "degree_north"],
-- "udegree_south" => [-6, "degree_south"],
-- "udegree_west" => [-6, "degree_west"],
-- "udegrees_east" => [-6, "degrees_east"],
-- "udegrees_north" => [-6, "degrees_north"],
-- "udegrees_south" => [-6, "degrees_south"],
-- "udegrees_west" => [-6, "degrees_west"], "udyn" => [-6, "dyn"],
-- "uerg" => [-6, "erg"], "uforce" => [-6, "force"], "ug" => [-6, "g"],
-- "ugravity" => [-6, "gravity"], "uh" => [-6, "h"],
-- "uhg" => [-6, "hg"], "uhr" => [-6, "hr"], "uin" => [-6, "in"],
-- "ukg" => [-6, "kg"], "ukgf" => [-6, "kgf"], "ukph" => [-6, "kph"],
-- "ulb" => [-6, "lb"], "ulm" => [-6, "lm"], "ulx" => [-6, "lx"],
-- "uly" => [-6, "ly"], "um" => [-6, "m"], "umb" => [-6, "mb"],
-- "umercury" => [-6, "mercury"], "umgal" => [-6, "mgal"],
-- "umin" => [-6, "min"], "umol" => [-6, "mol"], "umon" => [-6, "mon"],
-- "umph" => [-6, "mph"], "uohm" => [-6, "ohm"], "uoz" => [-6, "oz"],
-- "upc" => [-6, "pc"], "upercent" => [-6, "percent"],
-- "upermil" => [-6, "permil"], "upsi" => [-6, "psi"],
-- "urad" => [-6, "rad"], "us" => [-6, "s"], "usr" => [-6, "sr"],
-- "ut" => [-6, "t"], "uyr" => [-6, "yr"], "volts" => [0, "volt"],
-- "watts" => [0, "watt"], "webers" => [0, "weber"],
-- "yards" => [0, "yard"], "yds" => [0, "yd"], "years" => [0, "year"],
--}
--UPLURALS = {
-- "Celsiuses" => "Celsius", "Fahrenheits" => "Fahrenheit",
-- "Julians_year" => "Julian_year", "Pascals" => "Pascal",
-- "acres" => "acre", "amperes" => "ampere", "angstroms" => "angstrom",
-- "angulars_degree" => "angular_degree",
-- "angulars_minute" => "angular_minute",
-- "angulars_second" => "angular_second", "ares" => "are",
-- "atmospheres" => "atmosphere", "calories" => "calorie",
-- "celsiuses" => "celsius", "centigrades" => "centigrade",
-- "centuries" => "century", "chains" => "chain",
-- "commons_year" => "common_year", "coulombs" => "coulomb",
-- "days" => "day", "degKs" => "degK", "degreeKs" => "degreeK",
-- "degrees" => "degree", "degs_K" => "deg_K", "dynes" => "dyne",
-- "ergs" => "erg", "fahrenheits" => "fahrenheit", "farads" => "farad",
-- "fermis" => "fermi", "gals" => "gal", "gausses" => "gauss",
-- "grams" => "gram", "hectares" => "hectare", "hertzes" => "hertz",
-- "hours" => "hour", "inchs" => "inch", "joules" => "joule",
-- "kelvins" => "kelvin", "kilograms" => "kilogram", "knots" => "knot",
-- "litres" => "litre", "meters" => "meter", "metres" => "metre",
-- "microns" => "micron", "miles" => "mile", "millibars" => "millibar",
-- "minutes" => "minute", "minutes_angle" => "minute_angle",
-- "moles" => "mole", "months" => "month", "newtons" => "newton",
-- "ounces" => "ounce", "parsecs" => "parsec", "pascals" => "pascal",
-- "pentads" => "pentad", "poises" => "poise", "pounds" => "pound",
-- "radians" => "radian", "seconds" => "second",
-- "seconds_angle" => "second_angle", "steradians" => "steradian",
-- "stokeses" => "stokes", "teslas" => "tesla", "tonnes" => "tonne",
-- "tons" => "ton", "torrs" => "torr", "volts" => "volt",
-- "watts" => "watt", "webers" => "weber", "yards" => "yard",
-- "yds" => "yd", "years" => "year",
--}
--end
--class NumberNode < TerminalNode
--
-- def initialize(arg)
-- raise TypeError unless Numeric === arg
-- @a = arg
-- end
--
-- UNITY = NumberNode.new(1)
-- ZERO = NumberNode.new(0)
--
-- def to_s
-- if @a == @a.to_i
-- sprintf("%d", at a)
-- else
-- String(@a)
-- end
-- end
--
-- attr_reader :a
--
-- alias :value :a
-- alias :factor :a
--
-- def == (other)
-- case other
-- when NumberNode
-- @a == other.a
-- else
-- false
-- end
-- end
--
-- def add_eval(another)
-- raise TypeError unless NumberNode === another
-- NumberNode.new(@a + another.value)
-- end
--
-- def mul_eval(another)
-- case another
-- when NumberNode then NumberNode.new(@a * another.a)
-- when PowNode
-- raise TypeError unless NumberNode === another.lhs
-- raise TypeError unless NumberNode === another.rhs
-- NumberNode.new(@a * Units::pow_f(another.lhs.value, another.rhs.value))
-- else raise TypeError
-- end
-- end
--
-- def name; "1"; end
--
-- def power; UNITY; end
--
--end
--class XDate
--
-- def initialize(year, month, day)
-- @year, @month, @day = year.to_i, month.to_i, day.to_i
-- end
--
-- attr_reader :year, :month, :day
--
-- def to_s
-- format('%04d-%02d-%02d', @year, @month, @day)
-- end
--
-- alias :inspect :to_s
--
-- def to_time
-- Time.gm(@year, @month, @day)
-- end
--
-- def to_date
-- Date.new(@year, @month, @day)
-- end
--
-- def -(other)
-- case other
-- when XDate
-- (to_date - other.to_date)
-- when Time
-- to_time - other
-- when Date
-- (to_date - other.to_date)
-- else
-- to_date - other
-- end
-- end
--
-- def +(other)
-- t = to_date + other
-- self.class.new(t.year, t.month, t.mday)
-- end
--
--end
--
--class TimeNode < TerminalNode
--
-- def initialize(date, time, zone)
-- @date, @time, @zone = date, time, zone
-- if :now === @date then
-- now = Time.now.utc
-- @date = XDate.new(now.year, now.month, now.day)
-- @time = ((now.hour * 60 + now.min) * 60 + Float(now.sec))
-- else
-- qdays = (@time / 86400).floor
-- if not qdays.zero?
-- @date += qdays
-- @time -= (qdays * 86400)
-- end
-- end
-- raise TypeError unless XDate === @date
-- @time = 0.0 unless @time
-- raise TypeError unless Float === @time
-- @zone = 0 unless @zone
-- raise TypeError unless Integer === @zone
-- end
--
-- attr_reader :date, :time, :zone
--
-- def to_s
-- hr = @time.floor / 3600
-- mi = (@time.floor / 60) % 60
-- sc = @time % 60
-- tzm = @zone.abs
-- tzh = tzm / 60
-- tzm %= 60
-- tzh = -tzh if @zone < 0
-- format("%sT%02d:%02d:%05.2f %+03d:%02d", \
-- @date.to_s, hr, mi, sc, tzh, tzm)
-- end
--
-- def self::pentad(d)
-- (d > 25) ? 5 : ((d - 1) / 5)
-- end
--
-- def add_time(increment)
-- inc = increment.reduce5
-- case inc.name
-- when 's'
-- t2 = @time + inc.factor
-- d2 = @date + (t2 / 86400)
-- t2 = t2 % 86400
-- self.class.new(d2, t2, @zone)
-- when 'pentad'
-- ifac = Integer(inc.factor)
-- ipen = ifac % 6
-- imon = ifac / 6
-- spen = self.class.pentad(@date.day)
-- smon = @date.month + imon + spen / 6
-- spen = spen % 6
-- sday = spen * 5 + (@date.day - 1) % 5 + 1
-- syear = @date.year + (smon - 1) / 12
-- smon = (smon - 1) % 12 + 1
-- sdate = XDate.new(syear, smon, sday)
-- self.class.new(sdate, @time, @zone)
-- else
-- raise "bad time unit '#{inc.name}'"
-- end
-- end
--
-- def utcsod
-- @time - @zone * 60
-- end
--
-- def div_time(units)
-- base = units.ref
-- inc = units.deref.reduce5
-- begin
-- incname = inc.name
-- rescue Exception
-- incname = "(undefined)"
-- end
-- case incname
-- when 's'
-- dif = (@date - base.date) * 86400 + (utcsod - base.utcsod)
-- dif / inc.factor
-- when 'pentad'
-- dif = (@date.year - base.date.year) * 72
-- dif += (@date.month - base.date.month) * 6
-- dif += self.class.pentad(@date.day)
-- dif -= self.class.pentad(base.date.day)
-- dif = Float(dif) if dif % inc.factor != 0
-- dif / inc.factor
-- else
-- raise "bad time unit '#{incname}'"
-- end
-- end
--
--end
--class PowNode < ContainerNode
--
-- include BinaryNode
--
-- def initialize(lhs, rhs)
-- @lhs, @rhs = lhs, rhs
-- raise TypeError unless NumberNode === @rhs
-- end
--
-- def to_s
-- lhs = @lhs.to_s
-- case lhs
-- when /\d$/, /[\d\.]/
-- lhs = "(#{lhs})"
-- end
-- rhs = @rhs.to_s
-- if rhs == '1'
-- lhs
-- else
-- rhs = "^(#{rhs})" if (/\./ =~ rhs)
-- lhs + rhs
-- end
-- end
--
-- attr_reader :lhs, :rhs
-- alias :power :rhs
--
-- def pow_eval(other)
-- case other
-- when NumberNode
-- PowNode.new(@lhs, @rhs.mul_eval(other))
-- else
-- super(other)
-- end
-- end
--
-- def flatten2
-- x = @lhs.flatten2
-- case x
-- when NumberNode
-- a = @lhs.pow_eval(@rhs)
-- when TerminalNode
-- a = self
-- when PowNode
-- a = PowNode.new(x.lhs, x.rhs.mul_eval(@rhs))
-- when MulNode, MultiNode
-- a = MultiNode.new()
-- for gc in x
-- a.append(gc.pow_eval(@rhs))
-- end
-- else
-- raise "internal error"
-- end
-- return a
-- end
--
-- def name
-- case @lhs
-- when NumberNode, NameNode
-- @lhs.name
-- else
-- raise "internal error"
-- end
-- end
--
-- def value
-- case @lhs
-- when NumberNode
-- Units::pow_f(@lhs.value, @rhs.value)
-- else
-- raise(format('%s#value: internal error', self.class.to_s))
-- end
-- end
--
-- def mul_eval(another)
-- raise "internal error (#{name}, #{another.name})" if name != another.name
-- case @lhs
-- when NumberNode
-- NumberNode.new(Units::pow_f(@lhs.value, @rhs.value) * another.value)
-- else
-- self.class.new(@lhs, @rhs.add_eval(another.power))
-- end
-- end
--
-- def sort
-- case @lhs
-- when NumberNode
-- NumberNode.new(Units::pow_f(@lhs.value, @rhs.value))
-- else
-- self
-- end
-- end
--
-- def factor
-- Units::pow_f(@lhs.factor, @rhs.value)
-- end
--
--end
--
--module Kakezan
--
-- def flatten2
-- r = MultiNode.new()
-- each do |child|
-- case child
-- when MultiNode
-- r.append child
-- when MulNode
-- r.append child.flatten2
-- when ContainerNode
-- r.append child.flatten2
-- else
-- r.append child
-- end
-- end
-- r
-- end
--
-- def name
-- n = nil
-- for c in @children
-- next if NumberNode === c
-- na = c.name
-- if n.nil?
-- n = na
-- else
-- raise "multiple names found" if na != n
-- end
-- end
-- n = "1" if n.nil?
-- n
-- end
--
-- def factor
-- f = 1
-- for c in @children
-- f *= c.factor
-- end
-- f
-- end
--
--end
--
--class MulNode < ContainerNode
--
-- include BinaryNode
-- include Kakezan
--
-- def initialize(lhs, rhs)
-- @lhs, @rhs = lhs, rhs
-- end
--
-- def to_s
-- lhs = @lhs.to_s
-- rhs = @rhs.to_s
-- if (/\d$/ =~ lhs && /^\w/ =~ rhs) then
-- "#{lhs} #{rhs}"
-- else
-- "#{lhs}.#{rhs}"
-- end
-- end
--
--end
--
--class MultiNode < ContainerNode
--
-- include Kakezan
--
-- def initialize(*children)
-- @children = children
-- for c in @children
-- raise "# MultiNode.new(#{children.inspect})" unless Node === c
-- end
-- end
--
-- def to_s
-- s = @children.join(';')
-- s.gsub(/\d;\w/) { |dsw| dsw.sub(/;/, ' ') }.gsub(/;/, '.')
-- end
--
-- def each
-- @children.each {|child| yield child }
-- end
--
-- attr_reader :children
--
-- def append(other)
-- case other
-- when MultiNode
-- @children += other.children
-- else
-- @children.push other
-- end
-- end
--
-- def sort
-- table = {}
-- for child in self
-- name = child.name
-- if (table.include?(name)) then
-- table[name] = table[name].mul_eval(child)
-- else
-- table[name] = child
-- end
-- end
-- list = []
-- for name in table.keys.sort
-- candi = table[name]
-- if PowNode === candi and NumberNode === candi.lhs then
-- v = candi.value
-- list.push NumberNode.new(v) unless v == 1
-- next
-- end
-- next if candi.power.value == 0
-- list.push candi
-- end
-- if list.length > 1
-- list.delete(NumberNode::UNITY)
-- end
-- self.class.new(*list)
-- end
--
-- def collect_hash(stopper, op)
-- list = []
-- for child in self
-- list.push(child.send(op, stopper))
-- end
-- self.class.new(*list).flatten2
-- end
--
-- def expand(stopper)
-- collect_hash(stopper, :expand)
-- end
--
-- def unalias(stopper)
-- collect_hash(stopper, :unalias)
-- end
--
-- def foldnumber(stopper)
-- collect_hash(stopper, :foldnumber)
-- end
--
-- def value
-- raise "this is dimensional units" if (@children.size > 1)
-- @children.first ? @children.first.value : NumberNode::UNITY.value
-- end
--
--end
--class ShiftNode < ContainerNode
--
-- include BinaryNode
--
-- def initialize(lhs, rhs)
-- @lhs, @rhs = lhs, rhs
-- end
--
-- attr_reader :lhs, :rhs
-- alias :ref :rhs
--
-- def to_s
-- "(#{@lhs.to_s} @ #{@rhs.to_s})"
-- end
--
-- def trim2; @lhs; end
-- def trim
-- self.class.new(@lhs.trim, @rhs.trim2)
-- end
--
-- def flatten2; @lhs; end
-- def flatten
-- lf = @lhs.flatten
-- case lf
-- when ShiftNode
-- rf = lf.rhs.add_eval(@rhs)
-- self.class.new(lf.lhs, rf)
-- else
-- self.class.new(lf, @rhs.flatten)
-- end
-- end
--
-- def sort
-- self.class.new(@lhs.sort, @rhs.sort)
-- end
--
-- def ref
-- case @lhs
-- when ShiftNode
-- @lhs.ref.add_eval(@rhs)
-- else
-- @rhs
-- end
-- end
--
-- def deref
-- case @lhs
-- when ShiftNode
-- @lhs.deref
-- else
-- @lhs
-- end
-- end
--
-- def name
-- @lhs.name
-- end
--
-- def factor
-- @lhs.factor
-- end
--
--end
--def initialize string
-- case string
-- when String
-- @string, @ptree = string, nil
-- when Node
-- @string, @ptree = nil, string
-- else
-- @string, @ptree = String(string), nil
-- end
-- @copy = @lexstat = nil
--end
--
--#
--# === LEXICAL ANALYZER ===
--#
--
--def rewind
-- @copy = @string.dup.strip
-- @lexstat = nil
--end
--
--RE_SPACE = '([ \t])'
--RE_INTEGER = '([-+]?\d+)'
--RE_EXP = '([eE][-+]?[0-9]+)'
--RE_REAL = "([-+]?[0-9]*(\\.[0-9]*#{RE_EXP}?|#{RE_EXP}))"
--RE_YEAR = "([-+]?[0-9]{1,4})"
--RE_MONTH = "(0?[1-9]|1[0-2])"
--RE_DAY = "([12][0-9]|30|31|0?[1-9])"
--RE_HOUR = "(2[0-3]|[0-1]?[0-9])"
--RE_MINUTE = "([0-5]?[0-9])"
--RE_SECOND = "((#{RE_MINUTE}|60)(\\.[0-9]*)?)"
--RE_NAME = "(%|[a-zA-Z][a-zA-Z_]*([0-9]+[a-zA-Z_]+)*)"
--
--RE_DATE = "#{RE_YEAR}-#{RE_MONTH}-#{RE_DAY}"
--RE_TIME = "#{RE_HOUR}((:[0-5]?[0-9]|[0-5][0-9])(:#{RE_SECOND})?)?"
--RE_HandM = "#{RE_HOUR}((:[0-5]?[0-9]|[0-5][0-9]))?"
--
--def next_token
--
-- # decomment
-- @copy.sub!(/^#.*/, '');
--
-- if @copy.sub!(%r{^\s*(\))}, '') then
-- @lexstat = nil
-- return [$1, $1]
-- end
--
-- if @copy.sub!(%r{^\s*(\()\s*}, '') then
-- return [$1, $1]
-- end
--
-- if @copy.sub!(%r{^[ \t]*(@)[ \t]*}, '') \
-- or @copy.sub!(%r{^[ \t]+(after|from|since|ref)[ \t]+}i, '') then
-- @lexstat = :SHIFT_SEEN
-- return [:SHIFT, $1]
-- end
--
-- if @copy.sub!(%r{^[ \t]*(/)[ \t]*}, '') \
-- or @copy.sub!(%r{^[ \t]+(per)[ \t]+}i, '') then
-- @lexstat = nil
-- return [:DIVIDE, $1]
-- end
--
-- if @copy.sub!(%r{^(\^|\*\*)}, '') then
-- @lexstat = nil
-- return [:EXPONENT, $1]
-- end
--
-- if @copy.sub!(%r{^(\.|\*|[ \t]+)}, '') then
-- @lexstat = nil
-- return [:MULTIPLY, $1]
-- end
--
-- if :SHIFT_SEEN === @lexstat \
-- and @copy.sub!(%r{^#{RE_DATE}T?[ \t]*}, '') then
-- y, m, d = $1, $2, $3
-- @lexstat = :DATE_SEEN
-- return [:DATE, XDate.new(y.to_i, m.to_i, d.to_i)]
-- end
--
-- if :SHIFT_SEEN === @lexstat \
-- and @copy.sub!(%r{^now[ \t]*}, '') then
-- @lexstat = nil
-- return [:DATE, :now]
-- end
--
-- if :DATE_SEEN === @lexstat \
-- and @copy.sub!(%r{^#{RE_TIME}[ \t]*}, '') then
-- h, m, s = $1, $3, $5
-- m = m.sub(/:/,'') if m
-- s = 0 if s.nil?
-- @lexstat = :TIME_SEEN
-- return [:TIME, ((h.to_i * 60 + m.to_i) * 60 + Float(s))]
-- end
--
-- if :DATE_SEEN === @lexstat \
-- and @copy.sub!(%r{^([0-2][0-9])([0-5][0-9])[ \t]*}, '') then
-- h, m = $1, $2
-- @lexstat = :TIME_SEEN
-- return [:TIME, ((h.to_i * 60 + m.to_i) * 60.0)]
-- end
--
-- if :DATE_SEEN === @lexstat \
-- and @copy.sub!(%r{^([0-9])([0-5][0-9])[ \t]*}, '') then
-- h, m = $1, $2
-- @lexstat = :TIME_SEEN
-- return [:TIME, ((h.to_i * 60 + m.to_i) * 60.0)]
-- end
--
-- if :TIME_SEEN === @lexstat \
-- and @copy.sub!(%r{^(UTC|Z)[ \t]*}, '') then
-- @lexstat = nil
-- return [:ZONE, 0]
-- end
--
-- if :TIME_SEEN === @lexstat \
-- and @copy.sub!(%r{^([-+]?)#{RE_HandM}[ \t]*}, '') then
-- sgn, h, m = $1, $2, $4
-- m = m.sub(/:/,'') if m
-- @lexstat = nil
-- h = h.to_i
-- h = -h if sgn == "-"
-- m = m.to_i
-- m = -m if sgn == "-"
-- return [:ZONE, ((h * 60) + m)]
-- end
--
-- if @copy.sub!(%r{^#{RE_NAME}}, '') then
-- @lexstat = nil
-- return [:NAME, $1]
-- end
--
-- if @copy.sub!(%r{^#{RE_REAL}}, '') then
-- @lexstat = nil
-- return [:REAL, $1.to_f]
-- end
--
-- if @copy.sub!(%r{^#{RE_INTEGER}}, '') then
-- @lexstat = nil
-- return [:INT, $1.to_i]
-- end
--
-- if @copy.sub!(%r{^(-)}, '') then
-- @lexstat = nil
-- return [:MULTIPLY, $1]
-- end
--
-- if @copy.sub!(%r{^(.)}, '') then
-- return [$1, $1]
-- end
--
-- return [false, false]
--
--end
--
--#
--# === USER LEVEL METHODS ===
--#
--
--def tokens
-- rewind
-- x = []
-- while (t = next_token).first
-- x.push t
-- end
-- x
--end
--
--def do_parse2
-- rewind
-- return NumberNode.new(1) if @string.nil? or @string.empty?
-- pa = do_parse
-- pa ? pa : ErrorNode.new(@string)
--end
--
--def ptree
-- @ptree = do_parse2 if not @ptree
-- @ptree
--end
--
--def dup
-- @string ? self.class.new(@string) : self.class.new(@ptree)
--end
--
--def parse
-- dup.parse!
--end
--
--def parse!
-- @ptree = do_parse2 if not @ptree
-- self
--end
--
--def self::parse(string)
-- new(string).parse!
--end
--
--=begin
----- reduce0
-- just do nothing.
--=end
--
--def reduce0
-- self
--end
--
--=begin
----- reduce1
-- removes unnecessary parentheses.
--=end
--
--def reduce1
-- @string = ptree.to_s
-- self
--end
--
--=begin
----- reduce2
-- removes shift operator within multiplication/division/exponent
--=end
--
--def reduce2
-- @ptree = ptree.reduce2
-- @string = nil
-- self
--end
--
--=begin
----- reduce3
-- flattens expression and collects all factors
--=end
--
--def reduce3
-- @ptree = ptree.reduce3
-- @string = nil
-- self
--end
--
--=begin
----- reduce4
-- collects terms with the same name
--=end
--
--def reduce4
-- @ptree = ptree.reduce4
-- @string = nil
-- self
--end
--
--=begin
----- reduce5
-- expands all terms recursively
--=end
--
--def reduce5
-- @ptree = ptree.reduce5
-- @string = nil
-- self
--end
--
--attr_reader :string
--
--def to_s
-- @string = @ptree.to_s if @string.nil?
-- @string
--end
--
--def inspect
-- if @ptree.nil? then
-- "Units{#{@string}}"
-- else
-- "Units[#{@ptree.inspect}]".gsub(/Units::/, '').gsub(/Node\[/, '[')
-- end
--end
--
--def self::[](string)
-- new(string)
--end
--
--def self::parse(string)
-- new(string).parse!
--end
--
--def eval(x = 0)
-- r5 = ptree.reduce5
-- case r = r5.ref
-- when TimeNode
-- r.add(x, r5.name)
-- else
-- fac = NumberNode.new(x + r.value)
-- self.class.new(MulNode.new(fac, r5.deref))
-- end
--end
--
--def convert(numeric, to_units)
-- to_units = Units.new( to_units ) if to_units.is_a?(String)
-- r5 = dup.ptree.reduce5
-- case r = r5.ref
-- when TimeNode
-- r.add_time(r5.deref.mul(numeric)).div_time(to_units.ptree)
-- else
-- shift1 = r.value
-- numeric = shift1 + numeric if shift1 != 0
-- fact = r5.divide(tp = to_units.dup.ptree).reduce5.value
-- numeric *= fact if fact != 1
-- shift2 = tp.reduce5.ref.value
-- numeric = numeric - shift2 if shift2 != 0
-- numeric
-- end
--end
--
--def factor_and_offset(to_units)
-- # To convert a numeric from self to to_units:
-- # scale_factor * numeric + add_offset
-- to_units = Units.new( to_units ) if to_units.is_a?(String)
-- add_offset = convert(0, to_units)
-- scale_factor = convert(1, to_units) - add_offset
-- [ scale_factor, add_offset ]
--end
--
--def convert2(val, to_units)
-- # Like Units#convert, but applicable to any Numeric-like objects.
-- # Returns the original value if the units are incompatible.
-- to_units = Units.new( to_units ) if to_units.is_a?(String)
-- if ( self == to_units )
-- val
-- elsif ( self =~ to_units )
-- if Numeric===val
-- convert( val, to_units )
-- else
-- factor, offset = factor_and_offset( to_units )
-- val*factor + offset
-- end
-- else
-- unless $VERBOSE.nil?
-- $stderr.print( "*WARNING*: " +
-- "incompatible units: #{self.to_s} and #{to_units.to_s}\n")
-- caller(0).each{|c| $stderr.print "\t* ",c,"\n"}
-- end
-- val
-- end
--end
--
--@@reduce = :reduce4
--
--def self::reduce_level
-- @@reduce.to_s[-1]
--end
--
--def self::reduce_level=(n)
-- @@reduce = case n
-- when 1 then :reduce1
-- when 2 then :reduce2
-- when 3 then :reduce3
-- when 4 then :reduce4
-- else :reduce5
-- end
--end
--
--def binop(op, other)
-- case other
-- when Numeric
-- other = NumberNode.new(other)
-- when Units
-- other = other.ptree
-- end
-- q = self.ptree.send(op, other).send(@@reduce)
-- Units.new(q)
--end
--
--def *(other)
-- binop(:mul, other)
--end
--
--def **(other)
-- binop(:pow, other)
--end
--
--def /(other)
-- binop(:divide, other)
--end
--
--def ^(other)
-- binop(:shift, other)
--end
--
--def ==(other)
-- case other
-- when self.class
-- dup.reduce5.to_s == other.dup.reduce5.to_s
-- else
-- false
-- end
--end
--
--#def === (other)
--# reduce5.ptree.deref.to_s == other.reduce5.ptree.deref.to_s
--#end
--
--alias === ==
--
--#def === (other)
--# # returns true if other is within a factor and/or offset of difference.
--# case other
--# when self.class
--# (self/other).reduce5.ptree.children.each do |child|
--# return false if !( NumberNode === child )
--# end
--# true
--# else
--# false
--# end
--#end
--
--
--def =~(other)
-- case other
-- when self.class
-- (self/other).reduce5.ptree.children.each{ |node|
-- return false unless NumberNode === node
-- }
-- true
-- else
-- false
-- end
--end
--
--def self::pow_f(a, b)
-- if Integer === b and b < 0 then
-- a ** b.to_f
-- else
-- a ** b
-- end
--end
--...end units.racc/module_eval...
--##### State transition tables begin ###
--
--racc_action_table = [
-- 3, 9, 35, 9, 32, 9, 19, 11, 10, 7,
-- 10, 9, 10, 8, 25, 31, 36, 23, 10, 7,
-- 9, 37, 9, 8, 9, 38, nil, 10, 7, 10,
-- 7, 10, 8, 25, 8, 9, 23, nil, 12, 9,
-- 14, 15, 10, 9, 7, 17, 10, 31, 8, 17,
-- 10, 9, nil, 9, nil, nil, nil, 17, 10, 17,
-- 10 ]
--
--racc_action_check = [
-- 0, 0, 25, 31, 18, 23, 11, 1, 0, 0,
-- 31, 14, 23, 0, 23, 31, 33, 23, 14, 14,
-- 8, 34, 15, 14, 12, 35, nil, 8, 8, 15,
-- 15, 12, 8, 12, 15, 17, 12, nil, 4, 5,
-- 4, 4, 17, 28, 4, 5, 5, 17, 4, 28,
-- 28, 13, nil, 26, nil, nil, nil, 13, 13, 26,
-- 26 ]
--
--racc_action_pointer = [
-- -1, 7, nil, nil, 34, 37, nil, nil, 18, nil,
-- nil, 6, 22, 49, 9, 20, nil, 33, -11, nil,
-- nil, nil, nil, 3, nil, -10, 51, nil, 41, nil,
-- nil, 1, nil, 1, 6, 12, nil, nil, nil ]
--
--racc_action_default = [
-- -1, -27, -2, -3, -4, -7, -8, -14, -27, -20,
-- -21, -27, -27, -9, -27, -27, -15, -27, -27, 39,
-- -5, -6, -18, -27, -22, -24, -10, -12, -11, -13,
-- -16, -27, -17, -27, -27, -25, -19, -23, -26 ]
--
--racc_goto_table = [
-- 6, 20, 21, 2, 1, nil, 30, nil, 6, 13,
-- nil, 18, 22, 34, 27, 29, nil, 22, nil, 26,
-- 28, nil, nil, 22, nil, nil, nil, nil, nil, nil,
-- nil, 22 ]
--
--racc_goto_check = [
-- 7, 4, 5, 2, 1, nil, 4, nil, 7, 6,
-- nil, 2, 7, 5, 7, 7, nil, 7, nil, 6,
-- 6, nil, nil, 7, nil, nil, nil, nil, nil, nil,
-- nil, 7 ]
--
--racc_goto_pointer = [
-- nil, 4, 3, nil, -11, -10, 5, 0, nil ]
--
--racc_goto_default = [
-- nil, nil, nil, 4, 33, nil, 5, 16, 24 ]
--
--racc_reduce_table = [
-- 0, 0, :racc_error,
-- 0, 17, :_reduce_none,
-- 1, 17, :_reduce_2,
-- 1, 17, :_reduce_3,
-- 1, 18, :_reduce_none,
-- 3, 18, :_reduce_5,
-- 3, 18, :_reduce_6,
-- 1, 19, :_reduce_none,
-- 1, 19, :_reduce_none,
-- 2, 19, :_reduce_9,
-- 3, 19, :_reduce_10,
-- 3, 19, :_reduce_11,
-- 3, 19, :_reduce_12,
-- 3, 19, :_reduce_13,
-- 1, 22, :_reduce_14,
-- 2, 22, :_reduce_15,
-- 3, 22, :_reduce_16,
-- 3, 22, :_reduce_17,
-- 1, 20, :_reduce_none,
-- 3, 20, :_reduce_19,
-- 1, 23, :_reduce_20,
-- 1, 23, :_reduce_21,
-- 1, 21, :_reduce_none,
-- 3, 21, :_reduce_23,
-- 1, 24, :_reduce_24,
-- 2, 24, :_reduce_25,
-- 3, 24, :_reduce_26 ]
--
--racc_reduce_n = 27
--
--racc_shift_n = 39
--
--racc_token_table = {
-- false => 0,
-- :error => 1,
-- :INT => 2,
-- :ERR => 3,
-- :SHIFT => 4,
-- :SPACE => 5,
-- :MULTIPLY => 6,
-- :DIVIDE => 7,
-- :EXPONENT => 8,
-- :REAL => 9,
-- :NAME => 10,
-- :DATE => 11,
-- :TIME => 12,
-- :ZONE => 13,
-- "(" => 14,
-- ")" => 15 }
--
--racc_nt_base = 16
--
--racc_use_result_var = false
--
--Racc_arg = [
-- racc_action_table,
-- racc_action_check,
-- racc_action_default,
-- racc_action_pointer,
-- racc_goto_table,
-- racc_goto_check,
-- racc_goto_default,
-- racc_goto_pointer,
-- racc_nt_base,
-- racc_reduce_table,
-- racc_token_table,
-- racc_shift_n,
-- racc_reduce_n,
-- racc_use_result_var ]
--
--Racc_token_to_s_table = [
-- "$end",
-- "error",
-- "INT",
-- "ERR",
-- "SHIFT",
-- "SPACE",
-- "MULTIPLY",
-- "DIVIDE",
-- "EXPONENT",
-- "REAL",
-- "NAME",
-- "DATE",
-- "TIME",
-- "ZONE",
-- "\"(\"",
-- "\")\"",
-- "$start",
-- "unit_spec",
-- "origin_exp",
-- "unit_exp",
-- "value_exp",
-- "timestamp",
-- "power_exp",
-- "number_exp",
-- "time_exp" ]
--
--Racc_debug_parser = false
--
--##### State transition tables end #####
--
--# reduce 0 omitted
--
--# reduce 1 omitted
--
--module_eval(<<'.,.,', 'units.racc', 9)
-- def _reduce_2(val, _values)
-- val[0]
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 10)
-- def _reduce_3(val, _values)
-- yyerrok
-- end
--.,.,
--
--# reduce 4 omitted
--
--module_eval(<<'.,.,', 'units.racc', 15)
-- def _reduce_5(val, _values)
-- val[0].shift(val[2])
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 16)
-- def _reduce_6(val, _values)
-- val[0].shift(val[2])
-- end
--.,.,
--
--# reduce 7 omitted
--
--# reduce 8 omitted
--
--module_eval(<<'.,.,', 'units.racc', 22)
-- def _reduce_9(val, _values)
-- val[0].mul(val[1])
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 23)
-- def _reduce_10(val, _values)
-- val[0].mul(val[2])
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 24)
-- def _reduce_11(val, _values)
-- val[0].divide(val[2])
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 25)
-- def _reduce_12(val, _values)
-- val[0].mul(val[2])
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 26)
-- def _reduce_13(val, _values)
-- val[0].divide(val[2])
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 30)
-- def _reduce_14(val, _values)
-- NameNode.new(val[0])
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 31)
-- def _reduce_15(val, _values)
-- val[0].pow(val[1])
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 32)
-- def _reduce_16(val, _values)
-- val[0].pow(val[2])
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 33)
-- def _reduce_17(val, _values)
-- val[1]
-- end
--.,.,
--
--# reduce 18 omitted
--
--module_eval(<<'.,.,', 'units.racc', 38)
-- def _reduce_19(val, _values)
-- val[1]
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 42)
-- def _reduce_20(val, _values)
-- NumberNode.new(val[0])
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 43)
-- def _reduce_21(val, _values)
-- NumberNode.new(val[0])
-- end
--.,.,
--
--# reduce 22 omitted
--
--module_eval(<<'.,.,', 'units.racc', 48)
-- def _reduce_23(val, _values)
-- val[1]
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 52)
-- def _reduce_24(val, _values)
-- TimeNode.new(val[0], 0.0, 0)
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 53)
-- def _reduce_25(val, _values)
-- TimeNode.new(val[0], val[1], 0)
-- end
--.,.,
--
--module_eval(<<'.,.,', 'units.racc', 54)
-- def _reduce_26(val, _values)
-- TimeNode.new(val[0], val[1], val[2])
-- end
--.,.,
--
--def _reduce_none(val, _values)
-- val[0]
--end
--
-- end # class Units
-- end # module NumRu
--
--####################
--if $0 == __FILE__
-- include NumRu
--
-- def assert(test, seikai)
-- raise "#{test.inspect} != #{seikai.inspect}" if test != seikai
-- puts "ok #{seikai.inspect}"
-- end
--
-- puts "=== reduce1 ==="
--
-- assert Units.new('').reduce1.to_s, "1"
-- assert Units.new('m').reduce1.to_s, "m"
-- assert Units.new('3').reduce1.to_s, "3"
-- assert Units.new('3.14').reduce1.to_s, "3.14"
-- assert Units.new('m2').reduce1.to_s, "m2"
-- assert Units.new('m.s').reduce1.to_s, "m.s"
-- assert Units.new('m/s').reduce1.to_s, "m.s-1"
-- assert Units.new('kg.m/s2').reduce1.to_s, "kg.m.(s2)-1"
-- assert Units.new('s @ 2003-11-29').reduce1.to_s,
-- "(s @ 2003-11-29T00:00:00.00 +00:00)"
-- assert Units.new('s @ 2003-11-29T11:24').reduce1.to_s,
-- "(s @ 2003-11-29T11:24:00.00 +00:00)"
-- assert Units.new('s @ 2003-11-29T11:24:11 -09:00').reduce1.to_s,
-- "(s @ 2003-11-29T11:24:11.00 -09:00)"
--
-- assert Units.new('100').reduce1.to_s, "100"
-- assert Units.new('(10)^2').reduce1.to_s, "(10)2"
-- assert Units.new('(10)^2/100').reduce1.to_s, "(10)2.(100)-1"
--
-- puts "=== reduce2 ==="
--
-- assert Units.new('s @ 2003-11-29').reduce2.to_s,
-- "(s @ 2003-11-29T00:00:00.00 +00:00)"
-- assert Units.new('m/(s @ 2003-11-29)').reduce2.to_s, "m.s-1"
-- assert Units.new('m/((K @ 273.15) (s from 2003-11-29))').reduce2.to_s, "m.(K.s)-1"
--
-- assert Units.new('(10)^2/100').reduce2.to_s, "(10)2.(100)-1"
--
-- puts "=== reduce3 ==="
--
-- assert Units::MultiNode.new(Units::NameNode.new('a'), \
-- Units::NumberNode.new(1), \
-- Units::NameNode.new('b')).to_s, 'a.1 b'
--
-- assert Units.new('kg').reduce3.inspect, "Units[Name[kg]]"
-- assert Units.new('kg.m').reduce3.inspect, "Units[Multi[Name[kg], Name[m]]]"
-- assert Units.new('kg.m.s').reduce3.inspect,
-- "Units[Multi[Name[kg], Name[m], Name[s]]]"
--
-- assert Units.new('(m.s)^2').reduce3.inspect,
-- "Units[Multi[Pow[Name[m], Number[2]], Pow[Name[s], Number[2]]]]"
-- assert Units.new('K @ 273.15').reduce3.inspect,
-- "Units[Shift[Name[K], Number[273.15]]]"
-- assert Units.new('((a.b)^2)^2').reduce3.inspect,
-- "Units[Multi[Pow[Name[a], Number[4]], Pow[Name[b], Number[4]]]]"
-- assert Units.new('((a.b)^2 c4 d)^2').reduce3.inspect,
-- "Units[Multi[Pow[Name[a], Number[4]], Pow[Name[b], Number[4]], Pow[Name[c], Number[8]], Pow[Name[d], Number[2]]]]"
-- assert Units.new('((a.b)^2 c4 d)^2').reduce3.to_s,
-- "a4 b4 c8 d2"
-- assert Units.new('((a.b)^2 a4 b)^2').reduce3.to_s,
-- "a4 b4 a8 b2"
--
-- assert Units.new('s @ 2003-11-29').reduce3.to_s,
-- "(s @ 2003-11-29T00:00:00.00 +00:00)"
-- assert Units.new('m/(s @ 2003-11-29)').reduce3.to_s, "m.s-1"
-- assert Units.new('m/((K @ 273.15) (s from 2003-11-29))').reduce3.to_s, "m.K-1 s-1"
--
-- assert Units.new('(10)^2/100').reduce3.to_s, "(10)2.(100)-1"
--
-- puts "=== reduce4 ==="
--
-- assert Units.new('((a.b)^2 a4 b @ now)^2 @ 273.15').reduce4.to_s,
-- "(a12 b6 @ 273.15)"
--
-- assert Units.new('km2').reduce4.to_s, "km2"
-- assert Units.new('hours.hour').reduce4.to_s, "hour2"
-- assert Units.new('(10)^2').reduce4.to_s, "100"
-- assert Units.new('100/10').reduce4.to_s, "10"
-- assert Units.new('(10)^2/100').reduce4.to_s, "1"
--
-- puts "=== reduce5 ==="
--
-- assert Units.new('km2').reduce5.to_s, "1000000 m2"
-- assert Units.new('(10)^2/100').reduce5.to_s, "1"
--
-- assert Units.new('hPa').reduce5.to_s, "100 kg.m-1 s-2"
-- assert Units.new('mb').reduce5.to_s, "100 kg.m-1 s-2"
--
-- assert Units.new('hPa/mb').reduce5.to_s, "1"
--
-- assert Units.new('(K @ 273.15)@ 10').reduce5.to_s, "(K @ 283.15)"
--
-- puts "=== APPLICATIONS ==="
--
-- assert Units.new('km @ 2').convert(3, Units.new('m @ 100')), 4900
-- assert Units.new('degree_F').convert(32, Units.new('K')).to_s, ((32+459.67)*(1.8**-1)).to_s
--
-- u1 = Units.new('m/s')
-- u2 = Units.new('mm/s')
-- assert((u1/u2).to_s, "m.mm-1")
-- assert((u1*u2).to_s, "m.mm.s-2")
--
-- u1 = Units.new('years since 1999-01-01 00:00').reduce4
-- u2 = Units.new('hours since 2001-01-01 00:00').reduce4
-- assert u1.convert(3, u2), 24 * 365
-- u3 = Units.new('months since 2001-01-01 00:00').reduce4
-- assert u1.convert(3, u3), 12.0
--
-- Units.reduce_level = 3
-- assert((Units.new('hours') ** 2).to_s, "hours2")
-- Units.reduce_level = 4
-- assert((Units.new('hours') ** 2).to_s, "hour2")
-- Units.reduce_level = 5
-- assert((Units.new('hours') ** 2).to_s, "12960000 s2")
--
-- assert(Units.new('day') =~ Units.new('s since 2002-01-01'), true)
-- assert(Units.new('m') =~ Units.new('1'), false)
--
-- un1 = Units['day since 2000-01-01']
-- un2 = Units['s since 2000-01-01']
-- assert(un1.convert(0, un2), 0.0)
-- assert(un1.convert(1, un2), 86400.0)
--end
-+require "numru/units/version"
-+require "numru/units/units.rb"
---- /dev/null
-+++ b/lib/numru/units/units.rb
-@@ -0,0 +1,3099 @@
-+#
-+# DO NOT MODIFY!!!!
-+# This file is automatically generated by Racc 1.4.8
-+# from Racc grammer file "".
-+#
-+
-+require 'racc/parser.rb'
-+
-+
-+require 'date'
-+
-+module NumRu
-+ class Units < Racc::Parser
-+
-+module_eval(<<'...end units.racc/module_eval...', 'units.racc', 65)
-+
-+VERSION = "1.9"
-+
-+=begin
-+= class Node
-+Node is a parent class for classes of parse tree node.
-+This is not expected to be instanciated directly.
-+=end
-+
-+class Node
-+
-+ def initialize(*args)
-+ raise "#{self.class} is virtual."
-+ end
-+
-+ def to_s(*args)
-+ raise "#{self.class}#to_s is virtual."
-+ end
-+
-+=begin
-+--- pow other
-+ simply constructs a PowNode object.
-+ No reduction is performed.
-+=end
-+
-+ def pow(other)
-+ PowNode.new(self, other)
-+ end
-+
-+=begin
-+--- mul other
-+ simply constructs a MulNode object.
-+ No reduction is performed.
-+=end
-+
-+ def mul(other)
-+ other = NumberNode.new(other) if Numeric === other
-+ MulNode.new(self, other)
-+ end
-+
-+=begin
-+--- divide other
-+ simply constructs a MulNode object.
-+ No reduction is performed.
-+=end
-+
-+ def divide(other)
-+ MulNode.new(self, PowNode.new(other, NumberNode.new(-1)))
-+ end
-+
-+=begin
-+--- shift other
-+ simply constructs a ShiftNode object.
-+ No reduction is performed.
-+=end
-+
-+ def shift(other)
-+ ShiftNode.new(self, other)
-+ end
-+
-+=begin
-+--- pow_eval other
-+ similar to ((<pow other>)), but reduces PowNode[PowNode[...]] into
-+ single PowNode[...], so overriden at PowNode class.
-+=end
-+
-+ def pow_eval(other)
-+ pow(other)
-+ end
-+
-+=begin
-+--- inspect
-+=end
-+
-+ def inspect2; "#{self.class}[#{to_s}]"; end
-+
-+ def inspect; inspect2.gsub(/Units::/, '').gsub(/NumRu::/, '').gsub(/Node\[/, '['); end
-+
-+=begin
-+--- trim
-+ in most subclasses, "trim" is redirected into "trim2".
-+=end
-+
-+ def trim
-+ trim2
-+ end
-+
-+=begin
-+--- flatten
-+ in most subclasses, "flatten" is redirected into "flatten2".
-+=end
-+
-+ def flatten
-+ flatten2
-+ end
-+
-+=begin
-+--- sort
-+=end
-+
-+ def sort
-+ raise "#{self.class}#sort is virtual: call after flatten"
-+ end
-+
-+=begin
-+--- reduce1
-+--- reduce2
-+--- reduce3
-+--- reduce4
-+--- reduce5
-+=end
-+
-+ def reduce1
-+ self
-+ end
-+
-+ def reduce2
-+ trim
-+ end
-+
-+ def reduce3
-+ trim.flatten
-+ end
-+
-+ def reduce4
-+ # unalias(Hash.new).trim.flatten.sort
-+ foldnumber(nil).trim.flatten.sort
-+ end
-+
-+ def reduce5
-+ expand(Hash.new).trim.flatten.sort
-+ end
-+
-+=begin
-+--- ref
-+ to be overriden at ShiftNode
-+--- deref
-+ to be overriden at ShiftNode
-+=end
-+
-+ def ref
-+ NumberNode::ZERO
-+ end
-+
-+ def deref
-+ self
-+ end
-+
-+end
-+
-+class ErrorNode < Node
-+
-+ def initialize(string)
-+ @a = string
-+ end
-+
-+ def to_s; @a; end
-+
-+end
-+
-+class ContainerNode < Node
-+
-+ def trim2
-+ x = []
-+ for child in self
-+ x.push child.trim2
-+ end
-+ self.class.new(*x)
-+ end
-+
-+ def inspect2
-+ a = []
-+ for child in self
-+ a.push child.inspect2
-+ end
-+ "#{self.class}[#{a.join(', ')}]"
-+ end
-+
-+end
-+
-+module BinaryNode
-+
-+ def each
-+ yield @lhs
-+ yield @rhs
-+ end
-+
-+ def expand(stopper)
-+ self.class.new(@lhs.expand(stopper), @rhs.expand(stopper))
-+ end
-+
-+ def unalias(stopper)
-+ self.class.new(@lhs.unalias(stopper), @rhs.unalias(stopper))
-+ end
-+
-+ def foldnumber(stopper)
-+ self.class.new(@lhs.foldnumber(stopper), @rhs.foldnumber(stopper))
-+ end
-+
-+end
-+
-+class TerminalNode < Node
-+
-+ def trim2; self; end
-+ def flatten2; self; end
-+
-+ def expand(stopper); self; end
-+ alias :unalias :expand
-+ alias :foldnumber :expand
-+
-+ def sort; self; end
-+
-+end
-+class NameNode < TerminalNode
-+
-+ def initialize(string)
-+ @a = string
-+ end
-+
-+ def to_s; @a; end
-+
-+ alias :name :to_s
-+
-+ def power; NumberNode::UNITY; end
-+
-+ def mul_eval(another)
-+ raise "internal error (#{name}, #{another.name})" if name != another.name
-+ PowNode.new(self, self.power.add_eval(another.power))
-+ end
-+
-+ def expand(stopper)
-+ raise "circular dependency for #{@a}" if stopper[@a]
-+ return self if basic?
-+ return CACHE[@a] if CACHE.include?(@a)
-+ CACHE[@a] = expand2(stopper)
-+ end
-+
-+ def expand2(stopper)
-+ newstopper = stopper.dup
-+ newstopper[@a] = true
-+ if UDEFS.include?(@a) then
-+ Units.new(UDEFS[@a]).ptree.expand(newstopper)
-+ else
-+ p, n = UALIASES[@a]
-+ u = Units.new(UDEFS[n] || n).ptree.expand(newstopper)
-+ MulNode.new(u, PowNode.new(NumberNode.new(10), NumberNode.new(p)))
-+ end
-+ end
-+
-+ def unalias(stopper)
-+ raise "circular dependency for #{@a}" if stopper[@a]
-+ return self unless UALIASES.include?(@a)
-+ p, n = UALIASES[@a]
-+ u = NameNode.new(n)
-+ q = PowNode.new(NumberNode.new(10), NumberNode.new(p))
-+ MulNode.new(u, q)
-+ end
-+
-+ def foldnumber(stopper)
-+ return self unless UPLURALS.include?(@a)
-+ n = UPLURALS[@a]
-+ NameNode.new(n)
-+ end
-+
-+ def basic?
-+ not (UDEFS.include?(@a) or UALIASES.include?(@a))
-+ end
-+
-+ CACHE = {}
-+
-+ def factor
-+ 1
-+ end
-+
-+end
-+
-+class NameNode
-+UDEFS = {
-+ "%" => "1e-2", "Au" => "astronomical_unit", "Bq" => "s-1",
-+ "C" => "A.s", "Celsius" => "K @ 273.15", "F" => "C/V",
-+ "Fahrenheit" => "degree_F", "G" => "gauss", "Gal" => "cm s-2",
-+ "Gy" => "J.kg-1", "H" => "Wb.A-1", "Hg" => "mercury",
-+ "Hz" => "1/s", "J" => "N.m", "Julian_year" => "365.25 day",
-+ "L" => "litre", "N" => "kg.m.s-2", "P" => "poise", "Pa" => "N.m-2",
-+ "Pascal" => "Pa", "S" => "A/V", "St" => "stokes", "Sv" => "J.kg-1",
-+ "T" => "Wb.m-2", "V" => "J/C", "W" => "J/s", "Wb" => "V.s",
-+ "a" => "are", "ac" => "acre", "acre" => "10 chain2",
-+ "ampere" => "A", "angstrom" => "1.0e-10 m",
-+ "angular_degree" => "degree", "angular_minute" => "minute_angle",
-+ "angular_second" => "second_angle", "are" => "100 m2",
-+ "astronomical_unit" => "1.49597870e11 m",
-+ "astronomical_units" => "1.49597870e11 m", "atm" => "atmosphere",
-+ "atmosphere" => "101325 Pa", "bar" => "1e6 dyn.cm-2",
-+ "cal" => "calorie", "calorie" => "4.18605 J",
-+ "celsius" => "K @ 273.15", "centigrade" => "K @ 273.15",
-+ "century" => "100 year", "chain" => "22 yard",
-+ "common_year" => "365 day",
-+ "conventional_mercury" => "gravity 13595.10 kg/m3", "coulomb" => "C",
-+ "d" => "24 hour", "day" => "24 hour", "degC" => "K @ 273.15",
-+ "degF" => "degree_F", "degK" => "K", "deg_C" => "K @ 273.15",
-+ "deg_F" => "degree_F", "deg_K" => "K", "degree" => "pi.rad/180",
-+ "degreeC" => "K @ 273.15", "degreeF" => "degree_F",
-+ "degreeK" => "K", "degree_C" => "K @ 273.15",
-+ "degree_E" => "degree", "degree_F" => "degree_R @ 459.67",
-+ "degree_N" => "degree", "degree_R" => "K / 1.8",
-+ "degree_S" => "degree", "degree_W" => "degree",
-+ "degree_c" => "K @ 273.15", "degree_east" => "degree_E",
-+ "degree_f" => "degree_R @ 459.67", "degree_north" => "degree_N",
-+ "degree_south" => "degree_S", "degree_west" => "degree_W",
-+ "degrees_east" => "degree_E", "degrees_north" => "degree_N",
-+ "degrees_south" => "degree_S", "degrees_west" => "degree_W",
-+ "dyn" => "g.cm.s-2", "dyne" => "g.cm.s-2", "erg" => "dyn cm",
-+ "fahrenheit" => "degree_F", "farad" => "coulomb/volt",
-+ "feet" => "foot", "fermi" => "1.0e-15 m", "foot" => "12 inch",
-+ "force" => "9.80665 m.s-2", "ft" => "foot", "g" => "kg/1000",
-+ "gal" => "cm s-2", "gauss" => "T / 10000", "gram" => "kg/1000",
-+ "gravity" => "9.806650 meter/second2", "h" => "60 min",
-+ "hectare" => "100 are", "hertz" => "Hz", "hg" => "mercury",
-+ "horse_power" => "75 m kilogram-force / s", "hour" => "60 min",
-+ "hr" => "60 min", "in" => "inch", "inch" => "2.54 cm",
-+ "joule" => "J", "kelvin" => "K", "kgf" => "kilogram-force",
-+ "kilogram" => "kg", "knot" => "nautical_mile / hour",
-+ "kph" => "km / hour", "lb" => "pound",
-+ "light_speed" => "299792458 m/s", "light_year" => "9.46e15 m",
-+ "light_years" => "9.46e15 m", "litre" => "1.0e-3 m3",
-+ "lm" => "cd.sr", "lx" => "lm.m-2", "ly" => "light_year",
-+ "mb" => "bar / 1000", "mercury" => "conventional_mercury",
-+ "meter" => "metre", "metre" => "m", "mgal" => "cm s-2 / 1000",
-+ "micron" => "1.0e-6 m", "mile" => "1760 yard",
-+ "millibar" => "bar / 1000", "min" => "60 s", "minute" => "60 s",
-+ "minute_angle" => "pi.rad/180/60", "mole" => "mol",
-+ "mon" => "month", "month" => "6 pentad", "mph" => "mile / hour",
-+ "nautical_mile" => "1852 m", "nautical_miles" => "1852 m",
-+ "newton" => "N", "ohm" => "V/A", "ounce" => "pound / 16",
-+ "oz" => "ounce", "parsec" => "3.0857e16 m", "pascal" => "Pa",
-+ "pc" => "parsec", "percent" => "1e-2", "permil" => "1e-3",
-+ "pi" => "3.141592653589793238462", "poise" => "dyn s / cm2",
-+ "pound" => "453.6 g", "psi" => "pound-force / inch2",
-+ "radian" => "rad", "second" => "s",
-+ "second_angle" => "pi.rad/180/60/60", "steradian" => "sr",
-+ "stokes" => "cm2 / s", "t" => "ton", "tesla" => "Wb.m-2",
-+ "ton" => "1000 kg", "tonne" => "ton", "torr" => "133.322 Pa",
-+ "volt" => "V", "watt" => "W", "weber" => "Wb", "yard" => "6 feet",
-+ "yd" => "yard", "year" => "12 month", "yr" => "year",
-+}
-+UALIASES = {
-+ "Celsiuses" => [0, "Celsius"], "E%" => [18, "%"], "EA" => [18, "A"],
-+ "EAu" => [18, "Au"], "EBq" => [18, "Bq"], "EC" => [18, "C"],
-+ "EF" => [18, "F"], "EG" => [18, "G"], "EGal" => [18, "Gal"],
-+ "EGy" => [18, "Gy"], "EH" => [18, "H"], "EHg" => [18, "Hg"],
-+ "EHz" => [18, "Hz"], "EJ" => [18, "J"], "EK" => [18, "K"],
-+ "EL" => [18, "L"], "EN" => [18, "N"], "EP" => [18, "P"],
-+ "EPa" => [18, "Pa"], "ES" => [18, "S"], "ESt" => [18, "St"],
-+ "ESv" => [18, "Sv"], "ET" => [18, "T"], "EV" => [18, "V"],
-+ "EW" => [18, "W"], "EWb" => [18, "Wb"], "Ea" => [18, "a"],
-+ "Eac" => [18, "ac"], "Eatm" => [18, "atm"], "Ebar" => [18, "bar"],
-+ "Ecal" => [18, "cal"],
-+ "Econventional_mercury" => [18, "conventional_mercury"],
-+ "Ed" => [18, "d"], "EdegC" => [18, "degC"], "EdegF" => [18, "degF"],
-+ "Edeg_C" => [18, "deg_C"], "Edeg_F" => [18, "deg_F"],
-+ "EdegreeC" => [18, "degreeC"], "EdegreeF" => [18, "degreeF"],
-+ "Edegree_C" => [18, "degree_C"], "Edegree_E" => [18, "degree_E"],
-+ "Edegree_F" => [18, "degree_F"], "Edegree_N" => [18, "degree_N"],
-+ "Edegree_R" => [18, "degree_R"], "Edegree_S" => [18, "degree_S"],
-+ "Edegree_W" => [18, "degree_W"], "Edegree_c" => [18, "degree_c"],
-+ "Edegree_east" => [18, "degree_east"],
-+ "Edegree_f" => [18, "degree_f"],
-+ "Edegree_north" => [18, "degree_north"],
-+ "Edegree_south" => [18, "degree_south"],
-+ "Edegree_west" => [18, "degree_west"],
-+ "Edegrees_east" => [18, "degrees_east"],
-+ "Edegrees_north" => [18, "degrees_north"],
-+ "Edegrees_south" => [18, "degrees_south"],
-+ "Edegrees_west" => [18, "degrees_west"], "Edyn" => [18, "dyn"],
-+ "Eerg" => [18, "erg"], "Eforce" => [18, "force"], "Eg" => [18, "g"],
-+ "Egravity" => [18, "gravity"], "Eh" => [18, "h"],
-+ "Ehg" => [18, "hg"], "Ehr" => [18, "hr"], "Ein" => [18, "in"],
-+ "Ekg" => [18, "kg"], "Ekgf" => [18, "kgf"], "Ekph" => [18, "kph"],
-+ "Elb" => [18, "lb"], "Elm" => [18, "lm"], "Elx" => [18, "lx"],
-+ "Ely" => [18, "ly"], "Em" => [18, "m"], "Emb" => [18, "mb"],
-+ "Emercury" => [18, "mercury"], "Emgal" => [18, "mgal"],
-+ "Emin" => [18, "min"], "Emol" => [18, "mol"], "Emon" => [18, "mon"],
-+ "Emph" => [18, "mph"], "Eohm" => [18, "ohm"], "Eoz" => [18, "oz"],
-+ "Epc" => [18, "pc"], "Epercent" => [18, "percent"],
-+ "Epermil" => [18, "permil"], "Epsi" => [18, "psi"],
-+ "Erad" => [18, "rad"], "Es" => [18, "s"], "Esr" => [18, "sr"],
-+ "Et" => [18, "t"], "Eyr" => [18, "yr"],
-+ "Fahrenheits" => [0, "Fahrenheit"], "G%" => [9, "%"],
-+ "GA" => [9, "A"], "GAu" => [9, "Au"], "GBq" => [9, "Bq"],
-+ "GC" => [9, "C"], "GF" => [9, "F"], "GG" => [9, "G"],
-+ "GGal" => [9, "Gal"], "GGy" => [9, "Gy"], "GH" => [9, "H"],
-+ "GHg" => [9, "Hg"], "GHz" => [9, "Hz"], "GJ" => [9, "J"],
-+ "GK" => [9, "K"], "GL" => [9, "L"], "GN" => [9, "N"],
-+ "GP" => [9, "P"], "GPa" => [9, "Pa"], "GS" => [9, "S"],
-+ "GSt" => [9, "St"], "GSv" => [9, "Sv"], "GT" => [9, "T"],
-+ "GV" => [9, "V"], "GW" => [9, "W"], "GWb" => [9, "Wb"],
-+ "Ga" => [9, "a"], "Gac" => [9, "ac"], "Gatm" => [9, "atm"],
-+ "Gbar" => [9, "bar"], "Gcal" => [9, "cal"],
-+ "Gconventional_mercury" => [9, "conventional_mercury"],
-+ "Gd" => [9, "d"], "GdegC" => [9, "degC"], "GdegF" => [9, "degF"],
-+ "Gdeg_C" => [9, "deg_C"], "Gdeg_F" => [9, "deg_F"],
-+ "GdegreeC" => [9, "degreeC"], "GdegreeF" => [9, "degreeF"],
-+ "Gdegree_C" => [9, "degree_C"], "Gdegree_E" => [9, "degree_E"],
-+ "Gdegree_F" => [9, "degree_F"], "Gdegree_N" => [9, "degree_N"],
-+ "Gdegree_R" => [9, "degree_R"], "Gdegree_S" => [9, "degree_S"],
-+ "Gdegree_W" => [9, "degree_W"], "Gdegree_c" => [9, "degree_c"],
-+ "Gdegree_east" => [9, "degree_east"], "Gdegree_f" => [9, "degree_f"],
-+ "Gdegree_north" => [9, "degree_north"],
-+ "Gdegree_south" => [9, "degree_south"],
-+ "Gdegree_west" => [9, "degree_west"],
-+ "Gdegrees_east" => [9, "degrees_east"],
-+ "Gdegrees_north" => [9, "degrees_north"],
-+ "Gdegrees_south" => [9, "degrees_south"],
-+ "Gdegrees_west" => [9, "degrees_west"], "Gdyn" => [9, "dyn"],
-+ "Gerg" => [9, "erg"], "Gforce" => [9, "force"], "Gg" => [9, "g"],
-+ "Ggravity" => [9, "gravity"], "Gh" => [9, "h"], "Ghg" => [9, "hg"],
-+ "Ghr" => [9, "hr"], "Gin" => [9, "in"], "Gkg" => [9, "kg"],
-+ "Gkgf" => [9, "kgf"], "Gkph" => [9, "kph"], "Glb" => [9, "lb"],
-+ "Glm" => [9, "lm"], "Glx" => [9, "lx"], "Gly" => [9, "ly"],
-+ "Gm" => [9, "m"], "Gmb" => [9, "mb"], "Gmercury" => [9, "mercury"],
-+ "Gmgal" => [9, "mgal"], "Gmin" => [9, "min"], "Gmol" => [9, "mol"],
-+ "Gmon" => [9, "mon"], "Gmph" => [9, "mph"], "Gohm" => [9, "ohm"],
-+ "Goz" => [9, "oz"], "Gpc" => [9, "pc"],
-+ "Gpercent" => [9, "percent"], "Gpermil" => [9, "permil"],
-+ "Gpsi" => [9, "psi"], "Grad" => [9, "rad"], "Gs" => [9, "s"],
-+ "Gsr" => [9, "sr"], "Gt" => [9, "t"], "Gyr" => [9, "yr"],
-+ "Julians_year" => [0, "Julian_year"], "M%" => [6, "%"],
-+ "MA" => [6, "A"], "MAu" => [6, "Au"], "MBq" => [6, "Bq"],
-+ "MC" => [6, "C"], "MF" => [6, "F"], "MG" => [6, "G"],
-+ "MGal" => [6, "Gal"], "MGy" => [6, "Gy"], "MH" => [6, "H"],
-+ "MHg" => [6, "Hg"], "MHz" => [6, "Hz"], "MJ" => [6, "J"],
-+ "MK" => [6, "K"], "ML" => [6, "L"], "MN" => [6, "N"],
-+ "MP" => [6, "P"], "MPa" => [6, "Pa"], "MS" => [6, "S"],
-+ "MSt" => [6, "St"], "MSv" => [6, "Sv"], "MT" => [6, "T"],
-+ "MV" => [6, "V"], "MW" => [6, "W"], "MWb" => [6, "Wb"],
-+ "Ma" => [6, "a"], "Mac" => [6, "ac"], "Matm" => [6, "atm"],
-+ "Mbar" => [6, "bar"], "Mcal" => [6, "cal"],
-+ "Mconventional_mercury" => [6, "conventional_mercury"],
-+ "Md" => [6, "d"], "MdegC" => [6, "degC"], "MdegF" => [6, "degF"],
-+ "Mdeg_C" => [6, "deg_C"], "Mdeg_F" => [6, "deg_F"],
-+ "MdegreeC" => [6, "degreeC"], "MdegreeF" => [6, "degreeF"],
-+ "Mdegree_C" => [6, "degree_C"], "Mdegree_E" => [6, "degree_E"],
-+ "Mdegree_F" => [6, "degree_F"], "Mdegree_N" => [6, "degree_N"],
-+ "Mdegree_R" => [6, "degree_R"], "Mdegree_S" => [6, "degree_S"],
-+ "Mdegree_W" => [6, "degree_W"], "Mdegree_c" => [6, "degree_c"],
-+ "Mdegree_east" => [6, "degree_east"], "Mdegree_f" => [6, "degree_f"],
-+ "Mdegree_north" => [6, "degree_north"],
-+ "Mdegree_south" => [6, "degree_south"],
-+ "Mdegree_west" => [6, "degree_west"],
-+ "Mdegrees_east" => [6, "degrees_east"],
-+ "Mdegrees_north" => [6, "degrees_north"],
-+ "Mdegrees_south" => [6, "degrees_south"],
-+ "Mdegrees_west" => [6, "degrees_west"], "Mdyn" => [6, "dyn"],
-+ "Merg" => [6, "erg"], "Mforce" => [6, "force"], "Mg" => [6, "g"],
-+ "Mgravity" => [6, "gravity"], "Mh" => [6, "h"], "Mhg" => [6, "hg"],
-+ "Mhr" => [6, "hr"], "Min" => [6, "in"], "Mkg" => [6, "kg"],
-+ "Mkgf" => [6, "kgf"], "Mkph" => [6, "kph"], "Mlb" => [6, "lb"],
-+ "Mlm" => [6, "lm"], "Mlx" => [6, "lx"], "Mly" => [6, "ly"],
-+ "Mm" => [6, "m"], "Mmb" => [6, "mb"], "Mmercury" => [6, "mercury"],
-+ "Mmgal" => [6, "mgal"], "Mmin" => [6, "min"], "Mmol" => [6, "mol"],
-+ "Mmon" => [6, "mon"], "Mmph" => [6, "mph"], "Mohm" => [6, "ohm"],
-+ "Moz" => [6, "oz"], "Mpc" => [6, "pc"],
-+ "Mpercent" => [6, "percent"], "Mpermil" => [6, "permil"],
-+ "Mpsi" => [6, "psi"], "Mrad" => [6, "rad"], "Ms" => [6, "s"],
-+ "Msr" => [6, "sr"], "Mt" => [6, "t"], "Myr" => [6, "yr"],
-+ "P%" => [15, "%"], "PA" => [15, "A"], "PAu" => [15, "Au"],
-+ "PBq" => [15, "Bq"], "PC" => [15, "C"], "PF" => [15, "F"],
-+ "PG" => [15, "G"], "PGal" => [15, "Gal"], "PGy" => [15, "Gy"],
-+ "PH" => [15, "H"], "PHg" => [15, "Hg"], "PHz" => [15, "Hz"],
-+ "PJ" => [15, "J"], "PK" => [15, "K"], "PL" => [15, "L"],
-+ "PN" => [15, "N"], "PP" => [15, "P"], "PPa" => [15, "Pa"],
-+ "PS" => [15, "S"], "PSt" => [15, "St"], "PSv" => [15, "Sv"],
-+ "PT" => [15, "T"], "PV" => [15, "V"], "PW" => [15, "W"],
-+ "PWb" => [15, "Wb"], "Pa" => [15, "a"], "Pac" => [15, "ac"],
-+ "Pascals" => [0, "Pascal"], "Patm" => [15, "atm"],
-+ "Pbar" => [15, "bar"], "Pcal" => [15, "cal"],
-+ "Pconventional_mercury" => [15, "conventional_mercury"],
-+ "Pd" => [15, "d"], "PdegC" => [15, "degC"], "PdegF" => [15, "degF"],
-+ "Pdeg_C" => [15, "deg_C"], "Pdeg_F" => [15, "deg_F"],
-+ "PdegreeC" => [15, "degreeC"], "PdegreeF" => [15, "degreeF"],
-+ "Pdegree_C" => [15, "degree_C"], "Pdegree_E" => [15, "degree_E"],
-+ "Pdegree_F" => [15, "degree_F"], "Pdegree_N" => [15, "degree_N"],
-+ "Pdegree_R" => [15, "degree_R"], "Pdegree_S" => [15, "degree_S"],
-+ "Pdegree_W" => [15, "degree_W"], "Pdegree_c" => [15, "degree_c"],
-+ "Pdegree_east" => [15, "degree_east"],
-+ "Pdegree_f" => [15, "degree_f"],
-+ "Pdegree_north" => [15, "degree_north"],
-+ "Pdegree_south" => [15, "degree_south"],
-+ "Pdegree_west" => [15, "degree_west"],
-+ "Pdegrees_east" => [15, "degrees_east"],
-+ "Pdegrees_north" => [15, "degrees_north"],
-+ "Pdegrees_south" => [15, "degrees_south"],
-+ "Pdegrees_west" => [15, "degrees_west"], "Pdyn" => [15, "dyn"],
-+ "Perg" => [15, "erg"], "Pforce" => [15, "force"], "Pg" => [15, "g"],
-+ "Pgravity" => [15, "gravity"], "Ph" => [15, "h"],
-+ "Phg" => [15, "hg"], "Phr" => [15, "hr"], "Pin" => [15, "in"],
-+ "Pkg" => [15, "kg"], "Pkgf" => [15, "kgf"], "Pkph" => [15, "kph"],
-+ "Plb" => [15, "lb"], "Plm" => [15, "lm"], "Plx" => [15, "lx"],
-+ "Ply" => [15, "ly"], "Pm" => [15, "m"], "Pmb" => [15, "mb"],
-+ "Pmercury" => [15, "mercury"], "Pmgal" => [15, "mgal"],
-+ "Pmin" => [15, "min"], "Pmol" => [15, "mol"], "Pmon" => [15, "mon"],
-+ "Pmph" => [15, "mph"], "Pohm" => [15, "ohm"], "Poz" => [15, "oz"],
-+ "Ppc" => [15, "pc"], "Ppercent" => [15, "percent"],
-+ "Ppermil" => [15, "permil"], "Ppsi" => [15, "psi"],
-+ "Prad" => [15, "rad"], "Ps" => [15, "s"], "Psr" => [15, "sr"],
-+ "Pt" => [15, "t"], "Pyr" => [15, "yr"], "T%" => [12, "%"],
-+ "TA" => [12, "A"], "TAu" => [12, "Au"], "TBq" => [12, "Bq"],
-+ "TC" => [12, "C"], "TF" => [12, "F"], "TG" => [12, "G"],
-+ "TGal" => [12, "Gal"], "TGy" => [12, "Gy"], "TH" => [12, "H"],
-+ "THg" => [12, "Hg"], "THz" => [12, "Hz"], "TJ" => [12, "J"],
-+ "TK" => [12, "K"], "TL" => [12, "L"], "TN" => [12, "N"],
-+ "TP" => [12, "P"], "TPa" => [12, "Pa"], "TS" => [12, "S"],
-+ "TSt" => [12, "St"], "TSv" => [12, "Sv"], "TT" => [12, "T"],
-+ "TV" => [12, "V"], "TW" => [12, "W"], "TWb" => [12, "Wb"],
-+ "Ta" => [12, "a"], "Tac" => [12, "ac"], "Tatm" => [12, "atm"],
-+ "Tbar" => [12, "bar"], "Tcal" => [12, "cal"],
-+ "Tconventional_mercury" => [12, "conventional_mercury"],
-+ "Td" => [12, "d"], "TdegC" => [12, "degC"], "TdegF" => [12, "degF"],
-+ "Tdeg_C" => [12, "deg_C"], "Tdeg_F" => [12, "deg_F"],
-+ "TdegreeC" => [12, "degreeC"], "TdegreeF" => [12, "degreeF"],
-+ "Tdegree_C" => [12, "degree_C"], "Tdegree_E" => [12, "degree_E"],
-+ "Tdegree_F" => [12, "degree_F"], "Tdegree_N" => [12, "degree_N"],
-+ "Tdegree_R" => [12, "degree_R"], "Tdegree_S" => [12, "degree_S"],
-+ "Tdegree_W" => [12, "degree_W"], "Tdegree_c" => [12, "degree_c"],
-+ "Tdegree_east" => [12, "degree_east"],
-+ "Tdegree_f" => [12, "degree_f"],
-+ "Tdegree_north" => [12, "degree_north"],
-+ "Tdegree_south" => [12, "degree_south"],
-+ "Tdegree_west" => [12, "degree_west"],
-+ "Tdegrees_east" => [12, "degrees_east"],
-+ "Tdegrees_north" => [12, "degrees_north"],
-+ "Tdegrees_south" => [12, "degrees_south"],
-+ "Tdegrees_west" => [12, "degrees_west"], "Tdyn" => [12, "dyn"],
-+ "Terg" => [12, "erg"], "Tforce" => [12, "force"], "Tg" => [12, "g"],
-+ "Tgravity" => [12, "gravity"], "Th" => [12, "h"],
-+ "Thg" => [12, "hg"], "Thr" => [12, "hr"], "Tin" => [12, "in"],
-+ "Tkg" => [12, "kg"], "Tkgf" => [12, "kgf"], "Tkph" => [12, "kph"],
-+ "Tlb" => [12, "lb"], "Tlm" => [12, "lm"], "Tlx" => [12, "lx"],
-+ "Tly" => [12, "ly"], "Tm" => [12, "m"], "Tmb" => [12, "mb"],
-+ "Tmercury" => [12, "mercury"], "Tmgal" => [12, "mgal"],
-+ "Tmin" => [12, "min"], "Tmol" => [12, "mol"], "Tmon" => [12, "mon"],
-+ "Tmph" => [12, "mph"], "Tohm" => [12, "ohm"], "Toz" => [12, "oz"],
-+ "Tpc" => [12, "pc"], "Tpercent" => [12, "percent"],
-+ "Tpermil" => [12, "permil"], "Tpsi" => [12, "psi"],
-+ "Trad" => [12, "rad"], "Ts" => [12, "s"], "Tsr" => [12, "sr"],
-+ "Tt" => [12, "t"], "Tyr" => [12, "yr"], "a%" => [-18, "%"],
-+ "aA" => [-18, "A"], "aAu" => [-18, "Au"], "aBq" => [-18, "Bq"],
-+ "aC" => [-18, "C"], "aF" => [-18, "F"], "aG" => [-18, "G"],
-+ "aGal" => [-18, "Gal"], "aGy" => [-18, "Gy"], "aH" => [-18, "H"],
-+ "aHg" => [-18, "Hg"], "aHz" => [-18, "Hz"], "aJ" => [-18, "J"],
-+ "aK" => [-18, "K"], "aL" => [-18, "L"], "aN" => [-18, "N"],
-+ "aP" => [-18, "P"], "aPa" => [-18, "Pa"], "aS" => [-18, "S"],
-+ "aSt" => [-18, "St"], "aSv" => [-18, "Sv"], "aT" => [-18, "T"],
-+ "aV" => [-18, "V"], "aW" => [-18, "W"], "aWb" => [-18, "Wb"],
-+ "aa" => [-18, "a"], "aac" => [-18, "ac"], "aatm" => [-18, "atm"],
-+ "abar" => [-18, "bar"], "acal" => [-18, "cal"],
-+ "aconventional_mercury" => [-18, "conventional_mercury"],
-+ "acres" => [0, "acre"], "ad" => [-18, "d"],
-+ "adegC" => [-18, "degC"], "adegF" => [-18, "degF"],
-+ "adeg_C" => [-18, "deg_C"], "adeg_F" => [-18, "deg_F"],
-+ "adegreeC" => [-18, "degreeC"], "adegreeF" => [-18, "degreeF"],
-+ "adegree_C" => [-18, "degree_C"], "adegree_E" => [-18, "degree_E"],
-+ "adegree_F" => [-18, "degree_F"], "adegree_N" => [-18, "degree_N"],
-+ "adegree_R" => [-18, "degree_R"], "adegree_S" => [-18, "degree_S"],
-+ "adegree_W" => [-18, "degree_W"], "adegree_c" => [-18, "degree_c"],
-+ "adegree_east" => [-18, "degree_east"],
-+ "adegree_f" => [-18, "degree_f"],
-+ "adegree_north" => [-18, "degree_north"],
-+ "adegree_south" => [-18, "degree_south"],
-+ "adegree_west" => [-18, "degree_west"],
-+ "adegrees_east" => [-18, "degrees_east"],
-+ "adegrees_north" => [-18, "degrees_north"],
-+ "adegrees_south" => [-18, "degrees_south"],
-+ "adegrees_west" => [-18, "degrees_west"], "adyn" => [-18, "dyn"],
-+ "aerg" => [-18, "erg"], "aforce" => [-18, "force"],
-+ "ag" => [-18, "g"], "agravity" => [-18, "gravity"],
-+ "ah" => [-18, "h"], "ahg" => [-18, "hg"], "ahr" => [-18, "hr"],
-+ "ain" => [-18, "in"], "akg" => [-18, "kg"], "akgf" => [-18, "kgf"],
-+ "akph" => [-18, "kph"], "alb" => [-18, "lb"], "alm" => [-18, "lm"],
-+ "alx" => [-18, "lx"], "aly" => [-18, "ly"], "am" => [-18, "m"],
-+ "amb" => [-18, "mb"], "amercury" => [-18, "mercury"],
-+ "amgal" => [-18, "mgal"], "amin" => [-18, "min"],
-+ "amol" => [-18, "mol"], "amon" => [-18, "mon"],
-+ "amperes" => [0, "ampere"], "amph" => [-18, "mph"],
-+ "angstroms" => [0, "angstrom"],
-+ "angulars_degree" => [0, "angular_degree"],
-+ "angulars_minute" => [0, "angular_minute"],
-+ "angulars_second" => [0, "angular_second"], "aohm" => [-18, "ohm"],
-+ "aoz" => [-18, "oz"], "apc" => [-18, "pc"],
-+ "apercent" => [-18, "percent"], "apermil" => [-18, "permil"],
-+ "apsi" => [-18, "psi"], "arad" => [-18, "rad"],
-+ "ares" => [0, "are"], "as" => [-18, "s"], "asr" => [-18, "sr"],
-+ "at" => [-18, "t"], "atmospheres" => [0, "atmosphere"],
-+ "attoCelsius" => [-18, "Celsius"],
-+ "attoFahrenheit" => [-18, "Fahrenheit"],
-+ "attoJulian_year" => [-18, "Julian_year"],
-+ "attoPascal" => [-18, "Pascal"], "attoacre" => [-18, "acre"],
-+ "attoampere" => [-18, "ampere"], "attoangstrom" => [-18, "angstrom"],
-+ "attoangular_degree" => [-18, "angular_degree"],
-+ "attoangular_minute" => [-18, "angular_minute"],
-+ "attoangular_second" => [-18, "angular_second"],
-+ "attoare" => [-18, "are"], "attoatmosphere" => [-18, "atmosphere"],
-+ "attocalorie" => [-18, "calorie"], "attocelsius" => [-18, "celsius"],
-+ "attocentigrade" => [-18, "centigrade"],
-+ "attocentury" => [-18, "century"], "attochain" => [-18, "chain"],
-+ "attocommon_year" => [-18, "common_year"],
-+ "attocoulomb" => [-18, "coulomb"], "attoday" => [-18, "day"],
-+ "attodegK" => [-18, "degK"], "attodeg_K" => [-18, "deg_K"],
-+ "attodegree" => [-18, "degree"], "attodegreeK" => [-18, "degreeK"],
-+ "attodyne" => [-18, "dyne"], "attoerg" => [-18, "erg"],
-+ "attofahrenheit" => [-18, "fahrenheit"],
-+ "attofarad" => [-18, "farad"], "attofermi" => [-18, "fermi"],
-+ "attogal" => [-18, "gal"], "attogauss" => [-18, "gauss"],
-+ "attogram" => [-18, "gram"], "attohectare" => [-18, "hectare"],
-+ "attohertz" => [-18, "hertz"], "attohour" => [-18, "hour"],
-+ "attoinch" => [-18, "inch"], "attojoule" => [-18, "joule"],
-+ "attokelvin" => [-18, "kelvin"], "attokilogram" => [-18, "kilogram"],
-+ "attoknot" => [-18, "knot"], "attolitre" => [-18, "litre"],
-+ "attometer" => [-18, "meter"], "attometre" => [-18, "metre"],
-+ "attomicron" => [-18, "micron"], "attomile" => [-18, "mile"],
-+ "attomillibar" => [-18, "millibar"], "attominute" => [-18, "minute"],
-+ "attominute_angle" => [-18, "minute_angle"],
-+ "attomole" => [-18, "mole"], "attomonth" => [-18, "month"],
-+ "attonewton" => [-18, "newton"], "attoounce" => [-18, "ounce"],
-+ "attoparsec" => [-18, "parsec"], "attopascal" => [-18, "pascal"],
-+ "attopentad" => [-18, "pentad"], "attopoise" => [-18, "poise"],
-+ "attopound" => [-18, "pound"], "attoradian" => [-18, "radian"],
-+ "attosecond" => [-18, "second"],
-+ "attosecond_angle" => [-18, "second_angle"],
-+ "attosteradian" => [-18, "steradian"],
-+ "attostokes" => [-18, "stokes"], "attotesla" => [-18, "tesla"],
-+ "attoton" => [-18, "ton"], "attotonne" => [-18, "tonne"],
-+ "attotorr" => [-18, "torr"], "attovolt" => [-18, "volt"],
-+ "attowatt" => [-18, "watt"], "attoweber" => [-18, "weber"],
-+ "attoyard" => [-18, "yard"], "attoyd" => [-18, "yd"],
-+ "attoyear" => [-18, "year"], "ayr" => [-18, "yr"],
-+ "c%" => [-2, "%"], "cA" => [-2, "A"], "cAu" => [-2, "Au"],
-+ "cBq" => [-2, "Bq"], "cC" => [-2, "C"], "cF" => [-2, "F"],
-+ "cG" => [-2, "G"], "cGal" => [-2, "Gal"], "cGy" => [-2, "Gy"],
-+ "cH" => [-2, "H"], "cHg" => [-2, "Hg"], "cHz" => [-2, "Hz"],
-+ "cJ" => [-2, "J"], "cK" => [-2, "K"], "cL" => [-2, "L"],
-+ "cN" => [-2, "N"], "cP" => [-2, "P"], "cPa" => [-2, "Pa"],
-+ "cS" => [-2, "S"], "cSt" => [-2, "St"], "cSv" => [-2, "Sv"],
-+ "cT" => [-2, "T"], "cV" => [-2, "V"], "cW" => [-2, "W"],
-+ "cWb" => [-2, "Wb"], "ca" => [-2, "a"], "cac" => [-2, "ac"],
-+ "calories" => [0, "calorie"], "catm" => [-2, "atm"],
-+ "cbar" => [-2, "bar"], "ccal" => [-2, "cal"],
-+ "cconventional_mercury" => [-2, "conventional_mercury"],
-+ "cd" => [-2, "d"], "cdegC" => [-2, "degC"], "cdegF" => [-2, "degF"],
-+ "cdeg_C" => [-2, "deg_C"], "cdeg_F" => [-2, "deg_F"],
-+ "cdegreeC" => [-2, "degreeC"], "cdegreeF" => [-2, "degreeF"],
-+ "cdegree_C" => [-2, "degree_C"], "cdegree_E" => [-2, "degree_E"],
-+ "cdegree_F" => [-2, "degree_F"], "cdegree_N" => [-2, "degree_N"],
-+ "cdegree_R" => [-2, "degree_R"], "cdegree_S" => [-2, "degree_S"],
-+ "cdegree_W" => [-2, "degree_W"], "cdegree_c" => [-2, "degree_c"],
-+ "cdegree_east" => [-2, "degree_east"],
-+ "cdegree_f" => [-2, "degree_f"],
-+ "cdegree_north" => [-2, "degree_north"],
-+ "cdegree_south" => [-2, "degree_south"],
-+ "cdegree_west" => [-2, "degree_west"],
-+ "cdegrees_east" => [-2, "degrees_east"],
-+ "cdegrees_north" => [-2, "degrees_north"],
-+ "cdegrees_south" => [-2, "degrees_south"],
-+ "cdegrees_west" => [-2, "degrees_west"], "cdyn" => [-2, "dyn"],
-+ "celsiuses" => [0, "celsius"], "centiCelsius" => [-2, "Celsius"],
-+ "centiFahrenheit" => [-2, "Fahrenheit"],
-+ "centiJulian_year" => [-2, "Julian_year"],
-+ "centiPascal" => [-2, "Pascal"], "centiacre" => [-2, "acre"],
-+ "centiampere" => [-2, "ampere"], "centiangstrom" => [-2, "angstrom"],
-+ "centiangular_degree" => [-2, "angular_degree"],
-+ "centiangular_minute" => [-2, "angular_minute"],
-+ "centiangular_second" => [-2, "angular_second"],
-+ "centiare" => [-2, "are"], "centiatmosphere" => [-2, "atmosphere"],
-+ "centicalorie" => [-2, "calorie"], "centicelsius" => [-2, "celsius"],
-+ "centicentigrade" => [-2, "centigrade"],
-+ "centicentury" => [-2, "century"], "centichain" => [-2, "chain"],
-+ "centicommon_year" => [-2, "common_year"],
-+ "centicoulomb" => [-2, "coulomb"], "centiday" => [-2, "day"],
-+ "centidegK" => [-2, "degK"], "centideg_K" => [-2, "deg_K"],
-+ "centidegree" => [-2, "degree"], "centidegreeK" => [-2, "degreeK"],
-+ "centidyne" => [-2, "dyne"], "centierg" => [-2, "erg"],
-+ "centifahrenheit" => [-2, "fahrenheit"],
-+ "centifarad" => [-2, "farad"], "centifermi" => [-2, "fermi"],
-+ "centigal" => [-2, "gal"], "centigauss" => [-2, "gauss"],
-+ "centigrades" => [0, "centigrade"], "centigram" => [-2, "gram"],
-+ "centihectare" => [-2, "hectare"], "centihertz" => [-2, "hertz"],
-+ "centihour" => [-2, "hour"], "centiinch" => [-2, "inch"],
-+ "centijoule" => [-2, "joule"], "centikelvin" => [-2, "kelvin"],
-+ "centikilogram" => [-2, "kilogram"], "centiknot" => [-2, "knot"],
-+ "centilitre" => [-2, "litre"], "centimeter" => [-2, "meter"],
-+ "centimetre" => [-2, "metre"], "centimicron" => [-2, "micron"],
-+ "centimile" => [-2, "mile"], "centimillibar" => [-2, "millibar"],
-+ "centiminute" => [-2, "minute"],
-+ "centiminute_angle" => [-2, "minute_angle"],
-+ "centimole" => [-2, "mole"], "centimonth" => [-2, "month"],
-+ "centinewton" => [-2, "newton"], "centiounce" => [-2, "ounce"],
-+ "centiparsec" => [-2, "parsec"], "centipascal" => [-2, "pascal"],
-+ "centipentad" => [-2, "pentad"], "centipoise" => [-2, "poise"],
-+ "centipound" => [-2, "pound"], "centiradian" => [-2, "radian"],
-+ "centisecond" => [-2, "second"],
-+ "centisecond_angle" => [-2, "second_angle"],
-+ "centisteradian" => [-2, "steradian"],
-+ "centistokes" => [-2, "stokes"], "centitesla" => [-2, "tesla"],
-+ "centiton" => [-2, "ton"], "centitonne" => [-2, "tonne"],
-+ "centitorr" => [-2, "torr"], "centivolt" => [-2, "volt"],
-+ "centiwatt" => [-2, "watt"], "centiweber" => [-2, "weber"],
-+ "centiyard" => [-2, "yard"], "centiyd" => [-2, "yd"],
-+ "centiyear" => [-2, "year"], "centuries" => [0, "century"],
-+ "cerg" => [-2, "erg"], "cforce" => [-2, "force"], "cg" => [-2, "g"],
-+ "cgravity" => [-2, "gravity"], "ch" => [-2, "h"],
-+ "chains" => [0, "chain"], "chg" => [-2, "hg"], "chr" => [-2, "hr"],
-+ "cin" => [-2, "in"], "ckg" => [-2, "kg"], "ckgf" => [-2, "kgf"],
-+ "ckph" => [-2, "kph"], "clb" => [-2, "lb"], "clm" => [-2, "lm"],
-+ "clx" => [-2, "lx"], "cly" => [-2, "ly"], "cm" => [-2, "m"],
-+ "cmb" => [-2, "mb"], "cmercury" => [-2, "mercury"],
-+ "cmgal" => [-2, "mgal"], "cmin" => [-2, "min"],
-+ "cmol" => [-2, "mol"], "cmon" => [-2, "mon"], "cmph" => [-2, "mph"],
-+ "cohm" => [-2, "ohm"], "commons_year" => [0, "common_year"],
-+ "coulombs" => [0, "coulomb"], "coz" => [-2, "oz"],
-+ "cpc" => [-2, "pc"], "cpercent" => [-2, "percent"],
-+ "cpermil" => [-2, "permil"], "cpsi" => [-2, "psi"],
-+ "crad" => [-2, "rad"], "cs" => [-2, "s"], "csr" => [-2, "sr"],
-+ "ct" => [-2, "t"], "cyr" => [-2, "yr"], "d%" => [-1, "%"],
-+ "dA" => [-1, "A"], "dAu" => [-1, "Au"], "dBq" => [-1, "Bq"],
-+ "dC" => [-1, "C"], "dF" => [-1, "F"], "dG" => [-1, "G"],
-+ "dGal" => [-1, "Gal"], "dGy" => [-1, "Gy"], "dH" => [-1, "H"],
-+ "dHg" => [-1, "Hg"], "dHz" => [-1, "Hz"], "dJ" => [-1, "J"],
-+ "dK" => [-1, "K"], "dL" => [-1, "L"], "dN" => [-1, "N"],
-+ "dP" => [-1, "P"], "dPa" => [-1, "Pa"], "dS" => [-1, "S"],
-+ "dSt" => [-1, "St"], "dSv" => [-1, "Sv"], "dT" => [-1, "T"],
-+ "dV" => [-1, "V"], "dW" => [-1, "W"], "dWb" => [-1, "Wb"],
-+ "da" => [-1, "a"], "da%" => [1, "%"], "daA" => [1, "A"],
-+ "daAu" => [1, "Au"], "daBq" => [1, "Bq"], "daC" => [1, "C"],
-+ "daF" => [1, "F"], "daG" => [1, "G"], "daGal" => [1, "Gal"],
-+ "daGy" => [1, "Gy"], "daH" => [1, "H"], "daHg" => [1, "Hg"],
-+ "daHz" => [1, "Hz"], "daJ" => [1, "J"], "daK" => [1, "K"],
-+ "daL" => [1, "L"], "daN" => [1, "N"], "daP" => [1, "P"],
-+ "daPa" => [1, "Pa"], "daS" => [1, "S"], "daSt" => [1, "St"],
-+ "daSv" => [1, "Sv"], "daT" => [1, "T"], "daV" => [1, "V"],
-+ "daW" => [1, "W"], "daWb" => [1, "Wb"], "daa" => [1, "a"],
-+ "daac" => [1, "ac"], "daatm" => [1, "atm"], "dabar" => [1, "bar"],
-+ "dac" => [-1, "ac"], "dacal" => [1, "cal"],
-+ "daconventional_mercury" => [1, "conventional_mercury"],
-+ "dad" => [1, "d"], "dadegC" => [1, "degC"], "dadegF" => [1, "degF"],
-+ "dadeg_C" => [1, "deg_C"], "dadeg_F" => [1, "deg_F"],
-+ "dadegreeC" => [1, "degreeC"], "dadegreeF" => [1, "degreeF"],
-+ "dadegree_C" => [1, "degree_C"], "dadegree_E" => [1, "degree_E"],
-+ "dadegree_F" => [1, "degree_F"], "dadegree_N" => [1, "degree_N"],
-+ "dadegree_R" => [1, "degree_R"], "dadegree_S" => [1, "degree_S"],
-+ "dadegree_W" => [1, "degree_W"], "dadegree_c" => [1, "degree_c"],
-+ "dadegree_east" => [1, "degree_east"],
-+ "dadegree_f" => [1, "degree_f"],
-+ "dadegree_north" => [1, "degree_north"],
-+ "dadegree_south" => [1, "degree_south"],
-+ "dadegree_west" => [1, "degree_west"],
-+ "dadegrees_east" => [1, "degrees_east"],
-+ "dadegrees_north" => [1, "degrees_north"],
-+ "dadegrees_south" => [1, "degrees_south"],
-+ "dadegrees_west" => [1, "degrees_west"], "dadyn" => [1, "dyn"],
-+ "daerg" => [1, "erg"], "daforce" => [1, "force"], "dag" => [1, "g"],
-+ "dagravity" => [1, "gravity"], "dah" => [1, "h"],
-+ "dahg" => [1, "hg"], "dahr" => [1, "hr"], "dain" => [1, "in"],
-+ "dakg" => [1, "kg"], "dakgf" => [1, "kgf"], "dakph" => [1, "kph"],
-+ "dalb" => [1, "lb"], "dalm" => [1, "lm"], "dalx" => [1, "lx"],
-+ "daly" => [1, "ly"], "dam" => [1, "m"], "damb" => [1, "mb"],
-+ "damercury" => [1, "mercury"], "damgal" => [1, "mgal"],
-+ "damin" => [1, "min"], "damol" => [1, "mol"], "damon" => [1, "mon"],
-+ "damph" => [1, "mph"], "daohm" => [1, "ohm"], "daoz" => [1, "oz"],
-+ "dapc" => [1, "pc"], "dapercent" => [1, "percent"],
-+ "dapermil" => [1, "permil"], "dapsi" => [1, "psi"],
-+ "darad" => [1, "rad"], "das" => [1, "s"], "dasr" => [1, "sr"],
-+ "dat" => [1, "t"], "datm" => [-1, "atm"], "dayr" => [1, "yr"],
-+ "days" => [0, "day"], "dbar" => [-1, "bar"], "dcal" => [-1, "cal"],
-+ "dconventional_mercury" => [-1, "conventional_mercury"],
-+ "dd" => [-1, "d"], "ddegC" => [-1, "degC"], "ddegF" => [-1, "degF"],
-+ "ddeg_C" => [-1, "deg_C"], "ddeg_F" => [-1, "deg_F"],
-+ "ddegreeC" => [-1, "degreeC"], "ddegreeF" => [-1, "degreeF"],
-+ "ddegree_C" => [-1, "degree_C"], "ddegree_E" => [-1, "degree_E"],
-+ "ddegree_F" => [-1, "degree_F"], "ddegree_N" => [-1, "degree_N"],
-+ "ddegree_R" => [-1, "degree_R"], "ddegree_S" => [-1, "degree_S"],
-+ "ddegree_W" => [-1, "degree_W"], "ddegree_c" => [-1, "degree_c"],
-+ "ddegree_east" => [-1, "degree_east"],
-+ "ddegree_f" => [-1, "degree_f"],
-+ "ddegree_north" => [-1, "degree_north"],
-+ "ddegree_south" => [-1, "degree_south"],
-+ "ddegree_west" => [-1, "degree_west"],
-+ "ddegrees_east" => [-1, "degrees_east"],
-+ "ddegrees_north" => [-1, "degrees_north"],
-+ "ddegrees_south" => [-1, "degrees_south"],
-+ "ddegrees_west" => [-1, "degrees_west"], "ddyn" => [-1, "dyn"],
-+ "decaCelsius" => [1, "Celsius"],
-+ "decaFahrenheit" => [1, "Fahrenheit"],
-+ "decaJulian_year" => [1, "Julian_year"],
-+ "decaPascal" => [1, "Pascal"], "decaacre" => [1, "acre"],
-+ "decaampere" => [1, "ampere"], "decaangstrom" => [1, "angstrom"],
-+ "decaangular_degree" => [1, "angular_degree"],
-+ "decaangular_minute" => [1, "angular_minute"],
-+ "decaangular_second" => [1, "angular_second"],
-+ "decaare" => [1, "are"], "decaatmosphere" => [1, "atmosphere"],
-+ "decacalorie" => [1, "calorie"], "decacelsius" => [1, "celsius"],
-+ "decacentigrade" => [1, "centigrade"],
-+ "decacentury" => [1, "century"], "decachain" => [1, "chain"],
-+ "decacommon_year" => [1, "common_year"],
-+ "decacoulomb" => [1, "coulomb"], "decaday" => [1, "day"],
-+ "decadegK" => [1, "degK"], "decadeg_K" => [1, "deg_K"],
-+ "decadegree" => [1, "degree"], "decadegreeK" => [1, "degreeK"],
-+ "decadyne" => [1, "dyne"], "decaerg" => [1, "erg"],
-+ "decafahrenheit" => [1, "fahrenheit"], "decafarad" => [1, "farad"],
-+ "decafermi" => [1, "fermi"], "decagal" => [1, "gal"],
-+ "decagauss" => [1, "gauss"], "decagram" => [1, "gram"],
-+ "decahectare" => [1, "hectare"], "decahertz" => [1, "hertz"],
-+ "decahour" => [1, "hour"], "decainch" => [1, "inch"],
-+ "decajoule" => [1, "joule"], "decakelvin" => [1, "kelvin"],
-+ "decakilogram" => [1, "kilogram"], "decaknot" => [1, "knot"],
-+ "decalitre" => [1, "litre"], "decameter" => [1, "meter"],
-+ "decametre" => [1, "metre"], "decamicron" => [1, "micron"],
-+ "decamile" => [1, "mile"], "decamillibar" => [1, "millibar"],
-+ "decaminute" => [1, "minute"],
-+ "decaminute_angle" => [1, "minute_angle"], "decamole" => [1, "mole"],
-+ "decamonth" => [1, "month"], "decanewton" => [1, "newton"],
-+ "decaounce" => [1, "ounce"], "decaparsec" => [1, "parsec"],
-+ "decapascal" => [1, "pascal"], "decapentad" => [1, "pentad"],
-+ "decapoise" => [1, "poise"], "decapound" => [1, "pound"],
-+ "decaradian" => [1, "radian"], "decasecond" => [1, "second"],
-+ "decasecond_angle" => [1, "second_angle"],
-+ "decasteradian" => [1, "steradian"], "decastokes" => [1, "stokes"],
-+ "decatesla" => [1, "tesla"], "decaton" => [1, "ton"],
-+ "decatonne" => [1, "tonne"], "decatorr" => [1, "torr"],
-+ "decavolt" => [1, "volt"], "decawatt" => [1, "watt"],
-+ "decaweber" => [1, "weber"], "decayard" => [1, "yard"],
-+ "decayd" => [1, "yd"], "decayear" => [1, "year"],
-+ "deciCelsius" => [-1, "Celsius"],
-+ "deciFahrenheit" => [-1, "Fahrenheit"],
-+ "deciJulian_year" => [-1, "Julian_year"],
-+ "deciPascal" => [-1, "Pascal"], "deciacre" => [-1, "acre"],
-+ "deciampere" => [-1, "ampere"], "deciangstrom" => [-1, "angstrom"],
-+ "deciangular_degree" => [-1, "angular_degree"],
-+ "deciangular_minute" => [-1, "angular_minute"],
-+ "deciangular_second" => [-1, "angular_second"],
-+ "deciare" => [-1, "are"], "deciatmosphere" => [-1, "atmosphere"],
-+ "decicalorie" => [-1, "calorie"], "decicelsius" => [-1, "celsius"],
-+ "decicentigrade" => [-1, "centigrade"],
-+ "decicentury" => [-1, "century"], "decichain" => [-1, "chain"],
-+ "decicommon_year" => [-1, "common_year"],
-+ "decicoulomb" => [-1, "coulomb"], "deciday" => [-1, "day"],
-+ "decidegK" => [-1, "degK"], "decideg_K" => [-1, "deg_K"],
-+ "decidegree" => [-1, "degree"], "decidegreeK" => [-1, "degreeK"],
-+ "decidyne" => [-1, "dyne"], "decierg" => [-1, "erg"],
-+ "decifahrenheit" => [-1, "fahrenheit"], "decifarad" => [-1, "farad"],
-+ "decifermi" => [-1, "fermi"], "decigal" => [-1, "gal"],
-+ "decigauss" => [-1, "gauss"], "decigram" => [-1, "gram"],
-+ "decihectare" => [-1, "hectare"], "decihertz" => [-1, "hertz"],
-+ "decihour" => [-1, "hour"], "deciinch" => [-1, "inch"],
-+ "decijoule" => [-1, "joule"], "decikelvin" => [-1, "kelvin"],
-+ "decikilogram" => [-1, "kilogram"], "deciknot" => [-1, "knot"],
-+ "decilitre" => [-1, "litre"], "decimeter" => [-1, "meter"],
-+ "decimetre" => [-1, "metre"], "decimicron" => [-1, "micron"],
-+ "decimile" => [-1, "mile"], "decimillibar" => [-1, "millibar"],
-+ "deciminute" => [-1, "minute"],
-+ "deciminute_angle" => [-1, "minute_angle"],
-+ "decimole" => [-1, "mole"], "decimonth" => [-1, "month"],
-+ "decinewton" => [-1, "newton"], "deciounce" => [-1, "ounce"],
-+ "deciparsec" => [-1, "parsec"], "decipascal" => [-1, "pascal"],
-+ "decipentad" => [-1, "pentad"], "decipoise" => [-1, "poise"],
-+ "decipound" => [-1, "pound"], "deciradian" => [-1, "radian"],
-+ "decisecond" => [-1, "second"],
-+ "decisecond_angle" => [-1, "second_angle"],
-+ "decisteradian" => [-1, "steradian"], "decistokes" => [-1, "stokes"],
-+ "decitesla" => [-1, "tesla"], "deciton" => [-1, "ton"],
-+ "decitonne" => [-1, "tonne"], "decitorr" => [-1, "torr"],
-+ "decivolt" => [-1, "volt"], "deciwatt" => [-1, "watt"],
-+ "deciweber" => [-1, "weber"], "deciyard" => [-1, "yard"],
-+ "deciyd" => [-1, "yd"], "deciyear" => [-1, "year"],
-+ "degKs" => [0, "degK"], "degreeKs" => [0, "degreeK"],
-+ "degrees" => [0, "degree"], "degs_K" => [0, "deg_K"],
-+ "derg" => [-1, "erg"], "dforce" => [-1, "force"], "dg" => [-1, "g"],
-+ "dgravity" => [-1, "gravity"], "dh" => [-1, "h"],
-+ "dhg" => [-1, "hg"], "dhr" => [-1, "hr"], "din" => [-1, "in"],
-+ "dkg" => [-1, "kg"], "dkgf" => [-1, "kgf"], "dkph" => [-1, "kph"],
-+ "dlb" => [-1, "lb"], "dlm" => [-1, "lm"], "dlx" => [-1, "lx"],
-+ "dly" => [-1, "ly"], "dm" => [-1, "m"], "dmb" => [-1, "mb"],
-+ "dmercury" => [-1, "mercury"], "dmgal" => [-1, "mgal"],
-+ "dmin" => [-1, "min"], "dmol" => [-1, "mol"], "dmon" => [-1, "mon"],
-+ "dmph" => [-1, "mph"], "dohm" => [-1, "ohm"], "doz" => [-1, "oz"],
-+ "dpc" => [-1, "pc"], "dpercent" => [-1, "percent"],
-+ "dpermil" => [-1, "permil"], "dpsi" => [-1, "psi"],
-+ "drad" => [-1, "rad"], "ds" => [-1, "s"], "dsr" => [-1, "sr"],
-+ "dt" => [-1, "t"], "dynes" => [0, "dyne"], "dyr" => [-1, "yr"],
-+ "ergs" => [0, "erg"], "exaCelsius" => [18, "Celsius"],
-+ "exaFahrenheit" => [18, "Fahrenheit"],
-+ "exaJulian_year" => [18, "Julian_year"],
-+ "exaPascal" => [18, "Pascal"], "exaacre" => [18, "acre"],
-+ "exaampere" => [18, "ampere"], "exaangstrom" => [18, "angstrom"],
-+ "exaangular_degree" => [18, "angular_degree"],
-+ "exaangular_minute" => [18, "angular_minute"],
-+ "exaangular_second" => [18, "angular_second"],
-+ "exaare" => [18, "are"], "exaatmosphere" => [18, "atmosphere"],
-+ "exacalorie" => [18, "calorie"], "exacelsius" => [18, "celsius"],
-+ "exacentigrade" => [18, "centigrade"],
-+ "exacentury" => [18, "century"], "exachain" => [18, "chain"],
-+ "exacommon_year" => [18, "common_year"],
-+ "exacoulomb" => [18, "coulomb"], "exaday" => [18, "day"],
-+ "exadegK" => [18, "degK"], "exadeg_K" => [18, "deg_K"],
-+ "exadegree" => [18, "degree"], "exadegreeK" => [18, "degreeK"],
-+ "exadyne" => [18, "dyne"], "exaerg" => [18, "erg"],
-+ "exafahrenheit" => [18, "fahrenheit"], "exafarad" => [18, "farad"],
-+ "exafermi" => [18, "fermi"], "exagal" => [18, "gal"],
-+ "exagauss" => [18, "gauss"], "exagram" => [18, "gram"],
-+ "exahectare" => [18, "hectare"], "exahertz" => [18, "hertz"],
-+ "exahour" => [18, "hour"], "exainch" => [18, "inch"],
-+ "exajoule" => [18, "joule"], "exakelvin" => [18, "kelvin"],
-+ "exakilogram" => [18, "kilogram"], "exaknot" => [18, "knot"],
-+ "exalitre" => [18, "litre"], "exameter" => [18, "meter"],
-+ "exametre" => [18, "metre"], "examicron" => [18, "micron"],
-+ "examile" => [18, "mile"], "examillibar" => [18, "millibar"],
-+ "examinute" => [18, "minute"],
-+ "examinute_angle" => [18, "minute_angle"], "examole" => [18, "mole"],
-+ "examonth" => [18, "month"], "exanewton" => [18, "newton"],
-+ "exaounce" => [18, "ounce"], "exaparsec" => [18, "parsec"],
-+ "exapascal" => [18, "pascal"], "exapentad" => [18, "pentad"],
-+ "exapoise" => [18, "poise"], "exapound" => [18, "pound"],
-+ "exaradian" => [18, "radian"], "exasecond" => [18, "second"],
-+ "exasecond_angle" => [18, "second_angle"],
-+ "exasteradian" => [18, "steradian"], "exastokes" => [18, "stokes"],
-+ "exatesla" => [18, "tesla"], "exaton" => [18, "ton"],
-+ "exatonne" => [18, "tonne"], "exatorr" => [18, "torr"],
-+ "exavolt" => [18, "volt"], "exawatt" => [18, "watt"],
-+ "exaweber" => [18, "weber"], "exayard" => [18, "yard"],
-+ "exayd" => [18, "yd"], "exayear" => [18, "year"],
-+ "f%" => [-15, "%"], "fA" => [-15, "A"], "fAu" => [-15, "Au"],
-+ "fBq" => [-15, "Bq"], "fC" => [-15, "C"], "fF" => [-15, "F"],
-+ "fG" => [-15, "G"], "fGal" => [-15, "Gal"], "fGy" => [-15, "Gy"],
-+ "fH" => [-15, "H"], "fHg" => [-15, "Hg"], "fHz" => [-15, "Hz"],
-+ "fJ" => [-15, "J"], "fK" => [-15, "K"], "fL" => [-15, "L"],
-+ "fN" => [-15, "N"], "fP" => [-15, "P"], "fPa" => [-15, "Pa"],
-+ "fS" => [-15, "S"], "fSt" => [-15, "St"], "fSv" => [-15, "Sv"],
-+ "fT" => [-15, "T"], "fV" => [-15, "V"], "fW" => [-15, "W"],
-+ "fWb" => [-15, "Wb"], "fa" => [-15, "a"], "fac" => [-15, "ac"],
-+ "fahrenheits" => [0, "fahrenheit"], "farads" => [0, "farad"],
-+ "fatm" => [-15, "atm"], "fbar" => [-15, "bar"],
-+ "fcal" => [-15, "cal"],
-+ "fconventional_mercury" => [-15, "conventional_mercury"],
-+ "fd" => [-15, "d"], "fdegC" => [-15, "degC"],
-+ "fdegF" => [-15, "degF"], "fdeg_C" => [-15, "deg_C"],
-+ "fdeg_F" => [-15, "deg_F"], "fdegreeC" => [-15, "degreeC"],
-+ "fdegreeF" => [-15, "degreeF"], "fdegree_C" => [-15, "degree_C"],
-+ "fdegree_E" => [-15, "degree_E"], "fdegree_F" => [-15, "degree_F"],
-+ "fdegree_N" => [-15, "degree_N"], "fdegree_R" => [-15, "degree_R"],
-+ "fdegree_S" => [-15, "degree_S"], "fdegree_W" => [-15, "degree_W"],
-+ "fdegree_c" => [-15, "degree_c"],
-+ "fdegree_east" => [-15, "degree_east"],
-+ "fdegree_f" => [-15, "degree_f"],
-+ "fdegree_north" => [-15, "degree_north"],
-+ "fdegree_south" => [-15, "degree_south"],
-+ "fdegree_west" => [-15, "degree_west"],
-+ "fdegrees_east" => [-15, "degrees_east"],
-+ "fdegrees_north" => [-15, "degrees_north"],
-+ "fdegrees_south" => [-15, "degrees_south"],
-+ "fdegrees_west" => [-15, "degrees_west"], "fdyn" => [-15, "dyn"],
-+ "femtoCelsius" => [-15, "Celsius"],
-+ "femtoFahrenheit" => [-15, "Fahrenheit"],
-+ "femtoJulian_year" => [-15, "Julian_year"],
-+ "femtoPascal" => [-15, "Pascal"], "femtoacre" => [-15, "acre"],
-+ "femtoampere" => [-15, "ampere"],
-+ "femtoangstrom" => [-15, "angstrom"],
-+ "femtoangular_degree" => [-15, "angular_degree"],
-+ "femtoangular_minute" => [-15, "angular_minute"],
-+ "femtoangular_second" => [-15, "angular_second"],
-+ "femtoare" => [-15, "are"], "femtoatmosphere" => [-15, "atmosphere"],
-+ "femtocalorie" => [-15, "calorie"],
-+ "femtocelsius" => [-15, "celsius"],
-+ "femtocentigrade" => [-15, "centigrade"],
-+ "femtocentury" => [-15, "century"], "femtochain" => [-15, "chain"],
-+ "femtocommon_year" => [-15, "common_year"],
-+ "femtocoulomb" => [-15, "coulomb"], "femtoday" => [-15, "day"],
-+ "femtodegK" => [-15, "degK"], "femtodeg_K" => [-15, "deg_K"],
-+ "femtodegree" => [-15, "degree"], "femtodegreeK" => [-15, "degreeK"],
-+ "femtodyne" => [-15, "dyne"], "femtoerg" => [-15, "erg"],
-+ "femtofahrenheit" => [-15, "fahrenheit"],
-+ "femtofarad" => [-15, "farad"], "femtofermi" => [-15, "fermi"],
-+ "femtogal" => [-15, "gal"], "femtogauss" => [-15, "gauss"],
-+ "femtogram" => [-15, "gram"], "femtohectare" => [-15, "hectare"],
-+ "femtohertz" => [-15, "hertz"], "femtohour" => [-15, "hour"],
-+ "femtoinch" => [-15, "inch"], "femtojoule" => [-15, "joule"],
-+ "femtokelvin" => [-15, "kelvin"],
-+ "femtokilogram" => [-15, "kilogram"], "femtoknot" => [-15, "knot"],
-+ "femtolitre" => [-15, "litre"], "femtometer" => [-15, "meter"],
-+ "femtometre" => [-15, "metre"], "femtomicron" => [-15, "micron"],
-+ "femtomile" => [-15, "mile"], "femtomillibar" => [-15, "millibar"],
-+ "femtominute" => [-15, "minute"],
-+ "femtominute_angle" => [-15, "minute_angle"],
-+ "femtomole" => [-15, "mole"], "femtomonth" => [-15, "month"],
-+ "femtonewton" => [-15, "newton"], "femtoounce" => [-15, "ounce"],
-+ "femtoparsec" => [-15, "parsec"], "femtopascal" => [-15, "pascal"],
-+ "femtopentad" => [-15, "pentad"], "femtopoise" => [-15, "poise"],
-+ "femtopound" => [-15, "pound"], "femtoradian" => [-15, "radian"],
-+ "femtosecond" => [-15, "second"],
-+ "femtosecond_angle" => [-15, "second_angle"],
-+ "femtosteradian" => [-15, "steradian"],
-+ "femtostokes" => [-15, "stokes"], "femtotesla" => [-15, "tesla"],
-+ "femtoton" => [-15, "ton"], "femtotonne" => [-15, "tonne"],
-+ "femtotorr" => [-15, "torr"], "femtovolt" => [-15, "volt"],
-+ "femtowatt" => [-15, "watt"], "femtoweber" => [-15, "weber"],
-+ "femtoyard" => [-15, "yard"], "femtoyd" => [-15, "yd"],
-+ "femtoyear" => [-15, "year"], "ferg" => [-15, "erg"],
-+ "fermis" => [0, "fermi"], "fforce" => [-15, "force"],
-+ "fg" => [-15, "g"], "fgravity" => [-15, "gravity"],
-+ "fh" => [-15, "h"], "fhg" => [-15, "hg"], "fhr" => [-15, "hr"],
-+ "fin" => [-15, "in"], "fkg" => [-15, "kg"], "fkgf" => [-15, "kgf"],
-+ "fkph" => [-15, "kph"], "flb" => [-15, "lb"], "flm" => [-15, "lm"],
-+ "flx" => [-15, "lx"], "fly" => [-15, "ly"], "fm" => [-15, "m"],
-+ "fmb" => [-15, "mb"], "fmercury" => [-15, "mercury"],
-+ "fmgal" => [-15, "mgal"], "fmin" => [-15, "min"],
-+ "fmol" => [-15, "mol"], "fmon" => [-15, "mon"],
-+ "fmph" => [-15, "mph"], "fohm" => [-15, "ohm"],
-+ "foz" => [-15, "oz"], "fpc" => [-15, "pc"],
-+ "fpercent" => [-15, "percent"], "fpermil" => [-15, "permil"],
-+ "fpsi" => [-15, "psi"], "frad" => [-15, "rad"], "fs" => [-15, "s"],
-+ "fsr" => [-15, "sr"], "ft" => [-15, "t"], "fyr" => [-15, "yr"],
-+ "gals" => [0, "gal"], "gausses" => [0, "gauss"],
-+ "gigaCelsius" => [9, "Celsius"],
-+ "gigaFahrenheit" => [9, "Fahrenheit"],
-+ "gigaJulian_year" => [9, "Julian_year"],
-+ "gigaPascal" => [9, "Pascal"], "gigaacre" => [9, "acre"],
-+ "gigaampere" => [9, "ampere"], "gigaangstrom" => [9, "angstrom"],
-+ "gigaangular_degree" => [9, "angular_degree"],
-+ "gigaangular_minute" => [9, "angular_minute"],
-+ "gigaangular_second" => [9, "angular_second"],
-+ "gigaare" => [9, "are"], "gigaatmosphere" => [9, "atmosphere"],
-+ "gigacalorie" => [9, "calorie"], "gigacelsius" => [9, "celsius"],
-+ "gigacentigrade" => [9, "centigrade"],
-+ "gigacentury" => [9, "century"], "gigachain" => [9, "chain"],
-+ "gigacommon_year" => [9, "common_year"],
-+ "gigacoulomb" => [9, "coulomb"], "gigaday" => [9, "day"],
-+ "gigadegK" => [9, "degK"], "gigadeg_K" => [9, "deg_K"],
-+ "gigadegree" => [9, "degree"], "gigadegreeK" => [9, "degreeK"],
-+ "gigadyne" => [9, "dyne"], "gigaerg" => [9, "erg"],
-+ "gigafahrenheit" => [9, "fahrenheit"], "gigafarad" => [9, "farad"],
-+ "gigafermi" => [9, "fermi"], "gigagal" => [9, "gal"],
-+ "gigagauss" => [9, "gauss"], "gigagram" => [9, "gram"],
-+ "gigahectare" => [9, "hectare"], "gigahertz" => [9, "hertz"],
-+ "gigahour" => [9, "hour"], "gigainch" => [9, "inch"],
-+ "gigajoule" => [9, "joule"], "gigakelvin" => [9, "kelvin"],
-+ "gigakilogram" => [9, "kilogram"], "gigaknot" => [9, "knot"],
-+ "gigalitre" => [9, "litre"], "gigameter" => [9, "meter"],
-+ "gigametre" => [9, "metre"], "gigamicron" => [9, "micron"],
-+ "gigamile" => [9, "mile"], "gigamillibar" => [9, "millibar"],
-+ "gigaminute" => [9, "minute"],
-+ "gigaminute_angle" => [9, "minute_angle"], "gigamole" => [9, "mole"],
-+ "gigamonth" => [9, "month"], "giganewton" => [9, "newton"],
-+ "gigaounce" => [9, "ounce"], "gigaparsec" => [9, "parsec"],
-+ "gigapascal" => [9, "pascal"], "gigapentad" => [9, "pentad"],
-+ "gigapoise" => [9, "poise"], "gigapound" => [9, "pound"],
-+ "gigaradian" => [9, "radian"], "gigasecond" => [9, "second"],
-+ "gigasecond_angle" => [9, "second_angle"],
-+ "gigasteradian" => [9, "steradian"], "gigastokes" => [9, "stokes"],
-+ "gigatesla" => [9, "tesla"], "gigaton" => [9, "ton"],
-+ "gigatonne" => [9, "tonne"], "gigatorr" => [9, "torr"],
-+ "gigavolt" => [9, "volt"], "gigawatt" => [9, "watt"],
-+ "gigaweber" => [9, "weber"], "gigayard" => [9, "yard"],
-+ "gigayd" => [9, "yd"], "gigayear" => [9, "year"],
-+ "grams" => [0, "gram"], "h%" => [2, "%"], "hA" => [2, "A"],
-+ "hAu" => [2, "Au"], "hBq" => [2, "Bq"], "hC" => [2, "C"],
-+ "hF" => [2, "F"], "hG" => [2, "G"], "hGal" => [2, "Gal"],
-+ "hGy" => [2, "Gy"], "hH" => [2, "H"], "hHg" => [2, "Hg"],
-+ "hHz" => [2, "Hz"], "hJ" => [2, "J"], "hK" => [2, "K"],
-+ "hL" => [2, "L"], "hN" => [2, "N"], "hP" => [2, "P"],
-+ "hPa" => [2, "Pa"], "hS" => [2, "S"], "hSt" => [2, "St"],
-+ "hSv" => [2, "Sv"], "hT" => [2, "T"], "hV" => [2, "V"],
-+ "hW" => [2, "W"], "hWb" => [2, "Wb"], "ha" => [2, "a"],
-+ "hac" => [2, "ac"], "hatm" => [2, "atm"], "hbar" => [2, "bar"],
-+ "hcal" => [2, "cal"],
-+ "hconventional_mercury" => [2, "conventional_mercury"],
-+ "hd" => [2, "d"], "hdegC" => [2, "degC"], "hdegF" => [2, "degF"],
-+ "hdeg_C" => [2, "deg_C"], "hdeg_F" => [2, "deg_F"],
-+ "hdegreeC" => [2, "degreeC"], "hdegreeF" => [2, "degreeF"],
-+ "hdegree_C" => [2, "degree_C"], "hdegree_E" => [2, "degree_E"],
-+ "hdegree_F" => [2, "degree_F"], "hdegree_N" => [2, "degree_N"],
-+ "hdegree_R" => [2, "degree_R"], "hdegree_S" => [2, "degree_S"],
-+ "hdegree_W" => [2, "degree_W"], "hdegree_c" => [2, "degree_c"],
-+ "hdegree_east" => [2, "degree_east"], "hdegree_f" => [2, "degree_f"],
-+ "hdegree_north" => [2, "degree_north"],
-+ "hdegree_south" => [2, "degree_south"],
-+ "hdegree_west" => [2, "degree_west"],
-+ "hdegrees_east" => [2, "degrees_east"],
-+ "hdegrees_north" => [2, "degrees_north"],
-+ "hdegrees_south" => [2, "degrees_south"],
-+ "hdegrees_west" => [2, "degrees_west"], "hdyn" => [2, "dyn"],
-+ "hectares" => [0, "hectare"], "hectoCelsius" => [2, "Celsius"],
-+ "hectoFahrenheit" => [2, "Fahrenheit"],
-+ "hectoJulian_year" => [2, "Julian_year"],
-+ "hectoPascal" => [2, "Pascal"], "hectoacre" => [2, "acre"],
-+ "hectoampere" => [2, "ampere"], "hectoangstrom" => [2, "angstrom"],
-+ "hectoangular_degree" => [2, "angular_degree"],
-+ "hectoangular_minute" => [2, "angular_minute"],
-+ "hectoangular_second" => [2, "angular_second"],
-+ "hectoare" => [2, "are"], "hectoatmosphere" => [2, "atmosphere"],
-+ "hectocalorie" => [2, "calorie"], "hectocelsius" => [2, "celsius"],
-+ "hectocentigrade" => [2, "centigrade"],
-+ "hectocentury" => [2, "century"], "hectochain" => [2, "chain"],
-+ "hectocommon_year" => [2, "common_year"],
-+ "hectocoulomb" => [2, "coulomb"], "hectoday" => [2, "day"],
-+ "hectodegK" => [2, "degK"], "hectodeg_K" => [2, "deg_K"],
-+ "hectodegree" => [2, "degree"], "hectodegreeK" => [2, "degreeK"],
-+ "hectodyne" => [2, "dyne"], "hectoerg" => [2, "erg"],
-+ "hectofahrenheit" => [2, "fahrenheit"], "hectofarad" => [2, "farad"],
-+ "hectofermi" => [2, "fermi"], "hectogal" => [2, "gal"],
-+ "hectogauss" => [2, "gauss"], "hectogram" => [2, "gram"],
-+ "hectohectare" => [2, "hectare"], "hectohertz" => [2, "hertz"],
-+ "hectohour" => [2, "hour"], "hectoinch" => [2, "inch"],
-+ "hectojoule" => [2, "joule"], "hectokelvin" => [2, "kelvin"],
-+ "hectokilogram" => [2, "kilogram"], "hectoknot" => [2, "knot"],
-+ "hectolitre" => [2, "litre"], "hectometer" => [2, "meter"],
-+ "hectometre" => [2, "metre"], "hectomicron" => [2, "micron"],
-+ "hectomile" => [2, "mile"], "hectomillibar" => [2, "millibar"],
-+ "hectominute" => [2, "minute"],
-+ "hectominute_angle" => [2, "minute_angle"],
-+ "hectomole" => [2, "mole"], "hectomonth" => [2, "month"],
-+ "hectonewton" => [2, "newton"], "hectoounce" => [2, "ounce"],
-+ "hectoparsec" => [2, "parsec"], "hectopascal" => [2, "pascal"],
-+ "hectopentad" => [2, "pentad"], "hectopoise" => [2, "poise"],
-+ "hectopound" => [2, "pound"], "hectoradian" => [2, "radian"],
-+ "hectosecond" => [2, "second"],
-+ "hectosecond_angle" => [2, "second_angle"],
-+ "hectosteradian" => [2, "steradian"], "hectostokes" => [2, "stokes"],
-+ "hectotesla" => [2, "tesla"], "hectoton" => [2, "ton"],
-+ "hectotonne" => [2, "tonne"], "hectotorr" => [2, "torr"],
-+ "hectovolt" => [2, "volt"], "hectowatt" => [2, "watt"],
-+ "hectoweber" => [2, "weber"], "hectoyard" => [2, "yard"],
-+ "hectoyd" => [2, "yd"], "hectoyear" => [2, "year"],
-+ "herg" => [2, "erg"], "hertzes" => [0, "hertz"],
-+ "hforce" => [2, "force"], "hg" => [2, "g"],
-+ "hgravity" => [2, "gravity"], "hh" => [2, "h"], "hhg" => [2, "hg"],
-+ "hhr" => [2, "hr"], "hin" => [2, "in"], "hkg" => [2, "kg"],
-+ "hkgf" => [2, "kgf"], "hkph" => [2, "kph"], "hlb" => [2, "lb"],
-+ "hlm" => [2, "lm"], "hlx" => [2, "lx"], "hly" => [2, "ly"],
-+ "hm" => [2, "m"], "hmb" => [2, "mb"], "hmercury" => [2, "mercury"],
-+ "hmgal" => [2, "mgal"], "hmin" => [2, "min"], "hmol" => [2, "mol"],
-+ "hmon" => [2, "mon"], "hmph" => [2, "mph"], "hohm" => [2, "ohm"],
-+ "hours" => [0, "hour"], "hoz" => [2, "oz"], "hpc" => [2, "pc"],
-+ "hpercent" => [2, "percent"], "hpermil" => [2, "permil"],
-+ "hpsi" => [2, "psi"], "hrad" => [2, "rad"], "hs" => [2, "s"],
-+ "hsr" => [2, "sr"], "ht" => [2, "t"], "hyr" => [2, "yr"],
-+ "inchs" => [0, "inch"], "joules" => [0, "joule"], "k%" => [3, "%"],
-+ "kA" => [3, "A"], "kAu" => [3, "Au"], "kBq" => [3, "Bq"],
-+ "kC" => [3, "C"], "kF" => [3, "F"], "kG" => [3, "G"],
-+ "kGal" => [3, "Gal"], "kGy" => [3, "Gy"], "kH" => [3, "H"],
-+ "kHg" => [3, "Hg"], "kHz" => [3, "Hz"], "kJ" => [3, "J"],
-+ "kK" => [3, "K"], "kL" => [3, "L"], "kN" => [3, "N"],
-+ "kP" => [3, "P"], "kPa" => [3, "Pa"], "kS" => [3, "S"],
-+ "kSt" => [3, "St"], "kSv" => [3, "Sv"], "kT" => [3, "T"],
-+ "kV" => [3, "V"], "kW" => [3, "W"], "kWb" => [3, "Wb"],
-+ "ka" => [3, "a"], "kac" => [3, "ac"], "katm" => [3, "atm"],
-+ "kbar" => [3, "bar"], "kcal" => [3, "cal"],
-+ "kconventional_mercury" => [3, "conventional_mercury"],
-+ "kd" => [3, "d"], "kdegC" => [3, "degC"], "kdegF" => [3, "degF"],
-+ "kdeg_C" => [3, "deg_C"], "kdeg_F" => [3, "deg_F"],
-+ "kdegreeC" => [3, "degreeC"], "kdegreeF" => [3, "degreeF"],
-+ "kdegree_C" => [3, "degree_C"], "kdegree_E" => [3, "degree_E"],
-+ "kdegree_F" => [3, "degree_F"], "kdegree_N" => [3, "degree_N"],
-+ "kdegree_R" => [3, "degree_R"], "kdegree_S" => [3, "degree_S"],
-+ "kdegree_W" => [3, "degree_W"], "kdegree_c" => [3, "degree_c"],
-+ "kdegree_east" => [3, "degree_east"], "kdegree_f" => [3, "degree_f"],
-+ "kdegree_north" => [3, "degree_north"],
-+ "kdegree_south" => [3, "degree_south"],
-+ "kdegree_west" => [3, "degree_west"],
-+ "kdegrees_east" => [3, "degrees_east"],
-+ "kdegrees_north" => [3, "degrees_north"],
-+ "kdegrees_south" => [3, "degrees_south"],
-+ "kdegrees_west" => [3, "degrees_west"], "kdyn" => [3, "dyn"],
-+ "kelvins" => [0, "kelvin"], "kerg" => [3, "erg"],
-+ "kforce" => [3, "force"], "kgravity" => [3, "gravity"],
-+ "kh" => [3, "h"], "khg" => [3, "hg"], "khr" => [3, "hr"],
-+ "kiloCelsius" => [3, "Celsius"],
-+ "kiloFahrenheit" => [3, "Fahrenheit"],
-+ "kiloJulian_year" => [3, "Julian_year"],
-+ "kiloPascal" => [3, "Pascal"], "kiloacre" => [3, "acre"],
-+ "kiloampere" => [3, "ampere"], "kiloangstrom" => [3, "angstrom"],
-+ "kiloangular_degree" => [3, "angular_degree"],
-+ "kiloangular_minute" => [3, "angular_minute"],
-+ "kiloangular_second" => [3, "angular_second"],
-+ "kiloare" => [3, "are"], "kiloatmosphere" => [3, "atmosphere"],
-+ "kilocalorie" => [3, "calorie"], "kilocelsius" => [3, "celsius"],
-+ "kilocentigrade" => [3, "centigrade"],
-+ "kilocentury" => [3, "century"], "kilochain" => [3, "chain"],
-+ "kilocommon_year" => [3, "common_year"],
-+ "kilocoulomb" => [3, "coulomb"], "kiloday" => [3, "day"],
-+ "kilodegK" => [3, "degK"], "kilodeg_K" => [3, "deg_K"],
-+ "kilodegree" => [3, "degree"], "kilodegreeK" => [3, "degreeK"],
-+ "kilodyne" => [3, "dyne"], "kiloerg" => [3, "erg"],
-+ "kilofahrenheit" => [3, "fahrenheit"], "kilofarad" => [3, "farad"],
-+ "kilofermi" => [3, "fermi"], "kilogal" => [3, "gal"],
-+ "kilogauss" => [3, "gauss"], "kilogram" => [3, "gram"],
-+ "kilograms" => [0, "kilogram"], "kilohectare" => [3, "hectare"],
-+ "kilohertz" => [3, "hertz"], "kilohour" => [3, "hour"],
-+ "kiloinch" => [3, "inch"], "kilojoule" => [3, "joule"],
-+ "kilokelvin" => [3, "kelvin"], "kilokilogram" => [3, "kilogram"],
-+ "kiloknot" => [3, "knot"], "kilolitre" => [3, "litre"],
-+ "kilometer" => [3, "meter"], "kilometre" => [3, "metre"],
-+ "kilomicron" => [3, "micron"], "kilomile" => [3, "mile"],
-+ "kilomillibar" => [3, "millibar"], "kilominute" => [3, "minute"],
-+ "kilominute_angle" => [3, "minute_angle"], "kilomole" => [3, "mole"],
-+ "kilomonth" => [3, "month"], "kilonewton" => [3, "newton"],
-+ "kiloounce" => [3, "ounce"], "kiloparsec" => [3, "parsec"],
-+ "kilopascal" => [3, "pascal"], "kilopentad" => [3, "pentad"],
-+ "kilopoise" => [3, "poise"], "kilopound" => [3, "pound"],
-+ "kiloradian" => [3, "radian"], "kilosecond" => [3, "second"],
-+ "kilosecond_angle" => [3, "second_angle"],
-+ "kilosteradian" => [3, "steradian"], "kilostokes" => [3, "stokes"],
-+ "kilotesla" => [3, "tesla"], "kiloton" => [3, "ton"],
-+ "kilotonne" => [3, "tonne"], "kilotorr" => [3, "torr"],
-+ "kilovolt" => [3, "volt"], "kilowatt" => [3, "watt"],
-+ "kiloweber" => [3, "weber"], "kiloyard" => [3, "yard"],
-+ "kiloyd" => [3, "yd"], "kiloyear" => [3, "year"],
-+ "kin" => [3, "in"], "kkg" => [3, "kg"], "kkgf" => [3, "kgf"],
-+ "kkph" => [3, "kph"], "klb" => [3, "lb"], "klm" => [3, "lm"],
-+ "klx" => [3, "lx"], "kly" => [3, "ly"], "km" => [3, "m"],
-+ "kmb" => [3, "mb"], "kmercury" => [3, "mercury"],
-+ "kmgal" => [3, "mgal"], "kmin" => [3, "min"], "kmol" => [3, "mol"],
-+ "kmon" => [3, "mon"], "kmph" => [3, "mph"], "knots" => [0, "knot"],
-+ "kohm" => [3, "ohm"], "koz" => [3, "oz"], "kpc" => [3, "pc"],
-+ "kpercent" => [3, "percent"], "kpermil" => [3, "permil"],
-+ "kpsi" => [3, "psi"], "krad" => [3, "rad"], "ks" => [3, "s"],
-+ "ksr" => [3, "sr"], "kt" => [3, "t"], "kyr" => [3, "yr"],
-+ "litres" => [0, "litre"], "m%" => [-3, "%"], "mA" => [-3, "A"],
-+ "mAu" => [-3, "Au"], "mBq" => [-3, "Bq"], "mC" => [-3, "C"],
-+ "mF" => [-3, "F"], "mG" => [-3, "G"], "mGal" => [-3, "Gal"],
-+ "mGy" => [-3, "Gy"], "mH" => [-3, "H"], "mHg" => [-3, "Hg"],
-+ "mHz" => [-3, "Hz"], "mJ" => [-3, "J"], "mK" => [-3, "K"],
-+ "mL" => [-3, "L"], "mN" => [-3, "N"], "mP" => [-3, "P"],
-+ "mPa" => [-3, "Pa"], "mS" => [-3, "S"], "mSt" => [-3, "St"],
-+ "mSv" => [-3, "Sv"], "mT" => [-3, "T"], "mV" => [-3, "V"],
-+ "mW" => [-3, "W"], "mWb" => [-3, "Wb"], "ma" => [-3, "a"],
-+ "mac" => [-3, "ac"], "matm" => [-3, "atm"], "mbar" => [-3, "bar"],
-+ "mcal" => [-3, "cal"],
-+ "mconventional_mercury" => [-3, "conventional_mercury"],
-+ "md" => [-3, "d"], "mdegC" => [-3, "degC"], "mdegF" => [-3, "degF"],
-+ "mdeg_C" => [-3, "deg_C"], "mdeg_F" => [-3, "deg_F"],
-+ "mdegreeC" => [-3, "degreeC"], "mdegreeF" => [-3, "degreeF"],
-+ "mdegree_C" => [-3, "degree_C"], "mdegree_E" => [-3, "degree_E"],
-+ "mdegree_F" => [-3, "degree_F"], "mdegree_N" => [-3, "degree_N"],
-+ "mdegree_R" => [-3, "degree_R"], "mdegree_S" => [-3, "degree_S"],
-+ "mdegree_W" => [-3, "degree_W"], "mdegree_c" => [-3, "degree_c"],
-+ "mdegree_east" => [-3, "degree_east"],
-+ "mdegree_f" => [-3, "degree_f"],
-+ "mdegree_north" => [-3, "degree_north"],
-+ "mdegree_south" => [-3, "degree_south"],
-+ "mdegree_west" => [-3, "degree_west"],
-+ "mdegrees_east" => [-3, "degrees_east"],
-+ "mdegrees_north" => [-3, "degrees_north"],
-+ "mdegrees_south" => [-3, "degrees_south"],
-+ "mdegrees_west" => [-3, "degrees_west"], "mdyn" => [-3, "dyn"],
-+ "megaCelsius" => [6, "Celsius"],
-+ "megaFahrenheit" => [6, "Fahrenheit"],
-+ "megaJulian_year" => [6, "Julian_year"],
-+ "megaPascal" => [6, "Pascal"], "megaacre" => [6, "acre"],
-+ "megaampere" => [6, "ampere"], "megaangstrom" => [6, "angstrom"],
-+ "megaangular_degree" => [6, "angular_degree"],
-+ "megaangular_minute" => [6, "angular_minute"],
-+ "megaangular_second" => [6, "angular_second"],
-+ "megaare" => [6, "are"], "megaatmosphere" => [6, "atmosphere"],
-+ "megacalorie" => [6, "calorie"], "megacelsius" => [6, "celsius"],
-+ "megacentigrade" => [6, "centigrade"],
-+ "megacentury" => [6, "century"], "megachain" => [6, "chain"],
-+ "megacommon_year" => [6, "common_year"],
-+ "megacoulomb" => [6, "coulomb"], "megaday" => [6, "day"],
-+ "megadegK" => [6, "degK"], "megadeg_K" => [6, "deg_K"],
-+ "megadegree" => [6, "degree"], "megadegreeK" => [6, "degreeK"],
-+ "megadyne" => [6, "dyne"], "megaerg" => [6, "erg"],
-+ "megafahrenheit" => [6, "fahrenheit"], "megafarad" => [6, "farad"],
-+ "megafermi" => [6, "fermi"], "megagal" => [6, "gal"],
-+ "megagauss" => [6, "gauss"], "megagram" => [6, "gram"],
-+ "megahectare" => [6, "hectare"], "megahertz" => [6, "hertz"],
-+ "megahour" => [6, "hour"], "megainch" => [6, "inch"],
-+ "megajoule" => [6, "joule"], "megakelvin" => [6, "kelvin"],
-+ "megakilogram" => [6, "kilogram"], "megaknot" => [6, "knot"],
-+ "megalitre" => [6, "litre"], "megameter" => [6, "meter"],
-+ "megametre" => [6, "metre"], "megamicron" => [6, "micron"],
-+ "megamile" => [6, "mile"], "megamillibar" => [6, "millibar"],
-+ "megaminute" => [6, "minute"],
-+ "megaminute_angle" => [6, "minute_angle"], "megamole" => [6, "mole"],
-+ "megamonth" => [6, "month"], "meganewton" => [6, "newton"],
-+ "megaounce" => [6, "ounce"], "megaparsec" => [6, "parsec"],
-+ "megapascal" => [6, "pascal"], "megapentad" => [6, "pentad"],
-+ "megapoise" => [6, "poise"], "megapound" => [6, "pound"],
-+ "megaradian" => [6, "radian"], "megasecond" => [6, "second"],
-+ "megasecond_angle" => [6, "second_angle"],
-+ "megasteradian" => [6, "steradian"], "megastokes" => [6, "stokes"],
-+ "megatesla" => [6, "tesla"], "megaton" => [6, "ton"],
-+ "megatonne" => [6, "tonne"], "megatorr" => [6, "torr"],
-+ "megavolt" => [6, "volt"], "megawatt" => [6, "watt"],
-+ "megaweber" => [6, "weber"], "megayard" => [6, "yard"],
-+ "megayd" => [6, "yd"], "megayear" => [6, "year"],
-+ "merg" => [-3, "erg"], "meters" => [0, "meter"],
-+ "metres" => [0, "metre"], "mforce" => [-3, "force"],
-+ "mg" => [-3, "g"], "mgravity" => [-3, "gravity"], "mh" => [-3, "h"],
-+ "mhg" => [-3, "hg"], "mhr" => [-3, "hr"],
-+ "microCelsius" => [-6, "Celsius"],
-+ "microFahrenheit" => [-6, "Fahrenheit"],
-+ "microJulian_year" => [-6, "Julian_year"],
-+ "microPascal" => [-6, "Pascal"], "microacre" => [-6, "acre"],
-+ "microampere" => [-6, "ampere"], "microangstrom" => [-6, "angstrom"],
-+ "microangular_degree" => [-6, "angular_degree"],
-+ "microangular_minute" => [-6, "angular_minute"],
-+ "microangular_second" => [-6, "angular_second"],
-+ "microare" => [-6, "are"], "microatmosphere" => [-6, "atmosphere"],
-+ "microcalorie" => [-6, "calorie"], "microcelsius" => [-6, "celsius"],
-+ "microcentigrade" => [-6, "centigrade"],
-+ "microcentury" => [-6, "century"], "microchain" => [-6, "chain"],
-+ "microcommon_year" => [-6, "common_year"],
-+ "microcoulomb" => [-6, "coulomb"], "microday" => [-6, "day"],
-+ "microdegK" => [-6, "degK"], "microdeg_K" => [-6, "deg_K"],
-+ "microdegree" => [-6, "degree"], "microdegreeK" => [-6, "degreeK"],
-+ "microdyne" => [-6, "dyne"], "microerg" => [-6, "erg"],
-+ "microfahrenheit" => [-6, "fahrenheit"],
-+ "microfarad" => [-6, "farad"], "microfermi" => [-6, "fermi"],
-+ "microgal" => [-6, "gal"], "microgauss" => [-6, "gauss"],
-+ "microgram" => [-6, "gram"], "microhectare" => [-6, "hectare"],
-+ "microhertz" => [-6, "hertz"], "microhour" => [-6, "hour"],
-+ "microinch" => [-6, "inch"], "microjoule" => [-6, "joule"],
-+ "microkelvin" => [-6, "kelvin"], "microkilogram" => [-6, "kilogram"],
-+ "microknot" => [-6, "knot"], "microlitre" => [-6, "litre"],
-+ "micrometer" => [-6, "meter"], "micrometre" => [-6, "metre"],
-+ "micromicron" => [-6, "micron"], "micromile" => [-6, "mile"],
-+ "micromillibar" => [-6, "millibar"], "microminute" => [-6, "minute"],
-+ "microminute_angle" => [-6, "minute_angle"],
-+ "micromole" => [-6, "mole"], "micromonth" => [-6, "month"],
-+ "micronewton" => [-6, "newton"], "microns" => [0, "micron"],
-+ "microounce" => [-6, "ounce"], "microparsec" => [-6, "parsec"],
-+ "micropascal" => [-6, "pascal"], "micropentad" => [-6, "pentad"],
-+ "micropoise" => [-6, "poise"], "micropound" => [-6, "pound"],
-+ "microradian" => [-6, "radian"], "microsecond" => [-6, "second"],
-+ "microsecond_angle" => [-6, "second_angle"],
-+ "microsteradian" => [-6, "steradian"],
-+ "microstokes" => [-6, "stokes"], "microtesla" => [-6, "tesla"],
-+ "microton" => [-6, "ton"], "microtonne" => [-6, "tonne"],
-+ "microtorr" => [-6, "torr"], "microvolt" => [-6, "volt"],
-+ "microwatt" => [-6, "watt"], "microweber" => [-6, "weber"],
-+ "microyard" => [-6, "yard"], "microyd" => [-6, "yd"],
-+ "microyear" => [-6, "year"], "miles" => [0, "mile"],
-+ "milliCelsius" => [-3, "Celsius"],
-+ "milliFahrenheit" => [-3, "Fahrenheit"],
-+ "milliJulian_year" => [-3, "Julian_year"],
-+ "milliPascal" => [-3, "Pascal"], "milliacre" => [-3, "acre"],
-+ "milliampere" => [-3, "ampere"], "milliangstrom" => [-3, "angstrom"],
-+ "milliangular_degree" => [-3, "angular_degree"],
-+ "milliangular_minute" => [-3, "angular_minute"],
-+ "milliangular_second" => [-3, "angular_second"],
-+ "milliare" => [-3, "are"], "milliatmosphere" => [-3, "atmosphere"],
-+ "millibars" => [0, "millibar"], "millicalorie" => [-3, "calorie"],
-+ "millicelsius" => [-3, "celsius"],
-+ "millicentigrade" => [-3, "centigrade"],
-+ "millicentury" => [-3, "century"], "millichain" => [-3, "chain"],
-+ "millicommon_year" => [-3, "common_year"],
-+ "millicoulomb" => [-3, "coulomb"], "milliday" => [-3, "day"],
-+ "millidegK" => [-3, "degK"], "millideg_K" => [-3, "deg_K"],
-+ "millidegree" => [-3, "degree"], "millidegreeK" => [-3, "degreeK"],
-+ "millidyne" => [-3, "dyne"], "millierg" => [-3, "erg"],
-+ "millifahrenheit" => [-3, "fahrenheit"],
-+ "millifarad" => [-3, "farad"], "millifermi" => [-3, "fermi"],
-+ "milligal" => [-3, "gal"], "milligauss" => [-3, "gauss"],
-+ "milligram" => [-3, "gram"], "millihectare" => [-3, "hectare"],
-+ "millihertz" => [-3, "hertz"], "millihour" => [-3, "hour"],
-+ "milliinch" => [-3, "inch"], "millijoule" => [-3, "joule"],
-+ "millikelvin" => [-3, "kelvin"], "millikilogram" => [-3, "kilogram"],
-+ "milliknot" => [-3, "knot"], "millilitre" => [-3, "litre"],
-+ "millimeter" => [-3, "meter"], "millimetre" => [-3, "metre"],
-+ "millimicron" => [-3, "micron"], "millimile" => [-3, "mile"],
-+ "millimillibar" => [-3, "millibar"], "milliminute" => [-3, "minute"],
-+ "milliminute_angle" => [-3, "minute_angle"],
-+ "millimole" => [-3, "mole"], "millimonth" => [-3, "month"],
-+ "millinewton" => [-3, "newton"], "milliounce" => [-3, "ounce"],
-+ "milliparsec" => [-3, "parsec"], "millipascal" => [-3, "pascal"],
-+ "millipentad" => [-3, "pentad"], "millipoise" => [-3, "poise"],
-+ "millipound" => [-3, "pound"], "milliradian" => [-3, "radian"],
-+ "millisecond" => [-3, "second"],
-+ "millisecond_angle" => [-3, "second_angle"],
-+ "millisteradian" => [-3, "steradian"],
-+ "millistokes" => [-3, "stokes"], "millitesla" => [-3, "tesla"],
-+ "milliton" => [-3, "ton"], "millitonne" => [-3, "tonne"],
-+ "millitorr" => [-3, "torr"], "millivolt" => [-3, "volt"],
-+ "milliwatt" => [-3, "watt"], "milliweber" => [-3, "weber"],
-+ "milliyard" => [-3, "yard"], "milliyd" => [-3, "yd"],
-+ "milliyear" => [-3, "year"], "min" => [-3, "in"],
-+ "minutes" => [0, "minute"], "minutes_angle" => [0, "minute_angle"],
-+ "mkg" => [-3, "kg"], "mkgf" => [-3, "kgf"], "mkph" => [-3, "kph"],
-+ "mlb" => [-3, "lb"], "mlm" => [-3, "lm"], "mlx" => [-3, "lx"],
-+ "mly" => [-3, "ly"], "mm" => [-3, "m"], "mmb" => [-3, "mb"],
-+ "mmercury" => [-3, "mercury"], "mmgal" => [-3, "mgal"],
-+ "mmin" => [-3, "min"], "mmol" => [-3, "mol"], "mmon" => [-3, "mon"],
-+ "mmph" => [-3, "mph"], "mohm" => [-3, "ohm"],
-+ "moles" => [0, "mole"], "months" => [0, "month"],
-+ "moz" => [-3, "oz"], "mpc" => [-3, "pc"],
-+ "mpercent" => [-3, "percent"], "mpermil" => [-3, "permil"],
-+ "mpsi" => [-3, "psi"], "mrad" => [-3, "rad"], "ms" => [-3, "s"],
-+ "msr" => [-3, "sr"], "mt" => [-3, "t"], "myr" => [-3, "yr"],
-+ "n%" => [-9, "%"], "nA" => [-9, "A"], "nAu" => [-9, "Au"],
-+ "nBq" => [-9, "Bq"], "nC" => [-9, "C"], "nF" => [-9, "F"],
-+ "nG" => [-9, "G"], "nGal" => [-9, "Gal"], "nGy" => [-9, "Gy"],
-+ "nH" => [-9, "H"], "nHg" => [-9, "Hg"], "nHz" => [-9, "Hz"],
-+ "nJ" => [-9, "J"], "nK" => [-9, "K"], "nL" => [-9, "L"],
-+ "nN" => [-9, "N"], "nP" => [-9, "P"], "nPa" => [-9, "Pa"],
-+ "nS" => [-9, "S"], "nSt" => [-9, "St"], "nSv" => [-9, "Sv"],
-+ "nT" => [-9, "T"], "nV" => [-9, "V"], "nW" => [-9, "W"],
-+ "nWb" => [-9, "Wb"], "na" => [-9, "a"], "nac" => [-9, "ac"],
-+ "nanoCelsius" => [-9, "Celsius"],
-+ "nanoFahrenheit" => [-9, "Fahrenheit"],
-+ "nanoJulian_year" => [-9, "Julian_year"],
-+ "nanoPascal" => [-9, "Pascal"], "nanoacre" => [-9, "acre"],
-+ "nanoampere" => [-9, "ampere"], "nanoangstrom" => [-9, "angstrom"],
-+ "nanoangular_degree" => [-9, "angular_degree"],
-+ "nanoangular_minute" => [-9, "angular_minute"],
-+ "nanoangular_second" => [-9, "angular_second"],
-+ "nanoare" => [-9, "are"], "nanoatmosphere" => [-9, "atmosphere"],
-+ "nanocalorie" => [-9, "calorie"], "nanocelsius" => [-9, "celsius"],
-+ "nanocentigrade" => [-9, "centigrade"],
-+ "nanocentury" => [-9, "century"], "nanochain" => [-9, "chain"],
-+ "nanocommon_year" => [-9, "common_year"],
-+ "nanocoulomb" => [-9, "coulomb"], "nanoday" => [-9, "day"],
-+ "nanodegK" => [-9, "degK"], "nanodeg_K" => [-9, "deg_K"],
-+ "nanodegree" => [-9, "degree"], "nanodegreeK" => [-9, "degreeK"],
-+ "nanodyne" => [-9, "dyne"], "nanoerg" => [-9, "erg"],
-+ "nanofahrenheit" => [-9, "fahrenheit"], "nanofarad" => [-9, "farad"],
-+ "nanofermi" => [-9, "fermi"], "nanogal" => [-9, "gal"],
-+ "nanogauss" => [-9, "gauss"], "nanogram" => [-9, "gram"],
-+ "nanohectare" => [-9, "hectare"], "nanohertz" => [-9, "hertz"],
-+ "nanohour" => [-9, "hour"], "nanoinch" => [-9, "inch"],
-+ "nanojoule" => [-9, "joule"], "nanokelvin" => [-9, "kelvin"],
-+ "nanokilogram" => [-9, "kilogram"], "nanoknot" => [-9, "knot"],
-+ "nanolitre" => [-9, "litre"], "nanometer" => [-9, "meter"],
-+ "nanometre" => [-9, "metre"], "nanomicron" => [-9, "micron"],
-+ "nanomile" => [-9, "mile"], "nanomillibar" => [-9, "millibar"],
-+ "nanominute" => [-9, "minute"],
-+ "nanominute_angle" => [-9, "minute_angle"],
-+ "nanomole" => [-9, "mole"], "nanomonth" => [-9, "month"],
-+ "nanonewton" => [-9, "newton"], "nanoounce" => [-9, "ounce"],
-+ "nanoparsec" => [-9, "parsec"], "nanopascal" => [-9, "pascal"],
-+ "nanopentad" => [-9, "pentad"], "nanopoise" => [-9, "poise"],
-+ "nanopound" => [-9, "pound"], "nanoradian" => [-9, "radian"],
-+ "nanosecond" => [-9, "second"],
-+ "nanosecond_angle" => [-9, "second_angle"],
-+ "nanosteradian" => [-9, "steradian"], "nanostokes" => [-9, "stokes"],
-+ "nanotesla" => [-9, "tesla"], "nanoton" => [-9, "ton"],
-+ "nanotonne" => [-9, "tonne"], "nanotorr" => [-9, "torr"],
-+ "nanovolt" => [-9, "volt"], "nanowatt" => [-9, "watt"],
-+ "nanoweber" => [-9, "weber"], "nanoyard" => [-9, "yard"],
-+ "nanoyd" => [-9, "yd"], "nanoyear" => [-9, "year"],
-+ "natm" => [-9, "atm"], "nbar" => [-9, "bar"], "ncal" => [-9, "cal"],
-+ "nconventional_mercury" => [-9, "conventional_mercury"],
-+ "nd" => [-9, "d"], "ndegC" => [-9, "degC"], "ndegF" => [-9, "degF"],
-+ "ndeg_C" => [-9, "deg_C"], "ndeg_F" => [-9, "deg_F"],
-+ "ndegreeC" => [-9, "degreeC"], "ndegreeF" => [-9, "degreeF"],
-+ "ndegree_C" => [-9, "degree_C"], "ndegree_E" => [-9, "degree_E"],
-+ "ndegree_F" => [-9, "degree_F"], "ndegree_N" => [-9, "degree_N"],
-+ "ndegree_R" => [-9, "degree_R"], "ndegree_S" => [-9, "degree_S"],
-+ "ndegree_W" => [-9, "degree_W"], "ndegree_c" => [-9, "degree_c"],
-+ "ndegree_east" => [-9, "degree_east"],
-+ "ndegree_f" => [-9, "degree_f"],
-+ "ndegree_north" => [-9, "degree_north"],
-+ "ndegree_south" => [-9, "degree_south"],
-+ "ndegree_west" => [-9, "degree_west"],
-+ "ndegrees_east" => [-9, "degrees_east"],
-+ "ndegrees_north" => [-9, "degrees_north"],
-+ "ndegrees_south" => [-9, "degrees_south"],
-+ "ndegrees_west" => [-9, "degrees_west"], "ndyn" => [-9, "dyn"],
-+ "nerg" => [-9, "erg"], "newtons" => [0, "newton"],
-+ "nforce" => [-9, "force"], "ng" => [-9, "g"],
-+ "ngravity" => [-9, "gravity"], "nh" => [-9, "h"],
-+ "nhg" => [-9, "hg"], "nhr" => [-9, "hr"], "nin" => [-9, "in"],
-+ "nkg" => [-9, "kg"], "nkgf" => [-9, "kgf"], "nkph" => [-9, "kph"],
-+ "nlb" => [-9, "lb"], "nlm" => [-9, "lm"], "nlx" => [-9, "lx"],
-+ "nly" => [-9, "ly"], "nm" => [-9, "m"], "nmb" => [-9, "mb"],
-+ "nmercury" => [-9, "mercury"], "nmgal" => [-9, "mgal"],
-+ "nmin" => [-9, "min"], "nmol" => [-9, "mol"], "nmon" => [-9, "mon"],
-+ "nmph" => [-9, "mph"], "nohm" => [-9, "ohm"], "noz" => [-9, "oz"],
-+ "npc" => [-9, "pc"], "npercent" => [-9, "percent"],
-+ "npermil" => [-9, "permil"], "npsi" => [-9, "psi"],
-+ "nrad" => [-9, "rad"], "ns" => [-9, "s"], "nsr" => [-9, "sr"],
-+ "nt" => [-9, "t"], "nyr" => [-9, "yr"], "ounces" => [0, "ounce"],
-+ "p%" => [-12, "%"], "pA" => [-12, "A"], "pAu" => [-12, "Au"],
-+ "pBq" => [-12, "Bq"], "pC" => [-12, "C"], "pF" => [-12, "F"],
-+ "pG" => [-12, "G"], "pGal" => [-12, "Gal"], "pGy" => [-12, "Gy"],
-+ "pH" => [-12, "H"], "pHg" => [-12, "Hg"], "pHz" => [-12, "Hz"],
-+ "pJ" => [-12, "J"], "pK" => [-12, "K"], "pL" => [-12, "L"],
-+ "pN" => [-12, "N"], "pP" => [-12, "P"], "pPa" => [-12, "Pa"],
-+ "pS" => [-12, "S"], "pSt" => [-12, "St"], "pSv" => [-12, "Sv"],
-+ "pT" => [-12, "T"], "pV" => [-12, "V"], "pW" => [-12, "W"],
-+ "pWb" => [-12, "Wb"], "pa" => [-12, "a"], "pac" => [-12, "ac"],
-+ "parsecs" => [0, "parsec"], "pascals" => [0, "pascal"],
-+ "patm" => [-12, "atm"], "pbar" => [-12, "bar"],
-+ "pcal" => [-12, "cal"],
-+ "pconventional_mercury" => [-12, "conventional_mercury"],
-+ "pd" => [-12, "d"], "pdegC" => [-12, "degC"],
-+ "pdegF" => [-12, "degF"], "pdeg_C" => [-12, "deg_C"],
-+ "pdeg_F" => [-12, "deg_F"], "pdegreeC" => [-12, "degreeC"],
-+ "pdegreeF" => [-12, "degreeF"], "pdegree_C" => [-12, "degree_C"],
-+ "pdegree_E" => [-12, "degree_E"], "pdegree_F" => [-12, "degree_F"],
-+ "pdegree_N" => [-12, "degree_N"], "pdegree_R" => [-12, "degree_R"],
-+ "pdegree_S" => [-12, "degree_S"], "pdegree_W" => [-12, "degree_W"],
-+ "pdegree_c" => [-12, "degree_c"],
-+ "pdegree_east" => [-12, "degree_east"],
-+ "pdegree_f" => [-12, "degree_f"],
-+ "pdegree_north" => [-12, "degree_north"],
-+ "pdegree_south" => [-12, "degree_south"],
-+ "pdegree_west" => [-12, "degree_west"],
-+ "pdegrees_east" => [-12, "degrees_east"],
-+ "pdegrees_north" => [-12, "degrees_north"],
-+ "pdegrees_south" => [-12, "degrees_south"],
-+ "pdegrees_west" => [-12, "degrees_west"], "pdyn" => [-12, "dyn"],
-+ "pentads" => [0, "pentad"], "perg" => [-12, "erg"],
-+ "petaCelsius" => [15, "Celsius"],
-+ "petaFahrenheit" => [15, "Fahrenheit"],
-+ "petaJulian_year" => [15, "Julian_year"],
-+ "petaPascal" => [15, "Pascal"], "petaacre" => [15, "acre"],
-+ "petaampere" => [15, "ampere"], "petaangstrom" => [15, "angstrom"],
-+ "petaangular_degree" => [15, "angular_degree"],
-+ "petaangular_minute" => [15, "angular_minute"],
-+ "petaangular_second" => [15, "angular_second"],
-+ "petaare" => [15, "are"], "petaatmosphere" => [15, "atmosphere"],
-+ "petacalorie" => [15, "calorie"], "petacelsius" => [15, "celsius"],
-+ "petacentigrade" => [15, "centigrade"],
-+ "petacentury" => [15, "century"], "petachain" => [15, "chain"],
-+ "petacommon_year" => [15, "common_year"],
-+ "petacoulomb" => [15, "coulomb"], "petaday" => [15, "day"],
-+ "petadegK" => [15, "degK"], "petadeg_K" => [15, "deg_K"],
-+ "petadegree" => [15, "degree"], "petadegreeK" => [15, "degreeK"],
-+ "petadyne" => [15, "dyne"], "petaerg" => [15, "erg"],
-+ "petafahrenheit" => [15, "fahrenheit"], "petafarad" => [15, "farad"],
-+ "petafermi" => [15, "fermi"], "petagal" => [15, "gal"],
-+ "petagauss" => [15, "gauss"], "petagram" => [15, "gram"],
-+ "petahectare" => [15, "hectare"], "petahertz" => [15, "hertz"],
-+ "petahour" => [15, "hour"], "petainch" => [15, "inch"],
-+ "petajoule" => [15, "joule"], "petakelvin" => [15, "kelvin"],
-+ "petakilogram" => [15, "kilogram"], "petaknot" => [15, "knot"],
-+ "petalitre" => [15, "litre"], "petameter" => [15, "meter"],
-+ "petametre" => [15, "metre"], "petamicron" => [15, "micron"],
-+ "petamile" => [15, "mile"], "petamillibar" => [15, "millibar"],
-+ "petaminute" => [15, "minute"],
-+ "petaminute_angle" => [15, "minute_angle"],
-+ "petamole" => [15, "mole"], "petamonth" => [15, "month"],
-+ "petanewton" => [15, "newton"], "petaounce" => [15, "ounce"],
-+ "petaparsec" => [15, "parsec"], "petapascal" => [15, "pascal"],
-+ "petapentad" => [15, "pentad"], "petapoise" => [15, "poise"],
-+ "petapound" => [15, "pound"], "petaradian" => [15, "radian"],
-+ "petasecond" => [15, "second"],
-+ "petasecond_angle" => [15, "second_angle"],
-+ "petasteradian" => [15, "steradian"], "petastokes" => [15, "stokes"],
-+ "petatesla" => [15, "tesla"], "petaton" => [15, "ton"],
-+ "petatonne" => [15, "tonne"], "petatorr" => [15, "torr"],
-+ "petavolt" => [15, "volt"], "petawatt" => [15, "watt"],
-+ "petaweber" => [15, "weber"], "petayard" => [15, "yard"],
-+ "petayd" => [15, "yd"], "petayear" => [15, "year"],
-+ "pforce" => [-12, "force"], "pg" => [-12, "g"],
-+ "pgravity" => [-12, "gravity"], "ph" => [-12, "h"],
-+ "phg" => [-12, "hg"], "phr" => [-12, "hr"],
-+ "picoCelsius" => [-12, "Celsius"],
-+ "picoFahrenheit" => [-12, "Fahrenheit"],
-+ "picoJulian_year" => [-12, "Julian_year"],
-+ "picoPascal" => [-12, "Pascal"], "picoacre" => [-12, "acre"],
-+ "picoampere" => [-12, "ampere"], "picoangstrom" => [-12, "angstrom"],
-+ "picoangular_degree" => [-12, "angular_degree"],
-+ "picoangular_minute" => [-12, "angular_minute"],
-+ "picoangular_second" => [-12, "angular_second"],
-+ "picoare" => [-12, "are"], "picoatmosphere" => [-12, "atmosphere"],
-+ "picocalorie" => [-12, "calorie"], "picocelsius" => [-12, "celsius"],
-+ "picocentigrade" => [-12, "centigrade"],
-+ "picocentury" => [-12, "century"], "picochain" => [-12, "chain"],
-+ "picocommon_year" => [-12, "common_year"],
-+ "picocoulomb" => [-12, "coulomb"], "picoday" => [-12, "day"],
-+ "picodegK" => [-12, "degK"], "picodeg_K" => [-12, "deg_K"],
-+ "picodegree" => [-12, "degree"], "picodegreeK" => [-12, "degreeK"],
-+ "picodyne" => [-12, "dyne"], "picoerg" => [-12, "erg"],
-+ "picofahrenheit" => [-12, "fahrenheit"],
-+ "picofarad" => [-12, "farad"], "picofermi" => [-12, "fermi"],
-+ "picogal" => [-12, "gal"], "picogauss" => [-12, "gauss"],
-+ "picogram" => [-12, "gram"], "picohectare" => [-12, "hectare"],
-+ "picohertz" => [-12, "hertz"], "picohour" => [-12, "hour"],
-+ "picoinch" => [-12, "inch"], "picojoule" => [-12, "joule"],
-+ "picokelvin" => [-12, "kelvin"], "picokilogram" => [-12, "kilogram"],
-+ "picoknot" => [-12, "knot"], "picolitre" => [-12, "litre"],
-+ "picometer" => [-12, "meter"], "picometre" => [-12, "metre"],
-+ "picomicron" => [-12, "micron"], "picomile" => [-12, "mile"],
-+ "picomillibar" => [-12, "millibar"], "picominute" => [-12, "minute"],
-+ "picominute_angle" => [-12, "minute_angle"],
-+ "picomole" => [-12, "mole"], "picomonth" => [-12, "month"],
-+ "piconewton" => [-12, "newton"], "picoounce" => [-12, "ounce"],
-+ "picoparsec" => [-12, "parsec"], "picopascal" => [-12, "pascal"],
-+ "picopentad" => [-12, "pentad"], "picopoise" => [-12, "poise"],
-+ "picopound" => [-12, "pound"], "picoradian" => [-12, "radian"],
-+ "picosecond" => [-12, "second"],
-+ "picosecond_angle" => [-12, "second_angle"],
-+ "picosteradian" => [-12, "steradian"],
-+ "picostokes" => [-12, "stokes"], "picotesla" => [-12, "tesla"],
-+ "picoton" => [-12, "ton"], "picotonne" => [-12, "tonne"],
-+ "picotorr" => [-12, "torr"], "picovolt" => [-12, "volt"],
-+ "picowatt" => [-12, "watt"], "picoweber" => [-12, "weber"],
-+ "picoyard" => [-12, "yard"], "picoyd" => [-12, "yd"],
-+ "picoyear" => [-12, "year"], "pin" => [-12, "in"],
-+ "pkg" => [-12, "kg"], "pkgf" => [-12, "kgf"],
-+ "pkph" => [-12, "kph"], "plb" => [-12, "lb"], "plm" => [-12, "lm"],
-+ "plx" => [-12, "lx"], "ply" => [-12, "ly"], "pm" => [-12, "m"],
-+ "pmb" => [-12, "mb"], "pmercury" => [-12, "mercury"],
-+ "pmgal" => [-12, "mgal"], "pmin" => [-12, "min"],
-+ "pmol" => [-12, "mol"], "pmon" => [-12, "mon"],
-+ "pmph" => [-12, "mph"], "pohm" => [-12, "ohm"],
-+ "poises" => [0, "poise"], "pounds" => [0, "pound"],
-+ "poz" => [-12, "oz"], "ppc" => [-12, "pc"],
-+ "ppercent" => [-12, "percent"], "ppermil" => [-12, "permil"],
-+ "ppsi" => [-12, "psi"], "prad" => [-12, "rad"], "ps" => [-12, "s"],
-+ "psr" => [-12, "sr"], "pt" => [-12, "t"], "pyr" => [-12, "yr"],
-+ "radians" => [0, "radian"], "seconds" => [0, "second"],
-+ "seconds_angle" => [0, "second_angle"],
-+ "steradians" => [0, "steradian"], "stokeses" => [0, "stokes"],
-+ "telaCelsius" => [12, "Celsius"],
-+ "telaFahrenheit" => [12, "Fahrenheit"],
-+ "telaJulian_year" => [12, "Julian_year"],
-+ "telaPascal" => [12, "Pascal"], "telaacre" => [12, "acre"],
-+ "telaampere" => [12, "ampere"], "telaangstrom" => [12, "angstrom"],
-+ "telaangular_degree" => [12, "angular_degree"],
-+ "telaangular_minute" => [12, "angular_minute"],
-+ "telaangular_second" => [12, "angular_second"],
-+ "telaare" => [12, "are"], "telaatmosphere" => [12, "atmosphere"],
-+ "telacalorie" => [12, "calorie"], "telacelsius" => [12, "celsius"],
-+ "telacentigrade" => [12, "centigrade"],
-+ "telacentury" => [12, "century"], "telachain" => [12, "chain"],
-+ "telacommon_year" => [12, "common_year"],
-+ "telacoulomb" => [12, "coulomb"], "teladay" => [12, "day"],
-+ "teladegK" => [12, "degK"], "teladeg_K" => [12, "deg_K"],
-+ "teladegree" => [12, "degree"], "teladegreeK" => [12, "degreeK"],
-+ "teladyne" => [12, "dyne"], "telaerg" => [12, "erg"],
-+ "telafahrenheit" => [12, "fahrenheit"], "telafarad" => [12, "farad"],
-+ "telafermi" => [12, "fermi"], "telagal" => [12, "gal"],
-+ "telagauss" => [12, "gauss"], "telagram" => [12, "gram"],
-+ "telahectare" => [12, "hectare"], "telahertz" => [12, "hertz"],
-+ "telahour" => [12, "hour"], "telainch" => [12, "inch"],
-+ "telajoule" => [12, "joule"], "telakelvin" => [12, "kelvin"],
-+ "telakilogram" => [12, "kilogram"], "telaknot" => [12, "knot"],
-+ "telalitre" => [12, "litre"], "telameter" => [12, "meter"],
-+ "telametre" => [12, "metre"], "telamicron" => [12, "micron"],
-+ "telamile" => [12, "mile"], "telamillibar" => [12, "millibar"],
-+ "telaminute" => [12, "minute"],
-+ "telaminute_angle" => [12, "minute_angle"],
-+ "telamole" => [12, "mole"], "telamonth" => [12, "month"],
-+ "telanewton" => [12, "newton"], "telaounce" => [12, "ounce"],
-+ "telaparsec" => [12, "parsec"], "telapascal" => [12, "pascal"],
-+ "telapentad" => [12, "pentad"], "telapoise" => [12, "poise"],
-+ "telapound" => [12, "pound"], "telaradian" => [12, "radian"],
-+ "telasecond" => [12, "second"],
-+ "telasecond_angle" => [12, "second_angle"],
-+ "telasteradian" => [12, "steradian"], "telastokes" => [12, "stokes"],
-+ "telatesla" => [12, "tesla"], "telaton" => [12, "ton"],
-+ "telatonne" => [12, "tonne"], "telatorr" => [12, "torr"],
-+ "telavolt" => [12, "volt"], "telawatt" => [12, "watt"],
-+ "telaweber" => [12, "weber"], "telayard" => [12, "yard"],
-+ "telayd" => [12, "yd"], "telayear" => [12, "year"],
-+ "teslas" => [0, "tesla"], "tonnes" => [0, "tonne"],
-+ "tons" => [0, "ton"], "torrs" => [0, "torr"], "u%" => [-6, "%"],
-+ "uA" => [-6, "A"], "uAu" => [-6, "Au"], "uBq" => [-6, "Bq"],
-+ "uC" => [-6, "C"], "uF" => [-6, "F"], "uG" => [-6, "G"],
-+ "uGal" => [-6, "Gal"], "uGy" => [-6, "Gy"], "uH" => [-6, "H"],
-+ "uHg" => [-6, "Hg"], "uHz" => [-6, "Hz"], "uJ" => [-6, "J"],
-+ "uK" => [-6, "K"], "uL" => [-6, "L"], "uN" => [-6, "N"],
-+ "uP" => [-6, "P"], "uPa" => [-6, "Pa"], "uS" => [-6, "S"],
-+ "uSt" => [-6, "St"], "uSv" => [-6, "Sv"], "uT" => [-6, "T"],
-+ "uV" => [-6, "V"], "uW" => [-6, "W"], "uWb" => [-6, "Wb"],
-+ "ua" => [-6, "a"], "uac" => [-6, "ac"], "uatm" => [-6, "atm"],
-+ "ubar" => [-6, "bar"], "ucal" => [-6, "cal"],
-+ "uconventional_mercury" => [-6, "conventional_mercury"],
-+ "ud" => [-6, "d"], "udegC" => [-6, "degC"], "udegF" => [-6, "degF"],
-+ "udeg_C" => [-6, "deg_C"], "udeg_F" => [-6, "deg_F"],
-+ "udegreeC" => [-6, "degreeC"], "udegreeF" => [-6, "degreeF"],
-+ "udegree_C" => [-6, "degree_C"], "udegree_E" => [-6, "degree_E"],
-+ "udegree_F" => [-6, "degree_F"], "udegree_N" => [-6, "degree_N"],
-+ "udegree_R" => [-6, "degree_R"], "udegree_S" => [-6, "degree_S"],
-+ "udegree_W" => [-6, "degree_W"], "udegree_c" => [-6, "degree_c"],
-+ "udegree_east" => [-6, "degree_east"],
-+ "udegree_f" => [-6, "degree_f"],
-+ "udegree_north" => [-6, "degree_north"],
-+ "udegree_south" => [-6, "degree_south"],
-+ "udegree_west" => [-6, "degree_west"],
-+ "udegrees_east" => [-6, "degrees_east"],
-+ "udegrees_north" => [-6, "degrees_north"],
-+ "udegrees_south" => [-6, "degrees_south"],
-+ "udegrees_west" => [-6, "degrees_west"], "udyn" => [-6, "dyn"],
-+ "uerg" => [-6, "erg"], "uforce" => [-6, "force"], "ug" => [-6, "g"],
-+ "ugravity" => [-6, "gravity"], "uh" => [-6, "h"],
-+ "uhg" => [-6, "hg"], "uhr" => [-6, "hr"], "uin" => [-6, "in"],
-+ "ukg" => [-6, "kg"], "ukgf" => [-6, "kgf"], "ukph" => [-6, "kph"],
-+ "ulb" => [-6, "lb"], "ulm" => [-6, "lm"], "ulx" => [-6, "lx"],
-+ "uly" => [-6, "ly"], "um" => [-6, "m"], "umb" => [-6, "mb"],
-+ "umercury" => [-6, "mercury"], "umgal" => [-6, "mgal"],
-+ "umin" => [-6, "min"], "umol" => [-6, "mol"], "umon" => [-6, "mon"],
-+ "umph" => [-6, "mph"], "uohm" => [-6, "ohm"], "uoz" => [-6, "oz"],
-+ "upc" => [-6, "pc"], "upercent" => [-6, "percent"],
-+ "upermil" => [-6, "permil"], "upsi" => [-6, "psi"],
-+ "urad" => [-6, "rad"], "us" => [-6, "s"], "usr" => [-6, "sr"],
-+ "ut" => [-6, "t"], "uyr" => [-6, "yr"], "volts" => [0, "volt"],
-+ "watts" => [0, "watt"], "webers" => [0, "weber"],
-+ "yards" => [0, "yard"], "yds" => [0, "yd"], "years" => [0, "year"],
-+}
-+UPLURALS = {
-+ "Celsiuses" => "Celsius", "Fahrenheits" => "Fahrenheit",
-+ "Julians_year" => "Julian_year", "Pascals" => "Pascal",
-+ "acres" => "acre", "amperes" => "ampere", "angstroms" => "angstrom",
-+ "angulars_degree" => "angular_degree",
-+ "angulars_minute" => "angular_minute",
-+ "angulars_second" => "angular_second", "ares" => "are",
-+ "atmospheres" => "atmosphere", "calories" => "calorie",
-+ "celsiuses" => "celsius", "centigrades" => "centigrade",
-+ "centuries" => "century", "chains" => "chain",
-+ "commons_year" => "common_year", "coulombs" => "coulomb",
-+ "days" => "day", "degKs" => "degK", "degreeKs" => "degreeK",
-+ "degrees" => "degree", "degs_K" => "deg_K", "dynes" => "dyne",
-+ "ergs" => "erg", "fahrenheits" => "fahrenheit", "farads" => "farad",
-+ "fermis" => "fermi", "gals" => "gal", "gausses" => "gauss",
-+ "grams" => "gram", "hectares" => "hectare", "hertzes" => "hertz",
-+ "hours" => "hour", "inchs" => "inch", "joules" => "joule",
-+ "kelvins" => "kelvin", "kilograms" => "kilogram", "knots" => "knot",
-+ "litres" => "litre", "meters" => "meter", "metres" => "metre",
-+ "microns" => "micron", "miles" => "mile", "millibars" => "millibar",
-+ "minutes" => "minute", "minutes_angle" => "minute_angle",
-+ "moles" => "mole", "months" => "month", "newtons" => "newton",
-+ "ounces" => "ounce", "parsecs" => "parsec", "pascals" => "pascal",
-+ "pentads" => "pentad", "poises" => "poise", "pounds" => "pound",
-+ "radians" => "radian", "seconds" => "second",
-+ "seconds_angle" => "second_angle", "steradians" => "steradian",
-+ "stokeses" => "stokes", "teslas" => "tesla", "tonnes" => "tonne",
-+ "tons" => "ton", "torrs" => "torr", "volts" => "volt",
-+ "watts" => "watt", "webers" => "weber", "yards" => "yard",
-+ "yds" => "yd", "years" => "year",
-+}
-+end
-+class NumberNode < TerminalNode
-+
-+ def initialize(arg)
-+ raise TypeError unless Numeric === arg
-+ @a = arg
-+ end
-+
-+ UNITY = NumberNode.new(1)
-+ ZERO = NumberNode.new(0)
-+
-+ def to_s
-+ if @a == @a.to_i
-+ sprintf("%d", at a)
-+ else
-+ String(@a)
-+ end
-+ end
-+
-+ attr_reader :a
-+
-+ alias :value :a
-+ alias :factor :a
-+
-+ def == (other)
-+ case other
-+ when NumberNode
-+ @a == other.a
-+ else
-+ false
-+ end
-+ end
-+
-+ def add_eval(another)
-+ raise TypeError unless NumberNode === another
-+ NumberNode.new(@a + another.value)
-+ end
-+
-+ def mul_eval(another)
-+ case another
-+ when NumberNode then NumberNode.new(@a * another.a)
-+ when PowNode
-+ raise TypeError unless NumberNode === another.lhs
-+ raise TypeError unless NumberNode === another.rhs
-+ NumberNode.new(@a * Units::pow_f(another.lhs.value, another.rhs.value))
-+ else raise TypeError
-+ end
-+ end
-+
-+ def name; "1"; end
-+
-+ def power; UNITY; end
-+
-+end
-+class XDate
-+
-+ def initialize(year, month, day)
-+ @year, @month, @day = year.to_i, month.to_i, day.to_i
-+ end
-+
-+ attr_reader :year, :month, :day
-+
-+ def to_s
-+ format('%04d-%02d-%02d', @year, @month, @day)
-+ end
-+
-+ alias :inspect :to_s
-+
-+ def to_time
-+ Time.gm(@year, @month, @day)
-+ end
-+
-+ def to_date
-+ Date.new(@year, @month, @day)
-+ end
-+
-+ def -(other)
-+ case other
-+ when XDate
-+ (to_date - other.to_date)
-+ when Time
-+ to_time - other
-+ when Date
-+ (to_date - other.to_date)
-+ else
-+ to_date - other
-+ end
-+ end
-+
-+ def +(other)
-+ t = to_date + other
-+ self.class.new(t.year, t.month, t.mday)
-+ end
-+
-+end
-+
-+class TimeNode < TerminalNode
-+
-+ def initialize(date, time, zone)
-+ @date, @time, @zone = date, time, zone
-+ if :now === @date then
-+ now = Time.now.utc
-+ @date = XDate.new(now.year, now.month, now.day)
-+ @time = ((now.hour * 60 + now.min) * 60 + Float(now.sec))
-+ else
-+ qdays = (@time / 86400).floor
-+ if not qdays.zero?
-+ @date += qdays
-+ @time -= (qdays * 86400)
-+ end
-+ end
-+ raise TypeError unless XDate === @date
-+ @time = 0.0 unless @time
-+ raise TypeError unless Float === @time
-+ @zone = 0 unless @zone
-+ raise TypeError unless Integer === @zone
-+ end
-+
-+ attr_reader :date, :time, :zone
-+
-+ def to_s
-+ hr = @time.floor / 3600
-+ mi = (@time.floor / 60) % 60
-+ sc = @time % 60
-+ tzm = @zone.abs
-+ tzh = tzm / 60
-+ tzm %= 60
-+ tzh = -tzh if @zone < 0
-+ format("%sT%02d:%02d:%05.2f %+03d:%02d", \
-+ @date.to_s, hr, mi, sc, tzh, tzm)
-+ end
-+
-+ def self::pentad(d)
-+ (d > 25) ? 5 : ((d - 1) / 5)
-+ end
-+
-+ def add_time(increment)
-+ inc = increment.reduce5
-+ case inc.name
-+ when 's'
-+ t2 = @time + inc.factor
-+ d2 = @date + (t2 / 86400)
-+ t2 = t2 % 86400
-+ self.class.new(d2, t2, @zone)
-+ when 'pentad'
-+ ifac = Integer(inc.factor)
-+ ipen = ifac % 6
-+ imon = ifac / 6
-+ spen = self.class.pentad(@date.day)
-+ smon = @date.month + imon + spen / 6
-+ spen = spen % 6
-+ sday = spen * 5 + (@date.day - 1) % 5 + 1
-+ syear = @date.year + (smon - 1) / 12
-+ smon = (smon - 1) % 12 + 1
-+ sdate = XDate.new(syear, smon, sday)
-+ self.class.new(sdate, @time, @zone)
-+ else
-+ raise "bad time unit '#{inc.name}'"
-+ end
-+ end
-+
-+ def utcsod
-+ @time - @zone * 60
-+ end
-+
-+ def div_time(units)
-+ base = units.ref
-+ inc = units.deref.reduce5
-+ begin
-+ incname = inc.name
-+ rescue Exception
-+ incname = "(undefined)"
-+ end
-+ case incname
-+ when 's'
-+ dif = (@date - base.date) * 86400 + (utcsod - base.utcsod)
-+ dif / inc.factor
-+ when 'pentad'
-+ dif = (@date.year - base.date.year) * 72
-+ dif += (@date.month - base.date.month) * 6
-+ dif += self.class.pentad(@date.day)
-+ dif -= self.class.pentad(base.date.day)
-+ dif = Float(dif) if dif % inc.factor != 0
-+ dif / inc.factor
-+ else
-+ raise "bad time unit '#{incname}'"
-+ end
-+ end
-+
-+end
-+class PowNode < ContainerNode
-+
-+ include BinaryNode
-+
-+ def initialize(lhs, rhs)
-+ @lhs, @rhs = lhs, rhs
-+ raise TypeError unless NumberNode === @rhs
-+ end
-+
-+ def to_s
-+ lhs = @lhs.to_s
-+ case lhs
-+ when /\d$/, /[\d\.]/
-+ lhs = "(#{lhs})"
-+ end
-+ rhs = @rhs.to_s
-+ if rhs == '1'
-+ lhs
-+ else
-+ rhs = "^(#{rhs})" if (/\./ =~ rhs)
-+ lhs + rhs
-+ end
-+ end
-+
-+ attr_reader :lhs, :rhs
-+ alias :power :rhs
-+
-+ def pow_eval(other)
-+ case other
-+ when NumberNode
-+ PowNode.new(@lhs, @rhs.mul_eval(other))
-+ else
-+ super(other)
-+ end
-+ end
-+
-+ def flatten2
-+ x = @lhs.flatten2
-+ case x
-+ when NumberNode
-+ a = @lhs.pow_eval(@rhs)
-+ when TerminalNode
-+ a = self
-+ when PowNode
-+ a = PowNode.new(x.lhs, x.rhs.mul_eval(@rhs))
-+ when MulNode, MultiNode
-+ a = MultiNode.new()
-+ for gc in x
-+ a.append(gc.pow_eval(@rhs))
-+ end
-+ else
-+ raise "internal error"
-+ end
-+ return a
-+ end
-+
-+ def name
-+ case @lhs
-+ when NumberNode, NameNode
-+ @lhs.name
-+ else
-+ raise "internal error"
-+ end
-+ end
-+
-+ def value
-+ case @lhs
-+ when NumberNode
-+ Units::pow_f(@lhs.value, @rhs.value)
-+ else
-+ raise(format('%s#value: internal error', self.class.to_s))
-+ end
-+ end
-+
-+ def mul_eval(another)
-+ raise "internal error (#{name}, #{another.name})" if name != another.name
-+ case @lhs
-+ when NumberNode
-+ NumberNode.new(Units::pow_f(@lhs.value, @rhs.value) * another.value)
-+ else
-+ self.class.new(@lhs, @rhs.add_eval(another.power))
-+ end
-+ end
-+
-+ def sort
-+ case @lhs
-+ when NumberNode
-+ NumberNode.new(Units::pow_f(@lhs.value, @rhs.value))
-+ else
-+ self
-+ end
-+ end
-+
-+ def factor
-+ Units::pow_f(@lhs.factor, @rhs.value)
-+ end
-+
-+end
-+
-+module Kakezan
-+
-+ def flatten2
-+ r = MultiNode.new()
-+ each do |child|
-+ case child
-+ when MultiNode
-+ r.append child
-+ when MulNode
-+ r.append child.flatten2
-+ when ContainerNode
-+ r.append child.flatten2
-+ else
-+ r.append child
-+ end
-+ end
-+ r
-+ end
-+
-+ def name
-+ n = nil
-+ for c in @children
-+ next if NumberNode === c
-+ na = c.name
-+ if n.nil?
-+ n = na
-+ else
-+ raise "multiple names found" if na != n
-+ end
-+ end
-+ n = "1" if n.nil?
-+ n
-+ end
-+
-+ def factor
-+ f = 1
-+ for c in @children
-+ f *= c.factor
-+ end
-+ f
-+ end
-+
-+end
-+
-+class MulNode < ContainerNode
-+
-+ include BinaryNode
-+ include Kakezan
-+
-+ def initialize(lhs, rhs)
-+ @lhs, @rhs = lhs, rhs
-+ end
-+
-+ def to_s
-+ lhs = @lhs.to_s
-+ rhs = @rhs.to_s
-+ if (/\d$/ =~ lhs && /^\w/ =~ rhs) then
-+ "#{lhs} #{rhs}"
-+ else
-+ "#{lhs}.#{rhs}"
-+ end
-+ end
-+
-+end
-+
-+class MultiNode < ContainerNode
-+
-+ include Kakezan
-+
-+ def initialize(*children)
-+ @children = children
-+ for c in @children
-+ raise "# MultiNode.new(#{children.inspect})" unless Node === c
-+ end
-+ end
-+
-+ def to_s
-+ s = @children.join(';')
-+ s.gsub(/\d;\w/) { |dsw| dsw.sub(/;/, ' ') }.gsub(/;/, '.')
-+ end
-+
-+ def each
-+ @children.each {|child| yield child }
-+ end
-+
-+ attr_reader :children
-+
-+ def append(other)
-+ case other
-+ when MultiNode
-+ @children += other.children
-+ else
-+ @children.push other
-+ end
-+ end
-+
-+ def sort
-+ table = {}
-+ for child in self
-+ name = child.name
-+ if (table.include?(name)) then
-+ table[name] = table[name].mul_eval(child)
-+ else
-+ table[name] = child
-+ end
-+ end
-+ list = []
-+ for name in table.keys.sort
-+ candi = table[name]
-+ if PowNode === candi and NumberNode === candi.lhs then
-+ v = candi.value
-+ list.push NumberNode.new(v) unless v == 1
-+ next
-+ end
-+ next if candi.power.value == 0
-+ list.push candi
-+ end
-+ if list.length > 1
-+ list.delete(NumberNode::UNITY)
-+ end
-+ self.class.new(*list)
-+ end
-+
-+ def collect_hash(stopper, op)
-+ list = []
-+ for child in self
-+ list.push(child.send(op, stopper))
-+ end
-+ self.class.new(*list).flatten2
-+ end
-+
-+ def expand(stopper)
-+ collect_hash(stopper, :expand)
-+ end
-+
-+ def unalias(stopper)
-+ collect_hash(stopper, :unalias)
-+ end
-+
-+ def foldnumber(stopper)
-+ collect_hash(stopper, :foldnumber)
-+ end
-+
-+ def value
-+ raise "this is dimensional units" if (@children.size > 1)
-+ @children.first ? @children.first.value : NumberNode::UNITY.value
-+ end
-+
-+end
-+class ShiftNode < ContainerNode
-+
-+ include BinaryNode
-+
-+ def initialize(lhs, rhs)
-+ @lhs, @rhs = lhs, rhs
-+ end
-+
-+ attr_reader :lhs, :rhs
-+ alias :ref :rhs
-+
-+ def to_s
-+ "(#{@lhs.to_s} @ #{@rhs.to_s})"
-+ end
-+
-+ def trim2; @lhs; end
-+ def trim
-+ self.class.new(@lhs.trim, @rhs.trim2)
-+ end
-+
-+ def flatten2; @lhs; end
-+ def flatten
-+ lf = @lhs.flatten
-+ case lf
-+ when ShiftNode
-+ rf = lf.rhs.add_eval(@rhs)
-+ self.class.new(lf.lhs, rf)
-+ else
-+ self.class.new(lf, @rhs.flatten)
-+ end
-+ end
-+
-+ def sort
-+ self.class.new(@lhs.sort, @rhs.sort)
-+ end
-+
-+ def ref
-+ case @lhs
-+ when ShiftNode
-+ @lhs.ref.add_eval(@rhs)
-+ else
-+ @rhs
-+ end
-+ end
-+
-+ def deref
-+ case @lhs
-+ when ShiftNode
-+ @lhs.deref
-+ else
-+ @lhs
-+ end
-+ end
-+
-+ def name
-+ @lhs.name
-+ end
-+
-+ def factor
-+ @lhs.factor
-+ end
-+
-+end
-+def initialize string
-+ case string
-+ when String
-+ @string, @ptree = string, nil
-+ when Node
-+ @string, @ptree = nil, string
-+ else
-+ @string, @ptree = String(string), nil
-+ end
-+ @copy = @lexstat = nil
-+end
-+
-+#
-+# === LEXICAL ANALYZER ===
-+#
-+
-+def rewind
-+ @copy = @string.dup.strip
-+ @lexstat = nil
-+end
-+
-+RE_SPACE = '([ \t])'
-+RE_INTEGER = '([-+]?\d+)'
-+RE_EXP = '([eE][-+]?[0-9]+)'
-+RE_REAL = "([-+]?[0-9]*(\\.[0-9]*#{RE_EXP}?|#{RE_EXP}))"
-+RE_YEAR = "([-+]?[0-9]{1,4})"
-+RE_MONTH = "(0?[1-9]|1[0-2])"
-+RE_DAY = "([12][0-9]|30|31|0?[1-9])"
-+RE_HOUR = "(2[0-3]|[0-1]?[0-9])"
-+RE_MINUTE = "([0-5]?[0-9])"
-+RE_SECOND = "((#{RE_MINUTE}|60)(\\.[0-9]*)?)"
-+RE_NAME = "(%|[a-zA-Z][a-zA-Z_]*([0-9]+[a-zA-Z_]+)*)"
-+
-+RE_DATE = "#{RE_YEAR}-#{RE_MONTH}-#{RE_DAY}"
-+RE_TIME = "#{RE_HOUR}((:[0-5]?[0-9]|[0-5][0-9])(:#{RE_SECOND})?)?"
-+RE_HandM = "#{RE_HOUR}((:[0-5]?[0-9]|[0-5][0-9]))?"
-+
-+def next_token
-+
-+ # decomment
-+ @copy.sub!(/^#.*/, '');
-+
-+ if @copy.sub!(%r{^\s*(\))}, '') then
-+ @lexstat = nil
-+ return [$1, $1]
-+ end
-+
-+ if @copy.sub!(%r{^\s*(\()\s*}, '') then
-+ return [$1, $1]
-+ end
-+
-+ if @copy.sub!(%r{^[ \t]*(@)[ \t]*}, '') \
-+ or @copy.sub!(%r{^[ \t]+(after|from|since|ref)[ \t]+}i, '') then
-+ @lexstat = :SHIFT_SEEN
-+ return [:SHIFT, $1]
-+ end
-+
-+ if @copy.sub!(%r{^[ \t]*(/)[ \t]*}, '') \
-+ or @copy.sub!(%r{^[ \t]+(per)[ \t]+}i, '') then
-+ @lexstat = nil
-+ return [:DIVIDE, $1]
-+ end
-+
-+ if @copy.sub!(%r{^(\^|\*\*)}, '') then
-+ @lexstat = nil
-+ return [:EXPONENT, $1]
-+ end
-+
-+ if @copy.sub!(%r{^(\.|\*|[ \t]+)}, '') then
-+ @lexstat = nil
-+ return [:MULTIPLY, $1]
-+ end
-+
-+ if :SHIFT_SEEN === @lexstat \
-+ and @copy.sub!(%r{^#{RE_DATE}T?[ \t]*}, '') then
-+ y, m, d = $1, $2, $3
-+ @lexstat = :DATE_SEEN
-+ return [:DATE, XDate.new(y.to_i, m.to_i, d.to_i)]
-+ end
-+
-+ if :SHIFT_SEEN === @lexstat \
-+ and @copy.sub!(%r{^now[ \t]*}, '') then
-+ @lexstat = nil
-+ return [:DATE, :now]
-+ end
-+
-+ if :DATE_SEEN === @lexstat \
-+ and @copy.sub!(%r{^#{RE_TIME}[ \t]*}, '') then
-+ h, m, s = $1, $3, $5
-+ m = m.sub(/:/,'') if m
-+ s = 0 if s.nil?
-+ @lexstat = :TIME_SEEN
-+ return [:TIME, ((h.to_i * 60 + m.to_i) * 60 + Float(s))]
-+ end
-+
-+ if :DATE_SEEN === @lexstat \
-+ and @copy.sub!(%r{^([0-2][0-9])([0-5][0-9])[ \t]*}, '') then
-+ h, m = $1, $2
-+ @lexstat = :TIME_SEEN
-+ return [:TIME, ((h.to_i * 60 + m.to_i) * 60.0)]
-+ end
-+
-+ if :DATE_SEEN === @lexstat \
-+ and @copy.sub!(%r{^([0-9])([0-5][0-9])[ \t]*}, '') then
-+ h, m = $1, $2
-+ @lexstat = :TIME_SEEN
-+ return [:TIME, ((h.to_i * 60 + m.to_i) * 60.0)]
-+ end
-+
-+ if :TIME_SEEN === @lexstat \
-+ and @copy.sub!(%r{^(UTC|Z)[ \t]*}, '') then
-+ @lexstat = nil
-+ return [:ZONE, 0]
-+ end
-+
-+ if :TIME_SEEN === @lexstat \
-+ and @copy.sub!(%r{^([-+]?)#{RE_HandM}[ \t]*}, '') then
-+ sgn, h, m = $1, $2, $4
-+ m = m.sub(/:/,'') if m
-+ @lexstat = nil
-+ h = h.to_i
-+ h = -h if sgn == "-"
-+ m = m.to_i
-+ m = -m if sgn == "-"
-+ return [:ZONE, ((h * 60) + m)]
-+ end
-+
-+ if @copy.sub!(%r{^#{RE_NAME}}, '') then
-+ @lexstat = nil
-+ return [:NAME, $1]
-+ end
-+
-+ if @copy.sub!(%r{^#{RE_REAL}}, '') then
-+ @lexstat = nil
-+ return [:REAL, $1.to_f]
-+ end
-+
-+ if @copy.sub!(%r{^#{RE_INTEGER}}, '') then
-+ @lexstat = nil
-+ return [:INT, $1.to_i]
-+ end
-+
-+ if @copy.sub!(%r{^(-)}, '') then
-+ @lexstat = nil
-+ return [:MULTIPLY, $1]
-+ end
-+
-+ if @copy.sub!(%r{^(.)}, '') then
-+ return [$1, $1]
-+ end
-+
-+ return [false, false]
-+
-+end
-+
-+#
-+# === USER LEVEL METHODS ===
-+#
-+
-+def tokens
-+ rewind
-+ x = []
-+ while (t = next_token).first
-+ x.push t
-+ end
-+ x
-+end
-+
-+def do_parse2
-+ rewind
-+ return NumberNode.new(1) if @string.nil? or @string.empty?
-+ pa = do_parse
-+ pa ? pa : ErrorNode.new(@string)
-+end
-+
-+def ptree
-+ @ptree = do_parse2 if not @ptree
-+ @ptree
-+end
-+
-+def dup
-+ @string ? self.class.new(@string) : self.class.new(@ptree)
-+end
-+
-+def parse
-+ dup.parse!
-+end
-+
-+def parse!
-+ @ptree = do_parse2 if not @ptree
-+ self
-+end
-+
-+def self::parse(string)
-+ new(string).parse!
-+end
-+
-+=begin
-+--- reduce0
-+ just do nothing.
-+=end
-+
-+def reduce0
-+ self
-+end
-+
-+=begin
-+--- reduce1
-+ removes unnecessary parentheses.
-+=end
-+
-+def reduce1
-+ @string = ptree.to_s
-+ self
-+end
-+
-+=begin
-+--- reduce2
-+ removes shift operator within multiplication/division/exponent
-+=end
-+
-+def reduce2
-+ @ptree = ptree.reduce2
-+ @string = nil
-+ self
-+end
-+
-+=begin
-+--- reduce3
-+ flattens expression and collects all factors
-+=end
-+
-+def reduce3
-+ @ptree = ptree.reduce3
-+ @string = nil
-+ self
-+end
-+
-+=begin
-+--- reduce4
-+ collects terms with the same name
-+=end
-+
-+def reduce4
-+ @ptree = ptree.reduce4
-+ @string = nil
-+ self
-+end
-+
-+=begin
-+--- reduce5
-+ expands all terms recursively
-+=end
-+
-+def reduce5
-+ @ptree = ptree.reduce5
-+ @string = nil
-+ self
-+end
-+
-+attr_reader :string
-+
-+def to_s
-+ @string = @ptree.to_s if @string.nil?
-+ @string
-+end
-+
-+def inspect
-+ if @ptree.nil? then
-+ "Units{#{@string}}"
-+ else
-+ "Units[#{@ptree.inspect}]".gsub(/Units::/, '').gsub(/Node\[/, '[')
-+ end
-+end
-+
-+def self::[](string)
-+ new(string)
-+end
-+
-+def self::parse(string)
-+ new(string).parse!
-+end
-+
-+def eval(x = 0)
-+ r5 = ptree.reduce5
-+ case r = r5.ref
-+ when TimeNode
-+ r.add(x, r5.name)
-+ else
-+ fac = NumberNode.new(x + r.value)
-+ self.class.new(MulNode.new(fac, r5.deref))
-+ end
-+end
-+
-+def convert(numeric, to_units)
-+ to_units = Units.new( to_units ) if to_units.is_a?(String)
-+ r5 = dup.ptree.reduce5
-+ case r = r5.ref
-+ when TimeNode
-+ r.add_time(r5.deref.mul(numeric)).div_time(to_units.ptree)
-+ else
-+ shift1 = r.value
-+ numeric = shift1 + numeric if shift1 != 0
-+ fact = r5.divide(tp = to_units.dup.ptree).reduce5.value
-+ numeric *= fact if fact != 1
-+ shift2 = tp.reduce5.ref.value
-+ numeric = numeric - shift2 if shift2 != 0
-+ numeric
-+ end
-+end
-+
-+def factor_and_offset(to_units)
-+ # To convert a numeric from self to to_units:
-+ # scale_factor * numeric + add_offset
-+ to_units = Units.new( to_units ) if to_units.is_a?(String)
-+ add_offset = convert(0, to_units)
-+ scale_factor = convert(1, to_units) - add_offset
-+ [ scale_factor, add_offset ]
-+end
-+
-+def convert2(val, to_units)
-+ # Like Units#convert, but applicable to any Numeric-like objects.
-+ # Returns the original value if the units are incompatible.
-+ to_units = Units.new( to_units ) if to_units.is_a?(String)
-+ if ( self == to_units )
-+ val
-+ elsif ( self =~ to_units )
-+ if Numeric===val
-+ convert( val, to_units )
-+ else
-+ factor, offset = factor_and_offset( to_units )
-+ val*factor + offset
-+ end
-+ else
-+ unless $VERBOSE.nil?
-+ $stderr.print( "*WARNING*: " +
-+ "incompatible units: #{self.to_s} and #{to_units.to_s}\n")
-+ caller(0).each{|c| $stderr.print "\t* ",c,"\n"}
-+ end
-+ val
-+ end
-+end
-+
-+@@reduce = :reduce4
-+
-+def self::reduce_level
-+ @@reduce.to_s[-1]
-+end
-+
-+def self::reduce_level=(n)
-+ @@reduce = case n
-+ when 1 then :reduce1
-+ when 2 then :reduce2
-+ when 3 then :reduce3
-+ when 4 then :reduce4
-+ else :reduce5
-+ end
-+end
-+
-+def binop(op, other)
-+ case other
-+ when Numeric
-+ other = NumberNode.new(other)
-+ when Units
-+ other = other.ptree
-+ end
-+ q = self.ptree.send(op, other).send(@@reduce)
-+ Units.new(q)
-+end
-+
-+def *(other)
-+ binop(:mul, other)
-+end
-+
-+def **(other)
-+ binop(:pow, other)
-+end
-+
-+def /(other)
-+ binop(:divide, other)
-+end
-+
-+def ^(other)
-+ binop(:shift, other)
-+end
-+
-+def ==(other)
-+ case other
-+ when self.class
-+ dup.reduce5.to_s == other.dup.reduce5.to_s
-+ else
-+ false
-+ end
-+end
-+
-+#def === (other)
-+# reduce5.ptree.deref.to_s == other.reduce5.ptree.deref.to_s
-+#end
-+
-+alias === ==
-+
-+#def === (other)
-+# # returns true if other is within a factor and/or offset of difference.
-+# case other
-+# when self.class
-+# (self/other).reduce5.ptree.children.each do |child|
-+# return false if !( NumberNode === child )
-+# end
-+# true
-+# else
-+# false
-+# end
-+#end
-+
-+
-+def =~(other)
-+ case other
-+ when self.class
-+ (self/other).reduce5.ptree.children.each{ |node|
-+ return false unless NumberNode === node
-+ }
-+ true
-+ else
-+ false
-+ end
-+end
-+
-+def self::pow_f(a, b)
-+ if Integer === b and b < 0 then
-+ a ** b.to_f
-+ else
-+ a ** b
-+ end
-+end
-+...end units.racc/module_eval...
-+##### State transition tables begin ###
-+
-+racc_action_table = [
-+ 3, 9, 35, 9, 32, 9, 19, 11, 10, 7,
-+ 10, 9, 10, 8, 25, 31, 36, 23, 10, 7,
-+ 9, 37, 9, 8, 9, 38, nil, 10, 7, 10,
-+ 7, 10, 8, 25, 8, 9, 23, nil, 12, 9,
-+ 14, 15, 10, 9, 7, 17, 10, 31, 8, 17,
-+ 10, 9, nil, 9, nil, nil, nil, 17, 10, 17,
-+ 10 ]
-+
-+racc_action_check = [
-+ 0, 0, 25, 31, 18, 23, 11, 1, 0, 0,
-+ 31, 14, 23, 0, 23, 31, 33, 23, 14, 14,
-+ 8, 34, 15, 14, 12, 35, nil, 8, 8, 15,
-+ 15, 12, 8, 12, 15, 17, 12, nil, 4, 5,
-+ 4, 4, 17, 28, 4, 5, 5, 17, 4, 28,
-+ 28, 13, nil, 26, nil, nil, nil, 13, 13, 26,
-+ 26 ]
-+
-+racc_action_pointer = [
-+ -1, 7, nil, nil, 34, 37, nil, nil, 18, nil,
-+ nil, 6, 22, 49, 9, 20, nil, 33, -11, nil,
-+ nil, nil, nil, 3, nil, -10, 51, nil, 41, nil,
-+ nil, 1, nil, 1, 6, 12, nil, nil, nil ]
-+
-+racc_action_default = [
-+ -1, -27, -2, -3, -4, -7, -8, -14, -27, -20,
-+ -21, -27, -27, -9, -27, -27, -15, -27, -27, 39,
-+ -5, -6, -18, -27, -22, -24, -10, -12, -11, -13,
-+ -16, -27, -17, -27, -27, -25, -19, -23, -26 ]
-+
-+racc_goto_table = [
-+ 6, 20, 21, 2, 1, nil, 30, nil, 6, 13,
-+ nil, 18, 22, 34, 27, 29, nil, 22, nil, 26,
-+ 28, nil, nil, 22, nil, nil, nil, nil, nil, nil,
-+ nil, 22 ]
-+
-+racc_goto_check = [
-+ 7, 4, 5, 2, 1, nil, 4, nil, 7, 6,
-+ nil, 2, 7, 5, 7, 7, nil, 7, nil, 6,
-+ 6, nil, nil, 7, nil, nil, nil, nil, nil, nil,
-+ nil, 7 ]
-+
-+racc_goto_pointer = [
-+ nil, 4, 3, nil, -11, -10, 5, 0, nil ]
-+
-+racc_goto_default = [
-+ nil, nil, nil, 4, 33, nil, 5, 16, 24 ]
-+
-+racc_reduce_table = [
-+ 0, 0, :racc_error,
-+ 0, 17, :_reduce_none,
-+ 1, 17, :_reduce_2,
-+ 1, 17, :_reduce_3,
-+ 1, 18, :_reduce_none,
-+ 3, 18, :_reduce_5,
-+ 3, 18, :_reduce_6,
-+ 1, 19, :_reduce_none,
-+ 1, 19, :_reduce_none,
-+ 2, 19, :_reduce_9,
-+ 3, 19, :_reduce_10,
-+ 3, 19, :_reduce_11,
-+ 3, 19, :_reduce_12,
-+ 3, 19, :_reduce_13,
-+ 1, 22, :_reduce_14,
-+ 2, 22, :_reduce_15,
-+ 3, 22, :_reduce_16,
-+ 3, 22, :_reduce_17,
-+ 1, 20, :_reduce_none,
-+ 3, 20, :_reduce_19,
-+ 1, 23, :_reduce_20,
-+ 1, 23, :_reduce_21,
-+ 1, 21, :_reduce_none,
-+ 3, 21, :_reduce_23,
-+ 1, 24, :_reduce_24,
-+ 2, 24, :_reduce_25,
-+ 3, 24, :_reduce_26 ]
-+
-+racc_reduce_n = 27
-+
-+racc_shift_n = 39
-+
-+racc_token_table = {
-+ false => 0,
-+ :error => 1,
-+ :INT => 2,
-+ :ERR => 3,
-+ :SHIFT => 4,
-+ :SPACE => 5,
-+ :MULTIPLY => 6,
-+ :DIVIDE => 7,
-+ :EXPONENT => 8,
-+ :REAL => 9,
-+ :NAME => 10,
-+ :DATE => 11,
-+ :TIME => 12,
-+ :ZONE => 13,
-+ "(" => 14,
-+ ")" => 15 }
-+
-+racc_nt_base = 16
-+
-+racc_use_result_var = false
-+
-+Racc_arg = [
-+ racc_action_table,
-+ racc_action_check,
-+ racc_action_default,
-+ racc_action_pointer,
-+ racc_goto_table,
-+ racc_goto_check,
-+ racc_goto_default,
-+ racc_goto_pointer,
-+ racc_nt_base,
-+ racc_reduce_table,
-+ racc_token_table,
-+ racc_shift_n,
-+ racc_reduce_n,
-+ racc_use_result_var ]
-+
-+Racc_token_to_s_table = [
-+ "$end",
-+ "error",
-+ "INT",
-+ "ERR",
-+ "SHIFT",
-+ "SPACE",
-+ "MULTIPLY",
-+ "DIVIDE",
-+ "EXPONENT",
-+ "REAL",
-+ "NAME",
-+ "DATE",
-+ "TIME",
-+ "ZONE",
-+ "\"(\"",
-+ "\")\"",
-+ "$start",
-+ "unit_spec",
-+ "origin_exp",
-+ "unit_exp",
-+ "value_exp",
-+ "timestamp",
-+ "power_exp",
-+ "number_exp",
-+ "time_exp" ]
-+
-+Racc_debug_parser = false
-+
-+##### State transition tables end #####
-+
-+# reduce 0 omitted
-+
-+# reduce 1 omitted
-+
-+module_eval(<<'.,.,', 'units.racc', 9)
-+ def _reduce_2(val, _values)
-+ val[0]
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 10)
-+ def _reduce_3(val, _values)
-+ yyerrok
-+ end
-+.,.,
-+
-+# reduce 4 omitted
-+
-+module_eval(<<'.,.,', 'units.racc', 15)
-+ def _reduce_5(val, _values)
-+ val[0].shift(val[2])
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 16)
-+ def _reduce_6(val, _values)
-+ val[0].shift(val[2])
-+ end
-+.,.,
-+
-+# reduce 7 omitted
-+
-+# reduce 8 omitted
-+
-+module_eval(<<'.,.,', 'units.racc', 22)
-+ def _reduce_9(val, _values)
-+ val[0].mul(val[1])
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 23)
-+ def _reduce_10(val, _values)
-+ val[0].mul(val[2])
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 24)
-+ def _reduce_11(val, _values)
-+ val[0].divide(val[2])
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 25)
-+ def _reduce_12(val, _values)
-+ val[0].mul(val[2])
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 26)
-+ def _reduce_13(val, _values)
-+ val[0].divide(val[2])
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 30)
-+ def _reduce_14(val, _values)
-+ NameNode.new(val[0])
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 31)
-+ def _reduce_15(val, _values)
-+ val[0].pow(val[1])
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 32)
-+ def _reduce_16(val, _values)
-+ val[0].pow(val[2])
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 33)
-+ def _reduce_17(val, _values)
-+ val[1]
-+ end
-+.,.,
-+
-+# reduce 18 omitted
-+
-+module_eval(<<'.,.,', 'units.racc', 38)
-+ def _reduce_19(val, _values)
-+ val[1]
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 42)
-+ def _reduce_20(val, _values)
-+ NumberNode.new(val[0])
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 43)
-+ def _reduce_21(val, _values)
-+ NumberNode.new(val[0])
-+ end
-+.,.,
-+
-+# reduce 22 omitted
-+
-+module_eval(<<'.,.,', 'units.racc', 48)
-+ def _reduce_23(val, _values)
-+ val[1]
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 52)
-+ def _reduce_24(val, _values)
-+ TimeNode.new(val[0], 0.0, 0)
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 53)
-+ def _reduce_25(val, _values)
-+ TimeNode.new(val[0], val[1], 0)
-+ end
-+.,.,
-+
-+module_eval(<<'.,.,', 'units.racc', 54)
-+ def _reduce_26(val, _values)
-+ TimeNode.new(val[0], val[1], val[2])
-+ end
-+.,.,
-+
-+def _reduce_none(val, _values)
-+ val[0]
-+end
-+
-+ end # class Units
-+ end # module NumRu
-+
-+####################
-+if $0 == __FILE__
-+ include NumRu
-+
-+ def assert(test, seikai)
-+ raise "#{test.inspect} != #{seikai.inspect}" if test != seikai
-+ puts "ok #{seikai.inspect}"
-+ end
-+
-+ puts "=== reduce1 ==="
-+
-+ assert Units.new('').reduce1.to_s, "1"
-+ assert Units.new('m').reduce1.to_s, "m"
-+ assert Units.new('3').reduce1.to_s, "3"
-+ assert Units.new('3.14').reduce1.to_s, "3.14"
-+ assert Units.new('m2').reduce1.to_s, "m2"
-+ assert Units.new('m.s').reduce1.to_s, "m.s"
-+ assert Units.new('m/s').reduce1.to_s, "m.s-1"
-+ assert Units.new('kg.m/s2').reduce1.to_s, "kg.m.(s2)-1"
-+ assert Units.new('s @ 2003-11-29').reduce1.to_s,
-+ "(s @ 2003-11-29T00:00:00.00 +00:00)"
-+ assert Units.new('s @ 2003-11-29T11:24').reduce1.to_s,
-+ "(s @ 2003-11-29T11:24:00.00 +00:00)"
-+ assert Units.new('s @ 2003-11-29T11:24:11 -09:00').reduce1.to_s,
-+ "(s @ 2003-11-29T11:24:11.00 -09:00)"
-+
-+ assert Units.new('100').reduce1.to_s, "100"
-+ assert Units.new('(10)^2').reduce1.to_s, "(10)2"
-+ assert Units.new('(10)^2/100').reduce1.to_s, "(10)2.(100)-1"
-+
-+ puts "=== reduce2 ==="
-+
-+ assert Units.new('s @ 2003-11-29').reduce2.to_s,
-+ "(s @ 2003-11-29T00:00:00.00 +00:00)"
-+ assert Units.new('m/(s @ 2003-11-29)').reduce2.to_s, "m.s-1"
-+ assert Units.new('m/((K @ 273.15) (s from 2003-11-29))').reduce2.to_s, "m.(K.s)-1"
-+
-+ assert Units.new('(10)^2/100').reduce2.to_s, "(10)2.(100)-1"
-+
-+ puts "=== reduce3 ==="
-+
-+ assert Units::MultiNode.new(Units::NameNode.new('a'), \
-+ Units::NumberNode.new(1), \
-+ Units::NameNode.new('b')).to_s, 'a.1 b'
-+
-+ assert Units.new('kg').reduce3.inspect, "Units[Name[kg]]"
-+ assert Units.new('kg.m').reduce3.inspect, "Units[Multi[Name[kg], Name[m]]]"
-+ assert Units.new('kg.m.s').reduce3.inspect,
-+ "Units[Multi[Name[kg], Name[m], Name[s]]]"
-+
-+ assert Units.new('(m.s)^2').reduce3.inspect,
-+ "Units[Multi[Pow[Name[m], Number[2]], Pow[Name[s], Number[2]]]]"
-+ assert Units.new('K @ 273.15').reduce3.inspect,
-+ "Units[Shift[Name[K], Number[273.15]]]"
-+ assert Units.new('((a.b)^2)^2').reduce3.inspect,
-+ "Units[Multi[Pow[Name[a], Number[4]], Pow[Name[b], Number[4]]]]"
-+ assert Units.new('((a.b)^2 c4 d)^2').reduce3.inspect,
-+ "Units[Multi[Pow[Name[a], Number[4]], Pow[Name[b], Number[4]], Pow[Name[c], Number[8]], Pow[Name[d], Number[2]]]]"
-+ assert Units.new('((a.b)^2 c4 d)^2').reduce3.to_s,
-+ "a4 b4 c8 d2"
-+ assert Units.new('((a.b)^2 a4 b)^2').reduce3.to_s,
-+ "a4 b4 a8 b2"
-+
-+ assert Units.new('s @ 2003-11-29').reduce3.to_s,
-+ "(s @ 2003-11-29T00:00:00.00 +00:00)"
-+ assert Units.new('m/(s @ 2003-11-29)').reduce3.to_s, "m.s-1"
-+ assert Units.new('m/((K @ 273.15) (s from 2003-11-29))').reduce3.to_s, "m.K-1 s-1"
-+
-+ assert Units.new('(10)^2/100').reduce3.to_s, "(10)2.(100)-1"
-+
-+ puts "=== reduce4 ==="
-+
-+ assert Units.new('((a.b)^2 a4 b @ now)^2 @ 273.15').reduce4.to_s,
-+ "(a12 b6 @ 273.15)"
-+
-+ assert Units.new('km2').reduce4.to_s, "km2"
-+ assert Units.new('hours.hour').reduce4.to_s, "hour2"
-+ assert Units.new('(10)^2').reduce4.to_s, "100"
-+ assert Units.new('100/10').reduce4.to_s, "10"
-+ assert Units.new('(10)^2/100').reduce4.to_s, "1"
-+
-+ puts "=== reduce5 ==="
-+
-+ assert Units.new('km2').reduce5.to_s, "1000000 m2"
-+ assert Units.new('(10)^2/100').reduce5.to_s, "1"
-+
-+ assert Units.new('hPa').reduce5.to_s, "100 kg.m-1 s-2"
-+ assert Units.new('mb').reduce5.to_s, "100 kg.m-1 s-2"
-+
-+ assert Units.new('hPa/mb').reduce5.to_s, "1"
-+
-+ assert Units.new('(K @ 273.15)@ 10').reduce5.to_s, "(K @ 283.15)"
-+
-+ puts "=== APPLICATIONS ==="
-+
-+ assert Units.new('km @ 2').convert(3, Units.new('m @ 100')), 4900
-+ assert Units.new('degree_F').convert(32, Units.new('K')).to_s, ((32+459.67)*(1.8**-1)).to_s
-+
-+ u1 = Units.new('m/s')
-+ u2 = Units.new('mm/s')
-+ assert((u1/u2).to_s, "m.mm-1")
-+ assert((u1*u2).to_s, "m.mm.s-2")
-+
-+ u1 = Units.new('years since 1999-01-01 00:00').reduce4
-+ u2 = Units.new('hours since 2001-01-01 00:00').reduce4
-+ assert u1.convert(3, u2), 24 * 365
-+ u3 = Units.new('months since 2001-01-01 00:00').reduce4
-+ assert u1.convert(3, u3), 12.0
-+
-+ Units.reduce_level = 3
-+ assert((Units.new('hours') ** 2).to_s, "hours2")
-+ Units.reduce_level = 4
-+ assert((Units.new('hours') ** 2).to_s, "hour2")
-+ Units.reduce_level = 5
-+ assert((Units.new('hours') ** 2).to_s, "12960000 s2")
-+
-+ assert(Units.new('day') =~ Units.new('s since 2002-01-01'), true)
-+ assert(Units.new('m') =~ Units.new('1'), false)
-+
-+ un1 = Units['day since 2000-01-01']
-+ un2 = Units['s since 2000-01-01']
-+ assert(un1.convert(0, un2), 0.0)
-+ assert(un1.convert(1, un2), 86400.0)
-+end
---- /dev/null
-+++ b/lib/numru/units/version.rb
-@@ -0,0 +1,5 @@
-+module Numru
-+ module Units
-+ VERSION = "1.9.0"
-+ end
-+end
---- /dev/null
-+++ b/numru-units.gemspec
-@@ -0,0 +1,25 @@
-+# coding: utf-8
-+lib = File.expand_path('../lib', __FILE__)
-+$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
-+require 'numru/units/version'
-+
-+Gem::Specification.new do |spec|
-+ spec.name = "numru-units"
-+ spec.version = Numru::Units::VERSION
-+ spec.authors = ["Eizi Toyoda","Takeshi Horinouchi"]
-+ spec.email = ["eriko at gfd-dennou.org"]
-+ spec.summary = %q{Class to handle units of physical quantities}
-+ spec.description = %q{This is a class to handle units of physical quantities. It covers most functionality of UNIDATA's UDUNITS Library, however, with a more sophisticated handling of string expressions. See the documentation for more infomation.}
-+ spec.homepage = 'http://www.gfd-dennou.org/arch/ruby/products/numru-units/'
-+ spec.licenses = ["Takeshi Horinouchi", "GFD Dennou Club"]
-+
-+ spec.files = ["ChangeLog","LICENSE.txt","Makefile","doc/Makefile","doc/units.html","doc/units.rd","install.rb","lib/numru/units.rb","src/Makefile","src/dcunits.txt","src/lex.rb","src/makeutab.rb","src/mulnode.rb","src/namenode.rb","src/node.rb","src/numbernode.rb","src/pownode.rb","src/rules.rb","src/shiftnode.rb","src/test.rb","src/timenode.rb","src/units.racc","src/units.rb","src/units.rd","src/utab.rb","src/version.rb"]
-+ #spec.extra_rdoc_files = ['./doc/units.rd']
-+ #spec.extra_rdoc_files = spec.files.grep(%r{^(doc)/})
-+ #spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
-+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
-+ spec.require_paths = ["lib"]
-+
-+ #spec.add_development_dependency "bundler", "~> 1.7"
-+ #spec.add_development_dependency "rake", "~> 10.0"
-+end
diff --git a/debian/patches/series b/debian/patches/series
index 3d6dc02..8944b92 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1 @@
0001-Fix-LOADPATH-for-execute-test.rb.patch
-0002-Import-upstream-gemspec.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-numru-units.git
More information about the Pkg-ruby-extras-commits
mailing list