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 }