/*
* Copyright (C) 2014 University of Dundee & Open Microscopy Environment.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package omero.model;
import static ome.model.units.Conversion.Mul;
import static ome.model.units.Conversion.Add;
import static ome.model.units.Conversion.Int;
import static ome.model.units.Conversion.Pow;
import static ome.model.units.Conversion.Rat;
import static ome.model.units.Conversion.Sym;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.Map;
import java.util.EnumMap;
import java.util.HashMap;
import ome.model.ModelBased;
import ome.model.units.BigResult;
import ome.model.units.Conversion;
import ome.units.unit.Unit;
import ome.util.Filterable;
import ome.util.ModelMapper;
import ome.util.ReverseModelMapper;
import ome.xml.model.enums.EnumerationException;
import omero.model.enums.UnitsLength;
/**
* Blitz wrapper around the {@link ome.model.units.Length} class.
* Like {@link Details} and {@link Permissions}, this object
* is embedded into other objects and does not have a full life
* cycle of its own.
*
* @author Josh Moore, josh at glencoesoftware.com
*/
public class LengthI extends Length implements ModelBased {
private static final long serialVersionUID = 1L;
private static Map<UnitsLength, Conversion> createMapANGSTROM() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Mul(Int(1495978707), Pow(10, 12))), Sym("ang")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 8), Sym("ang")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Int(1), Pow(10, 8)), Sym("ang")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(1), Pow(10, 11)), Sym("ang")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("ang")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 28)), Sym("ang")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 5), Sym("ang")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Mul(Int(12), Pow(10, 14))), Sym("ang")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 19)), Sym("ang")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1), Pow(10, 12)), Sym("ang")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Pow(10, 14)), Sym("ang")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Pow(10, 13)), Sym("ang")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Mul(Int("94607304725808"), Pow(10, 12))), Sym("ang")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Mul(Int(25), Pow(10, 12))), Sym("ang")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 16)), Sym("ang")));
c.put(UnitsLength.METER, Mul(Rat(Int(1), Pow(10, 10)), Sym("ang")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Int(1), Pow(10, 4)), Sym("ang")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Mul(Int(576), Pow(10, 15))), Sym("ang")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Int(1), Pow(10, 7)), Sym("ang")));
c.put(UnitsLength.NANOMETER, Mul(Rat(Int(1), Int(10)), Sym("ang")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 19))), Sym("ang")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 25)), Sym("ang")));
c.put(UnitsLength.PICOMETER, Mul(Int(100), Sym("ang")));
c.put(UnitsLength.POINT, Mul(Rat(Int(3543309), Mul(Int(125), Pow(10, 11))), Sym("ang")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 22)), Sym("ang")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 17)), Sym("ang")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Mul(Int(36), Pow(10, 14))), Sym("ang")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 14), Sym("ang")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 34)), Sym("ang")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 11), Sym("ang")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 31)), Sym("ang")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapASTRONOMICALUNIT() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Mul(Int(1495978707), Pow(10, 12)), Sym("ua")));
c.put(UnitsLength.ATTOMETER, Mul(Mul(Int(1495978707), Pow(10, 20)), Sym("ua")));
c.put(UnitsLength.CENTIMETER, Mul(Mul(Int(1495978707), Pow(10, 4)), Sym("ua")));
c.put(UnitsLength.DECAMETER, Mul(Int("14959787070"), Sym("ua")));
c.put(UnitsLength.DECIMETER, Mul(Int("1495978707000"), Sym("ua")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1495978707), Pow(10, 16)), Sym("ua")));
c.put(UnitsLength.FEMTOMETER, Mul(Mul(Int(1495978707), Pow(10, 17)), Sym("ua")));
c.put(UnitsLength.FOOT, Mul(Rat(Int("196322770974869"), Int(400)), Sym("ua")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1495978707), Pow(10, 7)), Sym("ua")));
c.put(UnitsLength.HECTOMETER, Mul(Int(1495978707), Sym("ua")));
c.put(UnitsLength.INCH, Mul(Rat(Int("588968312924607"), Int(100)), Sym("ua")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1495978707), Int(10)), Sym("ua")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(6830953), Int("431996825232")), Sym("ua")));
c.put(UnitsLength.LINE, Mul(Rat(Int("1766904938773821"), Int(25)), Sym("ua")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1495978707), Pow(10, 4)), Sym("ua")));
c.put(UnitsLength.METER, Mul(Int("149597870700"), Sym("ua")));
c.put(UnitsLength.MICROMETER, Mul(Mul(Int(1495978707), Pow(10, 8)), Sym("ua")));
c.put(UnitsLength.MILE, Mul(Rat(Int("17847524634079"), Int(192000)), Sym("ua")));
c.put(UnitsLength.MILLIMETER, Mul(Mul(Int(1495978707), Pow(10, 5)), Sym("ua")));
c.put(UnitsLength.NANOMETER, Mul(Mul(Int(1495978707), Pow(10, 11)), Sym("ua")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(498659569), Mul(Int(10285592), Pow(10, 7))), Sym("ua")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1495978707), Pow(10, 13)), Sym("ua")));
c.put(UnitsLength.PICOMETER, Mul(Mul(Int(1495978707), Pow(10, 14)), Sym("ua")));
c.put(UnitsLength.POINT, Mul(Rat(Int("10601429632642926"), Int(25)), Sym("ua")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1495978707), Pow(10, 10)), Sym("ua")));
c.put(UnitsLength.THOU, Mul(Rat(Int("588968312924607"), Pow(10, 5)), Sym("ua")));
c.put(UnitsLength.YARD, Mul(Rat(Int("196322770974869"), Int(1200)), Sym("ua")));
c.put(UnitsLength.YOCTOMETER, Mul(Mul(Int(1495978707), Pow(10, 26)), Sym("ua")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1495978707), Pow(10, 22)), Sym("ua")));
c.put(UnitsLength.ZEPTOMETER, Mul(Mul(Int(1495978707), Pow(10, 23)), Sym("ua")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1495978707), Pow(10, 19)), Sym("ua")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapATTOMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Rat(Int(1), Pow(10, 8)), Sym("attom")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Mul(Int(1495978707), Pow(10, 20))), Sym("attom")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Int(1), Pow(10, 16)), Sym("attom")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(1), Pow(10, 19)), Sym("attom")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Int(1), Pow(10, 17)), Sym("attom")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 36)), Sym("attom")));
c.put(UnitsLength.FEMTOMETER, Mul(Rat(Int(1), Int(1000)), Sym("attom")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Mul(Int(12), Pow(10, 22))), Sym("attom")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 27)), Sym("attom")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1), Pow(10, 20)), Sym("attom")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Pow(10, 22)), Sym("attom")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Pow(10, 21)), Sym("attom")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Mul(Int("94607304725808"), Pow(10, 20))), Sym("attom")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Mul(Int(25), Pow(10, 20))), Sym("attom")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 24)), Sym("attom")));
c.put(UnitsLength.METER, Mul(Rat(Int(1), Pow(10, 18)), Sym("attom")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Int(1), Pow(10, 12)), Sym("attom")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Mul(Int(576), Pow(10, 23))), Sym("attom")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Int(1), Pow(10, 15)), Sym("attom")));
c.put(UnitsLength.NANOMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("attom")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 27))), Sym("attom")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 33)), Sym("attom")));
c.put(UnitsLength.PICOMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("attom")));
c.put(UnitsLength.POINT, Mul(Rat(Int(3543309), Mul(Int(125), Pow(10, 19))), Sym("attom")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 30)), Sym("attom")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 25)), Sym("attom")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Mul(Int(36), Pow(10, 22))), Sym("attom")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 6), Sym("attom")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 42)), Sym("attom")));
c.put(UnitsLength.ZEPTOMETER, Mul(Int(1000), Sym("attom")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 39)), Sym("attom")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapCENTIMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 8), Sym("centim")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Mul(Int(1495978707), Pow(10, 4))), Sym("centim")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 16), Sym("centim")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(1), Int(1000)), Sym("centim")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Int(1), Int(10)), Sym("centim")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 20)), Sym("centim")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 13), Sym("centim")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Mul(Int(12), Pow(10, 6))), Sym("centim")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 11)), Sym("centim")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1), Pow(10, 4)), Sym("centim")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Pow(10, 6)), Sym("centim")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Pow(10, 5)), Sym("centim")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Mul(Int("94607304725808"), Pow(10, 4))), Sym("centim")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Mul(Int(25), Pow(10, 4))), Sym("centim")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 8)), Sym("centim")));
c.put(UnitsLength.METER, Mul(Rat(Int(1), Int(100)), Sym("centim")));
c.put(UnitsLength.MICROMETER, Mul(Pow(10, 4), Sym("centim")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Mul(Int(576), Pow(10, 7))), Sym("centim")));
c.put(UnitsLength.MILLIMETER, Mul(Int(10), Sym("centim")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 7), Sym("centim")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 11))), Sym("centim")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 17)), Sym("centim")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 10), Sym("centim")));
c.put(UnitsLength.POINT, Mul(Rat(Int(3543309), Int(125000)), Sym("centim")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 14)), Sym("centim")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 9)), Sym("centim")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Mul(Int(36), Pow(10, 6))), Sym("centim")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 22), Sym("centim")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 26)), Sym("centim")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 19), Sym("centim")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 23)), Sym("centim")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapDECAMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 11), Sym("decam")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Int("14959787070")), Sym("decam")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 19), Sym("decam")));
c.put(UnitsLength.CENTIMETER, Mul(Int(1000), Sym("decam")));
c.put(UnitsLength.DECIMETER, Mul(Int(100), Sym("decam")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 17)), Sym("decam")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 16), Sym("decam")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Int(12000)), Sym("decam")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 8)), Sym("decam")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1), Int(10)), Sym("decam")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Int(1000)), Sym("decam")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Int(100)), Sym("decam")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Int("946073047258080")), Sym("decam")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Int(250)), Sym("decam")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 5)), Sym("decam")));
c.put(UnitsLength.METER, Mul(Int(10), Sym("decam")));
c.put(UnitsLength.MICROMETER, Mul(Pow(10, 7), Sym("decam")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Mul(Int(576), Pow(10, 4))), Sym("decam")));
c.put(UnitsLength.MILLIMETER, Mul(Pow(10, 4), Sym("decam")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 10), Sym("decam")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 8))), Sym("decam")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 14)), Sym("decam")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 13), Sym("decam")));
c.put(UnitsLength.POINT, Mul(Rat(Int(3543309), Int(125)), Sym("decam")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 11)), Sym("decam")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 6)), Sym("decam")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Int(36000)), Sym("decam")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 25), Sym("decam")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 23)), Sym("decam")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 22), Sym("decam")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 20)), Sym("decam")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapDECIMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 9), Sym("decim")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Int("1495978707000")), Sym("decim")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 17), Sym("decim")));
c.put(UnitsLength.CENTIMETER, Mul(Int(10), Sym("decim")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(1), Int(100)), Sym("decim")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 19)), Sym("decim")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 14), Sym("decim")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Mul(Int(12), Pow(10, 5))), Sym("decim")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 10)), Sym("decim")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1), Int(1000)), Sym("decim")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Pow(10, 5)), Sym("decim")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Pow(10, 4)), Sym("decim")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Int("94607304725808000")), Sym("decim")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Int(25000)), Sym("decim")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 7)), Sym("decim")));
c.put(UnitsLength.METER, Mul(Rat(Int(1), Int(10)), Sym("decim")));
c.put(UnitsLength.MICROMETER, Mul(Pow(10, 5), Sym("decim")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Mul(Int(576), Pow(10, 6))), Sym("decim")));
c.put(UnitsLength.MILLIMETER, Mul(Int(100), Sym("decim")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 8), Sym("decim")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 10))), Sym("decim")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 16)), Sym("decim")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 11), Sym("decim")));
c.put(UnitsLength.POINT, Mul(Rat(Int(3543309), Int(12500)), Sym("decim")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 13)), Sym("decim")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 8)), Sym("decim")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Mul(Int(36), Pow(10, 5))), Sym("decim")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 23), Sym("decim")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 25)), Sym("decim")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 20), Sym("decim")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 22)), Sym("decim")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapEXAMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 28), Sym("exam")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Pow(10, 16), Int(1495978707)), Sym("exam")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 36), Sym("exam")));
c.put(UnitsLength.CENTIMETER, Mul(Pow(10, 20), Sym("exam")));
c.put(UnitsLength.DECAMETER, Mul(Pow(10, 17), Sym("exam")));
c.put(UnitsLength.DECIMETER, Mul(Pow(10, 19), Sym("exam")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 33), Sym("exam")));
c.put(UnitsLength.FOOT, Mul(Rat(Mul(Int(9842525), Pow(10, 12)), Int(3)), Sym("exam")));
c.put(UnitsLength.GIGAMETER, Mul(Pow(10, 9), Sym("exam")));
c.put(UnitsLength.HECTOMETER, Mul(Pow(10, 16), Sym("exam")));
c.put(UnitsLength.INCH, Mul(Mul(Int(393701), Pow(10, 14)), Sym("exam")));
c.put(UnitsLength.KILOMETER, Mul(Pow(10, 15), Sym("exam")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Mul(Int(625), Pow(10, 12)), Int("5912956545363")), Sym("exam")));
c.put(UnitsLength.LINE, Mul(Mul(Int(4724412), Pow(10, 14)), Sym("exam")));
c.put(UnitsLength.MEGAMETER, Mul(Pow(10, 12), Sym("exam")));
c.put(UnitsLength.METER, Mul(Pow(10, 18), Sym("exam")));
c.put(UnitsLength.MICROMETER, Mul(Pow(10, 24), Sym("exam")));
c.put(UnitsLength.MILE, Mul(Rat(Mul(Int(559234375), Pow(10, 7)), Int(9)), Sym("exam")));
c.put(UnitsLength.MILLIMETER, Mul(Pow(10, 21), Sym("exam")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 27), Sym("exam")));
c.put(UnitsLength.PARSEC, Mul(Rat(Mul(Int(125), Pow(10, 6)), Int(3857097)), Sym("exam")));
c.put(UnitsLength.PETAMETER, Mul(Int(1000), Sym("exam")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 30), Sym("exam")));
c.put(UnitsLength.POINT, Mul(Mul(Int(28346472), Pow(10, 14)), Sym("exam")));
c.put(UnitsLength.TERAMETER, Mul(Pow(10, 6), Sym("exam")));
c.put(UnitsLength.THOU, Mul(Mul(Int(393701), Pow(10, 11)), Sym("exam")));
c.put(UnitsLength.YARD, Mul(Rat(Mul(Int(9842525), Pow(10, 12)), Int(9)), Sym("exam")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 42), Sym("exam")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("exam")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 39), Sym("exam")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Int(1000)), Sym("exam")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapFEMTOMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Rat(Int(1), Pow(10, 5)), Sym("femtom")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Mul(Int(1495978707), Pow(10, 17))), Sym("femtom")));
c.put(UnitsLength.ATTOMETER, Mul(Int(1000), Sym("femtom")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Int(1), Pow(10, 13)), Sym("femtom")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(1), Pow(10, 16)), Sym("femtom")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Int(1), Pow(10, 14)), Sym("femtom")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 33)), Sym("femtom")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Mul(Int(12), Pow(10, 19))), Sym("femtom")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 24)), Sym("femtom")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1), Pow(10, 17)), Sym("femtom")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Pow(10, 19)), Sym("femtom")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Pow(10, 18)), Sym("femtom")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Mul(Int("94607304725808"), Pow(10, 17))), Sym("femtom")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Mul(Int(25), Pow(10, 17))), Sym("femtom")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 21)), Sym("femtom")));
c.put(UnitsLength.METER, Mul(Rat(Int(1), Pow(10, 15)), Sym("femtom")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("femtom")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Mul(Int(576), Pow(10, 20))), Sym("femtom")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Int(1), Pow(10, 12)), Sym("femtom")));
c.put(UnitsLength.NANOMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("femtom")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 24))), Sym("femtom")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 30)), Sym("femtom")));
c.put(UnitsLength.PICOMETER, Mul(Rat(Int(1), Int(1000)), Sym("femtom")));
c.put(UnitsLength.POINT, Mul(Rat(Int(3543309), Mul(Int(125), Pow(10, 16))), Sym("femtom")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 27)), Sym("femtom")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 22)), Sym("femtom")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Mul(Int(36), Pow(10, 19))), Sym("femtom")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 9), Sym("femtom")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 39)), Sym("femtom")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 6), Sym("femtom")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 36)), Sym("femtom")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapFOOT() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Rat(Mul(Int(12), Pow(10, 14)), Int(393701)), Sym("ft")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(400), Int("196322770974869")), Sym("ft")));
c.put(UnitsLength.ATTOMETER, Mul(Rat(Mul(Int(12), Pow(10, 22)), Int(393701)), Sym("ft")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Mul(Int(12), Pow(10, 6)), Int(393701)), Sym("ft")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(12000), Int(393701)), Sym("ft")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Mul(Int(12), Pow(10, 5)), Int(393701)), Sym("ft")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(3), Mul(Int(9842525), Pow(10, 12))), Sym("ft")));
c.put(UnitsLength.FEMTOMETER, Mul(Rat(Mul(Int(12), Pow(10, 19)), Int(393701)), Sym("ft")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(3), Int("9842525000")), Sym("ft")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1200), Int(393701)), Sym("ft")));
c.put(UnitsLength.INCH, Mul(Int(12), Sym("ft")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(120), Int(393701)), Sym("ft")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(25), Int("775978968288652821")), Sym("ft")));
c.put(UnitsLength.LINE, Mul(Int(144), Sym("ft")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(3), Int(9842525)), Sym("ft")));
c.put(UnitsLength.METER, Mul(Rat(Mul(Int(12), Pow(10, 4)), Int(393701)), Sym("ft")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Mul(Int(12), Pow(10, 10)), Int(393701)), Sym("ft")));
c.put(UnitsLength.MILE, Mul(Rat(Int(1), Int(5280)), Sym("ft")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Mul(Int(12), Pow(10, 7)), Int(393701)), Sym("ft")));
c.put(UnitsLength.NANOMETER, Mul(Rat(Mul(Int(12), Pow(10, 13)), Int(393701)), Sym("ft")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int("1012361963998"), Pow(10, 5))), Sym("ft")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(3), Mul(Int(9842525), Pow(10, 9))), Sym("ft")));
c.put(UnitsLength.PICOMETER, Mul(Rat(Mul(Int(12), Pow(10, 16)), Int(393701)), Sym("ft")));
c.put(UnitsLength.POINT, Mul(Int(864), Sym("ft")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(3), Mul(Int(9842525), Pow(10, 6))), Sym("ft")));
c.put(UnitsLength.THOU, Mul(Rat(Int(3), Int(250)), Sym("ft")));
c.put(UnitsLength.YARD, Mul(Rat(Int(1), Int(3)), Sym("ft")));
c.put(UnitsLength.YOCTOMETER, Mul(Rat(Mul(Int(12), Pow(10, 28)), Int(393701)), Sym("ft")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(3), Mul(Int(9842525), Pow(10, 18))), Sym("ft")));
c.put(UnitsLength.ZEPTOMETER, Mul(Rat(Mul(Int(12), Pow(10, 25)), Int(393701)), Sym("ft")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(3), Mul(Int(9842525), Pow(10, 15))), Sym("ft")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapGIGAMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 19), Sym("gigam")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Pow(10, 7), Int(1495978707)), Sym("gigam")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 27), Sym("gigam")));
c.put(UnitsLength.CENTIMETER, Mul(Pow(10, 11), Sym("gigam")));
c.put(UnitsLength.DECAMETER, Mul(Pow(10, 8), Sym("gigam")));
c.put(UnitsLength.DECIMETER, Mul(Pow(10, 10), Sym("gigam")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("gigam")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 24), Sym("gigam")));
c.put(UnitsLength.FOOT, Mul(Rat(Int("9842525000"), Int(3)), Sym("gigam")));
c.put(UnitsLength.HECTOMETER, Mul(Pow(10, 7), Sym("gigam")));
c.put(UnitsLength.INCH, Mul(Mul(Int(393701), Pow(10, 5)), Sym("gigam")));
c.put(UnitsLength.KILOMETER, Mul(Pow(10, 6), Sym("gigam")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(625000), Int("5912956545363")), Sym("gigam")));
c.put(UnitsLength.LINE, Mul(Mul(Int(4724412), Pow(10, 5)), Sym("gigam")));
c.put(UnitsLength.MEGAMETER, Mul(Int(1000), Sym("gigam")));
c.put(UnitsLength.METER, Mul(Pow(10, 9), Sym("gigam")));
c.put(UnitsLength.MICROMETER, Mul(Pow(10, 15), Sym("gigam")));
c.put(UnitsLength.MILE, Mul(Rat(Int(22369375), Int(36)), Sym("gigam")));
c.put(UnitsLength.MILLIMETER, Mul(Pow(10, 12), Sym("gigam")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 18), Sym("gigam")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Int(30856776)), Sym("gigam")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("gigam")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 21), Sym("gigam")));
c.put(UnitsLength.POINT, Mul(Mul(Int(28346472), Pow(10, 5)), Sym("gigam")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Int(1000)), Sym("gigam")));
c.put(UnitsLength.THOU, Mul(Int(39370100), Sym("gigam")));
c.put(UnitsLength.YARD, Mul(Rat(Int("9842525000"), Int(9)), Sym("gigam")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 33), Sym("gigam")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 15)), Sym("gigam")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 30), Sym("gigam")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 12)), Sym("gigam")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapHECTOMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 12), Sym("hectom")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Int(1495978707)), Sym("hectom")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 20), Sym("hectom")));
c.put(UnitsLength.CENTIMETER, Mul(Pow(10, 4), Sym("hectom")));
c.put(UnitsLength.DECAMETER, Mul(Int(10), Sym("hectom")));
c.put(UnitsLength.DECIMETER, Mul(Int(1000), Sym("hectom")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 16)), Sym("hectom")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 17), Sym("hectom")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Int(1200)), Sym("hectom")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 7)), Sym("hectom")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Int(100)), Sym("hectom")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Int(10)), Sym("hectom")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Int("94607304725808")), Sym("hectom")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Int(25)), Sym("hectom")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 4)), Sym("hectom")));
c.put(UnitsLength.METER, Mul(Int(100), Sym("hectom")));
c.put(UnitsLength.MICROMETER, Mul(Pow(10, 8), Sym("hectom")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Int(576000)), Sym("hectom")));
c.put(UnitsLength.MILLIMETER, Mul(Pow(10, 5), Sym("hectom")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 11), Sym("hectom")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 7))), Sym("hectom")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 13)), Sym("hectom")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 14), Sym("hectom")));
c.put(UnitsLength.POINT, Mul(Rat(Int(7086618), Int(25)), Sym("hectom")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 10)), Sym("hectom")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 5)), Sym("hectom")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Int(3600)), Sym("hectom")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 26), Sym("hectom")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 22)), Sym("hectom")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 23), Sym("hectom")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 19)), Sym("hectom")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapINCH() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Rat(Pow(10, 14), Int(393701)), Sym("in")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(100), Int("588968312924607")), Sym("in")));
c.put(UnitsLength.ATTOMETER, Mul(Rat(Pow(10, 22), Int(393701)), Sym("in")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Pow(10, 6), Int(393701)), Sym("in")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(1000), Int(393701)), Sym("in")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Pow(10, 5), Int(393701)), Sym("in")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Mul(Int(393701), Pow(10, 14))), Sym("in")));
c.put(UnitsLength.FEMTOMETER, Mul(Rat(Pow(10, 19), Int(393701)), Sym("in")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(1), Int(12)), Sym("in")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Mul(Int(393701), Pow(10, 5))), Sym("in")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(100), Int(393701)), Sym("in")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(10), Int(393701)), Sym("in")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(25), Int("9311747619463833852")), Sym("in")));
c.put(UnitsLength.LINE, Mul(Int(12), Sym("in")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Int(39370100)), Sym("in")));
c.put(UnitsLength.METER, Mul(Rat(Pow(10, 4), Int(393701)), Sym("in")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Pow(10, 10), Int(393701)), Sym("in")));
c.put(UnitsLength.MILE, Mul(Rat(Int(1), Int(63360)), Sym("in")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Pow(10, 7), Int(393701)), Sym("in")));
c.put(UnitsLength.NANOMETER, Mul(Rat(Pow(10, 13), Int(393701)), Sym("in")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int("12148343567976"), Pow(10, 5))), Sym("in")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Mul(Int(393701), Pow(10, 11))), Sym("in")));
c.put(UnitsLength.PICOMETER, Mul(Rat(Pow(10, 16), Int(393701)), Sym("in")));
c.put(UnitsLength.POINT, Mul(Int(72), Sym("in")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Mul(Int(393701), Pow(10, 8))), Sym("in")));
c.put(UnitsLength.THOU, Mul(Rat(Int(1), Int(1000)), Sym("in")));
c.put(UnitsLength.YARD, Mul(Rat(Int(1), Int(36)), Sym("in")));
c.put(UnitsLength.YOCTOMETER, Mul(Rat(Pow(10, 28), Int(393701)), Sym("in")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Mul(Int(393701), Pow(10, 20))), Sym("in")));
c.put(UnitsLength.ZEPTOMETER, Mul(Rat(Pow(10, 25), Int(393701)), Sym("in")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Mul(Int(393701), Pow(10, 17))), Sym("in")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapKILOMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 13), Sym("kilom")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(10), Int(1495978707)), Sym("kilom")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 21), Sym("kilom")));
c.put(UnitsLength.CENTIMETER, Mul(Pow(10, 5), Sym("kilom")));
c.put(UnitsLength.DECAMETER, Mul(Int(100), Sym("kilom")));
c.put(UnitsLength.DECIMETER, Mul(Pow(10, 4), Sym("kilom")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 15)), Sym("kilom")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 18), Sym("kilom")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Int(120)), Sym("kilom")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("kilom")));
c.put(UnitsLength.HECTOMETER, Mul(Int(10), Sym("kilom")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Int(10)), Sym("kilom")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(5), Int("47303652362904")), Sym("kilom")));
c.put(UnitsLength.LINE, Mul(Rat(Int(2362206), Int(5)), Sym("kilom")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Int(1000)), Sym("kilom")));
c.put(UnitsLength.METER, Mul(Int(1000), Sym("kilom")));
c.put(UnitsLength.MICROMETER, Mul(Pow(10, 9), Sym("kilom")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Int(57600)), Sym("kilom")));
c.put(UnitsLength.MILLIMETER, Mul(Pow(10, 6), Sym("kilom")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 12), Sym("kilom")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 6))), Sym("kilom")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 12)), Sym("kilom")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 15), Sym("kilom")));
c.put(UnitsLength.POINT, Mul(Rat(Int(14173236), Int(5)), Sym("kilom")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("kilom")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 4)), Sym("kilom")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Int(360)), Sym("kilom")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 27), Sym("kilom")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 21)), Sym("kilom")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 24), Sym("kilom")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 18)), Sym("kilom")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapLIGHTYEAR() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Mul(Int("94607304725808"), Pow(10, 12)), Sym("ly")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int("431996825232"), Int(6830953)), Sym("ly")));
c.put(UnitsLength.ATTOMETER, Mul(Mul(Int("94607304725808"), Pow(10, 20)), Sym("ly")));
c.put(UnitsLength.CENTIMETER, Mul(Mul(Int("94607304725808"), Pow(10, 4)), Sym("ly")));
c.put(UnitsLength.DECAMETER, Mul(Int("946073047258080"), Sym("ly")));
c.put(UnitsLength.DECIMETER, Mul(Int("94607304725808000"), Sym("ly")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int("5912956545363"), Mul(Int(625), Pow(10, 12))), Sym("ly")));
c.put(UnitsLength.FEMTOMETER, Mul(Mul(Int("94607304725808"), Pow(10, 17)), Sym("ly")));
c.put(UnitsLength.FOOT, Mul(Rat(Int("775978968288652821"), Int(25)), Sym("ly")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int("5912956545363"), Int(625000)), Sym("ly")));
c.put(UnitsLength.HECTOMETER, Mul(Int("94607304725808"), Sym("ly")));
c.put(UnitsLength.INCH, Mul(Rat(Int("9311747619463833852"), Int(25)), Sym("ly")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int("47303652362904"), Int(5)), Sym("ly")));
c.put(UnitsLength.LINE, Mul(Rat(Int("111740971433566006224"), Int(25)), Sym("ly")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int("5912956545363"), Int(625)), Sym("ly")));
c.put(UnitsLength.METER, Mul(Int("9460730472580800"), Sym("ly")));
c.put(UnitsLength.MICROMETER, Mul(Mul(Int("94607304725808"), Pow(10, 8)), Sym("ly")));
c.put(UnitsLength.MILE, Mul(Rat(Int("23514514190565237"), Int(4000)), Sym("ly")));
c.put(UnitsLength.MILLIMETER, Mul(Mul(Int("94607304725808"), Pow(10, 5)), Sym("ly")));
c.put(UnitsLength.NANOMETER, Mul(Mul(Int("94607304725808"), Pow(10, 11)), Sym("ly")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int("1970985515121"), Mul(Int(6428495), Pow(10, 6))), Sym("ly")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int("5912956545363"), Mul(Int(625), Pow(10, 9))), Sym("ly")));
c.put(UnitsLength.PICOMETER, Mul(Mul(Int("94607304725808"), Pow(10, 14)), Sym("ly")));
c.put(UnitsLength.POINT, Mul(Rat(Int("670445828601396037344"), Int(25)), Sym("ly")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int("5912956545363"), Mul(Int(625), Pow(10, 6))), Sym("ly")));
c.put(UnitsLength.THOU, Mul(Rat(Int("2327936904865958463"), Int(6250)), Sym("ly")));
c.put(UnitsLength.YARD, Mul(Rat(Int("258659656096217607"), Int(25)), Sym("ly")));
c.put(UnitsLength.YOCTOMETER, Mul(Mul(Int("94607304725808"), Pow(10, 26)), Sym("ly")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int("5912956545363"), Mul(Int(625), Pow(10, 18))), Sym("ly")));
c.put(UnitsLength.ZEPTOMETER, Mul(Mul(Int("94607304725808"), Pow(10, 23)), Sym("ly")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int("5912956545363"), Mul(Int(625), Pow(10, 15))), Sym("ly")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapLINE() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Rat(Mul(Int(25), Pow(10, 12)), Int(1181103)), Sym("li")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(25), Int("1766904938773821")), Sym("li")));
c.put(UnitsLength.ATTOMETER, Mul(Rat(Mul(Int(25), Pow(10, 20)), Int(1181103)), Sym("li")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Mul(Int(25), Pow(10, 4)), Int(1181103)), Sym("li")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(250), Int(1181103)), Sym("li")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Int(25000), Int(1181103)), Sym("li")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Mul(Int(4724412), Pow(10, 14))), Sym("li")));
c.put(UnitsLength.FEMTOMETER, Mul(Rat(Mul(Int(25), Pow(10, 17)), Int(1181103)), Sym("li")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(1), Int(144)), Sym("li")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Mul(Int(4724412), Pow(10, 5))), Sym("li")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(25), Int(1181103)), Sym("li")));
c.put(UnitsLength.INCH, Mul(Rat(Int(1), Int(12)), Sym("li")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(5), Int(2362206)), Sym("li")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(25), Int("111740971433566006224")), Sym("li")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Int(472441200)), Sym("li")));
c.put(UnitsLength.METER, Mul(Rat(Int(2500), Int(1181103)), Sym("li")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Mul(Int(25), Pow(10, 8)), Int(1181103)), Sym("li")));
c.put(UnitsLength.MILE, Mul(Rat(Int(1), Int(760320)), Sym("li")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Mul(Int(25), Pow(10, 5)), Int(1181103)), Sym("li")));
c.put(UnitsLength.NANOMETER, Mul(Rat(Mul(Int(25), Pow(10, 11)), Int(1181103)), Sym("li")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int("145780122815712"), Pow(10, 5))), Sym("li")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Mul(Int(4724412), Pow(10, 11))), Sym("li")));
c.put(UnitsLength.PICOMETER, Mul(Rat(Mul(Int(25), Pow(10, 14)), Int(1181103)), Sym("li")));
c.put(UnitsLength.POINT, Mul(Int(6), Sym("li")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Mul(Int(4724412), Pow(10, 8))), Sym("li")));
c.put(UnitsLength.THOU, Mul(Rat(Int(1), Int(12000)), Sym("li")));
c.put(UnitsLength.YARD, Mul(Rat(Int(1), Int(432)), Sym("li")));
c.put(UnitsLength.YOCTOMETER, Mul(Rat(Mul(Int(25), Pow(10, 26)), Int(1181103)), Sym("li")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Mul(Int(4724412), Pow(10, 20))), Sym("li")));
c.put(UnitsLength.ZEPTOMETER, Mul(Rat(Mul(Int(25), Pow(10, 23)), Int(1181103)), Sym("li")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Mul(Int(4724412), Pow(10, 17))), Sym("li")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapMEGAMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 16), Sym("megam")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Pow(10, 4), Int(1495978707)), Sym("megam")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 24), Sym("megam")));
c.put(UnitsLength.CENTIMETER, Mul(Pow(10, 8), Sym("megam")));
c.put(UnitsLength.DECAMETER, Mul(Pow(10, 5), Sym("megam")));
c.put(UnitsLength.DECIMETER, Mul(Pow(10, 7), Sym("megam")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 12)), Sym("megam")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 21), Sym("megam")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(9842525), Int(3)), Sym("megam")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Int(1000)), Sym("megam")));
c.put(UnitsLength.HECTOMETER, Mul(Pow(10, 4), Sym("megam")));
c.put(UnitsLength.INCH, Mul(Int(39370100), Sym("megam")));
c.put(UnitsLength.KILOMETER, Mul(Int(1000), Sym("megam")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(625), Int("5912956545363")), Sym("megam")));
c.put(UnitsLength.LINE, Mul(Int(472441200), Sym("megam")));
c.put(UnitsLength.METER, Mul(Pow(10, 6), Sym("megam")));
c.put(UnitsLength.MICROMETER, Mul(Pow(10, 12), Sym("megam")));
c.put(UnitsLength.MILE, Mul(Rat(Int(178955), Int(288)), Sym("megam")));
c.put(UnitsLength.MILLIMETER, Mul(Pow(10, 9), Sym("megam")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 15), Sym("megam")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Int("30856776000")), Sym("megam")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("megam")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 18), Sym("megam")));
c.put(UnitsLength.POINT, Mul(Int("2834647200"), Sym("megam")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("megam")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Int(10)), Sym("megam")));
c.put(UnitsLength.YARD, Mul(Rat(Int(9842525), Int(9)), Sym("megam")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 30), Sym("megam")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 18)), Sym("megam")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 27), Sym("megam")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 15)), Sym("megam")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 10), Sym("m")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Int("149597870700")), Sym("m")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 18), Sym("m")));
c.put(UnitsLength.CENTIMETER, Mul(Int(100), Sym("m")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(1), Int(10)), Sym("m")));
c.put(UnitsLength.DECIMETER, Mul(Int(10), Sym("m")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 18)), Sym("m")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 15), Sym("m")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Mul(Int(12), Pow(10, 4))), Sym("m")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("m")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1), Int(100)), Sym("m")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Pow(10, 4)), Sym("m")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Int(1000)), Sym("m")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Int("9460730472580800")), Sym("m")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Int(2500)), Sym("m")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("m")));
c.put(UnitsLength.MICROMETER, Mul(Pow(10, 6), Sym("m")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Mul(Int(576), Pow(10, 5))), Sym("m")));
c.put(UnitsLength.MILLIMETER, Mul(Int(1000), Sym("m")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 9), Sym("m")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 9))), Sym("m")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 15)), Sym("m")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 12), Sym("m")));
c.put(UnitsLength.POINT, Mul(Rat(Int(3543309), Int(1250)), Sym("m")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 12)), Sym("m")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 7)), Sym("m")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Mul(Int(36), Pow(10, 4))), Sym("m")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 24), Sym("m")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 24)), Sym("m")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 21), Sym("m")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 21)), Sym("m")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapMICROMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 4), Sym("microm")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Mul(Int(1495978707), Pow(10, 8))), Sym("microm")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 12), Sym("microm")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Int(1), Pow(10, 4)), Sym("microm")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(1), Pow(10, 7)), Sym("microm")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Int(1), Pow(10, 5)), Sym("microm")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 24)), Sym("microm")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 9), Sym("microm")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Mul(Int(12), Pow(10, 10))), Sym("microm")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 15)), Sym("microm")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1), Pow(10, 8)), Sym("microm")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Pow(10, 10)), Sym("microm")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("microm")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Mul(Int("94607304725808"), Pow(10, 8))), Sym("microm")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Mul(Int(25), Pow(10, 8))), Sym("microm")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 12)), Sym("microm")));
c.put(UnitsLength.METER, Mul(Rat(Int(1), Pow(10, 6)), Sym("microm")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Mul(Int(576), Pow(10, 11))), Sym("microm")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Int(1), Int(1000)), Sym("microm")));
c.put(UnitsLength.NANOMETER, Mul(Int(1000), Sym("microm")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 15))), Sym("microm")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 21)), Sym("microm")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 6), Sym("microm")));
c.put(UnitsLength.POINT, Mul(Rat(Int(3543309), Mul(Int(125), Pow(10, 7))), Sym("microm")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 18)), Sym("microm")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 13)), Sym("microm")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Mul(Int(36), Pow(10, 10))), Sym("microm")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 18), Sym("microm")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 30)), Sym("microm")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 15), Sym("microm")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 27)), Sym("microm")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapMILE() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Rat(Mul(Int(576), Pow(10, 15)), Int(35791)), Sym("mi")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(192000), Int("17847524634079")), Sym("mi")));
c.put(UnitsLength.ATTOMETER, Mul(Rat(Mul(Int(576), Pow(10, 23)), Int(35791)), Sym("mi")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Mul(Int(576), Pow(10, 7)), Int(35791)), Sym("mi")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Mul(Int(576), Pow(10, 4)), Int(35791)), Sym("mi")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Mul(Int(576), Pow(10, 6)), Int(35791)), Sym("mi")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(9), Mul(Int(559234375), Pow(10, 7))), Sym("mi")));
c.put(UnitsLength.FEMTOMETER, Mul(Rat(Mul(Int(576), Pow(10, 20)), Int(35791)), Sym("mi")));
c.put(UnitsLength.FOOT, Mul(Int(5280), Sym("mi")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(36), Int(22369375)), Sym("mi")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(576000), Int(35791)), Sym("mi")));
c.put(UnitsLength.INCH, Mul(Int(63360), Sym("mi")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(57600), Int(35791)), Sym("mi")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(4000), Int("23514514190565237")), Sym("mi")));
c.put(UnitsLength.LINE, Mul(Int(760320), Sym("mi")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(288), Int(178955)), Sym("mi")));
c.put(UnitsLength.METER, Mul(Rat(Mul(Int(576), Pow(10, 5)), Int(35791)), Sym("mi")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Mul(Int(576), Pow(10, 11)), Int(35791)), Sym("mi")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Mul(Int(576), Pow(10, 8)), Int(35791)), Sym("mi")));
c.put(UnitsLength.NANOMETER, Mul(Rat(Mul(Int(576), Pow(10, 14)), Int(35791)), Sym("mi")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(3), Int("57520566136250")), Sym("mi")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(9), Mul(Int(559234375), Pow(10, 4))), Sym("mi")));
c.put(UnitsLength.PICOMETER, Mul(Rat(Mul(Int(576), Pow(10, 17)), Int(35791)), Sym("mi")));
c.put(UnitsLength.POINT, Mul(Int(4561920), Sym("mi")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(9), Int("5592343750")), Sym("mi")));
c.put(UnitsLength.THOU, Mul(Rat(Int(1584), Int(25)), Sym("mi")));
c.put(UnitsLength.YARD, Mul(Int(1760), Sym("mi")));
c.put(UnitsLength.YOCTOMETER, Mul(Rat(Mul(Int(576), Pow(10, 29)), Int(35791)), Sym("mi")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(9), Mul(Int(559234375), Pow(10, 13))), Sym("mi")));
c.put(UnitsLength.ZEPTOMETER, Mul(Rat(Mul(Int(576), Pow(10, 26)), Int(35791)), Sym("mi")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(9), Mul(Int(559234375), Pow(10, 10))), Sym("mi")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapMILLIMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 7), Sym("millim")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Mul(Int(1495978707), Pow(10, 5))), Sym("millim")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 15), Sym("millim")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Int(1), Int(10)), Sym("millim")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(1), Pow(10, 4)), Sym("millim")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Int(1), Int(100)), Sym("millim")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 21)), Sym("millim")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 12), Sym("millim")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Mul(Int(12), Pow(10, 7))), Sym("millim")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 12)), Sym("millim")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1), Pow(10, 5)), Sym("millim")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Pow(10, 7)), Sym("millim")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("millim")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Mul(Int("94607304725808"), Pow(10, 5))), Sym("millim")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Mul(Int(25), Pow(10, 5))), Sym("millim")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("millim")));
c.put(UnitsLength.METER, Mul(Rat(Int(1), Int(1000)), Sym("millim")));
c.put(UnitsLength.MICROMETER, Mul(Int(1000), Sym("millim")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Mul(Int(576), Pow(10, 8))), Sym("millim")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 6), Sym("millim")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 12))), Sym("millim")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 18)), Sym("millim")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 9), Sym("millim")));
c.put(UnitsLength.POINT, Mul(Rat(Int(3543309), Mul(Int(125), Pow(10, 4))), Sym("millim")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 15)), Sym("millim")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 10)), Sym("millim")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Mul(Int(36), Pow(10, 7))), Sym("millim")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 21), Sym("millim")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 27)), Sym("millim")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 18), Sym("millim")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 24)), Sym("millim")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapNANOMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Int(10), Sym("nanom")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Mul(Int(1495978707), Pow(10, 11))), Sym("nanom")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 9), Sym("nanom")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Int(1), Pow(10, 7)), Sym("nanom")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(1), Pow(10, 10)), Sym("nanom")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Int(1), Pow(10, 8)), Sym("nanom")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 27)), Sym("nanom")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 6), Sym("nanom")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Mul(Int(12), Pow(10, 13))), Sym("nanom")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 18)), Sym("nanom")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1), Pow(10, 11)), Sym("nanom")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Pow(10, 13)), Sym("nanom")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Pow(10, 12)), Sym("nanom")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Mul(Int("94607304725808"), Pow(10, 11))), Sym("nanom")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Mul(Int(25), Pow(10, 11))), Sym("nanom")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 15)), Sym("nanom")));
c.put(UnitsLength.METER, Mul(Rat(Int(1), Pow(10, 9)), Sym("nanom")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Int(1), Int(1000)), Sym("nanom")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Mul(Int(576), Pow(10, 14))), Sym("nanom")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("nanom")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 18))), Sym("nanom")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 24)), Sym("nanom")));
c.put(UnitsLength.PICOMETER, Mul(Int(1000), Sym("nanom")));
c.put(UnitsLength.POINT, Mul(Rat(Int(3543309), Mul(Int(125), Pow(10, 10))), Sym("nanom")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 21)), Sym("nanom")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 16)), Sym("nanom")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Mul(Int(36), Pow(10, 13))), Sym("nanom")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 15), Sym("nanom")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 33)), Sym("nanom")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 12), Sym("nanom")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 30)), Sym("nanom")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapPARSEC() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Mul(Int(30856776), Pow(10, 19)), Sym("pc")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Mul(Int(10285592), Pow(10, 7)), Int(498659569)), Sym("pc")));
c.put(UnitsLength.ATTOMETER, Mul(Mul(Int(30856776), Pow(10, 27)), Sym("pc")));
c.put(UnitsLength.CENTIMETER, Mul(Mul(Int(30856776), Pow(10, 11)), Sym("pc")));
c.put(UnitsLength.DECAMETER, Mul(Mul(Int(30856776), Pow(10, 8)), Sym("pc")));
c.put(UnitsLength.DECIMETER, Mul(Mul(Int(30856776), Pow(10, 10)), Sym("pc")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(3857097), Mul(Int(125), Pow(10, 6))), Sym("pc")));
c.put(UnitsLength.FEMTOMETER, Mul(Mul(Int(30856776), Pow(10, 24)), Sym("pc")));
c.put(UnitsLength.FOOT, Mul(Mul(Int("1012361963998"), Pow(10, 5)), Sym("pc")));
c.put(UnitsLength.GIGAMETER, Mul(Int(30856776), Sym("pc")));
c.put(UnitsLength.HECTOMETER, Mul(Mul(Int(30856776), Pow(10, 7)), Sym("pc")));
c.put(UnitsLength.INCH, Mul(Mul(Int("12148343567976"), Pow(10, 5)), Sym("pc")));
c.put(UnitsLength.KILOMETER, Mul(Mul(Int(30856776), Pow(10, 6)), Sym("pc")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Mul(Int(6428495), Pow(10, 6)), Int("1970985515121")), Sym("pc")));
c.put(UnitsLength.LINE, Mul(Mul(Int("145780122815712"), Pow(10, 5)), Sym("pc")));
c.put(UnitsLength.MEGAMETER, Mul(Int("30856776000"), Sym("pc")));
c.put(UnitsLength.METER, Mul(Mul(Int(30856776), Pow(10, 9)), Sym("pc")));
c.put(UnitsLength.MICROMETER, Mul(Mul(Int(30856776), Pow(10, 15)), Sym("pc")));
c.put(UnitsLength.MILE, Mul(Rat(Int("57520566136250"), Int(3)), Sym("pc")));
c.put(UnitsLength.MILLIMETER, Mul(Mul(Int(30856776), Pow(10, 12)), Sym("pc")));
c.put(UnitsLength.NANOMETER, Mul(Mul(Int(30856776), Pow(10, 18)), Sym("pc")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(3857097), Int(125000)), Sym("pc")));
c.put(UnitsLength.PICOMETER, Mul(Mul(Int(30856776), Pow(10, 21)), Sym("pc")));
c.put(UnitsLength.POINT, Mul(Mul(Int("874680736894272"), Pow(10, 5)), Sym("pc")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(3857097), Int(125)), Sym("pc")));
c.put(UnitsLength.THOU, Mul(Int("1214834356797600"), Sym("pc")));
c.put(UnitsLength.YARD, Mul(Rat(Mul(Int("1012361963998"), Pow(10, 5)), Int(3)), Sym("pc")));
c.put(UnitsLength.YOCTOMETER, Mul(Mul(Int(30856776), Pow(10, 33)), Sym("pc")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(3857097), Mul(Int(125), Pow(10, 12))), Sym("pc")));
c.put(UnitsLength.ZEPTOMETER, Mul(Mul(Int(30856776), Pow(10, 30)), Sym("pc")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(3857097), Mul(Int(125), Pow(10, 9))), Sym("pc")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapPETAMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 25), Sym("petam")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Pow(10, 13), Int(1495978707)), Sym("petam")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 33), Sym("petam")));
c.put(UnitsLength.CENTIMETER, Mul(Pow(10, 17), Sym("petam")));
c.put(UnitsLength.DECAMETER, Mul(Pow(10, 14), Sym("petam")));
c.put(UnitsLength.DECIMETER, Mul(Pow(10, 16), Sym("petam")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Int(1000)), Sym("petam")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 30), Sym("petam")));
c.put(UnitsLength.FOOT, Mul(Rat(Mul(Int(9842525), Pow(10, 9)), Int(3)), Sym("petam")));
c.put(UnitsLength.GIGAMETER, Mul(Pow(10, 6), Sym("petam")));
c.put(UnitsLength.HECTOMETER, Mul(Pow(10, 13), Sym("petam")));
c.put(UnitsLength.INCH, Mul(Mul(Int(393701), Pow(10, 11)), Sym("petam")));
c.put(UnitsLength.KILOMETER, Mul(Pow(10, 12), Sym("petam")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Mul(Int(625), Pow(10, 9)), Int("5912956545363")), Sym("petam")));
c.put(UnitsLength.LINE, Mul(Mul(Int(4724412), Pow(10, 11)), Sym("petam")));
c.put(UnitsLength.MEGAMETER, Mul(Pow(10, 9), Sym("petam")));
c.put(UnitsLength.METER, Mul(Pow(10, 15), Sym("petam")));
c.put(UnitsLength.MICROMETER, Mul(Pow(10, 21), Sym("petam")));
c.put(UnitsLength.MILE, Mul(Rat(Mul(Int(559234375), Pow(10, 4)), Int(9)), Sym("petam")));
c.put(UnitsLength.MILLIMETER, Mul(Pow(10, 18), Sym("petam")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 24), Sym("petam")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(125000), Int(3857097)), Sym("petam")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 27), Sym("petam")));
c.put(UnitsLength.POINT, Mul(Mul(Int(28346472), Pow(10, 11)), Sym("petam")));
c.put(UnitsLength.TERAMETER, Mul(Int(1000), Sym("petam")));
c.put(UnitsLength.THOU, Mul(Mul(Int(393701), Pow(10, 8)), Sym("petam")));
c.put(UnitsLength.YARD, Mul(Rat(Mul(Int(9842525), Pow(10, 9)), Int(9)), Sym("petam")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 39), Sym("petam")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("petam")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 36), Sym("petam")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("petam")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapPICOMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Rat(Int(1), Int(100)), Sym("picom")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Mul(Int(1495978707), Pow(10, 14))), Sym("picom")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 6), Sym("picom")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Int(1), Pow(10, 10)), Sym("picom")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(1), Pow(10, 13)), Sym("picom")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Int(1), Pow(10, 11)), Sym("picom")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 30)), Sym("picom")));
c.put(UnitsLength.FEMTOMETER, Mul(Int(1000), Sym("picom")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Mul(Int(12), Pow(10, 16))), Sym("picom")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 21)), Sym("picom")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1), Pow(10, 14)), Sym("picom")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Pow(10, 16)), Sym("picom")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Pow(10, 15)), Sym("picom")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Mul(Int("94607304725808"), Pow(10, 14))), Sym("picom")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Mul(Int(25), Pow(10, 14))), Sym("picom")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 18)), Sym("picom")));
c.put(UnitsLength.METER, Mul(Rat(Int(1), Pow(10, 12)), Sym("picom")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("picom")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Mul(Int(576), Pow(10, 17))), Sym("picom")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("picom")));
c.put(UnitsLength.NANOMETER, Mul(Rat(Int(1), Int(1000)), Sym("picom")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 21))), Sym("picom")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 27)), Sym("picom")));
c.put(UnitsLength.POINT, Mul(Rat(Int(3543309), Mul(Int(125), Pow(10, 13))), Sym("picom")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 24)), Sym("picom")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 19)), Sym("picom")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Mul(Int(36), Pow(10, 16))), Sym("picom")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 12), Sym("picom")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 36)), Sym("picom")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 9), Sym("picom")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 33)), Sym("picom")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapPOINT() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Rat(Mul(Int(125), Pow(10, 11)), Int(3543309)), Sym("pt")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(25), Int("10601429632642926")), Sym("pt")));
c.put(UnitsLength.ATTOMETER, Mul(Rat(Mul(Int(125), Pow(10, 19)), Int(3543309)), Sym("pt")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Int(125000), Int(3543309)), Sym("pt")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(125), Int(3543309)), Sym("pt")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Int(12500), Int(3543309)), Sym("pt")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Mul(Int(28346472), Pow(10, 14))), Sym("pt")));
c.put(UnitsLength.FEMTOMETER, Mul(Rat(Mul(Int(125), Pow(10, 16)), Int(3543309)), Sym("pt")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(1), Int(864)), Sym("pt")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Mul(Int(28346472), Pow(10, 5))), Sym("pt")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(25), Int(7086618)), Sym("pt")));
c.put(UnitsLength.INCH, Mul(Rat(Int(1), Int(72)), Sym("pt")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(5), Int(14173236)), Sym("pt")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(25), Int("670445828601396037344")), Sym("pt")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1), Int(6)), Sym("pt")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Int("2834647200")), Sym("pt")));
c.put(UnitsLength.METER, Mul(Rat(Int(1250), Int(3543309)), Sym("pt")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Mul(Int(125), Pow(10, 7)), Int(3543309)), Sym("pt")));
c.put(UnitsLength.MILE, Mul(Rat(Int(1), Int(4561920)), Sym("pt")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Mul(Int(125), Pow(10, 4)), Int(3543309)), Sym("pt")));
c.put(UnitsLength.NANOMETER, Mul(Rat(Mul(Int(125), Pow(10, 10)), Int(3543309)), Sym("pt")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int("874680736894272"), Pow(10, 5))), Sym("pt")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Mul(Int(28346472), Pow(10, 11))), Sym("pt")));
c.put(UnitsLength.PICOMETER, Mul(Rat(Mul(Int(125), Pow(10, 13)), Int(3543309)), Sym("pt")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Mul(Int(28346472), Pow(10, 8))), Sym("pt")));
c.put(UnitsLength.THOU, Mul(Rat(Int(1), Int(72000)), Sym("pt")));
c.put(UnitsLength.YARD, Mul(Rat(Int(1), Int(2592)), Sym("pt")));
c.put(UnitsLength.YOCTOMETER, Mul(Rat(Mul(Int(125), Pow(10, 25)), Int(3543309)), Sym("pt")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Mul(Int(28346472), Pow(10, 20))), Sym("pt")));
c.put(UnitsLength.ZEPTOMETER, Mul(Rat(Mul(Int(125), Pow(10, 22)), Int(3543309)), Sym("pt")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Mul(Int(28346472), Pow(10, 17))), Sym("pt")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapTERAMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 22), Sym("teram")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Pow(10, 10), Int(1495978707)), Sym("teram")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 30), Sym("teram")));
c.put(UnitsLength.CENTIMETER, Mul(Pow(10, 14), Sym("teram")));
c.put(UnitsLength.DECAMETER, Mul(Pow(10, 11), Sym("teram")));
c.put(UnitsLength.DECIMETER, Mul(Pow(10, 13), Sym("teram")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("teram")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 27), Sym("teram")));
c.put(UnitsLength.FOOT, Mul(Rat(Mul(Int(9842525), Pow(10, 6)), Int(3)), Sym("teram")));
c.put(UnitsLength.GIGAMETER, Mul(Int(1000), Sym("teram")));
c.put(UnitsLength.HECTOMETER, Mul(Pow(10, 10), Sym("teram")));
c.put(UnitsLength.INCH, Mul(Mul(Int(393701), Pow(10, 8)), Sym("teram")));
c.put(UnitsLength.KILOMETER, Mul(Pow(10, 9), Sym("teram")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Mul(Int(625), Pow(10, 6)), Int("5912956545363")), Sym("teram")));
c.put(UnitsLength.LINE, Mul(Mul(Int(4724412), Pow(10, 8)), Sym("teram")));
c.put(UnitsLength.MEGAMETER, Mul(Pow(10, 6), Sym("teram")));
c.put(UnitsLength.METER, Mul(Pow(10, 12), Sym("teram")));
c.put(UnitsLength.MICROMETER, Mul(Pow(10, 18), Sym("teram")));
c.put(UnitsLength.MILE, Mul(Rat(Int("5592343750"), Int(9)), Sym("teram")));
c.put(UnitsLength.MILLIMETER, Mul(Pow(10, 15), Sym("teram")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 21), Sym("teram")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(125), Int(3857097)), Sym("teram")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Int(1000)), Sym("teram")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 24), Sym("teram")));
c.put(UnitsLength.POINT, Mul(Mul(Int(28346472), Pow(10, 8)), Sym("teram")));
c.put(UnitsLength.THOU, Mul(Mul(Int(393701), Pow(10, 5)), Sym("teram")));
c.put(UnitsLength.YARD, Mul(Rat(Mul(Int(9842525), Pow(10, 6)), Int(9)), Sym("teram")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 36), Sym("teram")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 12)), Sym("teram")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 33), Sym("teram")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("teram")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapTHOU() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Rat(Pow(10, 17), Int(393701)), Sym("thou")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Pow(10, 5), Int("588968312924607")), Sym("thou")));
c.put(UnitsLength.ATTOMETER, Mul(Rat(Pow(10, 25), Int(393701)), Sym("thou")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Pow(10, 9), Int(393701)), Sym("thou")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Pow(10, 6), Int(393701)), Sym("thou")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Pow(10, 8), Int(393701)), Sym("thou")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Mul(Int(393701), Pow(10, 11))), Sym("thou")));
c.put(UnitsLength.FEMTOMETER, Mul(Rat(Pow(10, 22), Int(393701)), Sym("thou")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(250), Int(3)), Sym("thou")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Int(39370100)), Sym("thou")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Pow(10, 5), Int(393701)), Sym("thou")));
c.put(UnitsLength.INCH, Mul(Int(1000), Sym("thou")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Pow(10, 4), Int(393701)), Sym("thou")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(6250), Int("2327936904865958463")), Sym("thou")));
c.put(UnitsLength.LINE, Mul(Int(12000), Sym("thou")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(10), Int(393701)), Sym("thou")));
c.put(UnitsLength.METER, Mul(Rat(Pow(10, 7), Int(393701)), Sym("thou")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Pow(10, 13), Int(393701)), Sym("thou")));
c.put(UnitsLength.MILE, Mul(Rat(Int(25), Int(1584)), Sym("thou")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Pow(10, 10), Int(393701)), Sym("thou")));
c.put(UnitsLength.NANOMETER, Mul(Rat(Pow(10, 16), Int(393701)), Sym("thou")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Int("1214834356797600")), Sym("thou")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Mul(Int(393701), Pow(10, 8))), Sym("thou")));
c.put(UnitsLength.PICOMETER, Mul(Rat(Pow(10, 19), Int(393701)), Sym("thou")));
c.put(UnitsLength.POINT, Mul(Int(72000), Sym("thou")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Mul(Int(393701), Pow(10, 5))), Sym("thou")));
c.put(UnitsLength.YARD, Mul(Rat(Int(250), Int(9)), Sym("thou")));
c.put(UnitsLength.YOCTOMETER, Mul(Rat(Pow(10, 31), Int(393701)), Sym("thou")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Mul(Int(393701), Pow(10, 17))), Sym("thou")));
c.put(UnitsLength.ZEPTOMETER, Mul(Rat(Pow(10, 28), Int(393701)), Sym("thou")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Mul(Int(393701), Pow(10, 14))), Sym("thou")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapYARD() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Rat(Mul(Int(36), Pow(10, 14)), Int(393701)), Sym("yd")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1200), Int("196322770974869")), Sym("yd")));
c.put(UnitsLength.ATTOMETER, Mul(Rat(Mul(Int(36), Pow(10, 22)), Int(393701)), Sym("yd")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Mul(Int(36), Pow(10, 6)), Int(393701)), Sym("yd")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(36000), Int(393701)), Sym("yd")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Mul(Int(36), Pow(10, 5)), Int(393701)), Sym("yd")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(9), Mul(Int(9842525), Pow(10, 12))), Sym("yd")));
c.put(UnitsLength.FEMTOMETER, Mul(Rat(Mul(Int(36), Pow(10, 19)), Int(393701)), Sym("yd")));
c.put(UnitsLength.FOOT, Mul(Int(3), Sym("yd")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(9), Int("9842525000")), Sym("yd")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(3600), Int(393701)), Sym("yd")));
c.put(UnitsLength.INCH, Mul(Int(36), Sym("yd")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(360), Int(393701)), Sym("yd")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(25), Int("258659656096217607")), Sym("yd")));
c.put(UnitsLength.LINE, Mul(Int(432), Sym("yd")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(9), Int(9842525)), Sym("yd")));
c.put(UnitsLength.METER, Mul(Rat(Mul(Int(36), Pow(10, 4)), Int(393701)), Sym("yd")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Mul(Int(36), Pow(10, 10)), Int(393701)), Sym("yd")));
c.put(UnitsLength.MILE, Mul(Rat(Int(1), Int(1760)), Sym("yd")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Mul(Int(36), Pow(10, 7)), Int(393701)), Sym("yd")));
c.put(UnitsLength.NANOMETER, Mul(Rat(Mul(Int(36), Pow(10, 13)), Int(393701)), Sym("yd")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(3), Mul(Int("1012361963998"), Pow(10, 5))), Sym("yd")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(9), Mul(Int(9842525), Pow(10, 9))), Sym("yd")));
c.put(UnitsLength.PICOMETER, Mul(Rat(Mul(Int(36), Pow(10, 16)), Int(393701)), Sym("yd")));
c.put(UnitsLength.POINT, Mul(Int(2592), Sym("yd")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(9), Mul(Int(9842525), Pow(10, 6))), Sym("yd")));
c.put(UnitsLength.THOU, Mul(Rat(Int(9), Int(250)), Sym("yd")));
c.put(UnitsLength.YOCTOMETER, Mul(Rat(Mul(Int(36), Pow(10, 28)), Int(393701)), Sym("yd")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(9), Mul(Int(9842525), Pow(10, 18))), Sym("yd")));
c.put(UnitsLength.ZEPTOMETER, Mul(Rat(Mul(Int(36), Pow(10, 25)), Int(393701)), Sym("yd")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(9), Mul(Int(9842525), Pow(10, 15))), Sym("yd")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapYOCTOMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Rat(Int(1), Pow(10, 14)), Sym("yoctom")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Mul(Int(1495978707), Pow(10, 26))), Sym("yoctom")));
c.put(UnitsLength.ATTOMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("yoctom")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Int(1), Pow(10, 22)), Sym("yoctom")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(1), Pow(10, 25)), Sym("yoctom")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Int(1), Pow(10, 23)), Sym("yoctom")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 42)), Sym("yoctom")));
c.put(UnitsLength.FEMTOMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("yoctom")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Mul(Int(12), Pow(10, 28))), Sym("yoctom")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 33)), Sym("yoctom")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1), Pow(10, 26)), Sym("yoctom")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Pow(10, 28)), Sym("yoctom")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Pow(10, 27)), Sym("yoctom")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Mul(Int("94607304725808"), Pow(10, 26))), Sym("yoctom")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Mul(Int(25), Pow(10, 26))), Sym("yoctom")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 30)), Sym("yoctom")));
c.put(UnitsLength.METER, Mul(Rat(Int(1), Pow(10, 24)), Sym("yoctom")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Int(1), Pow(10, 18)), Sym("yoctom")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Mul(Int(576), Pow(10, 29))), Sym("yoctom")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Int(1), Pow(10, 21)), Sym("yoctom")));
c.put(UnitsLength.NANOMETER, Mul(Rat(Int(1), Pow(10, 15)), Sym("yoctom")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 33))), Sym("yoctom")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 39)), Sym("yoctom")));
c.put(UnitsLength.PICOMETER, Mul(Rat(Int(1), Pow(10, 12)), Sym("yoctom")));
c.put(UnitsLength.POINT, Mul(Rat(Int(3543309), Mul(Int(125), Pow(10, 25))), Sym("yoctom")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 36)), Sym("yoctom")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 31)), Sym("yoctom")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Mul(Int(36), Pow(10, 28))), Sym("yoctom")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 48)), Sym("yoctom")));
c.put(UnitsLength.ZEPTOMETER, Mul(Rat(Int(1), Int(1000)), Sym("yoctom")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 45)), Sym("yoctom")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapYOTTAMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 34), Sym("yottam")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Pow(10, 22), Int(1495978707)), Sym("yottam")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 42), Sym("yottam")));
c.put(UnitsLength.CENTIMETER, Mul(Pow(10, 26), Sym("yottam")));
c.put(UnitsLength.DECAMETER, Mul(Pow(10, 23), Sym("yottam")));
c.put(UnitsLength.DECIMETER, Mul(Pow(10, 25), Sym("yottam")));
c.put(UnitsLength.EXAMETER, Mul(Pow(10, 6), Sym("yottam")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 39), Sym("yottam")));
c.put(UnitsLength.FOOT, Mul(Rat(Mul(Int(9842525), Pow(10, 18)), Int(3)), Sym("yottam")));
c.put(UnitsLength.GIGAMETER, Mul(Pow(10, 15), Sym("yottam")));
c.put(UnitsLength.HECTOMETER, Mul(Pow(10, 22), Sym("yottam")));
c.put(UnitsLength.INCH, Mul(Mul(Int(393701), Pow(10, 20)), Sym("yottam")));
c.put(UnitsLength.KILOMETER, Mul(Pow(10, 21), Sym("yottam")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Mul(Int(625), Pow(10, 18)), Int("5912956545363")), Sym("yottam")));
c.put(UnitsLength.LINE, Mul(Mul(Int(4724412), Pow(10, 20)), Sym("yottam")));
c.put(UnitsLength.MEGAMETER, Mul(Pow(10, 18), Sym("yottam")));
c.put(UnitsLength.METER, Mul(Pow(10, 24), Sym("yottam")));
c.put(UnitsLength.MICROMETER, Mul(Pow(10, 30), Sym("yottam")));
c.put(UnitsLength.MILE, Mul(Rat(Mul(Int(559234375), Pow(10, 13)), Int(9)), Sym("yottam")));
c.put(UnitsLength.MILLIMETER, Mul(Pow(10, 27), Sym("yottam")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 33), Sym("yottam")));
c.put(UnitsLength.PARSEC, Mul(Rat(Mul(Int(125), Pow(10, 12)), Int(3857097)), Sym("yottam")));
c.put(UnitsLength.PETAMETER, Mul(Pow(10, 9), Sym("yottam")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 36), Sym("yottam")));
c.put(UnitsLength.POINT, Mul(Mul(Int(28346472), Pow(10, 20)), Sym("yottam")));
c.put(UnitsLength.TERAMETER, Mul(Pow(10, 12), Sym("yottam")));
c.put(UnitsLength.THOU, Mul(Mul(Int(393701), Pow(10, 17)), Sym("yottam")));
c.put(UnitsLength.YARD, Mul(Rat(Mul(Int(9842525), Pow(10, 18)), Int(9)), Sym("yottam")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 48), Sym("yottam")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 45), Sym("yottam")));
c.put(UnitsLength.ZETTAMETER, Mul(Int(1000), Sym("yottam")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapZEPTOMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Rat(Int(1), Pow(10, 11)), Sym("zeptom")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Int(1), Mul(Int(1495978707), Pow(10, 23))), Sym("zeptom")));
c.put(UnitsLength.ATTOMETER, Mul(Rat(Int(1), Int(1000)), Sym("zeptom")));
c.put(UnitsLength.CENTIMETER, Mul(Rat(Int(1), Pow(10, 19)), Sym("zeptom")));
c.put(UnitsLength.DECAMETER, Mul(Rat(Int(1), Pow(10, 22)), Sym("zeptom")));
c.put(UnitsLength.DECIMETER, Mul(Rat(Int(1), Pow(10, 20)), Sym("zeptom")));
c.put(UnitsLength.EXAMETER, Mul(Rat(Int(1), Pow(10, 39)), Sym("zeptom")));
c.put(UnitsLength.FEMTOMETER, Mul(Rat(Int(1), Pow(10, 6)), Sym("zeptom")));
c.put(UnitsLength.FOOT, Mul(Rat(Int(393701), Mul(Int(12), Pow(10, 25))), Sym("zeptom")));
c.put(UnitsLength.GIGAMETER, Mul(Rat(Int(1), Pow(10, 30)), Sym("zeptom")));
c.put(UnitsLength.HECTOMETER, Mul(Rat(Int(1), Pow(10, 23)), Sym("zeptom")));
c.put(UnitsLength.INCH, Mul(Rat(Int(393701), Pow(10, 25)), Sym("zeptom")));
c.put(UnitsLength.KILOMETER, Mul(Rat(Int(1), Pow(10, 24)), Sym("zeptom")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Int(1), Mul(Int("94607304725808"), Pow(10, 23))), Sym("zeptom")));
c.put(UnitsLength.LINE, Mul(Rat(Int(1181103), Mul(Int(25), Pow(10, 23))), Sym("zeptom")));
c.put(UnitsLength.MEGAMETER, Mul(Rat(Int(1), Pow(10, 27)), Sym("zeptom")));
c.put(UnitsLength.METER, Mul(Rat(Int(1), Pow(10, 21)), Sym("zeptom")));
c.put(UnitsLength.MICROMETER, Mul(Rat(Int(1), Pow(10, 15)), Sym("zeptom")));
c.put(UnitsLength.MILE, Mul(Rat(Int(35791), Mul(Int(576), Pow(10, 26))), Sym("zeptom")));
c.put(UnitsLength.MILLIMETER, Mul(Rat(Int(1), Pow(10, 18)), Sym("zeptom")));
c.put(UnitsLength.NANOMETER, Mul(Rat(Int(1), Pow(10, 12)), Sym("zeptom")));
c.put(UnitsLength.PARSEC, Mul(Rat(Int(1), Mul(Int(30856776), Pow(10, 30))), Sym("zeptom")));
c.put(UnitsLength.PETAMETER, Mul(Rat(Int(1), Pow(10, 36)), Sym("zeptom")));
c.put(UnitsLength.PICOMETER, Mul(Rat(Int(1), Pow(10, 9)), Sym("zeptom")));
c.put(UnitsLength.POINT, Mul(Rat(Int(3543309), Mul(Int(125), Pow(10, 22))), Sym("zeptom")));
c.put(UnitsLength.TERAMETER, Mul(Rat(Int(1), Pow(10, 33)), Sym("zeptom")));
c.put(UnitsLength.THOU, Mul(Rat(Int(393701), Pow(10, 28)), Sym("zeptom")));
c.put(UnitsLength.YARD, Mul(Rat(Int(393701), Mul(Int(36), Pow(10, 25))), Sym("zeptom")));
c.put(UnitsLength.YOCTOMETER, Mul(Int(1000), Sym("zeptom")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Pow(10, 45)), Sym("zeptom")));
c.put(UnitsLength.ZETTAMETER, Mul(Rat(Int(1), Pow(10, 42)), Sym("zeptom")));
return Collections.unmodifiableMap(c);
}
private static Map<UnitsLength, Conversion> createMapZETTAMETER() {
EnumMap<UnitsLength, Conversion> c =
new EnumMap<UnitsLength, Conversion>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, Mul(Pow(10, 31), Sym("zettam")));
c.put(UnitsLength.ASTRONOMICALUNIT, Mul(Rat(Pow(10, 19), Int(1495978707)), Sym("zettam")));
c.put(UnitsLength.ATTOMETER, Mul(Pow(10, 39), Sym("zettam")));
c.put(UnitsLength.CENTIMETER, Mul(Pow(10, 23), Sym("zettam")));
c.put(UnitsLength.DECAMETER, Mul(Pow(10, 20), Sym("zettam")));
c.put(UnitsLength.DECIMETER, Mul(Pow(10, 22), Sym("zettam")));
c.put(UnitsLength.EXAMETER, Mul(Int(1000), Sym("zettam")));
c.put(UnitsLength.FEMTOMETER, Mul(Pow(10, 36), Sym("zettam")));
c.put(UnitsLength.FOOT, Mul(Rat(Mul(Int(9842525), Pow(10, 15)), Int(3)), Sym("zettam")));
c.put(UnitsLength.GIGAMETER, Mul(Pow(10, 12), Sym("zettam")));
c.put(UnitsLength.HECTOMETER, Mul(Pow(10, 19), Sym("zettam")));
c.put(UnitsLength.INCH, Mul(Mul(Int(393701), Pow(10, 17)), Sym("zettam")));
c.put(UnitsLength.KILOMETER, Mul(Pow(10, 18), Sym("zettam")));
c.put(UnitsLength.LIGHTYEAR, Mul(Rat(Mul(Int(625), Pow(10, 15)), Int("5912956545363")), Sym("zettam")));
c.put(UnitsLength.LINE, Mul(Mul(Int(4724412), Pow(10, 17)), Sym("zettam")));
c.put(UnitsLength.MEGAMETER, Mul(Pow(10, 15), Sym("zettam")));
c.put(UnitsLength.METER, Mul(Pow(10, 21), Sym("zettam")));
c.put(UnitsLength.MICROMETER, Mul(Pow(10, 27), Sym("zettam")));
c.put(UnitsLength.MILE, Mul(Rat(Mul(Int(559234375), Pow(10, 10)), Int(9)), Sym("zettam")));
c.put(UnitsLength.MILLIMETER, Mul(Pow(10, 24), Sym("zettam")));
c.put(UnitsLength.NANOMETER, Mul(Pow(10, 30), Sym("zettam")));
c.put(UnitsLength.PARSEC, Mul(Rat(Mul(Int(125), Pow(10, 9)), Int(3857097)), Sym("zettam")));
c.put(UnitsLength.PETAMETER, Mul(Pow(10, 6), Sym("zettam")));
c.put(UnitsLength.PICOMETER, Mul(Pow(10, 33), Sym("zettam")));
c.put(UnitsLength.POINT, Mul(Mul(Int(28346472), Pow(10, 17)), Sym("zettam")));
c.put(UnitsLength.TERAMETER, Mul(Pow(10, 9), Sym("zettam")));
c.put(UnitsLength.THOU, Mul(Mul(Int(393701), Pow(10, 14)), Sym("zettam")));
c.put(UnitsLength.YARD, Mul(Rat(Mul(Int(9842525), Pow(10, 15)), Int(9)), Sym("zettam")));
c.put(UnitsLength.YOCTOMETER, Mul(Pow(10, 45), Sym("zettam")));
c.put(UnitsLength.YOTTAMETER, Mul(Rat(Int(1), Int(1000)), Sym("zettam")));
c.put(UnitsLength.ZEPTOMETER, Mul(Pow(10, 42), Sym("zettam")));
return Collections.unmodifiableMap(c);
}
private static final Map<UnitsLength, Map<UnitsLength, Conversion>> conversions;
static {
Map<UnitsLength, Map<UnitsLength, Conversion>> c
= new EnumMap<UnitsLength, Map<UnitsLength, Conversion>>(UnitsLength.class);
c.put(UnitsLength.ANGSTROM, createMapANGSTROM());
c.put(UnitsLength.ASTRONOMICALUNIT, createMapASTRONOMICALUNIT());
c.put(UnitsLength.ATTOMETER, createMapATTOMETER());
c.put(UnitsLength.CENTIMETER, createMapCENTIMETER());
c.put(UnitsLength.DECAMETER, createMapDECAMETER());
c.put(UnitsLength.DECIMETER, createMapDECIMETER());
c.put(UnitsLength.EXAMETER, createMapEXAMETER());
c.put(UnitsLength.FEMTOMETER, createMapFEMTOMETER());
c.put(UnitsLength.FOOT, createMapFOOT());
c.put(UnitsLength.GIGAMETER, createMapGIGAMETER());
c.put(UnitsLength.HECTOMETER, createMapHECTOMETER());
c.put(UnitsLength.INCH, createMapINCH());
c.put(UnitsLength.KILOMETER, createMapKILOMETER());
c.put(UnitsLength.LIGHTYEAR, createMapLIGHTYEAR());
c.put(UnitsLength.LINE, createMapLINE());
c.put(UnitsLength.MEGAMETER, createMapMEGAMETER());
c.put(UnitsLength.METER, createMapMETER());
c.put(UnitsLength.MICROMETER, createMapMICROMETER());
c.put(UnitsLength.MILE, createMapMILE());
c.put(UnitsLength.MILLIMETER, createMapMILLIMETER());
c.put(UnitsLength.NANOMETER, createMapNANOMETER());
c.put(UnitsLength.PARSEC, createMapPARSEC());
c.put(UnitsLength.PETAMETER, createMapPETAMETER());
c.put(UnitsLength.PICOMETER, createMapPICOMETER());
c.put(UnitsLength.POINT, createMapPOINT());
c.put(UnitsLength.TERAMETER, createMapTERAMETER());
c.put(UnitsLength.THOU, createMapTHOU());
c.put(UnitsLength.YARD, createMapYARD());
c.put(UnitsLength.YOCTOMETER, createMapYOCTOMETER());
c.put(UnitsLength.YOTTAMETER, createMapYOTTAMETER());
c.put(UnitsLength.ZEPTOMETER, createMapZEPTOMETER());
c.put(UnitsLength.ZETTAMETER, createMapZETTAMETER());
conversions = Collections.unmodifiableMap(c);
}
private static final Map<UnitsLength, String> SYMBOLS;
static {
Map<UnitsLength, String> s = new HashMap<UnitsLength, String>();
s.put(UnitsLength.ANGSTROM, "Å");
s.put(UnitsLength.ASTRONOMICALUNIT, "ua");
s.put(UnitsLength.ATTOMETER, "am");
s.put(UnitsLength.CENTIMETER, "cm");
s.put(UnitsLength.DECAMETER, "dam");
s.put(UnitsLength.DECIMETER, "dm");
s.put(UnitsLength.EXAMETER, "Em");
s.put(UnitsLength.FEMTOMETER, "fm");
s.put(UnitsLength.FOOT, "ft");
s.put(UnitsLength.GIGAMETER, "Gm");
s.put(UnitsLength.HECTOMETER, "hm");
s.put(UnitsLength.INCH, "in");
s.put(UnitsLength.KILOMETER, "km");
s.put(UnitsLength.LIGHTYEAR, "ly");
s.put(UnitsLength.LINE, "li");
s.put(UnitsLength.MEGAMETER, "Mm");
s.put(UnitsLength.METER, "m");
s.put(UnitsLength.MICROMETER, "µm");
s.put(UnitsLength.MILE, "mi");
s.put(UnitsLength.MILLIMETER, "mm");
s.put(UnitsLength.NANOMETER, "nm");
s.put(UnitsLength.PARSEC, "pc");
s.put(UnitsLength.PETAMETER, "Pm");
s.put(UnitsLength.PICOMETER, "pm");
s.put(UnitsLength.PIXEL, "pixel");
s.put(UnitsLength.POINT, "pt");
s.put(UnitsLength.REFERENCEFRAME, "reference frame");
s.put(UnitsLength.TERAMETER, "Tm");
s.put(UnitsLength.THOU, "thou");
s.put(UnitsLength.YARD, "yd");
s.put(UnitsLength.YOCTOMETER, "ym");
s.put(UnitsLength.YOTTAMETER, "Ym");
s.put(UnitsLength.ZEPTOMETER, "zm");
s.put(UnitsLength.ZETTAMETER, "Zm");
SYMBOLS = s;
}
public static String lookupSymbol(UnitsLength unit) {
return SYMBOLS.get(unit);
}
public static final Ice.ObjectFactory makeFactory(final omero.client client) {
return new Ice.ObjectFactory() {
public Ice.Object create(String arg0) {
return new LengthI();
}
public void destroy() {
// no-op
}
};
};
//
// CONVERSIONS
//
public static ome.xml.model.enums.UnitsLength makeXMLUnit(String unit) {
try {
return ome.xml.model.enums.UnitsLength
.fromString((String) unit);
} catch (EnumerationException e) {
throw new RuntimeException("Bad Length unit: " + unit, e);
}
}
public static ome.units.quantity.Length makeXMLQuantity(double d, String unit) {
ome.units.unit.Unit<ome.units.quantity.Length> units =
ome.xml.model.enums.handlers.UnitsLengthEnumHandler
.getBaseUnit(makeXMLUnit(unit));
return new ome.units.quantity.Length(d, units);
}
/**
* FIXME: this should likely take a default so that locations which don't
* want an exception can have
*
* log.warn("Using new PositiveFloat(1.0)!", e); return new
* PositiveFloat(1.0);
*
* or similar.
*/
public static ome.units.quantity.Length convert(Length t) {
if (t == null) {
return null;
}
Double v = t.getValue();
// Use the code/symbol-mapping in the ome.model.enums files
// to convert to the specification value.
String u = ome.model.enums.UnitsLength.valueOf(
t.getUnit().toString()).getSymbol();
ome.xml.model.enums.UnitsLength units = makeXMLUnit(u);
ome.units.unit.Unit<ome.units.quantity.Length> units2 =
ome.xml.model.enums.handlers.UnitsLengthEnumHandler
.getBaseUnit(units);
return new ome.units.quantity.Length(v, units2);
}
//
// REGULAR ICE CLASS
//
public final static Ice.ObjectFactory Factory = makeFactory(null);
public LengthI() {
super();
}
public LengthI(double d, UnitsLength unit) {
super();
this.setUnit(unit);
this.setValue(d);
}
public LengthI(double d,
Unit<ome.units.quantity.Length> unit) {
this(d, ome.model.enums.UnitsLength.bySymbol(unit.getSymbol()));
}
/**
* Copy constructor that converts the given {@link omero.model.Length}
* based on the given ome-xml enum
*/
public LengthI(Length value, Unit<ome.units.quantity.Length> ul) throws BigResult {
this(value,
ome.model.enums.UnitsLength.bySymbol(ul.getSymbol()).toString());
}
/**
* Copy constructor that converts the given {@link omero.model.Length}
* based on the given ome.model enum
*/
public LengthI(double d, ome.model.enums.UnitsLength ul) {
this(d, UnitsLength.valueOf(ul.toString()));
}
/**
* Copy constructor that converts the given {@link omero.model.Length}
* based on the given enum string.
*
* @param target String representation of the CODE enum
*/
public LengthI(Length value, String target) throws BigResult {
String source = value.getUnit().toString();
if (target.equals(source)) {
setValue(value.getValue());
setUnit(value.getUnit());
} else {
UnitsLength targetUnit = UnitsLength.valueOf(target);
Conversion conversion = conversions.get(value.getUnit()).get(targetUnit);
if (conversion == null) {
throw new RuntimeException(String.format(
"%f %s cannot be converted to %s",
value.getValue(), value.getUnit(), target));
}
double orig = value.getValue();
BigDecimal big = conversion.convert(orig);
double converted = big.doubleValue();
if (Double.isInfinite(converted)) {
throw new BigResult(big,
"Failed to convert " + source + ":" + target);
}
setValue(converted);
setUnit(targetUnit);
}
}
/**
* Copy constructor that converts between units if possible.
*
* @param target unit that is desired. non-null.
*/
public LengthI(Length value, UnitsLength target) throws BigResult {
this(value, target.toString());
}
/**
* Convert a Bio-Formats {@link Length} to an OMERO Length.
*/
public LengthI(ome.units.quantity.Length value) {
ome.model.enums.UnitsLength internal =
ome.model.enums.UnitsLength.bySymbol(value.unit().getSymbol());
UnitsLength ul = UnitsLength.valueOf(internal.toString());
setValue(value.value().doubleValue());
setUnit(ul);
}
public double getValue(Ice.Current current) {
return this.value;
}
public void setValue(double value , Ice.Current current) {
this.value = value;
}
public UnitsLength getUnit(Ice.Current current) {
return this.unit;
}
public void setUnit(UnitsLength unit, Ice.Current current) {
this.unit = unit;
}
public String getSymbol(Ice.Current current) {
return SYMBOLS.get(this.unit);
}
public Length copy(Ice.Current ignore) {
LengthI copy = new LengthI();
copy.setValue(getValue());
copy.setUnit(getUnit());
return copy;
}
@Override
public void copyObject(Filterable model, ModelMapper mapper) {
if (model instanceof ome.model.units.Length) {
ome.model.units.Length t = (ome.model.units.Length) model;
this.value = t.getValue();
this.unit = UnitsLength.valueOf(t.getUnit().toString());
} else {
throw new IllegalArgumentException(
"Length cannot copy from " +
(model==null ? "null" : model.getClass().getName()));
}
}
@Override
public Filterable fillObject(ReverseModelMapper mapper) {
ome.model.enums.UnitsLength ut = ome.model.enums.UnitsLength.valueOf(getUnit().toString());
ome.model.units.Length t = new ome.model.units.Length(getValue(), ut);
return t;
}
// ~ Java overrides
// =========================================================================
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((unit == null) ? 0 : unit.hashCode());
long temp;
temp = Double.doubleToLongBits(value);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
@Override
public String toString() {
return "Length(" + value + " " + unit + ")";
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Length other = (Length) obj;
if (unit != other.unit)
return false;
if (Double.doubleToLongBits(value) != Double
.doubleToLongBits(other.value))
return false;
return true;
}
}