1b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/* 2b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ProGuard -- shrinking, optimization, obfuscation, and preverification 3b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * of Java bytecode. 4b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 5b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * Copyright (c) 2002-2013 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 float value. 27b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 28b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @author Eric Lafortune 29b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 30b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopublic abstract class FloatValue extends Category1Value 31b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato{ 32b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 33b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the specific float value, if applicable. 34b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 35b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public float value() 36b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 37b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return 0f; 38b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 39b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 40b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 41b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Basic unary methods. 42b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 43b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 44b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the negated value of this FloatValue. 45b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 46b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract FloatValue negate(); 47b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 48b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 49b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Converts this FloatValue to an IntegerValue. 50b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 51b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract IntegerValue convertToInteger(); 52b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 53b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 54b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Converts this FloatValue to a LongValue. 55b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 56b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract LongValue convertToLong(); 57b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 58b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 59b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Converts this FloatValue to a DoubleValue. 60b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 61b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract DoubleValue convertToDouble(); 62b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 63b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 64b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Basic binary methods. 65b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 66b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 67b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the generalization of this FloatValue and the given other 68b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * FloatValue. 69b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 70b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract FloatValue generalize(FloatValue other); 71b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 72b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 73b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 74b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the sum of this FloatValue and the given FloatValue. 75b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 76b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract FloatValue add(FloatValue other); 77b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 78b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 79b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of this FloatValue and the given FloatValue. 80b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 81b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract FloatValue subtract(FloatValue other); 82b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 83b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 84b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of the given FloatValue and this FloatValue. 85b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 86b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract FloatValue subtractFrom(FloatValue other); 87b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 88b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 89b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the product of this FloatValue and the given FloatValue. 90b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 91b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract FloatValue multiply(FloatValue other); 92b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 93b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 94b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of this FloatValue and the given FloatValue. 95b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 96b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract FloatValue divide(FloatValue other); 97b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 98b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 99b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of the given FloatValue and this FloatValue. 100b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 101b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract FloatValue divideOf(FloatValue other); 102b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 103b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 104b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of this FloatValue divided by the given FloatValue. 105b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 106b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract FloatValue remainder(FloatValue other); 107b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 108b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 109b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of the given FloatValue divided by this FloatValue. 110b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 111b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract FloatValue remainderOf(FloatValue other); 112b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 113b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 114b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value -1, 0, or 1, if this FloatValue is 115b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given FloatValue, respectively. 116b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 117b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public abstract IntegerValue compare(FloatValue 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 FloatValue is 124b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given FloatValue, respectively. 125b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 126b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final IntegerValue compareReverse(FloatValue 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 FloatValue and the given other 136b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * SpecificFloatValue. 137b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 138b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue generalize(SpecificFloatValue other) 139b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 140b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return generalize((FloatValue)other); 141b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 142b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 143b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 144b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 145b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the sum of this FloatValue and the given SpecificFloatValue. 146b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 147b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue add(SpecificFloatValue other) 148b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 149b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return add((FloatValue)other); 150b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 151b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 152b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 153b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of this FloatValue and the given SpecificFloatValue. 154b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 155b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue subtract(SpecificFloatValue other) 156b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 157b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return subtract((FloatValue)other); 158b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 159b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 160b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 161b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of the given SpecificFloatValue and this FloatValue. 162b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 163b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue subtractFrom(SpecificFloatValue other) 164b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 165b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return subtractFrom((FloatValue)other); 166b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 167b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 168b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 169b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the product of this FloatValue and the given SpecificFloatValue. 170b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 171b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue multiply(SpecificFloatValue other) 172b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 173b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return multiply((FloatValue)other); 174b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 175b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 176b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 177b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of this FloatValue and the given SpecificFloatValue. 178b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 179b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue divide(SpecificFloatValue other) 180b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 181b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return divide((FloatValue)other); 182b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 183b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 184b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 185b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of the given SpecificFloatValue and this 186b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * FloatValue. 187b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 188b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue divideOf(SpecificFloatValue other) 189b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 190b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return divideOf((FloatValue)other); 191b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 192b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 193b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 194b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of this FloatValue divided by the given 195b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * SpecificFloatValue. 196b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 197b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue remainder(SpecificFloatValue other) 198b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 199b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return remainder((FloatValue)other); 200b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 201b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 202b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 203b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of the given SpecificFloatValue and this 204b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * FloatValue. 205b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 206b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue remainderOf(SpecificFloatValue other) 207b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 208b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return remainderOf((FloatValue)other); 209b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 210b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 211b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 212b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value -1, 0, or 1, if this FloatValue is 213b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given SpecificFloatValue, 214b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * respectively. 215b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 216b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public IntegerValue compare(SpecificFloatValue other) 217b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 218b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return compare((FloatValue)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 FloatValue is 226b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given SpecificFloatValue, 227b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * respectively. 228b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 229b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final IntegerValue compareReverse(SpecificFloatValue 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 FloatValue and the given other 239b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ParticularFloatValue. 240b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 241b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue generalize(ParticularFloatValue other) 242b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 243b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return generalize((SpecificFloatValue)other); 244b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 245b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 246b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 247b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 248b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the sum of this FloatValue and the given ParticularFloatValue. 249b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 250b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue add(ParticularFloatValue other) 251b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 252b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return add((SpecificFloatValue)other); 253b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 254b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 255b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 256b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of this FloatValue and the given ParticularFloatValue. 257b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 258b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue subtract(ParticularFloatValue other) 259b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 260b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return subtract((SpecificFloatValue)other); 261b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 262b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 263b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 264b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the difference of the given ParticularFloatValue and this FloatValue. 265b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 266b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue subtractFrom(ParticularFloatValue other) 267b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 268b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return subtractFrom((SpecificFloatValue)other); 269b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 270b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 271b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 272b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the product of this FloatValue and the given ParticularFloatValue. 273b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 274b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue multiply(ParticularFloatValue other) 275b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 276b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return multiply((SpecificFloatValue)other); 277b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 278b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 279b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 280b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of this FloatValue and the given ParticularFloatValue. 281b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 282b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue divide(ParticularFloatValue other) 283b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 284b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return divide((SpecificFloatValue)other); 285b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 286b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 287b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 288b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the quotient of the given ParticularFloatValue and this 289b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * FloatValue. 290b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 291b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue divideOf(ParticularFloatValue other) 292b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 293b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return divideOf((SpecificFloatValue)other); 294b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 295b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 296b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 297b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of this FloatValue divided by the given 298b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ParticularFloatValue. 299b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 300b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue remainder(ParticularFloatValue other) 301b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 302b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return remainder((SpecificFloatValue)other); 303b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 304b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 305b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 306b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the remainder of the given ParticularFloatValue and this 307b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * FloatValue. 308b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 309b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public FloatValue remainderOf(ParticularFloatValue other) 310b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 311b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return remainderOf((SpecificFloatValue)other); 312b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 313b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 314b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 315b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns an IntegerValue with value -1, 0, or 1, if this FloatValue is 316b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given ParticularFloatValue, 317b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * respectively. 318b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 319b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public IntegerValue compare(ParticularFloatValue other) 320b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 321b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return compare((SpecificFloatValue)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 FloatValue is 329b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * less than, equal to, or greater than the given ParticularFloatValue, 330b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * respectively. 331b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 332b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final IntegerValue compareReverse(ParticularFloatValue 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 FloatValue floatValue() 341b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 342b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this; 343b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 344b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 345b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final Value generalize(Value other) 346b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 347b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return this.generalize(other.floatValue()); 348b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 349b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 350b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final int computationalType() 351b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 352b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return TYPE_FLOAT; 353b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 354b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 355b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public final String internalType() 356b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 357b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return String.valueOf(ClassConstants.INTERNAL_TYPE_FLOAT); 358b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 359b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato} 360