001 package org.codehaus.groovy.runtime;
002
003 /**
004 * FloatingPoint (Double and Float) NumberMath operations
005 *
006 * @author Steve Goetze
007 */
008 public class FloatingPointMath extends NumberMath {
009
010 protected static FloatingPointMath instance = new FloatingPointMath();
011
012 private FloatingPointMath() {}
013
014 protected Number absImpl(Number number) {
015 return new Double(Math.abs(number.doubleValue()));
016 }
017
018 protected Number addImpl(Number left, Number right) {
019 return new Double(left.doubleValue() + right.doubleValue());
020 }
021
022 protected Number subtractImpl(Number left, Number right) {
023 return new Double(left.doubleValue() - right.doubleValue());
024 }
025
026 protected Number multiplyImpl(Number left, Number right) {
027 return new Double(left.doubleValue() * right.doubleValue());
028 }
029
030 protected Number divideImpl(Number left, Number right) {
031 return new Double(left.doubleValue() / right.doubleValue());
032 }
033 protected int compareToImpl(Number left, Number right) {
034 return Double.compare(left.doubleValue(), right.doubleValue());
035 }
036
037 protected Number modImpl(Number left, Number right) {
038 return new Double(left.doubleValue() % right.doubleValue());
039 }
040
041 protected Number negateImpl(Number left) {
042 return new Double(-left.doubleValue());
043 }
044 }