1dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond/* 2dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * Licensed to the Apache Software Foundation (ASF) under one or more 3dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * contributor license agreements. See the NOTICE file distributed with 4dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * this work for additional information regarding copyright ownership. 5dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * The ASF licenses this file to You under the Apache License, Version 2.0 6dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * (the "License"); you may not use this file except in compliance with 7dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * the License. You may obtain a copy of the License at 8dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * 9dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * http://www.apache.org/licenses/LICENSE-2.0 10dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * 11dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * Unless required by applicable law or agreed to in writing, software 12dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * distributed under the License is distributed on an "AS IS" BASIS, 13dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * See the License for the specific language governing permissions and 15dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * limitations under the License. 16dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 17dee0849a9704d532af0b550146cbafbaa6ee1d19Raymondpackage org.apache.commons.math.util; 18dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 19dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 20dee0849a9704d532af0b550146cbafbaa6ee1d19Raymondimport java.io.Serializable; 21dee0849a9704d532af0b550146cbafbaa6ee1d19Raymondimport java.math.BigDecimal; 22dee0849a9704d532af0b550146cbafbaa6ee1d19Raymondimport java.math.BigInteger; 23dee0849a9704d532af0b550146cbafbaa6ee1d19Raymondimport java.math.MathContext; 24dee0849a9704d532af0b550146cbafbaa6ee1d19Raymondimport java.math.RoundingMode; 25dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 26dee0849a9704d532af0b550146cbafbaa6ee1d19Raymondimport org.apache.commons.math.Field; 27dee0849a9704d532af0b550146cbafbaa6ee1d19Raymondimport org.apache.commons.math.FieldElement; 28dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 29dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond/** 30dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * Arbitrary precision decimal number. 31dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * <p> 32dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * This class is a simple wrapper around the standard <code>BigDecimal</code> 33dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * in order to implement the {@link FieldElement} interface. 34dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * </p> 35dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @since 2.0 36dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @version $Revision: 925812 $ $Date: 2010-03-21 16:49:31 +0100 (dim. 21 mars 2010) $ 37dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 38dee0849a9704d532af0b550146cbafbaa6ee1d19Raymondpublic class BigReal implements FieldElement<BigReal>, Comparable<BigReal>, Serializable { 39dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 40dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** A big real representing 0. */ 41dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public static final BigReal ZERO = new BigReal(BigDecimal.ZERO); 42dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 43dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** A big real representing 1. */ 44dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public static final BigReal ONE = new BigReal(BigDecimal.ONE); 45dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 46dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Serializable version identifier. */ 47dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond private static final long serialVersionUID = 4984534880991310382L; 48dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 49dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Underlying BigDecimal. */ 50dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond private final BigDecimal d; 51dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 52dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Rounding mode for divisions. **/ 53dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond private RoundingMode roundingMode = RoundingMode.HALF_UP; 54dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 55dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /*** BigDecimal scale ***/ 56dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond private int scale = 64; 57dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 58dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from a BigDecimal. 59dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param val value of the instance 60dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 61dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(BigDecimal val) { 62dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = val; 63dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 64dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 65dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from a BigInteger. 66dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param val value of the instance 67dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 68dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(BigInteger val) { 69dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(val); 70dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 71dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 72dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from an unscaled BigInteger. 73dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param unscaledVal unscaled value 74dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param scale scale to use 75dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 76dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(BigInteger unscaledVal, int scale) { 77dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(unscaledVal, scale); 78dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 79dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 80dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from an unscaled BigInteger. 81dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param unscaledVal unscaled value 82dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param scale scale to use 83dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param mc to used 84dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 85dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(BigInteger unscaledVal, int scale, MathContext mc) { 86dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(unscaledVal, scale, mc); 87dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 88dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 89dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from a BigInteger. 90dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param val value of the instance 91dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param mc context to use 92dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 93dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(BigInteger val, MathContext mc) { 94dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(val, mc); 95dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 96dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 97dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from a characters representation. 98dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param in character representation of the value 99dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 100dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(char[] in) { 101dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(in); 102dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 103dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 104dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from a characters representation. 105dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param in character representation of the value 106dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param offset offset of the first character to analyze 107dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param len length of the array slice to analyze 108dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 109dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(char[] in, int offset, int len) { 110dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(in, offset, len); 111dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 112dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 113dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from a characters representation. 114dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param in character representation of the value 115dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param offset offset of the first character to analyze 116dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param len length of the array slice to analyze 117dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param mc context to use 118dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 119dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(char[] in, int offset, int len, MathContext mc) { 120dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(in, offset, len, mc); 121dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 122dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 123dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from a characters representation. 124dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param in character representation of the value 125dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param mc context to use 126dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 127dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(char[] in, MathContext mc) { 128dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(in, mc); 129dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 130dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 131dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from a double. 132dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param val value of the instance 133dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 134dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(double val) { 135dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(val); 136dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 137dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 138dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from a double. 139dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param val value of the instance 140dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param mc context to use 141dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 142dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(double val, MathContext mc) { 143dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(val, mc); 144dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 145dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 146dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from an int. 147dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param val value of the instance 148dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 149dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(int val) { 150dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(val); 151dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 152dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 153dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from an int. 154dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param val value of the instance 155dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param mc context to use 156dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 157dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(int val, MathContext mc) { 158dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(val, mc); 159dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 160dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 161dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from a long. 162dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param val value of the instance 163dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 164dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(long val) { 165dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(val); 166dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 167dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 168dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from a long. 169dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param val value of the instance 170dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param mc context to use 171dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 172dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(long val, MathContext mc) { 173dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(val, mc); 174dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 175dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 176dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from a String representation. 177dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param val character representation of the value 178dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 179dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(String val) { 180dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(val); 181dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 182dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 183dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Build an instance from a String representation. 184dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param val character representation of the value 185dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param mc context to use 186dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 187dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal(String val, MathContext mc) { 188dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond d = new BigDecimal(val, mc); 189dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 190dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 191dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /*** 192dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * Gets the rounding mode for division operations 193dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * The default is {@code RoundingMode.HALF_UP} 194dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @return the rounding mode. 195dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @since 2.1 196dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 197dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public RoundingMode getRoundingMode() { 198dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return roundingMode; 199dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 200dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 201dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /*** 202dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * Sets the rounding mode for decimal divisions. 203dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param roundingMode rounding mode for decimal divisions 204dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @since 2.1 205dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 206dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public void setRoundingMode(RoundingMode roundingMode) { 207dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond this.roundingMode = roundingMode; 208dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 209dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 210dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /*** 211dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * Sets the scale for division operations. 212dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * The default is 64 213dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @return the scale 214dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @since 2.1 215dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 216dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public int getScale() { 217dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return scale; 218dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 219dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 220dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /*** 221dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * Sets the scale for division operations. 222dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @param scale scale for division operations 223dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @since 2.1 224dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 225dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public void setScale(int scale) { 226dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond this.scale = scale; 227dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 228dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 229dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** {@inheritDoc} */ 230dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal add(BigReal a) { 231dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return new BigReal(d.add(a.d)); 232dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 233dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 234dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** {@inheritDoc} */ 235dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal subtract(BigReal a) { 236dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return new BigReal(d.subtract(a.d)); 237dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 238dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 239dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** {@inheritDoc} */ 240dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal divide(BigReal a) throws ArithmeticException { 241dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return new BigReal(d.divide(a.d, scale, roundingMode)); 242dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 243dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 244dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** {@inheritDoc} */ 245dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigReal multiply(BigReal a) { 246dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return new BigReal(d.multiply(a.d)); 247dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 248dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 249dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** {@inheritDoc} */ 250dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public int compareTo(BigReal a) { 251dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return d.compareTo(a.d); 252dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 253dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 254dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Get the double value corresponding to the instance. 255dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @return double value corresponding to the instance 256dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 257dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public double doubleValue() { 258dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return d.doubleValue(); 259dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 260dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 261dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** Get the BigDecimal value corresponding to the instance. 262dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @return BigDecimal value corresponding to the instance 263dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */ 264dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public BigDecimal bigDecimalValue() { 265dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return d; 266dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 267dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 268dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** {@inheritDoc} */ 269dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond @Override 270dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public boolean equals(Object other) { 271dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond if (this == other){ 272dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return true; 273dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 274dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 275dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond if (other instanceof BigReal){ 276dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return d.equals(((BigReal) other).d); 277dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 278dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return false; 279dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 280dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 281dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** {@inheritDoc} */ 282dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond @Override 283dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public int hashCode() { 284dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return d.hashCode(); 285dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 286dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 287dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond /** {@inheritDoc} */ 288dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond public Field<BigReal> getField() { 289dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond return BigRealField.getInstance(); 290dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond } 291dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond 292dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond} 293