

PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 
java.lang.Object net.sourceforge.webcompmath.data.ExpressionProgram
public class ExpressionProgram
An ExprssionProgram represents a mathematical expression such as "3" or "sin(x^2)", stored in the form of a program for a stack machine. The program consists of a sequence of commands that, when executed, will compute the value of the expression.
Each command is encoded as an integer. There are three types of commands that can occur: (1) A negative integer must be one of the 39 constant values PLUS, MINUS,..., TANH. These constants represent unary and binary operators and standard functions. (2) An integer in the range 0 <= n < 0x3FFFFFFF encodes an operation of the form "push a constant onto the stack". The constant that is being pushed is encoded as an index in the array "constant", which is a private member of this class that holds all the constants that occur in this ExpressionProgram. (3) An integer >= 0x3FFFFFFF represents an ExpressionCommand object. When 0x3FFFFFFF is subtracted from the integer, the result is an index into the array "command", which is a private member of this class that holds all the ExpressionCommands that occur in this ExpressionProgram.
Field Summary  

static int 
ABS
Code for a unary or binary operator or a standard function. 
static int 
AND
Code for a unary or binary operator or a standard function. 
static int 
ARCCOS
Code for a unary or binary operator or a standard function. 
static int 
ARCSIN
Code for a unary or binary operator or a standard function. 
static int 
ARCTAN
Code for a unary or binary operator or a standard function. 
static int 
CEILING
Code for a unary or binary operator or a standard function. 
static int 
COS
Code for a unary or binary operator or a standard function. 
static int 
COSH
Code for a unary or binary operator or a standard function. 
static int 
COT
Code for a unary or binary operator or a standard function. 
static int 
CSC
Code for a unary or binary operator or a standard function. 
static int 
CUBERT
Code for a unary or binary operator or a standard function. 
static int 
DIVIDE
Code for a unary or binary operator or a standard function. 
static int 
ENDCODE
The last (most negative code value 
static int 
EQ
Code for a unary or binary operator or a standard function. 
static int 
EXP
Code for a unary or binary operator or a standard function. 
static int 
FACTORIAL
Code for a unary or binary operator or a standard function. 
static int 
FLOOR
Code for a unary or binary operator or a standard function. 
static int 
GE
Code for a unary or binary operator or a standard function. 
static int 
GT
Code for a unary or binary operator or a standard function. 
static int 
LE
Code for a unary or binary operator or a standard function. 
static int 
LN
Code for a unary or binary operator or a standard function. 
static int 
LOG10
Code for a unary or binary operator or a standard function. 
static int 
LOG2
Code for a unary or binary operator or a standard function. 
static int 
LT
Code for a unary or binary operator or a standard function. 
static int 
MINUS
Code for a unary or binary operator or a standard function. 
static int 
NE
Code for a unary or binary operator or a standard function. 
static int 
NOT
Code for a unary or binary operator or a standard function. 
static int 
OR
Code for a unary or binary operator or a standard function. 
static int 
PLUS
Code for a unary or binary operator or a standard function. 
static int 
POWER
Code for a unary or binary operator or a standard function. 
static int 
ROUND
Code for a unary or binary operator or a standard function. 
static int 
SEC
Code for a unary or binary operator or a standard function. 
static int 
SIN
Code for a unary or binary operator or a standard function. 
static int 
SINH
Code for a unary or binary operator or a standard function. 
java.lang.String 
sourceString
If this is nonnull, it is used as the print string for this expression in the toString() method. 
static int 
SQRT
Code for a unary or binary operator or a standard function. 
static int 
TAN
Code for a unary or binary operator or a standard function. 
static int 
TANH
Code for a unary or binary operator or a standard function. 
static int 
TIMES
Code for a unary or binary operator or a standard function. 
static int 
TRUNC
Code for a unary or binary operator or a standard function. 
static int 
UNARY_MINUS
Code for a unary or binary operator or a standard function. 
boolean 
useRpow
This flag tells the expression program whether to use pow or rpow when evaluating exponents 
Constructor Summary  

ExpressionProgram()
Default constructor creates an initially empty program. 
Method Summary  

void 
addCommand(int code)
Add a command code to the program, where code is one of the opCode constants that are public final members of this class, from ENDCODE to PLUS. 
void 
addCommandObject(ExpressionCommand com)
Adds com as the next command in the program. 
void 
addConstant(double d)
Add the number d as the next command in the program. 
void 
appendOutputString(int index,
java.lang.StringBuffer buffer)
Add a string representing part of the expression to the output buffer. 
protected double 
applyCommandCode(int code)
Apply the stack operation represented by code (a number < 0) to the stack. 
void 
compileDerivative(int index,
ExpressionProgram deriv,
Variable wrt)
The command at position index in the program represents a subexpression of the whole expression. 
void 
copyEntireExpression(ExpressionProgram destination)
This method copies all of the expression. 
void 
copyEntireWithSubstitution(ExpressionProgram destination,
ExpressionProgram subExpr,
Variable var)
This method copies all of the expression with substitution. 
void 
copyExpression(int index,
ExpressionProgram destination)
The command at position index in the program represents a subexpression of the whole expression. 
void 
copyWithSubstitution(int index,
ExpressionProgram destination,
ExpressionProgram subExpr,
Variable var)
The command at position index in the program represents a subexpression of the whole expression. 
boolean 
dependsOn(int index,
Variable x)
The command at position index in the program represents a subexpression of the whole expression. 
boolean 
dependsOn(Variable x)
Checks whether the expression as a whole has any dependence on the variable x. 
Expression 
derivative(Variable wrt)
Compute the derivative of this expression with respect to the Variable wrt. 
int 
extent(int index)
The command at position index in the program represents a subexpression of the whole expression. 
double 
getVal()
Run the ExprssionProgram and return the value that it computes. 
double 
getValueWithCases(Cases c)
Run the ExprssionProgram and return the value that it computes. 
java.lang.String 
toString()
If a source string has been saved, use it as the print string. 
void 
trim()
To save space, cut the arrays that holds the program data down to the actual amount of data that they contain. 
Methods inherited from class java.lang.Object 

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait 
Field Detail 

public static final int PLUS
public static final int MINUS
public static final int TIMES
public static final int DIVIDE
public static final int POWER
public static final int EQ
public static final int NE
public static final int LT
public static final int GT
public static final int LE
public static final int GE
public static final int AND
public static final int OR
public static final int NOT
public static final int UNARY_MINUS
public static final int FACTORIAL
public static final int SIN
public static final int COS
public static final int TAN
public static final int COT
public static final int SEC
public static final int CSC
public static final int ARCSIN
public static final int ARCCOS
public static final int ARCTAN
public static final int ABS
public static final int SQRT
public static final int EXP
public static final int LN
public static final int LOG2
public static final int LOG10
public static final int TRUNC
public static final int ROUND
public static final int FLOOR
public static final int CEILING
public static final int CUBERT
public static final int SINH
public static final int COSH
public static final int TANH
public static final int ENDCODE
public java.lang.String sourceString
public boolean useRpow
Constructor Detail 

public ExpressionProgram()
Method Detail 

public void addCommandObject(ExpressionCommand com)
com
 added as next command in the program.public void addConstant(double d)
d
 added as next command in program.public void addCommand(int code)
code
 command to addpublic void trim()
public double getVal()
getVal
in interface Value
public double getValueWithCases(Cases c)
getValueWithCases
in interface Expression
c
 cases to use
protected double applyCommandCode(int code)
code
 stack operation to apply
public java.lang.String toString()
toString
in interface Expression
toString
in class java.lang.Object
public void appendOutputString(int index, java.lang.StringBuffer buffer)
index
 location of the subexpressionbuffer
 buffer to add topublic Expression derivative(Variable wrt)
derivative
in interface Expression
wrt
 variable with respect to
public void compileDerivative(int index, ExpressionProgram deriv, Variable wrt)
index
 location in the program of subexpressionderiv
 the derivative of the subexpressionwrt
 variable with respect topublic int extent(int index)
index
 location of the subexpression
public void copyExpression(int index, ExpressionProgram destination)
index
 location of the subexpressiondestination
 destination to copy topublic void copyEntireExpression(ExpressionProgram destination)
destination
 the expresion to be copied topublic void copyWithSubstitution(int index, ExpressionProgram destination, ExpressionProgram subExpr, Variable var)
index
 location of the subexpressiondestination
 destination to copy tosubExpr
 the expression to replace varvar
 the variable to be replacedpublic void copyEntireWithSubstitution(ExpressionProgram destination, ExpressionProgram subExpr, Variable var)
destination
 the expresion to be copied tosubExpr
 the expression to replace varvar
 the variable to be replacedpublic boolean dependsOn(int index, Variable x)
index
 location of the subexpressionx
 variable to check
public boolean dependsOn(Variable x)
dependsOn
in interface Expression
x
 variable to check


PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 