blob: c70cdfcb300316096f83aca9d6d1264baa3fec68 [file] [log] [blame]
package brooklyn.util.math;
import javax.annotation.Nullable;
import com.google.common.base.Function;
public class MathFunctions {
public static Function<Number, Integer> plus(final int addend) {
return new Function<Number, Integer>() {
public Integer apply(@Nullable Number input) {
if (input==null) return null;
return input.intValue() + addend;
}
};
}
public static Function<Number, Double> plus(final double addend) {
return new Function<Number, Double>() {
public Double apply(@Nullable Number input) {
if (input==null) return null;
return input.doubleValue() + addend;
}
};
}
public static Function<Number, Integer> times(final int multiplicand) {
return new Function<Number, Integer>() {
public Integer apply(@Nullable Number input) {
if (input==null) return null;
return input.intValue() * multiplicand;
}
};
}
public static Function<Number, Double> times(final double multiplicand) {
return new Function<Number, Double>() {
public Double apply(@Nullable Number input) {
if (input==null) return null;
return input.doubleValue() * multiplicand;
}
};
}
public static Function<Number, Double> divide(final double divisor) {
return new Function<Number, Double>() {
public Double apply(@Nullable Number input) {
if (input==null) return null;
return input.doubleValue() / divisor;
}
};
}
public static <T> Function<T, Double> divide(final Function<T, ? extends Number> input, final double divisor) {
return new Function<T, Double>() {
public Double apply(@Nullable T input2) {
if (input==null) return null;
Number n = input.apply(input2);
if (n==null) return null;
return n.doubleValue() / divisor;
}
};
}
}