/** * */ package eu.quanticol.carma.core.evaluators; /** * @author loreti * */ public class CarmaReal implements CarmaValue { @Override public int hashCode() { return (int) value; } @Override public boolean equals(Object obj) { if ((obj != null)&&(obj instanceof CarmaReal)) { return value == ((CarmaReal) obj).value; } return false; } @Override public String toString() { return value+""; } private double value; public CarmaReal( double value ) { this.value = value; } @Override public boolean isBoolean() { return false; } @Override public boolean isInteger() { return false; } @Override public boolean isReal() { return true; } @Override public boolean isRecord() { return false; } @Override public boolean isEnum() { return false; } @Override public boolean isNone() { return false; } @Override public boolean getBooleanValue() { throw new IllegalStateException(); } @Override public int getIntegerValue() { throw new IllegalStateException(); } @Override public double getRealValue() { return value; } @Override public CarmaValue getFieldValue(String name) { throw new IllegalStateException(); } @Override public boolean isTrue() { throw new IllegalStateException(); } @Override public boolean isFalse() { throw new IllegalStateException(); } @Override public CarmaValue and(CarmaValue v) { return CarmaNone.NONE; } @Override public CarmaValue or(CarmaValue v) { return CarmaNone.NONE; } @Override public CarmaValue not() { return CarmaNone.NONE; } @Override public CarmaValue plus(CarmaValue v) { if (v.isReal()) { return new CarmaReal(this.value+v.getRealValue()); } return CarmaNone.NONE; } @Override public CarmaValue minus(CarmaValue v) { if (v.isReal()) { return new CarmaReal(this.value-v.getRealValue()); } return CarmaNone.NONE; } @Override public CarmaValue mul(CarmaValue v) { if (v.isReal()) { return new CarmaReal(this.value*v.getRealValue()); } return CarmaNone.NONE; } @Override public CarmaValue div(CarmaValue v) { if (v.isReal()) { return new CarmaReal(this.value/v.getRealValue()); } return CarmaNone.NONE; } @Override public CarmaValue lessThan(CarmaValue v) { if (v.isReal()) { return new CarmaBoolean(this.value<v.getRealValue()); } return CarmaNone.NONE; } @Override public CarmaValue lessOrEqualThan(CarmaValue v) { if (v.isReal()) { return new CarmaBoolean(this.value<=v.getRealValue()); } return CarmaNone.NONE; } @Override public CarmaValue equalTo(CarmaValue v) { if (v.isReal()) { return new CarmaBoolean(this.value==v.getRealValue()); } return CarmaNone.NONE; } @Override public CarmaValue notEqualTo(CarmaValue v) { if (v.isReal()) { return new CarmaBoolean(this.value!=v.getRealValue()); } return CarmaNone.NONE; } @Override public CarmaValue greaterThan(CarmaValue v) { if (v.isReal()) { return new CarmaBoolean(this.value>v.getRealValue()); } return CarmaNone.NONE; } @Override public CarmaValue greaterOrEqualThan(CarmaValue v) { if (v.isReal()) { return new CarmaBoolean(this.value>=v.getRealValue()); } return CarmaNone.NONE; } @Override public CarmaValue abs() { return new CarmaReal(Math.abs(value)); } @Override public CarmaValue cos() { return new CarmaReal(Math.cos(value)); } @Override public CarmaValue acos() { return new CarmaReal(Math.acos(value)); } @Override public CarmaValue asin() { return new CarmaReal(Math.asin(value)); } @Override public CarmaValue atan() { return new CarmaReal(Math.atan(value)); } @Override public CarmaValue atan2(CarmaValue v) { if (v.isReal()) { return new CarmaReal(Math.atan2(value,v.getRealValue())); } return CarmaNone.NONE; } @Override public CarmaValue cbrt() { return new CarmaReal(Math.cbrt(value)); } @Override public CarmaValue ceil() { return new CarmaReal(Math.ceil(value)); } @Override public CarmaValue exp() { return new CarmaReal(Math.exp(value)); } @Override public CarmaValue floor() { return new CarmaReal(Math.floor(value)); } @Override public CarmaValue log() { return new CarmaReal(Math.log(value)); } @Override public CarmaValue log10() { return new CarmaReal(Math.log10(value)); } @Override public CarmaValue max(CarmaValue v) { if (v.isReal()) { return (this.value>v.getRealValue()?this:v); } return CarmaNone.NONE; } @Override public CarmaValue min(CarmaValue v) { if (v.isReal()) { return (this.value<v.getRealValue()?this:v); } return CarmaNone.NONE; } @Override public CarmaValue pow(CarmaValue v) { if (v.isReal()) { return new CarmaReal(Math.pow(value,v.getRealValue())); } return CarmaNone.NONE; } @Override public CarmaValue sin() { return new CarmaReal(Math.sin(value)); } @Override public CarmaValue sqrt() { return new CarmaReal(Math.sqrt(value)); } @Override public CarmaValue tan() { return new CarmaReal(Math.tan(value)); } }