}
break;
case DIV:
if (left instanceof DoubleValue)
{
return new DoubleValue(new Double(((DoubleValue) left).value
/ ((DoubleValue) right).value).intValue());
}
case DIVIDE:
{
if (left instanceof DoubleValue)
{
return new DoubleValue(((DoubleValue) left).value
/ ((DoubleValue) right).value);
}
}
break;
case EQUAL:
case EQUIV:
{
if (left instanceof DoubleValue)
{
return new BooleanValue(((DoubleValue) left).value == ((DoubleValue) right).value);
} else if (left instanceof BooleanValue)
{
return new BooleanValue(((BooleanValue) left).value == ((BooleanValue) right).value);
}
}
case IMPLIES:
{
if (left instanceof BooleanValue)
{
if (((BooleanValue) left).value)
{
return right;
} else
{
return new BooleanValue(true);
}
}
}
break;
case LESSEQUAL:
{
if (left instanceof DoubleValue)
{
return new BooleanValue(((DoubleValue) left).value <= ((DoubleValue) right).value);
}
}
break;
case LESSTHAN:
{
if (left instanceof DoubleValue)
{
return new BooleanValue(((DoubleValue) left).value < ((DoubleValue) right).value);
}
}
break;
case MINUS:
{
if (left instanceof DoubleValue)
{
return new DoubleValue(((DoubleValue) left).value
- ((DoubleValue) right).value);
}
}
break;
case MOD:
{
if (left instanceof DoubleValue)
{
double lv = ((DoubleValue) left).value;
double rv = ((DoubleValue) right).value;
return new DoubleValue(lv - rv * (long) Math.floor(lv / rv));
}
}
break;
case GREATEREQUAL:
{
if (left instanceof DoubleValue)
{
return new BooleanValue(((DoubleValue) left).value >= ((DoubleValue) right).value);
}
}
break;
case GREATERTHAN:
{
if (left instanceof DoubleValue)
{
return new BooleanValue(((DoubleValue) left).value > ((DoubleValue) right).value);
}
}
break;
case MULTIPLY:
{
if (left instanceof DoubleValue)
{
return new DoubleValue(((DoubleValue) left).value
* ((DoubleValue) right).value);
}
}
break;
case OR:
{
if (left instanceof BooleanValue)
{
return new BooleanValue(((BooleanValue) left).value
|| ((BooleanValue) right).value);
}
}
break;
case PLUS:
{
if (left instanceof DoubleValue)
{
return new DoubleValue(((DoubleValue) left).value
+ ((DoubleValue) right).value);
}
}
break;