package jmathlib.toolbox.demos;
import jmathlib.core.tokens.*;
import jmathlib.core.tokens.numbertokens.DoubleNumberToken;
import jmathlib.core.functions.*;
import jmathlib.core.interpreter.*;
/**An example of an external function - it returns 2 * the first parameter*/
public class example04 extends ExternalFunction
{
/**Execute the function returning the first parameter
operands - array of parameters*/
public OperandToken evaluate(Token[] operands, GlobalValues globals)
{
ErrorLogger.debugLine("example04 right-hand arguments= "+operands.length);
ErrorLogger.debugLine("example04 left-hand arguments= "+getNoOfLeftHandArguments());
if (operands[0] instanceof DoubleNumberToken)
{
double[][] argValues = ((DoubleNumberToken)operands[0]).getReValues();
int argSizeX = ((DoubleNumberToken)operands[0]).getSizeX();
int argSizeY = ((DoubleNumberToken)operands[0]).getSizeY();
ErrorLogger.debugLine("*** demo function: example04 ***");
/* Check dimensions of matrix */
//ErrorLogger.debugLine("DoubleNumberToken: sub (n*m) - (n*m)");
for (int yy=0; yy<argSizeY; yy++)
{
for (int xx=0; xx<argSizeX; xx++)
{
argValues[yy][xx] = 2 * argValues[yy][xx] ;
}
}
return new DoubleNumberToken(argValues);
}
// return two left hand arguments: [a,b]=example04();
OperandToken values[][] = new OperandToken[1][2];
values[0][0] = new DoubleNumberToken(11.11);
values[0][1] = new DoubleNumberToken(22.22);
return new MatrixToken( values );
}
}