1b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/* 2b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ProGuard -- shrinking, optimization, obfuscation, and preverification 3b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * of Java bytecode. 4b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 5b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Copyright (c) 2002-2009 Eric Lafortune (eric@graphics.cornell.edu) 6b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 7b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is free software; you can redistribute it and/or modify it 8b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * under the terms of the GNU General Public License as published by the Free 9b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Software Foundation; either version 2 of the License, or (at your option) 10b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * any later version. 11b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 12b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is distributed in the hope that it will be useful, but WITHOUT 13b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * more details. 16b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 17b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * You should have received a copy of the GNU General Public License along 18b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * with this program; if not, write to the Free Software Foundation, Inc., 19b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 21b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopackage proguard.evaluation.value; 22b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 23b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport proguard.classfile.ClassConstants; 24b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 25b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/** 26b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This class represents a partially evaluated double value. 27b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 28b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @author Eric Lafortune 29b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 30b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopublic abstract class DoubleValue extends Category2Value 31b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato{ 32b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 33b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the specific double value, if applicable. 34b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 35b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public double value() 36b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 37b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return 0.0; 38b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 39b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 40b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 41b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Basic unary methods. 42b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 43b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 44b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the negated value of this DoubleValue. 45b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 46b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract DoubleValue negate(); 47b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 48b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 49b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Converts this DoubleValue to an IntegerValue. 50b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 51b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract IntegerValue convertToInteger(); 52b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 53b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 54b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Converts this DoubleValue to a LongValue. 55b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 56b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract LongValue convertToLong(); 57b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 58b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 59b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Converts this DoubleValue to a FloatValue. 60b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 61b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract FloatValue convertToFloat(); 62b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 63b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 64b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Basic binary methods. 65b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 66b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 67b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the generalization of this DoubleValue and the given other 68b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * DoubleValue. 69b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 70b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract DoubleValue generalize(DoubleValue other); 71b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 72b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 73b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 74b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the sum of this DoubleValue and the given DoubleValue. 75b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 76b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract DoubleValue add(DoubleValue other); 77b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 78b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 79b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of this DoubleValue and the given DoubleValue. 80b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 81b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract DoubleValue subtract(DoubleValue other); 82b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 83b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 84b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of the given DoubleValue and this DoubleValue. 85b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 86b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract DoubleValue subtractFrom(DoubleValue other); 87b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 88b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 89b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the product of this DoubleValue and the given DoubleValue. 90b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 91b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract DoubleValue multiply(DoubleValue other); 92b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 93b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 94b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of this DoubleValue and the given DoubleValue. 95b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 96b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract DoubleValue divide(DoubleValue other); 97b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 98b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 99b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of the given DoubleValue and this DoubleValue. 100b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 101b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract DoubleValue divideOf(DoubleValue other); 102b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 103b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 104b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of this DoubleValue divided by the given DoubleValue. 105b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 106b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract DoubleValue remainder(DoubleValue other); 107b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 108b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 109b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of the given DoubleValue divided by this DoubleValue. 110b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 111b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract DoubleValue remainderOf(DoubleValue other); 112b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 113b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 114b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value -1, 0, or 1, if this DoubleValue is 115b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given DoubleValue, respectively. 116b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 117b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract IntegerValue compare(DoubleValue other); 118b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 119b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 120b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Derived binary methods. 121b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 122b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 123b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value 1, 0, or -1, if this DoubleValue is 124b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given DoubleValue, respectively. 125b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 126b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final IntegerValue compareReverse(DoubleValue other) 127b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 128b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return compare(other).negate(); 129b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 130b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 131b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 132b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Similar binary methods, but this time with more specific arguments. 133b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 134b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 135b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the generalization of this DoubleValue and the given other 136b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * SpecificDoubleValue. 137b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 138b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue generalize(SpecificDoubleValue other) 139b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 140b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return generalize((DoubleValue)other); 141b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 142b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 143b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 144b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 145b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the sum of this DoubleValue and the given SpecificDoubleValue. 146b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 147b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue add(SpecificDoubleValue other) 148b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 149b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return add((DoubleValue)other); 150b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 151b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 152b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 153b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of this DoubleValue and the given SpecificDoubleValue. 154b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 155b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue subtract(SpecificDoubleValue other) 156b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 157b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return subtract((DoubleValue)other); 158b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 159b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 160b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 161b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of the given SpecificDoubleValue and this DoubleValue. 162b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 163b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue subtractFrom(SpecificDoubleValue other) 164b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 165b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return subtractFrom((DoubleValue)other); 166b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 167b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 168b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 169b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the product of this DoubleValue and the given SpecificDoubleValue. 170b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 171b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue multiply(SpecificDoubleValue other) 172b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 173b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return multiply((DoubleValue)other); 174b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 175b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 176b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 177b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of this DoubleValue and the given SpecificDoubleValue. 178b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 179b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue divide(SpecificDoubleValue other) 180b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 181b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return divide((DoubleValue)other); 182b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 183b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 184b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 185b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of the given SpecificDoubleValue and this 186b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * DoubleValue. 187b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 188b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue divideOf(SpecificDoubleValue other) 189b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 190b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return divideOf((DoubleValue)other); 191b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 192b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 193b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 194b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of this DoubleValue divided by the given 195b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * SpecificDoubleValue. 196b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 197b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue remainder(SpecificDoubleValue other) 198b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 199b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return remainder((DoubleValue)other); 200b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 201b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 202b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 203b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of the given SpecificDoubleValue and this 204b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * DoubleValue. 205b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 206b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue remainderOf(SpecificDoubleValue other) 207b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 208b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return remainderOf((DoubleValue)other); 209b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 210b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 211b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 212b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value -1, 0, or 1, if this DoubleValue is 213b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given SpecificDoubleValue, 214b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * respectively. 215b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 216b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public IntegerValue compare(SpecificDoubleValue other) 217b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 218b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return compare((DoubleValue)other); 219b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 220b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 221b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 222b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Derived binary methods. 223b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 224b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 225b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value 1, 0, or -1, if this DoubleValue is 226b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given SpecificDoubleValue, 227b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * respectively. 228b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 229b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final IntegerValue compareReverse(SpecificDoubleValue other) 230b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 231b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return compare(other).negate(); 232b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 233b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 234b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 235b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Similar binary methods, but this time with particular arguments. 236b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 237b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 238b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the generalization of this DoubleValue and the given other 239b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ParticularDoubleValue. 240b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 241b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue generalize(ParticularDoubleValue other) 242b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 243b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return generalize((SpecificDoubleValue)other); 244b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 245b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 246b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 247b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 248b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the sum of this DoubleValue and the given ParticularDoubleValue. 249b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 250b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue add(ParticularDoubleValue other) 251b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 252b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return add((SpecificDoubleValue)other); 253b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 254b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 255b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 256b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of this DoubleValue and the given ParticularDoubleValue. 257b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 258b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue subtract(ParticularDoubleValue other) 259b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 260b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return subtract((SpecificDoubleValue)other); 261b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 262b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 263b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 264b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of the given ParticularDoubleValue and this DoubleValue. 265b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 266b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue subtractFrom(ParticularDoubleValue other) 267b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 268b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return subtractFrom((SpecificDoubleValue)other); 269b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 270b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 271b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 272b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the product of this DoubleValue and the given ParticularDoubleValue. 273b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 274b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue multiply(ParticularDoubleValue other) 275b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 276b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return multiply((SpecificDoubleValue)other); 277b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 278b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 279b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 280b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of this DoubleValue and the given ParticularDoubleValue. 281b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 282b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue divide(ParticularDoubleValue other) 283b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 284b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return divide((SpecificDoubleValue)other); 285b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 286b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 287b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 288b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of the given ParticularDoubleValue and this 289b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * DoubleValue. 290b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 291b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue divideOf(ParticularDoubleValue other) 292b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 293b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return divideOf((SpecificDoubleValue)other); 294b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 295b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 296b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 297b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of this DoubleValue divided by the given 298b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ParticularDoubleValue. 299b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 300b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue remainder(ParticularDoubleValue other) 301b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 302b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return remainder((SpecificDoubleValue)other); 303b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 304b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 305b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 306b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of the given ParticularDoubleValue and this 307b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * DoubleValue. 308b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 309b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public DoubleValue remainderOf(ParticularDoubleValue other) 310b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 311b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return remainderOf((SpecificDoubleValue)other); 312b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 313b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 314b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 315b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value -1, 0, or 1, if this DoubleValue is 316b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given ParticularDoubleValue, 317b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * respectively. 318b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 319b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public IntegerValue compare(ParticularDoubleValue other) 320b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 321b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return compare((SpecificDoubleValue)other); 322b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 323b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 324b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 325b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Derived binary methods. 326b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 327b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 328b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value 1, 0, or -1, if this DoubleValue is 329b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given ParticularDoubleValue, 330b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * respectively. 331b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 332b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final IntegerValue compareReverse(ParticularDoubleValue other) 333b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 334b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return compare(other).negate(); 335b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 336b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 337b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 338b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Implementations for Value. 339b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 340b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final DoubleValue doubleValue() 341b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 342b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 343b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 344b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 345b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public Value refresh() 346b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 347b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 348b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 349b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 350b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final Value generalize(Value other) 351b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 352b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this.generalize(other.doubleValue()); 353b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 354b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 355b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final int computationalType() 356b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 357b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return TYPE_DOUBLE; 358b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 359b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 360b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final String internalType() 361b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 362b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return String.valueOf(ClassConstants.INTERNAL_TYPE_DOUBLE); 363b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 364b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato} 365