1 9 package org.jscience.mathematics.numbers; 10 11 import javolution.lang.MathLib; 12 import javolution.lang.Text; 13 import javolution.lang.TypeFormat; 14 import javolution.xml.XmlElement; 15 import javolution.xml.XmlFormat; 16 17 23 public final class Float32 extends Number <Float32> { 24 25 30 protected static final XmlFormat<Float32> XML = new XmlFormat<Float32>( 31 Float32.class) { 32 public void format(Float32 obj, XmlElement xml) { 33 xml.setAttribute("value", obj._value); 34 } 35 36 public Float32 parse(XmlElement xml) { 37 return Float32.valueOf(xml.getAttribute("value", 0.0f)); 38 } 39 }; 40 41 44 private static final Factory<Float32> FACTORY = new Factory<Float32>() { 45 46 public Float32 create() { 47 return new Float32(); 48 } 49 }; 50 51 54 public static final Float32 ZERO = valueOf(0.0f).moveHeap(); 55 56 59 public static final Float32 ONE = valueOf(1.0f).moveHeap(); 60 61 64 private float _value; 65 66 69 private Float32() { 70 } 71 72 79 public static Float32 valueOf(float floatValue) { 80 Float32 r = FACTORY.object(); 81 r._value = floatValue; 82 return r; 83 } 84 85 91 public static Float32 valueOf(CharSequence chars) { 92 Float32 r = FACTORY.object(); 93 r._value = TypeFormat.parseFloat(chars); 94 return r; 95 } 96 97 103 public boolean isInfinite() { 104 return Float.isInfinite(_value); 105 } 106 107 113 public boolean isNaN() { 114 return Float.isNaN(_value); 115 } 116 117 122 public Float32 opposite() { 123 Float32 r = FACTORY.object(); 124 r._value = -this._value; 125 return r; 126 } 127 128 134 public Float32 plus(Float32 that) { 135 Float32 r = FACTORY.object(); 136 r._value = this._value + that._value; 137 return r; 138 } 139 140 146 public Float32 minus(Float32 that) { 147 Float32 r = FACTORY.object(); 148 r._value = this._value - that._value; 149 return r; 150 } 151 152 158 public Float32 times(Float32 that) { 159 Float32 r = FACTORY.object(); 160 r._value = this._value * that._value; 161 return r; 162 } 163 164 169 public Float32 reciprocal() { 170 Float32 r = FACTORY.object(); 171 r._value = 1.0f / this._value; 172 return r; 173 } 174 175 181 public Float32 divide(Float32 that) { 182 Float32 r = FACTORY.object(); 183 r._value = this._value / that._value; 184 return r; 185 } 186 187 192 public boolean isLargerThan(Float32 that) { 193 return MathLib.abs(this._value) > MathLib.abs(that._value); 194 } 195 196 201 public Float32 norm() { 202 Float32 r = FACTORY.object(); 203 r._value = MathLib.abs(this._value); 204 return r; 205 } 206 207 212 public Float32 sqrt() { 213 Float32 r = FACTORY.object(); 214 r._value = (float) MathLib.sqrt(this._value); 215 return r; 216 } 217 218 224 public Float32 exp() { 225 Float32 r = FACTORY.object(); 226 r._value = (float) MathLib.exp(this._value); 227 return r; 228 } 229 230 235 public Float32 log() { 236 Float32 r = FACTORY.object(); 237 r._value = (float) MathLib.log(this._value); 238 return r; 239 } 240 241 247 public Float32 pow(double e) { 248 Float32 r = FACTORY.object(); 249 r._value = (float) MathLib.pow(this._value, e); 250 return r; 251 } 252 253 259 public Float32 pow(Float32 that) { 260 Float32 r = FACTORY.object(); 261 r._value = (float) MathLib.pow(this._value, that._value); 262 return r; 263 } 264 265 270 public Text toText() { 271 return Text.valueOf(_value); 272 } 273 274 281 public boolean equals(Object that) { 282 return (that instanceof Float32) 283 && (this._value == ((Float32) that)._value); 284 } 285 286 291 public int hashCode() { 292 int h = Float.floatToIntBits(_value); 293 h += ~(h << 9); 294 h ^= (h >>> 14); 295 h += (h << 4); 296 return h ^ (h >>> 10); 297 } 298 299 public long longValue() { 301 return (long) _value; 302 } 303 304 public double doubleValue() { 306 return _value; 307 } 308 309 public int compareTo(Float32 that) { 311 if (this._value < that._value) { 312 return -1; 313 } else if (this._value > that._value) { 314 return 1; 315 } else { 316 int l1 = Float.floatToIntBits(this._value); 317 int l2 = Float.floatToIntBits(that._value); 318 return (l1 == l2 ? 0 : (l1 < l2 ? -1 : 1)); 319 } 320 } 321 322 private static final long serialVersionUID = 1L; 323 } | Popular Tags |