/* $Id$
 */
package calc;

/** Formulas with at least one register.
 * @author Gary T. Leavens
 */
public abstract class Formula implements FormulaType {
	/** the register number */
	private /*@ spec_public @*/ int reg;

	/** Initialize this formula to use the given register.
     * @param regnum the number of the register.
     */
	//@ requires 0 <= reg && reg < Registers.NUM_REGS;
    protected Formula(int reg) {
		this.reg = reg;
	}
	
    /* (non-Javadoc)
     * @see calc.FormulaType#isPositive()
     */
    public boolean isPositive() {
        return evaluate() > 0;
    }
    
    /** Return the value of the given register. */
    protected /*@ pure @*/ double get(int num) {
    	return Registers.getInstance().get(num);
    }

    /** Return the value of the reg register. */
    protected double regValue() {
        return get(reg);
    }

}
