01: package org.codehaus.groovy.runtime.typehandling;
02:
03: /**
04: * FloatingPoint (Double and Float) NumberMath operations
05: *
06: * @author Steve Goetze
07: */
08: public class FloatingPointMath extends NumberMath {
09:
10: protected static FloatingPointMath instance = new FloatingPointMath();
11:
12: private FloatingPointMath() {
13: }
14:
15: protected Number absImpl(Number number) {
16: return new Double(Math.abs(number.doubleValue()));
17: }
18:
19: protected Number addImpl(Number left, Number right) {
20: return new Double(left.doubleValue() + right.doubleValue());
21: }
22:
23: protected Number subtractImpl(Number left, Number right) {
24: return new Double(left.doubleValue() - right.doubleValue());
25: }
26:
27: protected Number multiplyImpl(Number left, Number right) {
28: return new Double(left.doubleValue() * right.doubleValue());
29: }
30:
31: protected Number divideImpl(Number left, Number right) {
32: return new Double(left.doubleValue() / right.doubleValue());
33: }
34:
35: protected int compareToImpl(Number left, Number right) {
36: return Double.compare(left.doubleValue(), right.doubleValue());
37: }
38:
39: protected Number modImpl(Number left, Number right) {
40: return new Double(left.doubleValue() % right.doubleValue());
41: }
42:
43: protected Number negateImpl(Number left) {
44: return new Double(-left.doubleValue());
45: }
46: }
|