pax_global_header00006660000000000000000000000064122727446730014530gustar00rootroot0000000000000052 comment=a38e7a0f2145211a28b8500a74dadf2139caaf05 ruby-numru-units-1.7/000077500000000000000000000000001227274467300146645ustar00rootroot00000000000000ruby-numru-units-1.7/ChangeLog000066400000000000000000000120031227274467300164320ustar00rootroot00000000000000Thu 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.txt000066400000000000000000000032641227274467300165140ustar00rootroot00000000000000NumRu::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/Makefile000066400000000000000000000003021227274467300163170ustar00rootroot00000000000000all: @(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/000077500000000000000000000000001227274467300154315ustar00rootroot00000000000000ruby-numru-units-1.7/doc/Makefile000066400000000000000000000002061227274467300170670ustar00rootroot00000000000000all: 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.html000066400000000000000000000220431227274467300174620ustar00rootroot00000000000000 units.rd

class NumRu::Units

Overview

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.

Installation

Move to the top directly of this library (where you find the file install.rb). Then, type in the following:

% ruby install.rb

Usage Examples

Here is an example using the "irb" interactive shell ("%" is the command prompt, and ">>" is the irb prompt -- Type in those after it to test. "=>" shows the result.):

% irb --simple-prompt
>> require "numru/units"
=> true
>> un1 = NumRu::Units.new('kg.m2/s')
=> Units{kg.m2/s}
>> un2 = NumRu::Units.new('g.m')
=> Units{g.m}
>> un3 = un1 / un2
=> Units[Multi[Pow[Name[g], Number[-1]], Name[kg], Pow[Name[m], Number[1]], Pow[Name[s], Number[-1]]]]
>> un1.to_s
=> "kg.m2/s"
>> un2.to_s
=> "g.m"
>> un3.to_s
=> "g-1 kg.m1 s-1"
>> un3.reduce5
=> Units[Multi[Number[1000], Pow[Name[m], Number[1]], Pow[Name[s], Number[-1]]]]
>> un3.to_s
=> "1000 m1 s-1"

Note the difference between the results of un3.to_s before and after un3.reduce5, where the former retains the literal expression of each atomic unit, while the latter does the maximum reduction. You can change the default behavior by using the class method reduce_level=:

>> NumRu::Units.reduce_level = 5
=> :reduce5
>> un3.to_s
=> "1000 m1 s-1"

Note that you can eliminate the prefix NumRu:: by "including" it:

>> require "numru/units"
=> true
>> include NumRu
=> Object
>> un1 = Units.new('kg.m2/s')
=> Units{kg.m2/s}
>> Units.reduce_level = 5
=> :reduce5

Class Methods

In what follows, the prefix NumRu:: is omitted for conciseness. See Usage Examples on this issue.

Units.new(string)

Constructor.

ARGUMENTS

  • string (String): string expression of the units. [factor] units; [factor] time units [since ...] (see EXAMPLES below)

RETURN VALUE

  • a Units

EXAMPLE

units = Units.new('kg.m2/s')
units = Units.new('100 m')
units = Units.new('g/kg')
units = Units.new('hour since 2003-10-01 00:00:0 +0:00')
units = Units.new('hour since 2003-10-01')   # same as above
units = Units.new('minutes since 2003-10-01 03:15:22.5 -6:00')

Units[string]

Same as Units.new

Units.reduce_level=(n)

Set the reduction level before to_s is applied.

ARGUMENTS

  • n (Integer): the reduction level. The default value is 4. Use 5 if you want a full reduction. Levels lower than 4 will not be needed.

Instance Methods

to_s

Returns a string expression of the units.

*(other)

Multiplies self with another units. Applies reduce4 to format the string expression of the result.

ARGUMENTS

  • other [Units]: the other units

RETURN VALUE

  • a Units

/(other)

Divides self with another units. Applies reduce4 to format the string expression of the result.

ARGUMENTS

  • other [Units]: the other units

RETURN VALUE

  • a Units

**(pow)

Power. Applies reduce4 to format the string expression of the result.

ARGUMENTS

  • pow [Numeric -- Integer, Rational, or Float]

RETURN VALUE

  • a Units

==(other)

Whether the two units are the same. ('m/s' and 'm.s-1' are the same, for instance.)

===(other)

Same as ==.

=~(other)

Whether the two units are compatible (i.e., with the same dimensionality). ('m/s' and '10 m.s-1' are compatible, for instance.)

reduce4

Moderately reduces the string expression of the units (destructive method). This method preserves string expression of atomic units. See also reduce5.

RETURN VALUE

  • self

EXAMPLE

Untis.new('hour/hour').reduce4.to_s
  # => "1"
Units.new('mm/m').reduce4.to_s
  # => "mm.m-1"

reduce5

Aggressively reduces the string expression of the units (destructive method). See also reduce4.

RETURN VALUE

  • self

EXAMPLE

Units.new('hour/hour').reduce4.to_s
  # => "1"
Units.new('mm/m').reduce5.to_s
  # => "0.001"

convert(numeric, to_units)

Converts a numeric of the current units (=self) to to_units.

ARGUMENTS

  • numeric [Numeric]: the numeric to convert
  • to_units [Units]: the units converted into

RETURN VALUE

  • a Numeric

EXCEPTIONS

  • self and to_units are incompatible.

convert2(val, to_units)

Like convert, but (1) accpets any Numeric-like objects, and (2) does not raise an exception even if the two units are incompatible -- in this case, simply returns val (warned).

ARGUMENTS

  • val [a Numeric-like class, for which * and + are defined]: the value to convert
  • to_units [Units]: the units converted into

RETURN VALUE

  • an object with the same class as val.

factor_and_offset(to_units)

Returns the factor and offset to convert from self to to_units. The conversion is done as scale_factor * operand + add_offset.

ARGUMENTS

  • to_units [Units]: the units to be converted into

RETURN VALUE

  • [ scale_factor, add_offset ] (a 2-element Array, where both are Numeric)

EXAMPLE

scale_factor, add_offset = from_units.factor_and_offset(to_units)
to = scale_factor * from + add_offset
ruby-numru-units-1.7/doc/units.rd000066400000000000000000000140751227274467300171310ustar00rootroot00000000000000=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.rb000066400000000000000000000043501227274467300166610ustar00rootroot00000000000000require '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/000077500000000000000000000000001227274467300154325ustar00rootroot00000000000000ruby-numru-units-1.7/lib/numru/000077500000000000000000000000001227274467300166005ustar00rootroot00000000000000ruby-numru-units-1.7/lib/numru/units.rb000066400000000000000000003734611227274467300203050ustar00rootroot00000000000000# # 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/000077500000000000000000000000001227274467300154535ustar00rootroot00000000000000ruby-numru-units-1.7/src/Makefile000066400000000000000000000017241227274467300171170ustar00rootroot00000000000000all: 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.txt000066400000000000000000000066011227274467300176700ustar00rootroot00000000000000s 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.rb000066400000000000000000000177611227274467300166040ustar00rootroot00000000000000def 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.rb000066400000000000000000000032631227274467300175750ustar00rootroot00000000000000 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.rb000066400000000000000000000046301227274467300174460ustar00rootroot00000000000000 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.rb000066400000000000000000000024601227274467300175700ustar00rootroot00000000000000class 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.rb000066400000000000000000000061041227274467300167260ustar00rootroot00000000000000=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.rb000066400000000000000000000017031227274467300201370ustar00rootroot00000000000000class 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.rb000066400000000000000000000032021227274467300174500ustar00rootroot00000000000000class 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.rb000066400000000000000000000023751227274467300171410ustar00rootroot00000000000000class 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.rb000066400000000000000000000015161227274467300177660ustar00rootroot00000000000000class 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.rb000066400000000000000000000103501227274467300167560ustar00rootroot00000000000000require '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.rb000066400000000000000000000054621227274467300176130ustar00rootroot00000000000000class 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.racc000066400000000000000000003233601227274467300174560ustar00rootroot00000000000000class 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.rb000066400000000000000000003734611227274467300171600ustar00rootroot00000000000000# # 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.rd000066400000000000000000000074551227274467300171570ustar00rootroot00000000000000=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.rb000066400000000000000000002470611227274467300167450ustar00rootroot00000000000000class 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