public static final Number multiply(final Object obj0, final Object obj1) {
    if (obj0 == null && obj1 == null) {
      return Long.valueOf(0);
    }

    final ELArithmetic delegate;
    if (BIGDECIMAL.matches(obj0, obj1)) delegate = BIGDECIMAL;
    else if (DOUBLE.matches(obj0, obj1)) {
      if (BIGINTEGER.matches(obj0, obj1)) delegate = BIGDECIMAL;
      else delegate = DOUBLE;
    } else if (BIGINTEGER.matches(obj0, obj1)) delegate = BIGINTEGER;
    else delegate = LONG;

    Number num0 = delegate.coerce(obj0);
    Number num1 = delegate.coerce(obj1);

    return delegate.multiply(num0, num1);
  }
  public static final Number divide(final Object obj0, final Object obj1) {
    if (obj0 == null && obj1 == null) {
      return ZERO;
    }

    final ELArithmetic delegate;
    if (BIGDECIMAL.matches(obj0, obj1)) delegate = BIGDECIMAL;
    else if (BIGINTEGER.matches(obj0, obj1)) delegate = BIGDECIMAL;
    else delegate = DOUBLE;

    Number num0 = delegate.coerce(obj0);
    Number num1 = delegate.coerce(obj1);

    return delegate.divide(num0, num1);
  }
Example #3
0
  public static final Number subtract(final Object obj0, final Object obj1) {
    if (obj0 == null && obj1 == null) {
      return new Long(0);
    }

    final ELArithmetic delegate;
    if (BIGDECIMAL.matches(obj0, obj1)) delegate = BIGDECIMAL;
    else if (DOUBLE.matches(obj0, obj1)) delegate = DOUBLE;
    else if (BIGINTEGER.matches(obj0, obj1)) delegate = BIGINTEGER;
    else delegate = LONG;

    Number num0 = delegate.coerce(obj0);
    Number num1 = delegate.coerce(obj1);

    return delegate.subtract(num0, num1);
  }