package jmathlib.toolbox.jmathlib.matrix;
import jmathlib.core.tokens.*;
import jmathlib.core.tokens.numbertokens.DoubleNumberToken;
import jmathlib.core.functions.ExternalFunction;
import jmathlib.core.interpreter.GlobalValues;
import jmathlib.toolbox.jmathlib.matrix._private.Jama.CholeskyDecomposition;
/**An external function for computing the cholewsky decomposition of an array */
public class chol extends ExternalFunction
{
/**return a matrix
* @param operands[0] = matrix
* @return matrix */
public OperandToken evaluate(Token[] operands, GlobalValues globals)
{
// one operand (e.g. chol(A) )
if (getNArgIn(operands) != 1)
throwMathLibException("chol: number of arguments != 1");
if (!(operands[0] instanceof DoubleNumberToken)) return null;
// get data from arguments
double[][] A = ((DoubleNumberToken)operands[0]).getReValues();
CholeskyDecomposition cholDecomp = new CholeskyDecomposition( A );
double[][] L = cholDecomp.getL();
return new DoubleNumberToken( L );
} // end eval
}
/*
@GROUP
matrix
@SYNTAX
answer=CHOL(matrix)
@DOC
Calculates the Cholewsky decomposition of matrix
@NOTES
@EXAMPLES
CHOL([2,3;3,5])=[1.414,0;2.121,0.707]
@SEE
*/