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

org.psjava.ds.numbersystrem.Int32NumberSystem Maven / Gradle / Ivy

There is a newer version: 0.1.19
Show newest version
package org.psjava.ds.numbersystrem;

public class Int32NumberSystem implements IntegerDivisableNumberSystem {

	@Override
	public Int32 getZero() {
		return Int32.valueOf(0);
	}

	@Override
	public Int32 getByInt(int v) {
		return Int32.valueOf(v);
	}

	@Override
	public boolean isPositive(Int32 v) {
		return v.v > 0;
	}

	@Override
	public boolean isZero(Int32 v) {
		return v.v == 0;
	}

	@Override
	public boolean isNegative(Int32 v) {
		return v.v < 0;
	}

	@Override
	public int getSign(Int32 v) {
		if (v.v > 0)
			return 1;
		else if (v.v < 0)
			return -1;
		else
			return 0;
	}

	@Override
	public boolean areEqual(Int32 o1, Int32 o2) {
		return o1.v == o2.v;
	}

	@Override
	public Int32 getOne() {
		return Int32.valueOf(1);
	}

	@Override
	public boolean isOne(Int32 v) {
		return v.v == 1;
	}

	@Override
	public Int32 add(Int32 v1, Int32 v2) {
		long res = (long) v1.v + (long) v2.v;
		return safeCastFromLong(res);
	}

	@Override
	public Int32 subtract(Int32 minuend, Int32 subtrahend) {
		long res = (long) minuend.v - (long) subtrahend.v;
		return safeCastFromLong(res);
	}

	@Override
	public Int32 multiply(Int32 v1, Int32 v2) {
		long r = (long) v1.v * (long) v2.v;
		return safeCastFromLong(r);
	}

	@Override
	public Int32 integerDivide(Int32 dividend, Int32 divisor) {
		return Int32.valueOf(dividend.v / divisor.v);
	}

	@Override
	public Int32 integerRemainder(Int32 dividend, Int32 divisor) {
		return Int32.valueOf(dividend.v % divisor.v);
	}

	private Int32 safeCastFromLong(long v) {
		if (v != (int) v)
			throw OverflowException.create();
		return Int32.valueOf((int) v);
	}

	@Override
	public int compare(Int32 o1, Int32 o2) {
		if (o1.v > o2.v)
			return 1;
		else if (o1.v < o2.v)
			return -1;
		else
			return 0;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy