All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fj.function.BigIntegers Maven / Gradle / Ivy

Go to download

Functional Java is an open source library that supports closures for the Java programming language

There is a newer version: 5.0
Show newest version
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> add =
      curry((F2) BigInteger::add);

  /**
   * Curried Integer multiplication.
   */
  public static final F> multiply =
      curry(BigInteger::multiply);

  /**
   * Curried Integer subtraction.
   */
  public static final F> subtract =
      curry((F2) BigInteger::subtract);

  /**
   * Negation.
   */
  public static final F negate = BigInteger::negate;

  /**
   * Absolute value.
   */
  public static final F abs = BigInteger::abs;

  /**
   * Remainder.
   */
  public static final F> remainder =
      curry(BigInteger::remainder);

  /**
   * Power.
   */
  public static final F> power = curry(BigInteger::pow);

  /**
   * 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 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 ints) {
    return Monoid.bigintMultiplicationMonoid.sumLeft(ints);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy