org.snapscript.tree.math.IntegerCalculator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of snap-all Show documentation
Show all versions of snap-all Show documentation
Dynamic scripting for the JVM
package org.snapscript.tree.math;
import org.snapscript.core.variable.Value;
import org.snapscript.core.variable.ValueCache;
public class IntegerCalculator extends ValueCalculator {
@Override
public Value add(Number left, Number right) {
int first = left.intValue();
int second = right.intValue();
return ValueCache.getInteger(first + second);
}
@Override
public Value subtract(Number left, Number right) {
int first = left.intValue();
int second = right.intValue();
return ValueCache.getInteger(first - second);
}
@Override
public Value divide(Number left, Number right) {
int first = left.intValue();
int second = right.intValue();
return ValueCache.getInteger(first / second);
}
@Override
public Value multiply(Number left, Number right) {
int first = left.intValue();
int second = right.intValue();
return ValueCache.getInteger(first * second);
}
@Override
public Value modulus(Number left, Number right) {
int first = left.intValue();
int second = right.intValue();
return ValueCache.getInteger(first % second);
}
@Override
public Value shiftLeft(Number left, Number right) {
int first = left.intValue();
int second = right.intValue();
return ValueCache.getInteger(first << second);
}
@Override
public Value shiftRight(Number left, Number right) {
int first = left.intValue();
int second = right.intValue();
return ValueCache.getInteger(first >> second);
}
@Override
public Value unsignedShiftRight(Number left, Number right) {
int first = left.intValue();
int second = right.intValue();
return ValueCache.getInteger(first >>> second);
}
@Override
public Value and(Number left, Number right) {
int first = left.intValue();
int second = right.intValue();
return ValueCache.getInteger(first & second);
}
@Override
public Value or(Number left, Number right) {
int first = left.intValue();
int second = right.intValue();
return ValueCache.getInteger(first | second);
}
@Override
public Value xor(Number left, Number right) {
int first = left.intValue();
int second = right.intValue();
return ValueCache.getInteger(first ^ second);
}
@Override
public Value power(Number left, Number right) {
double first = left.doubleValue();
double second = right.doubleValue();
double result = Math.pow(first, second);
return ValueCache.getDouble(result);
}
}