/*
This code is a a heavily modified version of Numbers from Rich Hickeys clojure core, see Numbers.java for copyright
*/
package com.googlecode.totallylazy.numbers;
import java.math.BigDecimal;
public final class FloatOperators implements Operators<Float> {
public static FloatOperators Instance = new FloatOperators();
private FloatOperators() {}
public final Class<Float> forClass() {
return Float.class;
}
public final int priority() {
return 6;
}
@Override
public Number absolute(Float value) {
return isNegative(value) ? negate(value) : value ;
}
public final Number negate(Float value) {
return -value;
}
public final Number increment(Float value) {
return value + 1;
}
public final Number decrement(Float value) {
return value - 1;
}
public final boolean isZero(Float value) {
return value == 0;
}
public final boolean isPositive(Float value) {
return value > 0;
}
public final boolean isNegative(Float value) {
return value < 0;
}
public final boolean equalTo(Number x, Number y) {
return x.floatValue() == y.floatValue();
}
public final boolean lessThan(Number x, Number y) {
return x.floatValue() < y.floatValue();
}
public final Number add(Number x, Number y) {
return x.floatValue() + y.floatValue();
}
public final Number multiply(Number x, Number y) {
return x.floatValue() * y.floatValue();
}
public final Number divide(Number x, Number y) {
return x.floatValue() / y.floatValue();
}
public final Number quotient(Number x, Number y) {
return DoubleOperators.quotient(x.doubleValue(), y.doubleValue());
}
public final Number remainder(Number x, Number y) {
return DoubleOperators.remainder(x.doubleValue(), y.doubleValue());
}
public static Number rationalize(Float x) {
return BigDecimalOperators.rationalize(BigDecimal.valueOf(x));
}
}