blob: f37e602565645ea9bfb96d2348b2a8f700eb457c [file] [log] [blame]
package jp.ac.kobe_u.cs.prolog.lang;
/**
* The superclass of classes for integers and floating point numbers.
*
* @author Mutsunori Banbara (banbara@kobe-u.ac.jp)
* @author Naoyuki Tamura (tamura@kobe-u.ac.jp)
* @version 1.0
*/
public abstract class NumberTerm extends Term {
/** Returns the numeric value represented by this object after conversion to type <code>int</code>. */
abstract public int intValue();
/** Returns the numeric value represented by this object after conversion to type <code>long</code>. */
abstract public long longValue();
/** Returns the numeric value represented by this object after conversion to type <code>double</code>. */
abstract public double doubleValue();
/**
* Compares two <code>NumberTerm</code> objects numerically.
* @param t the <code>NumberTerm</code> to compare with.
* @return the value <code>0</code>
* if this object is numerically equal to the argument <code>NumberTerm</code>;
* a value less than <code>0</code>
* if this object is numerically less than the argument <code>NumberTerm</code>; and
* a value greater than <code>0</code>
* if this object is numerically greater than the argument <code>NumberTerm</code>.
*/
abstract public int arithCompareTo(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>abs(this)</code>. */
abstract public NumberTerm abs();
/** Returns a <code>NumberTerm</code> whose value is <code>acos(this)</code>. */
abstract public NumberTerm acos();
/** Returns a <code>NumberTerm</code> whose value is <code>(this + t)</code>. */
abstract public NumberTerm add(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>(this &amp; t)</code>. */
abstract public NumberTerm and(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>asin(this)</code>. */
abstract public NumberTerm asin();
/** Returns a <code>NumberTerm</code> whose value is <code>tan(this)</code>. */
abstract public NumberTerm atan();
/** Returns a <code>NumberTerm</code> whose value is <code>ceil(this)</code>. */
abstract public NumberTerm ceil();
/** Returns a <code>NumberTerm</code> whose value is <code>cos(this)</code>. */
abstract public NumberTerm cos();
/** Returns a <code>NumberTerm</code> whose value is <code>(this / t)</code>. */
abstract public NumberTerm divide(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>exp(this)</code>. */
abstract public NumberTerm exp();
/** Returns a <code>NumberTerm</code> whose value is the float-integer-part of <code>this</code>. */
abstract public NumberTerm floatIntPart();
/** Returns a <code>NumberTerm</code> whose value is the float-fractional-part of <code>this</code>. */
abstract public NumberTerm floatFractPart();
/** Returns a <code>NumberTerm</code> whose value is <code>floor(this)</code>. */
abstract public NumberTerm floor();
/** Returns a <code>NumberTerm</code> whose value is <code>(int)(this / t)</code>. */
abstract public NumberTerm intDivide(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>log(this)</code>. */
abstract public NumberTerm log();
/** Returns a <code>NumberTerm</code> whose value is <code>max(this, t)</code>. */
abstract public NumberTerm max(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>min(this, t)</code>. */
abstract public NumberTerm min(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>(this mod t)</code>. */
abstract public NumberTerm mod(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>(this * t)</code>. */
abstract public NumberTerm multiply(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>(- this)</code>. */
abstract public NumberTerm negate();
/** Returns a <code>NumberTerm</code> whose value is <code>(~ this)</code>. */
abstract public NumberTerm not();
/** Returns a <code>NumberTerm</code> whose value is <code>(this | t)</code>. */
abstract public NumberTerm or(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>(this<sup>t</sup>)</code>. */
abstract public NumberTerm pow(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>rint(this)</code>. */
abstract public NumberTerm rint();
/** Returns a <code>NumberTerm</code> whose value is <code>round(this)</code>. */
abstract public NumberTerm round();
/** Returns a <code>NumberTerm</code> whose value is <code>(this &lt;&lt; t)</code>. */
abstract public NumberTerm shiftLeft(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>(this &gt;&gt; t)</code>. */
abstract public NumberTerm shiftRight(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>signum(this)</code>. */
abstract public NumberTerm signum();
/** Returns a <code>NumberTerm</code> whose value is <code>sin(this)</code>. */
abstract public NumberTerm sin();
/** Returns a <code>NumberTerm</code> whose value is <code>sqrt(this)</code>. */
abstract public NumberTerm sqrt();
/** Returns a <code>NumberTerm</code> whose value is <code>(this - t)</code>. */
abstract public NumberTerm subtract(NumberTerm t);
/** Returns a <code>NumberTerm</code> whose value is <code>tan(this)</code>. */
abstract public NumberTerm tan();
/** Returns a <code>NumberTerm</code> whose value is <code>toDegrees(this)</code>. */
abstract public NumberTerm toDegrees();
/** Returns a <code>NumberTerm</code> whose value is <code>(double)(this)</code>. */
abstract public NumberTerm toFloat();
/** Returns a <code>NumberTerm</code> whose value is <code>toRadians(this)</code>. */
abstract public NumberTerm toRadians();
/** Returns a <code>NumberTerm</code> whose value is the truncate of <code>this</code>. */
abstract public NumberTerm truncate();
/** Returns a <code>NumberTerm</code> whose value is <code>(this ^ t)</code>. */
abstract public NumberTerm xor(NumberTerm t);
}