Mercurial > hg > Members > tatsuki > functionaljava-master > core
view src/main/java/fj/function/BigIntegers.java @ 0:fe80c1edf1be
add getLoop
author | tatsuki |
---|---|
date | Fri, 20 Mar 2015 21:04:03 +0900 |
parents | |
children |
line wrap: on
line source
package fj.function; import fj.F; import fj.F2; import fj.Monoid; import fj.data.List; import static fj.Function.curry; import java.math.BigInteger; /** * Curried functions over Integers. * * @version %build.number% */ public final class BigIntegers { private BigIntegers() { throw new UnsupportedOperationException(); } /** * Curried Integer addition. */ public static final F<BigInteger, F<BigInteger, BigInteger>> add = curry(new F2<BigInteger, BigInteger, BigInteger>() { public BigInteger f(final BigInteger a1, final BigInteger a2) { return a1.add(a2); } }); /** * Curried Integer multiplication. */ public static final F<BigInteger, F<BigInteger, BigInteger>> multiply = curry(new F2<BigInteger, BigInteger, BigInteger>() { public BigInteger f(final BigInteger a1, final BigInteger a2) { return a1.multiply(a2); } }); /** * Curried Integer subtraction. */ public static final F<BigInteger, F<BigInteger, BigInteger>> subtract = curry(new F2<BigInteger, BigInteger, BigInteger>() { public BigInteger f(final BigInteger a1, final BigInteger a2) { return a1.subtract(a2); } }); /** * Negation. */ public static final F<BigInteger, BigInteger> negate = new F<BigInteger, BigInteger>() { public BigInteger f(final BigInteger i) { return i.negate(); } }; /** * Absolute value. */ public static final F<BigInteger, BigInteger> abs = new F<BigInteger, BigInteger>() { public BigInteger f(final BigInteger i) { return i.abs(); } }; /** * Remainder. */ public static final F<BigInteger, F<BigInteger, BigInteger>> remainder = curry(new F2<BigInteger, BigInteger, BigInteger>() { public BigInteger f(final BigInteger a1, final BigInteger a2) { return a1.remainder(a2); } }); /** * Power. */ public static final F<BigInteger, F<Integer, BigInteger>> power = curry(new F2<BigInteger, Integer, BigInteger>() { public BigInteger f(final BigInteger a1, final Integer a2) { return a1.pow(a2); } }); /** * Sums a list of big integers. * * @param ints A list of big integers to sum. * @return The sum of the big integers in the list. */ public static BigInteger sum(final List<BigInteger> ints) { return Monoid.bigintAdditionMonoid.sumLeft(ints); } /** * Returns the product of a list of big integers. * * @param ints A list of big integers to multiply together. * @return The product of the big integers in the list. */ public static BigInteger product(final List<BigInteger> ints) { return Monoid.bigintMultiplicationMonoid.sumLeft(ints); } }