/**
* DO NOT MODIFY! This file is generated automatically from org.formulacompiler.compiler.internal.templates.ExpressionTemplatesForScaledBigDecimals.
* Generated using jdk-1.5.0_22.
*/
package org.formulacompiler.compiler.internal.model.interpreter;
import org.formulacompiler.runtime.ComputationMode;
import org.formulacompiler.compiler.CompilerException;
import org.formulacompiler.compiler.Function;
import org.formulacompiler.compiler.NumericType;
import org.formulacompiler.compiler.Operator;
import org.formulacompiler.compiler.internal.expressions.ExpressionNode;
import org.formulacompiler.compiler.internal.expressions.ExpressionNodeForFunction;
import org.formulacompiler.compiler.internal.templates.ExpressionTemplatesForScaledBigDecimals;
import org.formulacompiler.runtime.internal.Environment;
@SuppressWarnings("unused")
abstract class InterpretedScaledBigDecimalType_Generated extends InterpretedScaledBigDecimalType_Base
{
private final ExpressionTemplatesForScaledBigDecimals template;
public InterpretedScaledBigDecimalType_Generated( NumericType _type, ComputationMode _mode, Environment _env ) {
super( _type, _mode, _env );
this.template = new ExpressionTemplatesForScaledBigDecimals( _type.scale(), _type.roundingMode(), _mode, _env );
}
@Override
public Object compute( Operator _operator, Object... _args ) throws InterpreterException
{
final ExpressionTemplatesForScaledBigDecimals t = this.template;
final int c = _args.length;
if (1 == c) {
switch (_operator) {
case PERCENT:
return adjustReturnedValue( t.op_PERCENT( to_BigDecimal( _args[ 0 ] ) ) );
case MINUS:
return t.op_MINUS( to_BigDecimal( _args[ 0 ] ) );
}
}
else if (2 == c) {
switch (_operator) {
case PLUS:
return t.op_PLUS( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) );
case MINUS:
return t.op_MINUS( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) );
case TIMES:
return adjustReturnedValue( t.op_TIMES( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
case DIV:
if (needsValueAdjustment()) {
return t.op_DIV__if_needsValueAdjustment( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) );
}
return t.op_DIV( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) );
case EXP:
return adjustReturnedValue( t.op_EXP( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
case INTERNAL_MIN:
return t.op_INTERNAL_MIN( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) );
case INTERNAL_MAX:
return t.op_INTERNAL_MAX( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) );
}
}
return super.compute( _operator, _args );
}
@Override
public Object compute( Function _function, Object... _args ) throws InterpreterException
{
final ExpressionTemplatesForScaledBigDecimals t = this.template;
final int c = _args.length;
switch (_function) {
case DEGREES:
if (1 == c ) {
return adjustReturnedValue( t.fun_DEGREES( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case RADIANS:
if (1 == c ) {
return adjustReturnedValue( t.fun_RADIANS( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case CEILING:
if (2 == c && ComputationMode.EXCEL == getComputationMode() ) {
return adjustReturnedValue( t.fun_CEILING__for_EXCEL( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
if (2 == c && ComputationMode.OPEN_OFFICE_CALC == getComputationMode() ) {
return adjustReturnedValue( t.fun_CEILING__for_OPEN_OFFICE_CALC( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
break;
case FLOOR:
if (2 == c && ComputationMode.EXCEL == getComputationMode() ) {
return adjustReturnedValue( t.fun_FLOOR__for_EXCEL( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
if (2 == c && ComputationMode.OPEN_OFFICE_CALC == getComputationMode() ) {
return adjustReturnedValue( t.fun_FLOOR__for_OPEN_OFFICE_CALC( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
break;
case POWER:
if (2 == c ) {
return adjustReturnedValue( t.fun_POWER( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
break;
case SQRT:
if (1 == c ) {
return adjustReturnedValue( t.fun_SQRT( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case FACT:
if (1 == c ) {
return adjustReturnedValue( t.fun_FACT( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case IRR:
if (2 == c ) {
return adjustReturnedValue( t.fun_IRR( to_array( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
break;
case DB:
if (5 == c ) {
return adjustReturnedValue( t.fun_DB( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ), to_BigDecimal( _args[ 3 ] ), to_BigDecimal( _args[ 4 ] ) ) );
}
if (4 == c ) {
return adjustReturnedValue( t.fun_DB( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ), to_BigDecimal( _args[ 3 ] ) ) );
}
break;
case DDB:
if (5 == c ) {
return adjustReturnedValue( t.fun_DDB( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ), to_BigDecimal( _args[ 3 ] ), to_BigDecimal( _args[ 4 ] ) ) );
}
if (4 == c ) {
return adjustReturnedValue( t.fun_DDB( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ), to_BigDecimal( _args[ 3 ] ) ) );
}
break;
case VDB:
if (7 == c ) {
return adjustReturnedValue( t.fun_VDB( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ), to_BigDecimal( _args[ 3 ] ), to_BigDecimal( _args[ 4 ] ), to_BigDecimal( _args[ 5 ] ), to_BigDecimal( _args[ 6 ] ) ) );
}
break;
case RATE:
if (6 == c ) {
return adjustReturnedValue( t.fun_RATE( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ), to_BigDecimal( _args[ 3 ] ), to_BigDecimal( _args[ 4 ] ), to_BigDecimal( _args[ 5 ] ) ) );
}
if (5 == c ) {
return adjustReturnedValue( t.fun_RATE( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ), to_BigDecimal( _args[ 3 ] ), to_BigDecimal( _args[ 4 ] ) ) );
}
if (4 == c ) {
return adjustReturnedValue( t.fun_RATE( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ), to_BigDecimal( _args[ 3 ] ) ) );
}
if (3 == c ) {
return adjustReturnedValue( t.fun_RATE( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ) ) );
}
break;
case TIME:
if (3 == c && ComputationMode.EXCEL == getComputationMode() ) {
return adjustReturnedValue( t.fun_TIME__for_EXCEL( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ) ) );
}
if (3 == c && ComputationMode.OPEN_OFFICE_CALC == getComputationMode() ) {
return adjustReturnedValue( t.fun_TIME__for_OPEN_OFFICE_CALC( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ) ) );
}
break;
case ABS:
if (1 == c ) {
return t.fun_ABS( to_BigDecimal( _args[ 0 ] ) );
}
break;
case ACOS:
if (1 == c ) {
return adjustReturnedValue( t.fun_ACOS( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case ACOSH:
if (1 == c ) {
return adjustReturnedValue( t.fun_ACOSH( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case ASIN:
if (1 == c ) {
return adjustReturnedValue( t.fun_ASIN( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case ASINH:
if (1 == c ) {
return adjustReturnedValue( t.fun_ASINH( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case ATAN:
if (1 == c ) {
return adjustReturnedValue( t.fun_ATAN( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case ATANH:
if (1 == c ) {
return adjustReturnedValue( t.fun_ATANH( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case ATAN2:
if (2 == c ) {
return adjustReturnedValue( t.fun_ATAN2( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
break;
case COS:
if (1 == c ) {
return adjustReturnedValue( t.fun_COS( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case COSH:
if (1 == c ) {
return adjustReturnedValue( t.fun_COSH( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case SIN:
if (1 == c ) {
return adjustReturnedValue( t.fun_SIN( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case SINH:
if (1 == c ) {
return adjustReturnedValue( t.fun_SINH( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case SIGN:
if (1 == c ) {
return adjustReturnedValue( t.fun_SIGN( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case TAN:
if (1 == c ) {
return adjustReturnedValue( t.fun_TAN( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case TANH:
if (1 == c ) {
return adjustReturnedValue( t.fun_TANH( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case PI:
if (0 == c ) {
return adjustReturnedValue( t.fun_PI() );
}
break;
case RAND:
if (0 == c ) {
return adjustReturnedValue( t.fun_RAND() );
}
break;
case ROUND:
if (2 == c ) {
return adjustReturnedValue( t.fun_ROUND( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
break;
case ROUNDDOWN:
if (2 == c ) {
return adjustReturnedValue( t.fun_ROUNDDOWN( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
break;
case ROUNDUP:
if (2 == c ) {
return adjustReturnedValue( t.fun_ROUNDUP( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
break;
case TRUNC:
if (2 == c ) {
return adjustReturnedValue( t.fun_TRUNC( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
if (1 == c ) {
return adjustReturnedValue( t.fun_TRUNC( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case EVEN:
if (1 == c ) {
return adjustReturnedValue( t.fun_EVEN( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case ODD:
if (1 == c ) {
return adjustReturnedValue( t.fun_ODD( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case INT:
if (1 == c ) {
return adjustReturnedValue( t.fun_INT( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case EXP:
if (1 == c ) {
return adjustReturnedValue( t.fun_EXP( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case LN:
if (1 == c ) {
return adjustReturnedValue( t.fun_LN( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case LOG:
if (1 == c ) {
return adjustReturnedValue( t.fun_LOG( to_BigDecimal( _args[ 0 ] ) ) );
}
if (2 == c ) {
return adjustReturnedValue( t.fun_LOG( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
break;
case LOG10:
if (1 == c ) {
return adjustReturnedValue( t.fun_LOG10( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case ERF:
if (1 == c ) {
return adjustReturnedValue( t.fun_ERF( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case ERFC:
if (1 == c ) {
return adjustReturnedValue( t.fun_ERFC( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case BETADIST:
if (3 == c ) {
return adjustReturnedValue( t.fun_BETADIST( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ) ) );
}
break;
case BETAINV:
if (3 == c ) {
return adjustReturnedValue( t.fun_BETAINV( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ) ) );
}
break;
case BINOMDIST:
if (4 == c ) {
return adjustReturnedValue( t.fun_BINOMDIST( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ), to_BigDecimal( _args[ 3 ] ) ) );
}
break;
case CHIDIST:
if (2 == c ) {
return adjustReturnedValue( t.fun_CHIDIST( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
break;
case CHIINV:
if (2 == c ) {
return adjustReturnedValue( t.fun_CHIINV( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
break;
case CRITBINOM:
if (3 == c ) {
return adjustReturnedValue( t.fun_CRITBINOM( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ) ) );
}
break;
case FINV:
if (3 == c ) {
return adjustReturnedValue( t.fun_FINV( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ) ) );
}
break;
case GAMMADIST:
if (4 == c ) {
return adjustReturnedValue( t.fun_GAMMADIST( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ), to_BigDecimal( _args[ 3 ] ) ) );
}
break;
case GAMMAINV:
if (3 == c ) {
return adjustReturnedValue( t.fun_GAMMAINV( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ) ) );
}
break;
case GAMMALN:
if (1 == c ) {
return adjustReturnedValue( t.fun_GAMMALN( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case POISSON:
if (3 == c ) {
return adjustReturnedValue( t.fun_POISSON( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ) ) );
}
break;
case TDIST:
if (3 == c ) {
return adjustReturnedValue( t.fun_TDIST( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ) ) );
}
if (4 == c ) {
return adjustReturnedValue( t.fun_TDIST( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ), to_BigDecimal( _args[ 3 ] ) ) );
}
break;
case TINV:
if (2 == c ) {
return adjustReturnedValue( t.fun_TINV( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
break;
case MOD:
if (2 == c ) {
return adjustReturnedValue( t.fun_MOD( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
break;
case WEIBULL:
if (4 == c ) {
return adjustReturnedValue( t.fun_WEIBULL( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ), to_BigDecimal( _args[ 3 ] ) ) );
}
break;
case MDETERM:
if (2 == c ) {
return adjustReturnedValue( t.fun_MDETERM( to_array( _args[ 0 ] ), to_int( _args[ 1 ] ) ) );
}
break;
case DATE:
if (3 == c ) {
return adjustReturnedValue( t.fun_DATE( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ) ) );
}
break;
case SECOND:
if (1 == c ) {
return adjustReturnedValue( t.fun_SECOND( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case MINUTE:
if (1 == c ) {
return adjustReturnedValue( t.fun_MINUTE( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case HOUR:
if (1 == c ) {
return adjustReturnedValue( t.fun_HOUR( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case HYPGEOMDIST:
if (4 == c ) {
return adjustReturnedValue( t.fun_HYPGEOMDIST( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ), to_BigDecimal( _args[ 3 ] ) ) );
}
break;
case WEEKDAY:
if (2 == c ) {
return adjustReturnedValue( t.fun_WEEKDAY( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ) ) );
}
if (1 == c ) {
return adjustReturnedValue( t.fun_WEEKDAY( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case DAY:
if (1 == c ) {
return adjustReturnedValue( t.fun_DAY( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case DAYS360:
if (3 == c ) {
return adjustReturnedValue( t.fun_DAYS360( to_BigDecimal( _args[ 0 ] ), to_BigDecimal( _args[ 1 ] ), to_BigDecimal( _args[ 2 ] ) ) );
}
break;
case MONTH:
if (1 == c ) {
return adjustReturnedValue( t.fun_MONTH( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case YEAR:
if (1 == c ) {
return adjustReturnedValue( t.fun_YEAR( to_BigDecimal( _args[ 0 ] ) ) );
}
break;
case NOW:
if (0 == c ) {
return adjustReturnedValue( t.fun_NOW() );
}
break;
case TODAY:
if (0 == c ) {
return adjustReturnedValue( t.fun_TODAY() );
}
break;
case VALUE:
if (1 == c ) {
return adjustReturnedValue( t.fun_VALUE( to_String( _args[ 0 ] ) ) );
}
break;
case DATEVALUE:
if (1 == c ) {
return adjustReturnedValue( t.fun_DATEVALUE( to_String( _args[ 0 ] ) ) );
}
break;
case TIMEVALUE:
if (1 == c ) {
return adjustReturnedValue( t.fun_TIMEVALUE( to_String( _args[ 0 ] ) ) );
}
break;
}
return super.compute( _function, _args );
}
}