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

dk.jonaslindstrom.ruffini.integers.structures.BigIntegers Maven / Gradle / Ivy

package dk.jonaslindstrom.ruffini.integers.structures;

import dk.jonaslindstrom.ruffini.common.abstractions.EuclideanDomain;
import dk.jonaslindstrom.ruffini.common.util.Pair;

import java.math.BigInteger;

public class BigIntegers implements EuclideanDomain {

    private static final BigIntegers instance = new BigIntegers();

    private BigIntegers() {

    }

    public static BigIntegers getInstance() {
        return instance;
    }

    @Override
    public BigInteger getIdentity() {
        return BigInteger.ONE;
    }

    @Override
    public BigInteger multiply(BigInteger a, BigInteger b) {
        return a.multiply(b);
    }

    @Override
    public String toString(BigInteger a) {
        return a.toString();
    }

    @Override
    public boolean equals(BigInteger a, BigInteger b) {
        return a.equals(b);
    }

    @Override
    public BigInteger add(BigInteger a, BigInteger b) {
        return a.add(b);
    }

    @Override
    public BigInteger negate(BigInteger a) {
        return a.negate();
    }

    @Override
    public BigInteger getZero() {
        return BigInteger.ZERO;
    }

    @Override
    public Pair divisionWithRemainder(BigInteger a, BigInteger b) {
        BigInteger[] qr = a.divideAndRemainder(b);
        return new Pair<>(qr[0], qr[1]);
    }

    @Override
    public BigInteger norm(BigInteger a) {
        return a.abs();
    }

    @Override
    public String toString() {
        return "\\mathbb{Z}";
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy