pax_global_header 0000666 0000000 0000000 00000000064 12272744673 0014530 g ustar 00root root 0000000 0000000 52 comment=a38e7a0f2145211a28b8500a74dadf2139caaf05
ruby-numru-units-1.7/ 0000775 0000000 0000000 00000000000 12272744673 0014664 5 ustar 00root root 0000000 0000000 ruby-numru-units-1.7/ChangeLog 0000664 0000000 0000000 00000012003 12272744673 0016432 0 ustar 00root root 0000000 0000000 Thu Aug 4 2011 T Horinouchi
* version 1.7 released ((cvs) tag: numru-units-1_7)
* LICENSE.txt: added (BSD 2-clause)
* doc/units.rd, doc/units.html: updated (added entry to dcunits.txt)
Wed Aug 3 2011 T Horinouchi
* mulnode.rb: to_s changed to explicitly handle a Float
whose value is an integer.
* Makefile: adopet to the change in the "tail" command
(tail +2 --> tail -n +2).
Mon Mar 15 2010 T Horinouchi
* version 1.6 released ((cvs) tag: numru-units-1_6)
Fri May 23 2008 T Horinouchi
* dcunits.txt: added the following units: percent [S], % [S],
permil [S], centigrade [P], millibar [P]
* rules.rb: changed not to accept empty unit_spec
* lex.rb:
* method do_parse2: to treat empty string units '' as '1'
(to return NumberNode.new(1) instead of ErrorNode.new(''))
Fri Feb 8 2008 T Koshiro
* lex.rb: next_token: at least one space or tab character is required
before/after 'per', 'after', 'from', 'since', 'ref'
Wed Aug 24 2005 T Horinouchi
* version 1.5 released ((cvs) tag: numru-units-1_5)
Wed Jun 8 2005 T Horinouchi
* lex.rb:
* debug in RE_SECOND
* debug in time zone parser (many bugs)
* improvement in time parser RE_TIME to support hhmm type
in addition to [h]h:[m]m
* timenode.rb:
* TimeNode#utcsod : debug in time zone treatment
(IT WAS A FATAL BUG!!)
* TimeNode#to_s : debug in the expression of seconds (not to
take the floor of seconds).
Wed May 25 2005 T Horinouchi
* version 1.4 released ((cvs) tag: numru-units-1_4)
* lex.rb: debug in RE_HOUR. It did not handle hours after 20 properly.
Mon Nov 29 2004 T Horinouchi
* timenode.rb: class XDate: added to_date (for intenal usage), and
modified +(ohter) and -(ohter) methods to use it as long as possible.
This is to widen the coverage of time -- up to now, only very
recent years (such as AD19xx-20xx) are accpeted, since the
Time intrincic class is always used.
Tue Nov 9 2004 T Horinouchi
* lex.rb: Units#convert2: changed warning messaging to show backtrace
Sun Aug 10 2004 T Horinouchi
* lex.rb: lex.rb Units#convert, Units#==: debug not to change
(reduce5) self and input units.
Sun Aug 8 2004 T Horinouchi
* version 1.3 released
* mulnode.rb: improved Multi#sort: to eliminate Number[1] if
length >= 2. Then, Units.new('1m').reduce5.to_s gives 'm';
it used to give '1 m'.
* numbernode.rb: defined == (to compare by values -- implicitly
used in the new Multi#sort)
* dcunits.txt: added some units from udunits: Pascal, deg[KF],
deg_[CFK], degree[CFK], [Cc]elcius, angular_(degree|minute|secont),
[Ff]ahrenheit, farad, gravity, conventional_mercury, mercury,
Hg, hg, Julian_year, common_year, tesla
* lex.rb: debug === (aliased to ==. The change on May 4 was enbug).
debug =~: to handle other classes (return false)
Tue May 4 2004 T Horinouchi
* pownode.rb: PowNode#to_s: if the expopnent is 1, omit it.
* lex.rb: debug === (to allow a difference of a factor and/or offset)
Sun May 2 2004 T Horinouchi
* dcunits.txt: added degree_east/degrees_east etc.
Sun Mar 21 2004 T Horinouchi
* version 1.2 released ((cvs) tag: numru-units-1_2)
Fri Mar 19 2004 T Horinouchi
* mulnode.rb: MutiNode#value: to return 1 if @children.size == 0
* dcunits.txt: added degC
* lex.rb: convert2: warn if $VERBOSE --> warn regardress $VERBOSE
Mon Mar 1 2004 T Horinouchi
* version 1.1 released ((cvs) tag: numru-units-1_1)
Mon Mar 1 2004 E Toyoda
* test.rb: revised due to the change of reduce4; updated
* timenode.rb debugged (Unexpected generation of Float by Date#-
is avoided using Date-like wrapper to Time.)
* node.rb: unalias (such as "kilometer" -> "10^3 m") will not
occur at reduce4. (plurals still recognized in reduce4)
* namenode.rb,numbernode.rb: unused methods "nameable?" removed
* makeutab.rb: Bugfix: units like "second" or "metre" were not
unaliased to its primary name (such as "s" or "m") due to
improper parsing of dcunits.txt.
Sun Feb 29 2004 E Toyoda (Commited by T Horinouchi)
* makeutab.rb: debug plural treatment (/y$/ -> /[^aeou]y$/)
Fri Feb 27 2004 T Horinouchi
* src/lex.rb: added Units#convert2 (similar to Units#convert but
more suitable for UNumeric constraction).
debug in =~
* test.rb: added a test of =~
Thu Feb 26 2004 T Horinouchi
* src/lex.rb: added Units#factor_and_offset
* doc/units.rd: updated
Wed Feb 25 2004 T Horinouchi
* src/Makefile: add -l option to racc -- not to convert line #s
for better readability of exception messages
* Makefile: (very minor) cp --> cp -p
Tue Feb 24 2004 T Horinouchi
* version 1.0 released
* packaging for distribution
* put Units into the NumRu module ( --> class NumRu::Units )
* cvs version control started (CVSROOT=
dennou-k.gfd-dennou.org:/GFD_Dennou_Club/ftp/arch/ruby/cvsroot
project name: numru-units)
Fri Feb 6 2004 TOYODA Eizi (log written by T Horinouchi 2004/03/24)
* revised
Fri Nov 7 2003 TOYODA Eizi (log written by T Horinouchi 2004/03/24)
* revized
Fri Oct 24 2003(or before) TOYODA Eizi(log written by T Horinouchi 2004/03/24)
* created
ruby-numru-units-1.7/LICENSE.txt 0000664 0000000 0000000 00000003264 12272744673 0016514 0 ustar 00root root 0000000 0000000 NumRu::Units is copyrighted free software by Takeshi Horinouchi and
GFD Dennou Club (http://www.gfd-dennou.org/).
Copyright 2011 (C) Takeshi Horinouchi and GFD Dennou Club
(http://www.gfd-dennou.org/) All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY GFD DENNOU CLUB AND CONTRIBUTORS ``AS IS''
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GFD DENNOU CLUB OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The views and conclusions contained in the software and documentation
are those of the authors and should not be interpreted as representing
official policies, either expressed or implied, of Takeshi Horinouchi
and GFD Dennou Club.
ruby-numru-units-1.7/Makefile 0000664 0000000 0000000 00000000302 12272744673 0016317 0 ustar 00root root 0000000 0000000 all:
@(cd src && make && cp -p units.rb ../lib/numru/)
@(cd doc && make)
install:
ruby install.rb
test:
@(cd src && make test)
distclean: clean
clean:
@rm -f `find . -name "*~" -print`
ruby-numru-units-1.7/doc/ 0000775 0000000 0000000 00000000000 12272744673 0015431 5 ustar 00root root 0000000 0000000 ruby-numru-units-1.7/doc/Makefile 0000664 0000000 0000000 00000000206 12272744673 0017067 0 ustar 00root root 0000000 0000000 all: units.html
units.html: units.rd
rd2 units.rd | sed -e 's/
//' -e 's/<\/dt>/<\/h4><\/dt>/' \
> units.html
ruby-numru-units-1.7/doc/units.html 0000664 0000000 0000000 00000022043 12272744673 0017462 0 ustar 00root root 0000000 0000000
units.rd
A class of units of physical quantities.
This class covers most functionality of UNIDATA's
UDUNITS Library,
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.
Move to the top directly of this library (where you find
the file install.rb). Then, type in the following:
% ruby install.rb
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
In what follows, the prefix NumRu:: is omitted for conciseness.
See Usage Examples on this issue.
-
Constructor.
ARGUMENTS
- string (String): string expression of the units.
[factor] units; [factor] time units [since ...] (see EXAMPLES below)
RETURN VALUE
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')
-
Same as Units.new
-
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.
-
Returns a string expression of the units.
-
Multiplies self with another units.
Applies reduce4 to format the string expression of the result.
ARGUMENTS
- other [Units]: the other units
RETURN VALUE
-
Divides self with another units.
Applies reduce4 to format the string expression of the result.
ARGUMENTS
- other [Units]: the other units
RETURN VALUE
-
Power.
Applies reduce4 to format the string expression of the result.
ARGUMENTS
- pow [Numeric -- Integer, Rational, or Float]
RETURN VALUE
-
Whether the two units are the same.
('m/s' and 'm.s-1' are the same, for instance.)
-
Same as ==.
-
Whether the two units are compatible (i.e., with the same dimensionality).
('m/s' and '10 m.s-1' are compatible, for instance.)
-
Moderately reduces the string expression of the units (destructive method).
This method preserves string expression of atomic units.
See also reduce5.
RETURN VALUE
EXAMPLE
Untis.new('hour/hour').reduce4.to_s
# => "1"
Units.new('mm/m').reduce4.to_s
# => "mm.m-1"
-
Aggressively reduces the string expression of the units (destructive method).
See also reduce4.
RETURN VALUE
EXAMPLE
Units.new('hour/hour').reduce4.to_s
# => "1"
Units.new('mm/m').reduce5.to_s
# => "0.001"
-
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
EXCEPTIONS
- self and to_units are incompatible.
-
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.
-
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
ruby-numru-units-1.7/doc/units.rd 0000664 0000000 0000000 00000014075 12272744673 0017131 0 ustar 00root root 0000000 0000000 =begin
=class NumRu::Units
* (())
* (())
* (())
* (())
* (())
* (()) (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
(()),
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 (()) 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.reduce_level=(n)
Set the reduction level before (()) 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 (()) 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 (()) to format the string expression of the result.
ARGUMENTS
* other [Units]: the other units
RETURN VALUE
* a Units
---**(pow)
Power.
Applies (()) 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 (()).
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 (()).
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 (()), 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
ruby-numru-units-1.7/install.rb 0000664 0000000 0000000 00000004350 12272744673 0016661 0 ustar 00root root 0000000 0000000 require 'rbconfig'
require 'find'
include Config
if CONFIG["MINOR"].to_i > 6 then $rb_18 = true else $rb_18 = false end
if $rb_18
require 'fileutils'
else
require 'ftools'
end
=begin
$version = CONFIG["MAJOR"]+"."+CONFIG["MINOR"]
$libdir = File.join(CONFIG["libdir"], "ruby", $version)
# $archdir = File.join($libdir, CONFIG["arch"])
$site_libdir = $:.find {|x| x =~ /site_ruby$/}
if !$site_libdir
$site_libdir = File.join($libdir, "site_ruby")
elsif Regexp.compile($site_libdir) !~ Regexp.quote($version)
$site_libdir = File.join($site_libdir, $version)
end
default_destdir = $site_libdir
=end
default_destdir = CONFIG["sitelibdir"]
def install_rb(srcdir, destdir)
libdir = "lib"
libdir = File.join(srcdir, libdir) if srcdir
path = []
dir = []
Find.find(libdir) do |f|
next unless FileTest.file?(f)
next if (f = f[libdir.length+1..-1]) == nil
next if (/CVS$/ =~ File.dirname(f))
path.push f
dir |= [File.dirname(f)]
end
for f in dir
next if f == "."
next if f == "CVS"
if $rb_18
FileUtils.makedirs(File.join(destdir, f))
else
File::makedirs(File.join(destdir, f))
end
end
for f in path
next if (/\~$/ =~ f)
next if (/^\./ =~ File.basename(f))
if $rb_18
FileUtils.install(File.join("lib", f), File.join(destdir, f), {:mode => 0644, :verbose => true})
else
File::install(File.join("lib", f), File.join(destdir, f), 0644, true)
end
end
end
def ARGV.switch
return nil if self.empty?
arg = self.shift
return nil if arg == '--'
if arg =~ /^-(.)(.*)/
return arg if $1 == '-'
raise 'unknown switch "-"' if $2.index('-')
self.unshift "-#{$2}" if $2.size > 0
"-#{$1}"
else
self.unshift arg
nil
end
end
def ARGV.req_arg
self.shift || raise('missing argument')
end
destdir = default_destdir
begin
while switch = ARGV.switch
case switch
when '-d', '--destdir'
destdir = ARGV.req_arg
# when '-u', '--uninstall'
# uninstall = true
else
raise "unknown switch #{switch.dump}"
end
end
rescue
STDERR.puts $!.to_s
STDERR.puts File.basename($0) +
" -d "
exit 1
end
#if( defined?(uninstall) && uninstall )
# uninstall_rb(nil, destdir)
#else
install_rb(nil, destdir)
#end
ruby-numru-units-1.7/lib/ 0000775 0000000 0000000 00000000000 12272744673 0015432 5 ustar 00root root 0000000 0000000 ruby-numru-units-1.7/lib/numru/ 0000775 0000000 0000000 00000000000 12272744673 0016600 5 ustar 00root root 0000000 0000000 ruby-numru-units-1.7/lib/numru/units.rb 0000664 0000000 0000000 00000373461 12272744673 0020305 0 ustar 00root root 0000000 0000000 #
# DO NOT MODIFY!!!!
# This file is automatically generated by racc 1.4.5
# from racc grammer file "units.racc".
#
#
# tmp.rb: generated by racc (runtime embedded)
#
###### racc/parser.rb begin
unless $".index 'racc/parser.rb'
$".push 'racc/parser.rb'
#
# $Id: units.rb,v 1.19 2011-08-03 09:16:07 horinout Exp $
#
# Copyright (c) 1999-2005 Minero Aoki
#
# This program is free software.
# You can distribute/modify this program under the same terms of ruby.
#
# As a special exception, when this code is copied by Racc
# into a Racc output file, you may use that output file
# without restriction.
#
unless defined?(NotImplementedError)
NotImplementedError = NotImplementError
end
module Racc
class ParseError < StandardError; end
end
unless defined?(::ParseError)
ParseError = Racc::ParseError
end
module Racc
unless defined?(Racc_No_Extentions)
Racc_No_Extentions = false
end
class Parser
Racc_Runtime_Version = '1.4.5'
Racc_Runtime_Revision = '$Revision: 1.19 $'.split[1]
Racc_Runtime_Core_Version_R = '1.4.5'
Racc_Runtime_Core_Revision_R = '$Revision: 1.19 $'.split[1]
begin
require 'racc/cparse'
# Racc_Runtime_Core_Version_C = (defined in extention)
Racc_Runtime_Core_Revision_C = Racc_Runtime_Core_Id_C.split[2]
unless new.respond_to?(:_racc_do_parse_c, true)
raise LoadError, 'old cparse.so'
end
if Racc_No_Extentions
raise LoadError, 'selecting ruby version of racc runtime core'
end
Racc_Main_Parsing_Routine = :_racc_do_parse_c
Racc_YY_Parse_Method = :_racc_yyparse_c
Racc_Runtime_Core_Version = Racc_Runtime_Core_Version_C
Racc_Runtime_Core_Revision = Racc_Runtime_Core_Revision_C
Racc_Runtime_Type = 'c'
rescue LoadError
Racc_Main_Parsing_Routine = :_racc_do_parse_rb
Racc_YY_Parse_Method = :_racc_yyparse_rb
Racc_Runtime_Core_Version = Racc_Runtime_Core_Version_R
Racc_Runtime_Core_Revision = Racc_Runtime_Core_Revision_R
Racc_Runtime_Type = 'ruby'
end
def Parser.racc_runtime_type
Racc_Runtime_Type
end
private
def _racc_setup
@yydebug = false unless self.class::Racc_debug_parser
@yydebug = false unless defined?(@yydebug)
if @yydebug
@racc_debug_out = $stderr unless defined?(@racc_debug_out)
@racc_debug_out ||= $stderr
end
arg = self.class::Racc_arg
arg[13] = true if arg.size < 14
arg
end
def _racc_init_sysvars
@racc_state = [0]
@racc_tstack = []
@racc_vstack = []
@racc_t = nil
@racc_val = nil
@racc_read_next = true
@racc_user_yyerror = false
@racc_error_status = 0
end
###
### do_parse
###
def do_parse
__send__(Racc_Main_Parsing_Routine, _racc_setup(), false)
end
def next_token
raise NotImplementedError, "#{self.class}\#next_token is not defined"
end
def _racc_do_parse_rb(arg, in_debug)
action_table, action_check, action_default, action_pointer,
goto_table, goto_check, goto_default, goto_pointer,
nt_base, reduce_table, token_table, shift_n,
reduce_n, use_result, * = arg
_racc_init_sysvars
tok = act = i = nil
nerr = 0
catch(:racc_end_parse) {
while true
if i = action_pointer[@racc_state[-1]]
if @racc_read_next
if @racc_t != 0 # not EOF
tok, @racc_val = next_token()
unless tok # EOF
@racc_t = 0
else
@racc_t = (token_table[tok] or 1) # error token
end
racc_read_token(@racc_t, tok, @racc_val) if @yydebug
@racc_read_next = false
end
end
i += @racc_t
unless i >= 0 and
act = action_table[i] and
action_check[i] == @racc_state[-1]
act = action_default[@racc_state[-1]]
end
else
act = action_default[@racc_state[-1]]
end
while act = _racc_evalact(act, arg)
;
end
end
}
end
###
### yyparse
###
def yyparse(recv, mid)
__send__(Racc_YY_Parse_Method, recv, mid, _racc_setup(), true)
end
def _racc_yyparse_rb(recv, mid, arg, c_debug)
action_table, action_check, action_default, action_pointer,
goto_table, goto_check, goto_default, goto_pointer,
nt_base, reduce_table, token_table, shift_n,
reduce_n, use_result, * = arg
_racc_init_sysvars
tok = nil
act = nil
i = nil
nerr = 0
catch(:racc_end_parse) {
until i = action_pointer[@racc_state[-1]]
while act = _racc_evalact(action_default[@racc_state[-1]], arg)
;
end
end
recv.__send__(mid) do |tok, val|
unless tok
@racc_t = 0
else
@racc_t = (token_table[tok] or 1) # error token
end
@racc_val = val
@racc_read_next = false
i += @racc_t
unless i >= 0 and
act = action_table[i] and
action_check[i] == @racc_state[-1]
act = action_default[@racc_state[-1]]
end
while act = _racc_evalact(act, arg)
;
end
while not (i = action_pointer[@racc_state[-1]]) or
not @racc_read_next or
@racc_t == 0 # $
unless i and i += @racc_t and
i >= 0 and
act = action_table[i] and
action_check[i] == @racc_state[-1]
act = action_default[@racc_state[-1]]
end
while act = _racc_evalact(act, arg)
;
end
end
end
}
end
###
### common
###
def _racc_evalact(act, arg)
action_table, action_check, action_default, action_pointer,
goto_table, goto_check, goto_default, goto_pointer,
nt_base, reduce_table, token_table, shift_n,
reduce_n, use_result, * = arg
nerr = 0 # tmp
if act > 0 and act < shift_n
#
# shift
#
if @racc_error_status > 0
@racc_error_status -= 1 unless @racc_t == 1 # error token
end
@racc_vstack.push @racc_val
@racc_state.push act
@racc_read_next = true
if @yydebug
@racc_tstack.push @racc_t
racc_shift @racc_t, @racc_tstack, @racc_vstack
end
elsif act < 0 and act > -reduce_n
#
# reduce
#
code = catch(:racc_jump) {
@racc_state.push _racc_do_reduce(arg, act)
false
}
if code
case code
when 1 # yyerror
@racc_user_yyerror = true # user_yyerror
return -reduce_n
when 2 # yyaccept
return shift_n
else
raise '[Racc Bug] unknown jump code'
end
end
elsif act == shift_n
#
# accept
#
racc_accept if @yydebug
throw :racc_end_parse, @racc_vstack[0]
elsif act == -reduce_n
#
# error
#
case @racc_error_status
when 0
unless arg[21] # user_yyerror
nerr += 1
on_error @racc_t, @racc_val, @racc_vstack
end
when 3
if @racc_t == 0 # is $
throw :racc_end_parse, nil
end
@racc_read_next = true
end
@racc_user_yyerror = false
@racc_error_status = 3
while true
if i = action_pointer[@racc_state[-1]]
i += 1 # error token
if i >= 0 and
(act = action_table[i]) and
action_check[i] == @racc_state[-1]
break
end
end
throw :racc_end_parse, nil if @racc_state.size <= 1
@racc_state.pop
@racc_vstack.pop
if @yydebug
@racc_tstack.pop
racc_e_pop @racc_state, @racc_tstack, @racc_vstack
end
end
return act
else
raise "[Racc Bug] unknown action #{act.inspect}"
end
racc_next_state(@racc_state[-1], @racc_state) if @yydebug
nil
end
def _racc_do_reduce(arg, act)
action_table, action_check, action_default, action_pointer,
goto_table, goto_check, goto_default, goto_pointer,
nt_base, reduce_table, token_table, shift_n,
reduce_n, use_result, * = arg
state = @racc_state
vstack = @racc_vstack
tstack = @racc_tstack
i = act * -3
len = reduce_table[i]
reduce_to = reduce_table[i+1]
method_id = reduce_table[i+2]
void_array = []
tmp_t = tstack[-len, len] if @yydebug
tmp_v = vstack[-len, len]
tstack[-len, len] = void_array if @yydebug
vstack[-len, len] = void_array
state[-len, len] = void_array
# tstack must be updated AFTER method call
if use_result
vstack.push __send__(method_id, tmp_v, vstack, tmp_v[0])
else
vstack.push __send__(method_id, tmp_v, vstack)
end
tstack.push reduce_to
racc_reduce(tmp_t, reduce_to, tstack, vstack) if @yydebug
k1 = reduce_to - nt_base
if i = goto_pointer[k1]
i += state[-1]
if i >= 0 and (curstate = goto_table[i]) and goto_check[i] == k1
return curstate
end
end
goto_default[k1]
end
def on_error(t, val, vstack)
raise ParseError, sprintf("\nparse error on value %s (%s)",
val.inspect, token_to_str(t) || '?')
end
def yyerror
throw :racc_jump, 1
end
def yyaccept
throw :racc_jump, 2
end
def yyerrok
@racc_error_status = 0
end
#
# for debugging output
#
def racc_read_token(t, tok, val)
@racc_debug_out.print 'read '
@racc_debug_out.print tok.inspect, '(', racc_token2str(t), ') '
@racc_debug_out.puts val.inspect
@racc_debug_out.puts
end
def racc_shift(tok, tstack, vstack)
@racc_debug_out.puts "shift #{racc_token2str tok}"
racc_print_stacks tstack, vstack
@racc_debug_out.puts
end
def racc_reduce(toks, sim, tstack, vstack)
out = @racc_debug_out
out.print 'reduce '
if toks.empty?
out.print ' '
else
toks.each {|t| out.print ' ', racc_token2str(t) }
end
out.puts " --> #{racc_token2str(sim)}"
racc_print_stacks tstack, vstack
@racc_debug_out.puts
end
def racc_accept
@racc_debug_out.puts 'accept'
@racc_debug_out.puts
end
def racc_e_pop(state, tstack, vstack)
@racc_debug_out.puts 'error recovering mode: pop token'
racc_print_states state
racc_print_stacks tstack, vstack
@racc_debug_out.puts
end
def racc_next_state(curstate, state)
@racc_debug_out.puts "goto #{curstate}"
racc_print_states state
@racc_debug_out.puts
end
def racc_print_stacks(t, v)
out = @racc_debug_out
out.print ' ['
t.each_index do |i|
out.print ' (', racc_token2str(t[i]), ' ', v[i].inspect, ')'
end
out.puts ' ]'
end
def racc_print_states(s)
out = @racc_debug_out
out.print ' ['
s.each {|st| out.print ' ', st }
out.puts ' ]'
end
def racc_token2str(tok)
self.class::Racc_token_to_s_table[tok] or
raise "[Racc Bug] can't convert token #{tok} to string"
end
def token_to_str(t)
self.class::Racc_token_to_s_table[t]
end
end
end
end
###### racc/parser.rb end
require 'date'
module NumRu
class Units < Racc::Parser
=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 (()), 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",@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[ \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
##### racc 1.4.5 generates ###
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_action_table = [
3, 4, 34, 4, 14, 22, 23, 36, 9, 10,
9, 4, 24, 5, 4, 26, 37, 4, 9, 10,
4, 9, 38, 5, 9, 10, 20, 9, 4, 5,
nil, 4, 20, nil, nil, 9, nil, 24, 9, 10,
26, nil, 16, 5, 17, 18, nil, 4, 10, 4,
nil, 4, 5, 12, 9, 12, 9, 12, 9, 4,
nil, nil, nil, nil, nil, 12, 9 ]
racc_action_check = [
0, 0, 24, 26, 6, 13, 14, 33, 0, 0,
26, 5, 26, 0, 20, 26, 34, 18, 5, 5,
12, 20, 35, 5, 18, 18, 20, 12, 16, 18,
nil, 17, 12, nil, nil, 16, nil, 16, 17, 17,
16, nil, 8, 17, 8, 8, nil, 29, 8, 31,
nil, 15, 8, 29, 29, 31, 31, 15, 15, 1,
nil, nil, nil, nil, nil, 1, 1 ]
racc_action_pointer = [
-1, 57, nil, nil, nil, 9, 4, nil, 38, nil,
nil, nil, 18, -10, 6, 49, 26, 29, 15, nil,
12, nil, nil, nil, -10, nil, 1, nil, nil, 45,
nil, 47, nil, -8, 3, 7, nil, nil, nil ]
racc_action_default = [
-1, -7, -8, -3, -20, -27, -27, -2, -4, -21,
-14, -15, -27, -27, -27, -9, -27, -27, -27, -18,
-27, -16, -17, 39, -24, -22, -27, -5, -6, -10,
-12, -11, -13, -27, -25, -27, -19, -26, -23 ]
racc_goto_table = [
2, 15, 7, 28, 21, 2, 6, 13, 27, nil,
29, 31, 19, 35, nil, nil, 19, 30, 32, nil,
19, nil, nil, nil, nil, nil, 19 ]
racc_goto_check = [
7, 6, 2, 5, 4, 7, 1, 2, 4, nil,
6, 6, 7, 5, nil, nil, 7, 7, 7, nil,
7, nil, nil, nil, nil, nil, 7 ]
racc_goto_pointer = [
nil, 6, 2, nil, -8, -13, -7, 0, nil ]
racc_goto_default = [
nil, nil, nil, 8, 33, nil, 1, 11, 25 ]
racc_token_table = {
false => 0,
Object.new => 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_use_result_var = false
racc_nt_base = 16
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
##### racc system variables end #####
# reduce 0 omitted
# reduce 1 omitted
def _reduce_2( val, _values)
yyaccept;
end
def _reduce_3( val, _values)
yyerrok
end
# reduce 4 omitted
def _reduce_5( val, _values)
val[0].shift(val[2])
end
def _reduce_6( val, _values)
val[0].shift(val[2])
end
# reduce 7 omitted
# reduce 8 omitted
def _reduce_9( val, _values)
val[0].mul(val[1])
end
def _reduce_10( val, _values)
val[0].mul(val[2])
end
def _reduce_11( val, _values)
val[0].divide(val[2])
end
def _reduce_12( val, _values)
val[0].mul(val[2])
end
def _reduce_13( val, _values)
val[0].divide(val[2])
end
def _reduce_14( val, _values)
NameNode.new(val[0])
end
def _reduce_15( val, _values)
val[0].pow(val[1])
end
def _reduce_16( val, _values)
val[0].pow(val[2])
end
def _reduce_17( val, _values)
val[1]
end
# reduce 18 omitted
def _reduce_19( val, _values)
val[1]
end
def _reduce_20( val, _values)
NumberNode.new(val[0])
end
def _reduce_21( val, _values)
NumberNode.new(val[0])
end
# reduce 22 omitted
def _reduce_23( val, _values)
val[1]
end
def _reduce_24( val, _values)
TimeNode.new(val[0], 0.0, 0)
end
def _reduce_25( val, _values)
TimeNode.new(val[0], val[1], 0)
end
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, ""
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.0"
assert Units.new('(10)^2/100').reduce4.to_s, "1.0"
puts "=== reduce5 ==="
assert Units.new('km2').reduce5.to_s, "1000000 m2"
assert Units.new('(10)^2/100').reduce5.to_s, "1.0"
assert Units.new('hPa').reduce5.to_s, "100 kg.m-1 s-2"
assert Units.new('mb').reduce5.to_s, "100.0 kg.m-1 s-2"
assert Units.new('hPa/mb').reduce5.to_s, "1.0"
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, "273.15"
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
ruby-numru-units-1.7/src/ 0000775 0000000 0000000 00000000000 12272744673 0015453 5 ustar 00root root 0000000 0000000 ruby-numru-units-1.7/src/Makefile 0000664 0000000 0000000 00000001724 12272744673 0017117 0 ustar 00root root 0000000 0000000 all: units.rb
units.rb: units.racc
racc -E -l units.racc -o tmp.rb
(ruby -n -e 'if /^class Units/; print("module NumRu\n",$$_); elsif /end\s*#\s*class\s*Units/; print($$_,"end # module NumRu\n"); else print $$_; end' tmp.rb > units.rb)
(( echo ; echo '####################' ; echo 'if $$0 == __FILE__' ; tail -n +2 test.rb | ruby -p -e 'print " "' ; echo 'end' ) >> units.rb)
@rm tmp.rb
test: units.rb
ruby test.rb
backup: units.shar
scp units.shar toyoda@www.gfd-dennou.org:tmp/
scp units.shar toyoda@pandora0.sytes.net:tmp/
RSRCS = rules.rb node.rb namenode.rb utab.rb numbernode.rb timenode.rb \
pownode.rb mulnode.rb shiftnode.rb lex.rb
utab.rb: makeutab.rb dcunits.txt
ruby makeutab.rb dcunits.txt > $@.tmp
mv $@.tmp $@
units.racc: $(RSRCS)
cat $(RSRCS) > $@.tmp
mv $@.tmp $@
edit:
$${EDITOR:-vi} $(RSRCS)
SRCS = Makefile units.rb dcunits.txt makeutab.rb $(RSRCS) test.rb units.rd
shar: units.shar
units.shar: $(SRCS)
shar $(SRCS) > units.shar
ruby-numru-units-1.7/src/dcunits.txt 0000664 0000000 0000000 00000006601 12272744673 0017670 0 ustar 00root root 0000000 0000000 s S
second P s
m S
metre P m
meter P metre
kg S
kilogram P kg
A S
ampere P A
K S
kelvin P K
degK P K
deg_K P K
degreeK P K
mol S
mole P mol
rad S
radian P rad
sr S
steradian P sr
#
# --- standard named units ---
#
Hz S 1/s
hertz P Hz
N S kg.m.s-2
newton P N
Pa S N.m-2
pascal P Pa
Pascal P Pa
J S N.m
joule P J
W S J/s
watt P W
C S A.s
coulomb P C
V S J/C
volt P V
F S C/V
ohm S V/A
S S A/V
Wb S V.s
weber P Wb
farad P coulomb/volt
T S Wb.m-2
tesla P Wb.m-2
H S Wb.A-1
degC S K @ 273.15
deg_C S K @ 273.15
degree_C S K @ 273.15
degree_c S K @ 273.15
degreeC S K @ 273.15
Celsius P K @ 273.15
celsius P K @ 273.15
centigrade P K @ 273.15
degree_R S K / 1.8
degree_f S degree_R @ 459.67
degree_F S degree_R @ 459.67
Fahrenheit P degree_F
fahrenheit P degree_F
degF S degree_F
deg_F S degree_F
degreeF S degree_F
lm S cd.sr
lx S lm.m-2
Bq S s-1
Gy S J.kg-1
Sv S J.kg-1
#
# === non-SI units ===
#
# --- basic numbers ---
#
pi N 3.141592653589793238462
#
# --- nondimensional units ---
#
percent S 1e-2
% S 1e-2
permil S 1e-3
#
# --- length ---
#
fermi P 1.0e-15 m
angstrom P 1.0e-10 m
micron P 1.0e-6 m
astronomical_unit N 1.49597870e11 m
astronomical_units N 1.49597870e11 m
Au S astronomical_unit
parsec P 3.0857e16 m
pc S parsec
light_year N 9.46e15 m
light_years N 9.46e15 m
ly S light_year
nautical_mile N 1852 m
nautical_miles N 1852 m
#
inch P 2.54 cm
in S inch
foot N 12 inch
feet N foot
ft N foot
yard P 6 feet
yd P yard
chain P 22 yard
mile P 1760 yard
#
# --- time ---
#
minute P 60 s
min S 60 s
hour P 60 min
hr S 60 min
h S 60 min
day P 24 hour
d S 24 hour
Julian_year P 365.25 day
common_year P 365 day
#
# --- date ---
#
# date is NOT time intentionally
#
pentad P
month P 6 pentad
mon S month
year P 12 month
yr S year
century P 100 year
#
# --- area ---
#
are P 100 m2
a S are
hectare P 100 are
litre P 1.0e-3 m3
L S litre
acre P 10 chain2
ac S acre
#
# --- angle ---
#
degree P pi.rad/180
angular_degree P degree
minute_angle P pi.rad/180/60
angular_minute P minute_angle
second_angle P pi.rad/180/60/60
angular_second P second_angle
degree_N S degree
degree_E S degree
degree_W S degree
degree_S S degree
degree_north S degree_N
degree_east S degree_E
degree_west S degree_W
degree_south S degree_S
degrees_north S degree_N
degrees_east S degree_E
degrees_west S degree_W
degrees_south S degree_S
#
# --- mass ---
#
ton P 1000 kg
tonne P ton
t S ton
gram P kg/1000
g S kg/1000
pound P 453.6 g
lb S pound
ounce P pound / 16
oz S ounce
#
# --- CGS ---
#
dyne P g.cm.s-2
dyn S g.cm.s-2
bar S 1e6 dyn.cm-2
mb S bar / 1000
millibar P bar / 1000
gal P cm s-2
Gal S cm s-2
mgal S cm s-2 / 1000
erg S dyn cm
erg P dyn cm
poise P dyn s / cm2
P S poise
stokes P cm2 / s
St S stokes
gauss P T / 10000
G S gauss
#
# --- conventional ---
#
calorie P 4.18605 J
cal S calorie
kgf S kilogram-force
force S 9.80665 m.s-2
knot P nautical_mile / hour
horse_power N 75 m kilogram-force / s
atmosphere P 101325 Pa
atm S atmosphere
light_speed N 299792458 m/s
mph S mile / hour
kph S km / hour
torr P 133.322 Pa
psi S pound-force / inch2
gravity S 9.806650 meter/second2
conventional_mercury S gravity 13595.10 kg/m3
mercury S conventional_mercury
Hg S mercury
hg S mercury
ruby-numru-units-1.7/src/lex.rb 0000664 0000000 0000000 00000017761 12272744673 0016604 0 ustar 00root root 0000000 0000000 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[ \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
ruby-numru-units-1.7/src/makeutab.rb 0000664 0000000 0000000 00000003263 12272744673 0017575 0 ustar 00root root 0000000 0000000
SI_ABBREV = {
'E' => 18, 'P' => 15, 'T' => 12,
'G' => 9, 'M' => 6, 'k' => 3,
'h' => 2, 'da' => 1,
'd' => -1, 'c' => -2,
'm' => -3, 'u' => -6, 'n' => -9,
'p' => -12, 'f' => -15, 'a' => -18,
}
SI_PREFIX = {
'exa' => 18, 'peta' => 15, 'tela' => 12,
'giga' => 9, 'mega' => 6, 'kilo' => 3,
'hecto' => 2, 'deca' => 1,
'deci' => -1, 'centi' => -2,
'milli' => -3, 'micro' => -6, 'nano' => -9,
'pico' => -12, 'femto' => -15, 'atto' => -18,
}
def plural(string)
case string
when /^([^_]+)(_.*)/
pre, post = $1, $2
plural(pre) + post
when /[szoj]$/
string.sub(/$/, "es")
when /[^aeou]y$/
string.sub(/y$/, "ies")
else
string.sub(/$/, "s")
end
end
udefs = {}
ualiases = {}
uplurals = {}
while (line = gets)
next if /^#/ =~ line
case line.strip
when /(\S+)\s+(\S)\s+(\S.*)/
name, mode, definition = $1, $2, $3
udefs[name] = definition
when /(\S+)\s+(\S)/
name, mode = $1, $2
else
next
end
case mode
when /^S/
for prefix, power in SI_ABBREV
next if prefix + name == 'kg'
ualiases[prefix + name] = [power, name]
end
when /^P/
pname = plural(name)
ualiases[pname] = [0, name]
uplurals[pname] = name
for prefix, power in SI_PREFIX
ualiases[prefix + name] = [power, name]
end
end
end
def dumphash(hname, h)
puts "#{hname} = {"
s = ""
for name in h.keys.sort
a = " #{name.dump} => #{h[name].inspect},"
if s.length + a.length > 72
puts s
s = ""
end
s += a
end
if s.length > 0
puts s
s = ""
end
puts "}"
end
puts "class NameNode"
dumphash('UDEFS', udefs)
dumphash('UALIASES', ualiases)
dumphash('UPLURALS', uplurals)
puts "end"
ruby-numru-units-1.7/src/mulnode.rb 0000664 0000000 0000000 00000004630 12272744673 0017446 0 ustar 00root root 0000000 0000000
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
ruby-numru-units-1.7/src/namenode.rb 0000664 0000000 0000000 00000002460 12272744673 0017570 0 ustar 00root root 0000000 0000000 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
ruby-numru-units-1.7/src/node.rb 0000664 0000000 0000000 00000006104 12272744673 0016726 0 ustar 00root root 0000000 0000000 =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 (()), 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
ruby-numru-units-1.7/src/numbernode.rb 0000664 0000000 0000000 00000001703 12272744673 0020137 0 ustar 00root root 0000000 0000000 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",@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
ruby-numru-units-1.7/src/pownode.rb 0000664 0000000 0000000 00000003202 12272744673 0017450 0 ustar 00root root 0000000 0000000 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
ruby-numru-units-1.7/src/rules.rb 0000664 0000000 0000000 00000002375 12272744673 0017141 0 ustar 00root root 0000000 0000000 class Units
token INT ERR SHIFT SPACE MULTIPLY DIVIDE EXPONENT REAL NAME DATE TIME ZONE
options no_result_var
rule
unit_spec:
/* { yyaccept; } */ /* <-- to acccept empty unit_spec */
| origin_exp { yyaccept; }
| error { yyerrok }
;
origin_exp:
unit_exp
| unit_exp SHIFT value_exp { val[0].shift(val[2]) }
| unit_exp SHIFT timestamp { val[0].shift(val[2]) }
;
unit_exp:
power_exp
| number_exp
| unit_exp power_exp { val[0].mul(val[1]) }
| unit_exp MULTIPLY power_exp { val[0].mul(val[2]) }
| unit_exp DIVIDE power_exp { val[0].divide(val[2]) }
| unit_exp MULTIPLY number_exp { val[0].mul(val[2]) }
| unit_exp DIVIDE number_exp { val[0].divide(val[2]) }
;
power_exp:
NAME { NameNode.new(val[0]) }
| power_exp number_exp { val[0].pow(val[1]) }
| power_exp EXPONENT value_exp { val[0].pow(val[2]) }
| '(' origin_exp ')' { val[1] }
;
value_exp:
number_exp
| '(' value_exp ')' { val[1] }
;
number_exp:
INT { NumberNode.new(val[0]) }
| REAL { NumberNode.new(val[0]) }
;
timestamp:
time_exp
| '(' timestamp ')' { val[1] }
;
time_exp:
DATE { TimeNode.new(val[0], 0.0, 0) }
| DATE TIME { TimeNode.new(val[0], val[1], 0) }
| DATE TIME ZONE { TimeNode.new(val[0], val[1], val[2]) }
;
end
---- header
require 'date'
---- inner
ruby-numru-units-1.7/src/shiftnode.rb 0000664 0000000 0000000 00000001516 12272744673 0017766 0 ustar 00root root 0000000 0000000 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
ruby-numru-units-1.7/src/test.rb 0000664 0000000 0000000 00000010350 12272744673 0016756 0 ustar 00root root 0000000 0000000 require 'units' # Use require "numru/units" after installation.
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, ""
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.0"
assert Units.new('(10)^2/100').reduce4.to_s, "1.0"
puts "=== reduce5 ==="
assert Units.new('km2').reduce5.to_s, "1000000 m2"
assert Units.new('(10)^2/100').reduce5.to_s, "1.0"
assert Units.new('hPa').reduce5.to_s, "100 kg.m-1 s-2"
assert Units.new('mb').reduce5.to_s, "100.0 kg.m-1 s-2"
assert Units.new('hPa/mb').reduce5.to_s, "1.0"
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, "273.15"
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)
ruby-numru-units-1.7/src/timenode.rb 0000664 0000000 0000000 00000005462 12272744673 0017613 0 ustar 00root root 0000000 0000000 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
ruby-numru-units-1.7/src/units.racc 0000664 0000000 0000000 00000323360 12272744673 0017456 0 ustar 00root root 0000000 0000000 class Units
token INT ERR SHIFT SPACE MULTIPLY DIVIDE EXPONENT REAL NAME DATE TIME ZONE
options no_result_var
rule
unit_spec:
/* { yyaccept; } */ /* <-- to acccept empty unit_spec */
| origin_exp { yyaccept; }
| error { yyerrok }
;
origin_exp:
unit_exp
| unit_exp SHIFT value_exp { val[0].shift(val[2]) }
| unit_exp SHIFT timestamp { val[0].shift(val[2]) }
;
unit_exp:
power_exp
| number_exp
| unit_exp power_exp { val[0].mul(val[1]) }
| unit_exp MULTIPLY power_exp { val[0].mul(val[2]) }
| unit_exp DIVIDE power_exp { val[0].divide(val[2]) }
| unit_exp MULTIPLY number_exp { val[0].mul(val[2]) }
| unit_exp DIVIDE number_exp { val[0].divide(val[2]) }
;
power_exp:
NAME { NameNode.new(val[0]) }
| power_exp number_exp { val[0].pow(val[1]) }
| power_exp EXPONENT value_exp { val[0].pow(val[2]) }
| '(' origin_exp ')' { val[1] }
;
value_exp:
number_exp
| '(' value_exp ')' { val[1] }
;
number_exp:
INT { NumberNode.new(val[0]) }
| REAL { NumberNode.new(val[0]) }
;
timestamp:
time_exp
| '(' timestamp ')' { val[1] }
;
time_exp:
DATE { TimeNode.new(val[0], 0.0, 0) }
| DATE TIME { TimeNode.new(val[0], val[1], 0) }
| DATE TIME ZONE { TimeNode.new(val[0], val[1], val[2]) }
;
end
---- header
require 'date'
---- inner
=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 (()), 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",@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[ \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
ruby-numru-units-1.7/src/units.rb 0000664 0000000 0000000 00000373461 12272744673 0017160 0 ustar 00root root 0000000 0000000 #
# DO NOT MODIFY!!!!
# This file is automatically generated by racc 1.4.5
# from racc grammer file "units.racc".
#
#
# tmp.rb: generated by racc (runtime embedded)
#
###### racc/parser.rb begin
unless $".index 'racc/parser.rb'
$".push 'racc/parser.rb'
#
# $Id: units.rb,v 1.24 2011-08-03 09:16:08 horinout Exp $
#
# Copyright (c) 1999-2005 Minero Aoki
#
# This program is free software.
# You can distribute/modify this program under the same terms of ruby.
#
# As a special exception, when this code is copied by Racc
# into a Racc output file, you may use that output file
# without restriction.
#
unless defined?(NotImplementedError)
NotImplementedError = NotImplementError
end
module Racc
class ParseError < StandardError; end
end
unless defined?(::ParseError)
ParseError = Racc::ParseError
end
module Racc
unless defined?(Racc_No_Extentions)
Racc_No_Extentions = false
end
class Parser
Racc_Runtime_Version = '1.4.5'
Racc_Runtime_Revision = '$Revision: 1.24 $'.split[1]
Racc_Runtime_Core_Version_R = '1.4.5'
Racc_Runtime_Core_Revision_R = '$Revision: 1.24 $'.split[1]
begin
require 'racc/cparse'
# Racc_Runtime_Core_Version_C = (defined in extention)
Racc_Runtime_Core_Revision_C = Racc_Runtime_Core_Id_C.split[2]
unless new.respond_to?(:_racc_do_parse_c, true)
raise LoadError, 'old cparse.so'
end
if Racc_No_Extentions
raise LoadError, 'selecting ruby version of racc runtime core'
end
Racc_Main_Parsing_Routine = :_racc_do_parse_c
Racc_YY_Parse_Method = :_racc_yyparse_c
Racc_Runtime_Core_Version = Racc_Runtime_Core_Version_C
Racc_Runtime_Core_Revision = Racc_Runtime_Core_Revision_C
Racc_Runtime_Type = 'c'
rescue LoadError
Racc_Main_Parsing_Routine = :_racc_do_parse_rb
Racc_YY_Parse_Method = :_racc_yyparse_rb
Racc_Runtime_Core_Version = Racc_Runtime_Core_Version_R
Racc_Runtime_Core_Revision = Racc_Runtime_Core_Revision_R
Racc_Runtime_Type = 'ruby'
end
def Parser.racc_runtime_type
Racc_Runtime_Type
end
private
def _racc_setup
@yydebug = false unless self.class::Racc_debug_parser
@yydebug = false unless defined?(@yydebug)
if @yydebug
@racc_debug_out = $stderr unless defined?(@racc_debug_out)
@racc_debug_out ||= $stderr
end
arg = self.class::Racc_arg
arg[13] = true if arg.size < 14
arg
end
def _racc_init_sysvars
@racc_state = [0]
@racc_tstack = []
@racc_vstack = []
@racc_t = nil
@racc_val = nil
@racc_read_next = true
@racc_user_yyerror = false
@racc_error_status = 0
end
###
### do_parse
###
def do_parse
__send__(Racc_Main_Parsing_Routine, _racc_setup(), false)
end
def next_token
raise NotImplementedError, "#{self.class}\#next_token is not defined"
end
def _racc_do_parse_rb(arg, in_debug)
action_table, action_check, action_default, action_pointer,
goto_table, goto_check, goto_default, goto_pointer,
nt_base, reduce_table, token_table, shift_n,
reduce_n, use_result, * = arg
_racc_init_sysvars
tok = act = i = nil
nerr = 0
catch(:racc_end_parse) {
while true
if i = action_pointer[@racc_state[-1]]
if @racc_read_next
if @racc_t != 0 # not EOF
tok, @racc_val = next_token()
unless tok # EOF
@racc_t = 0
else
@racc_t = (token_table[tok] or 1) # error token
end
racc_read_token(@racc_t, tok, @racc_val) if @yydebug
@racc_read_next = false
end
end
i += @racc_t
unless i >= 0 and
act = action_table[i] and
action_check[i] == @racc_state[-1]
act = action_default[@racc_state[-1]]
end
else
act = action_default[@racc_state[-1]]
end
while act = _racc_evalact(act, arg)
;
end
end
}
end
###
### yyparse
###
def yyparse(recv, mid)
__send__(Racc_YY_Parse_Method, recv, mid, _racc_setup(), true)
end
def _racc_yyparse_rb(recv, mid, arg, c_debug)
action_table, action_check, action_default, action_pointer,
goto_table, goto_check, goto_default, goto_pointer,
nt_base, reduce_table, token_table, shift_n,
reduce_n, use_result, * = arg
_racc_init_sysvars
tok = nil
act = nil
i = nil
nerr = 0
catch(:racc_end_parse) {
until i = action_pointer[@racc_state[-1]]
while act = _racc_evalact(action_default[@racc_state[-1]], arg)
;
end
end
recv.__send__(mid) do |tok, val|
unless tok
@racc_t = 0
else
@racc_t = (token_table[tok] or 1) # error token
end
@racc_val = val
@racc_read_next = false
i += @racc_t
unless i >= 0 and
act = action_table[i] and
action_check[i] == @racc_state[-1]
act = action_default[@racc_state[-1]]
end
while act = _racc_evalact(act, arg)
;
end
while not (i = action_pointer[@racc_state[-1]]) or
not @racc_read_next or
@racc_t == 0 # $
unless i and i += @racc_t and
i >= 0 and
act = action_table[i] and
action_check[i] == @racc_state[-1]
act = action_default[@racc_state[-1]]
end
while act = _racc_evalact(act, arg)
;
end
end
end
}
end
###
### common
###
def _racc_evalact(act, arg)
action_table, action_check, action_default, action_pointer,
goto_table, goto_check, goto_default, goto_pointer,
nt_base, reduce_table, token_table, shift_n,
reduce_n, use_result, * = arg
nerr = 0 # tmp
if act > 0 and act < shift_n
#
# shift
#
if @racc_error_status > 0
@racc_error_status -= 1 unless @racc_t == 1 # error token
end
@racc_vstack.push @racc_val
@racc_state.push act
@racc_read_next = true
if @yydebug
@racc_tstack.push @racc_t
racc_shift @racc_t, @racc_tstack, @racc_vstack
end
elsif act < 0 and act > -reduce_n
#
# reduce
#
code = catch(:racc_jump) {
@racc_state.push _racc_do_reduce(arg, act)
false
}
if code
case code
when 1 # yyerror
@racc_user_yyerror = true # user_yyerror
return -reduce_n
when 2 # yyaccept
return shift_n
else
raise '[Racc Bug] unknown jump code'
end
end
elsif act == shift_n
#
# accept
#
racc_accept if @yydebug
throw :racc_end_parse, @racc_vstack[0]
elsif act == -reduce_n
#
# error
#
case @racc_error_status
when 0
unless arg[21] # user_yyerror
nerr += 1
on_error @racc_t, @racc_val, @racc_vstack
end
when 3
if @racc_t == 0 # is $
throw :racc_end_parse, nil
end
@racc_read_next = true
end
@racc_user_yyerror = false
@racc_error_status = 3
while true
if i = action_pointer[@racc_state[-1]]
i += 1 # error token
if i >= 0 and
(act = action_table[i]) and
action_check[i] == @racc_state[-1]
break
end
end
throw :racc_end_parse, nil if @racc_state.size <= 1
@racc_state.pop
@racc_vstack.pop
if @yydebug
@racc_tstack.pop
racc_e_pop @racc_state, @racc_tstack, @racc_vstack
end
end
return act
else
raise "[Racc Bug] unknown action #{act.inspect}"
end
racc_next_state(@racc_state[-1], @racc_state) if @yydebug
nil
end
def _racc_do_reduce(arg, act)
action_table, action_check, action_default, action_pointer,
goto_table, goto_check, goto_default, goto_pointer,
nt_base, reduce_table, token_table, shift_n,
reduce_n, use_result, * = arg
state = @racc_state
vstack = @racc_vstack
tstack = @racc_tstack
i = act * -3
len = reduce_table[i]
reduce_to = reduce_table[i+1]
method_id = reduce_table[i+2]
void_array = []
tmp_t = tstack[-len, len] if @yydebug
tmp_v = vstack[-len, len]
tstack[-len, len] = void_array if @yydebug
vstack[-len, len] = void_array
state[-len, len] = void_array
# tstack must be updated AFTER method call
if use_result
vstack.push __send__(method_id, tmp_v, vstack, tmp_v[0])
else
vstack.push __send__(method_id, tmp_v, vstack)
end
tstack.push reduce_to
racc_reduce(tmp_t, reduce_to, tstack, vstack) if @yydebug
k1 = reduce_to - nt_base
if i = goto_pointer[k1]
i += state[-1]
if i >= 0 and (curstate = goto_table[i]) and goto_check[i] == k1
return curstate
end
end
goto_default[k1]
end
def on_error(t, val, vstack)
raise ParseError, sprintf("\nparse error on value %s (%s)",
val.inspect, token_to_str(t) || '?')
end
def yyerror
throw :racc_jump, 1
end
def yyaccept
throw :racc_jump, 2
end
def yyerrok
@racc_error_status = 0
end
#
# for debugging output
#
def racc_read_token(t, tok, val)
@racc_debug_out.print 'read '
@racc_debug_out.print tok.inspect, '(', racc_token2str(t), ') '
@racc_debug_out.puts val.inspect
@racc_debug_out.puts
end
def racc_shift(tok, tstack, vstack)
@racc_debug_out.puts "shift #{racc_token2str tok}"
racc_print_stacks tstack, vstack
@racc_debug_out.puts
end
def racc_reduce(toks, sim, tstack, vstack)
out = @racc_debug_out
out.print 'reduce '
if toks.empty?
out.print ' '
else
toks.each {|t| out.print ' ', racc_token2str(t) }
end
out.puts " --> #{racc_token2str(sim)}"
racc_print_stacks tstack, vstack
@racc_debug_out.puts
end
def racc_accept
@racc_debug_out.puts 'accept'
@racc_debug_out.puts
end
def racc_e_pop(state, tstack, vstack)
@racc_debug_out.puts 'error recovering mode: pop token'
racc_print_states state
racc_print_stacks tstack, vstack
@racc_debug_out.puts
end
def racc_next_state(curstate, state)
@racc_debug_out.puts "goto #{curstate}"
racc_print_states state
@racc_debug_out.puts
end
def racc_print_stacks(t, v)
out = @racc_debug_out
out.print ' ['
t.each_index do |i|
out.print ' (', racc_token2str(t[i]), ' ', v[i].inspect, ')'
end
out.puts ' ]'
end
def racc_print_states(s)
out = @racc_debug_out
out.print ' ['
s.each {|st| out.print ' ', st }
out.puts ' ]'
end
def racc_token2str(tok)
self.class::Racc_token_to_s_table[tok] or
raise "[Racc Bug] can't convert token #{tok} to string"
end
def token_to_str(t)
self.class::Racc_token_to_s_table[t]
end
end
end
end
###### racc/parser.rb end
require 'date'
module NumRu
class Units < Racc::Parser
=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 (()), 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",@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[ \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
##### racc 1.4.5 generates ###
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_action_table = [
3, 4, 34, 4, 14, 22, 23, 36, 9, 10,
9, 4, 24, 5, 4, 26, 37, 4, 9, 10,
4, 9, 38, 5, 9, 10, 20, 9, 4, 5,
nil, 4, 20, nil, nil, 9, nil, 24, 9, 10,
26, nil, 16, 5, 17, 18, nil, 4, 10, 4,
nil, 4, 5, 12, 9, 12, 9, 12, 9, 4,
nil, nil, nil, nil, nil, 12, 9 ]
racc_action_check = [
0, 0, 24, 26, 6, 13, 14, 33, 0, 0,
26, 5, 26, 0, 20, 26, 34, 18, 5, 5,
12, 20, 35, 5, 18, 18, 20, 12, 16, 18,
nil, 17, 12, nil, nil, 16, nil, 16, 17, 17,
16, nil, 8, 17, 8, 8, nil, 29, 8, 31,
nil, 15, 8, 29, 29, 31, 31, 15, 15, 1,
nil, nil, nil, nil, nil, 1, 1 ]
racc_action_pointer = [
-1, 57, nil, nil, nil, 9, 4, nil, 38, nil,
nil, nil, 18, -10, 6, 49, 26, 29, 15, nil,
12, nil, nil, nil, -10, nil, 1, nil, nil, 45,
nil, 47, nil, -8, 3, 7, nil, nil, nil ]
racc_action_default = [
-1, -7, -8, -3, -20, -27, -27, -2, -4, -21,
-14, -15, -27, -27, -27, -9, -27, -27, -27, -18,
-27, -16, -17, 39, -24, -22, -27, -5, -6, -10,
-12, -11, -13, -27, -25, -27, -19, -26, -23 ]
racc_goto_table = [
2, 15, 7, 28, 21, 2, 6, 13, 27, nil,
29, 31, 19, 35, nil, nil, 19, 30, 32, nil,
19, nil, nil, nil, nil, nil, 19 ]
racc_goto_check = [
7, 6, 2, 5, 4, 7, 1, 2, 4, nil,
6, 6, 7, 5, nil, nil, 7, 7, 7, nil,
7, nil, nil, nil, nil, nil, 7 ]
racc_goto_pointer = [
nil, 6, 2, nil, -8, -13, -7, 0, nil ]
racc_goto_default = [
nil, nil, nil, 8, 33, nil, 1, 11, 25 ]
racc_token_table = {
false => 0,
Object.new => 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_use_result_var = false
racc_nt_base = 16
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
##### racc system variables end #####
# reduce 0 omitted
# reduce 1 omitted
def _reduce_2( val, _values)
yyaccept;
end
def _reduce_3( val, _values)
yyerrok
end
# reduce 4 omitted
def _reduce_5( val, _values)
val[0].shift(val[2])
end
def _reduce_6( val, _values)
val[0].shift(val[2])
end
# reduce 7 omitted
# reduce 8 omitted
def _reduce_9( val, _values)
val[0].mul(val[1])
end
def _reduce_10( val, _values)
val[0].mul(val[2])
end
def _reduce_11( val, _values)
val[0].divide(val[2])
end
def _reduce_12( val, _values)
val[0].mul(val[2])
end
def _reduce_13( val, _values)
val[0].divide(val[2])
end
def _reduce_14( val, _values)
NameNode.new(val[0])
end
def _reduce_15( val, _values)
val[0].pow(val[1])
end
def _reduce_16( val, _values)
val[0].pow(val[2])
end
def _reduce_17( val, _values)
val[1]
end
# reduce 18 omitted
def _reduce_19( val, _values)
val[1]
end
def _reduce_20( val, _values)
NumberNode.new(val[0])
end
def _reduce_21( val, _values)
NumberNode.new(val[0])
end
# reduce 22 omitted
def _reduce_23( val, _values)
val[1]
end
def _reduce_24( val, _values)
TimeNode.new(val[0], 0.0, 0)
end
def _reduce_25( val, _values)
TimeNode.new(val[0], val[1], 0)
end
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, ""
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.0"
assert Units.new('(10)^2/100').reduce4.to_s, "1.0"
puts "=== reduce5 ==="
assert Units.new('km2').reduce5.to_s, "1000000 m2"
assert Units.new('(10)^2/100').reduce5.to_s, "1.0"
assert Units.new('hPa').reduce5.to_s, "100 kg.m-1 s-2"
assert Units.new('mb').reduce5.to_s, "100.0 kg.m-1 s-2"
assert Units.new('hPa/mb').reduce5.to_s, "1.0"
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, "273.15"
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
ruby-numru-units-1.7/src/units.rd 0000664 0000000 0000000 00000007455 12272744673 0017157 0 ustar 00root root 0000000 0000000 =begin
=class Units
A class of units of physical quantities.
This class covers most functionality of UNIDATA's UDUNITS Library
(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 otehr
hand, this library tries to keep the original expressions as much as
possible by default, while allowing partial to complete decompositions
if needed.
==class methods
---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')
---reduce_level
by default returns 4.
---reduce_level = i
Integer value within 1..5 is acceptable for ((|i|)).
After this call, ((*reduce*))((|i|)) is used in
((<*>)), ((<"/">)), ((<**>)) instance methods.
==instance methods
---to_s
Returns a string expression of the units.
---*(other)
Multiplies self with another units.
Applies (()) 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 (()) to format the string expression of the result.
ARGUMENTS
* other [Units]: the other units
RETURN VALUE
* a Units
---**(pow)
Power.
Applies (()) to format the string expression of the result.
ARGUMENTS
* pow [Integer]
RETURN VALUE
* a Units
---==(other)
Judges whether the two units are the same.
Comparison is done after (()) operation is applied
to both self and other.
('m/s' and 'm.s-1' will be the same, for instance.)
---===(other)
Similar to ((<==>)), but reference date or shift value is ignored.
---=~(other)
Similar to ((<===>)), but numerical factor is also ignored.
When (units1 =~ units2) is true, you may add or subtract
two quantities in units1 and units2.
---reduce4
Moderately parses the string expression of the units (destructive method).
This method preserves string expression of atomic units,
but plural form and SI prefixes are normalized.
See also (()).
RETURN VALUE
* self
EXAMPLE
Untis.new('hour/hour').reduce4.to_s
# => ""
Units.new('mm/m').reduce4.to_s
# => "m-1 mm"
---reduce5
Parses and aggressively reduces
the string expression of the units (destructive method).
See also (()).
RETURN VALUE
* self
EXAMPLE
Units.new('hour/hour').reduce5.to_s
# => "1.0"
Units.new('mm/m').reduce5.to_s
# => "0.001"
---convert(numeric, to_units)
converts Numeric value ((|numeric|)) into new units ((|to_units|)).
EXAMPLE
Units.new('degree_F').convert(32, Units.new('K')).to_s
# => "273.15"
---convert2(numeric_etc, to_units)
Similat to (()), but the first argument is more flexible
to accept not only numerics but also NArray etc etc.
EXAMPLE
require "narray"
na = NArray[-40.0, 0.0]
Units.new('degree_F').convert(na, Units.new('degC'))
# => NArray.float(2):
[ -40.0, -17.7778 ]
=end
ruby-numru-units-1.7/src/utab.rb 0000664 0000000 0000000 00000247061 12272744673 0016745 0 ustar 00root root 0000000 0000000 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