All Classes and Interfaces

Class
Description
AbstractModule<V,S,R extends Ring<S>>
 
 
An additive group is like a Group but where the operation is commutative and is called add.
 
Implementation of the AKS deterministic primality test.
 
ArgMax<A extends Comparable<A>>
 
 
Barrett reduction is a fast method for computing x mod m for large x and m.
This class represents a matrix of elements of type E.
 
Batch polynomial evaluation using the Moenck–Borodin algorithm.
This demo computes the first 16 Bell polynomials.
Find a root of a polynomial over a prime field using the probabilistic Berlekamp-Rabin algorithm.
 
 
 
 
This class is an implementation of ℤ / nℤ, e.g.
Compute the Legendre symbol of a number a modulo a prime p.
 
 
 
 
This represents a labeled binary tree where the label of an internal node is the result of an operation on the labels of its children.
A binary tree where the leafs are x-l_i for a set of constants (l_0, ..., l_{n-1}) and internal nodes are the product of their children.
Compute the bit length of an element in a ring assuming access to a bit shift operation.
 
Implementation of the BLS12-381 pairing-friendly elliptic curve construction.
Implementation of the BN254 (aka BN128) pairing-friendly elliptic curve construction.
 
 
 
Compute the solution to a system of congruences using the Chinese Remainder Theorem.
This implements the ideal class group for a negative discriminant.
A commutative monoid is a set with an associative and commutative addition operation.
 
 
 
 
 
 
 
The real numbers represented as constructive reals, e.g.
A demo of using constructive reals for various computations.
 
 
 
Calculate the determinant of a matrix.
Compute a closed formula for the determinant of a 6x6 matrix
Compute the Discrete Fourier Transform over a ring.
Compute the dot product of two vectors over a ring.
Implementation of the elliptic-curve factorization method (ECM).
EdwardsCurve<E,F extends Field<E>>
Instances of this class represents a curve over a field over elements of type E satisfying the equation x2 + y2 = 1 + d x2 y2.
Instances of this class represents a point on an Edwards Curve over a field with elements of type E.
 
Implementation of the Euclidean algorithm for computing the greatest common divisor of two elements in a Euclidean domain.
 
 
A Euclidean domain is a ring with Euclidean division.
 
 
This class can evaluate expressions parsed to reverse polish notation using the Parser class.
 
Algorthm 9.5 from Modern Computer Algebra.
A field is a commutative ring where every non-zero element has a multiplicative inverse.
 
 
A fraction.
Perform Gaussian elimination on a matrix.
 
This class represents the general linear group GL(n, F) of invertible n × n matrices over a field F.
 
Compute the Gram matrix for a given matrix.
GramSchmidt<V,S,F extends Field<S>>
Gram-Schmidt orthogonalization.
Gram-Schmidt orthogonalization over a ring.
 
A group is a set with an operation and an inverse operation.
Find an Hadamard Matrix of order 92 using Williamson's method as presented in J.S.
A group is a set with an associative addition operation and an inverse operation.
 
 
This function computes the canonical embedding of the integers into any ring by mapping an integer n to the identity element added to itself n times.
 
This class is an implementation of ℤ / nℤ, e.g.
 
Compute the Inverse Discrete Fourier Transform over a ring, assuming that n has an inverse over the ring.
Assuming f(0) = 1, this computes g such that fg = 1 (mod x^l).
 
Compute the Jacobi symbol of a number a modulo an odd number n.
The Karatsuba algorithm for multiplying two polynomials.
Compute the Kronecker product of two matrices.
Compute the Lagrange interpolation polynomial which is the polynomial of the lowest degree which assumes a given set of points.
 
 
A representation of a matrix taking entries of type E.
Compute the sum of two matrices.
 
Compute the inverse of a matrix.
This function computes the product of two matrices.
This class represents a ring of n × n matrices over a base ring.
Given two points P and Q of order m on an elliptic curve, this algorithm computes f(Q) where div(f) = [m]P - m[O].
 
Module<V,S,R extends Ring<S>>
A module over a ring R is an additive group V together with a scalar multiplication.
A monoid is a set with an associative operation.
 
 
Curve on Montgomery form By2 = x3 + Ax2 + x.
A multi-dimensional array is a data collection where entries are indexed by a fixed length vector (the length equals the dimension of the array).
 
Instances of this class allows for easy repeated application of a binary operator on many operands.
Compute e a for and integer e and an element from an additive group, a.
 
 
 
This class implements the ring of polynomials K[x] over a field K.
This class implements the ring of polynomials K[x] over a field K.
 
Instances of this class represents a mutable matrix.
An inner product space is a vector space with an inner product.
 
 
This class wraps a ring but operations will treat null operands as if they were zero.
 
Compute the optimal Ate pairing.
A set with an ordering.
 
This class parses arithmetic expressions into reverse polish notation which makes them easy to evaluate.
Wrapper for the ring class which logs the number of operations performed in this ring.
Wrapper for the ring class which logs the number of operations performed in this ring.
 
 
 
 
 
 
 
 
This class implements the ring of polynomials K[x] over a field K.
This class implements the ring of polynomials K[x] over a field K.
This class implements the ring of polynomials K[x] over a field K.
 
 
 
Compute ae for a BigInteger e.
 
Compute the product of a list of elements over a monoid.
Projection<V,S,F extends Field<S>>
Compute the projection of a vector v onto another vector u in the given vector space.
 
Compute the QR decomposition of a matrix.
Solve a quadratic equation of the form ax^2 + bx + c = 0 over a field of characteristic != 2.
 
 
 
 
 
 
Real numbers represented by Doubles.
A ring is a set with an associative and commutative addition operation and an associative multiplication operation.
Numerical integration using the Runge-Kutta method.
 
 
A semigroup is a set with an associative multiplication operation.
A semiring is a set with an associative and commutative addition operation and an associative multiplication operation.
 
 
A set is a collection of elements.
 
 
This class represents a sparse matrix by only storing the non-zero entries.
 
Compute the product of two 8x8 matrices using the traditional algorithm and Strassen's algorithm and compare the number of operations used for each.
This function computes the product of two square matrices using the Strassen algorithm.
 
 
Compute the sum of a list of elements over an additive group.
 
 
 
 
 
 
Instances of this class represents a token in an arithmetic expression.
 
 
 
 
 
 
VectorSpace<V,S,F extends Field<S>>
A vector space is a module over a field.
 
Compute the Weil pairing of two points on an elliptic curve.