}
@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 );
}