public static long num2ulong(Ruby runtime, IRubyObject value) { if (value instanceof RubyFloat) { RubyBignum bignum = RubyBignum.newBignum(runtime, ((RubyFloat) value).getDoubleValue()); return RubyBignum.big2ulong(bignum); } else if (value instanceof RubyBignum) { return RubyBignum.big2ulong((RubyBignum) value); } else { return RubyNumeric.num2long(value); } }
/** fix_to_f * */ @Override public IRubyObject to_f(ThreadContext context) { return RubyFloat.newFloat(context.runtime, (double) value); }
public static RubyFloat newFloat(Ruby runtime, double value) { return new RubyFloat(runtime, value); }
/** flo_minus * */ @JRubyMethod(name = "-", required = 1) public IRubyObject op_minus(ThreadContext context, IRubyObject other) { switch (other.getMetaClass().index) { case ClassIndex.FIXNUM: case ClassIndex.BIGNUM: case ClassIndex.FLOAT: return RubyFloat.newFloat(getRuntime(), value - ((RubyNumeric) other).getDoubleValue()); default: return coerceBin(context, "-", other); } }
/** flo_mul * */ @JRubyMethod(name = "*", required = 1) public IRubyObject op_mul(ThreadContext context, IRubyObject other) { switch (other.getMetaClass().getClassIndex()) { case INTEGER: case FLOAT: return RubyFloat.newFloat(context.runtime, value * ((RubyNumeric) other).getDoubleValue()); default: return coerceBin(context, sites(context).op_times, other); } }
result = RubyRational.newRational(runtime, sum, 1); } else if (is_float) { result = RubyFloat.newFloat(runtime, (double) sum); } else { result = RubyFixnum.newFixnum(runtime, sum); result = RubyRational.newRationalConvert(context, RubyBignum.newBignum(runtime, sum), RubyFixnum.one(runtime)); } else if (is_float) { result = RubyFloat.newFloat(runtime, sum.doubleValue()); } else { result = RubyBignum.newBignum(runtime, sum); result = RubyFloat.newFloat(runtime, ((RubyRational) result).getDoubleValue(context)); is_float = true; break rational_loop; double f = ((RubyFloat) result).getDoubleValue(); double c = 0.0; double x, t; x = ((RubyRational) value).getDoubleValue(context); } else if (value instanceof RubyFloat) { x = ((RubyFloat) value).getDoubleValue(); } else { break float_loop; result = new RubyFloat(runtime, f);
public IRubyObject call(ThreadContext context, IRubyObject caller, IRubyObject self, double flote) { if (self instanceof RubyFloat && !context.runtime.isFloatReopened()) { return ((RubyFloat) self).op_ge(context, flote); } return super.call(context, caller, self, flote); }
case ClassIndex.BIGNUM: if (Double.isInfinite(value)) { return value > 0.0 ? RubyFixnum.one(getRuntime()) : RubyFixnum.minus_one(getRuntime()); return dbl_cmp(getRuntime(), value, b); default: if (Double.isInfinite(value) && other.respondsTo("infinite?")) { IRubyObject infinite = other.callMethod(context, "infinite?"); if (infinite.isNil()) { return value > 0.0 ? RubyFixnum.one(getRuntime()) : RubyFixnum.minus_one(getRuntime()); } else { int sign = RubyFixnum.fix2int(infinite); return RubyFixnum.zero(getRuntime()); } else { return RubyFixnum.minus_one(getRuntime()); return RubyFixnum.zero(getRuntime()); } else { return RubyFixnum.one(getRuntime()); return coerceCmp(context, "<=>", other);
public IRubyObject call(ThreadContext context, IRubyObject caller, IRubyObject self, double flote) { if (self instanceof RubyFloat && !context.runtime.isFloatReopened()) { return ((RubyFloat) self).op_le(context, flote); } return super.call(context, caller, self, flote); }
@Override public final int compareTo(IRubyObject other) { switch (other.getMetaClass().getClassIndex()) { case INTEGER: case FLOAT: return Double.compare(value, ((RubyNumeric) other).getDoubleValue()); default: ThreadContext context = getRuntime().getCurrentContext(); return (int) coerceCmp(context, sites(context).op_cmp, other).convertToInteger().getLongValue(); } }
if (lhs instanceof RubyFloat) { if (rhs instanceof RubyFloat) { f = ((RubyFloat) lhs).getValue(); x = ((RubyFloat) rhs).getValue(); floats = true; } else if (rhs instanceof RubyFixnum) { f = ((RubyFloat) lhs).getValue(); x = ((RubyFixnum) rhs).getDoubleValue(); floats = true; } else if (rhs instanceof RubyBignum) { f = ((RubyFloat) lhs).getValue(); x = ((RubyBignum) rhs).getDoubleValue(); floats = true; } else if (rhs instanceof RubyRational) { f = ((RubyFloat) lhs).getValue(); x = ((RubyRational) rhs).getDoubleValue(ctx); floats = true; c[0] = 0.0; f = ((RubyFixnum) lhs).getDoubleValue(); x = ((RubyFloat) rhs).getValue(); floats = true; } else if (lhs instanceof RubyBignum) { c[0] = 0.0; f = ((RubyBignum) lhs).getDoubleValue(); x = ((RubyFloat) rhs).getValue(); floats = true; } else if (lhs instanceof RubyRational) { c[0] = 0.0;
@Override public final int compareTo(IRubyObject other) { switch (other.getMetaClass().index) { case ClassIndex.FIXNUM: case ClassIndex.BIGNUM: case ClassIndex.FLOAT: return Double.compare(value, ((RubyNumeric) other).getDoubleValue()); default: return (int)coerceCmp(getRuntime().getCurrentContext(), "<=>", other).convertToInteger().getLongValue(); } }
public static RubyFloat f_abs(ThreadContext context, RubyFloat x) { return (RubyFloat) x.abs(context); }
/** * MRI: num_ceil */ @JRubyMethod(name = "ceil") public IRubyObject ceil(ThreadContext context) { return convertToFloat().ceil(context); }
/** flo_div * */ @JRubyMethod(name = "/", required = 1) public IRubyObject op_fdiv(ThreadContext context, IRubyObject other) { // don't override Numeric#div ! switch (other.getMetaClass().index) { case ClassIndex.FIXNUM: case ClassIndex.BIGNUM: case ClassIndex.FLOAT: return RubyFloat.newFloat(getRuntime(), value / ((RubyNumeric) other).getDoubleValue()); default: return coerceBin(context, "/", other); } }
/** flo_minus * */ @JRubyMethod(name = "-", required = 1) public IRubyObject op_minus(ThreadContext context, IRubyObject other) { switch (other.getMetaClass().getClassIndex()) { case INTEGER: case FLOAT: return RubyFloat.newFloat(context.runtime, value - ((RubyNumeric) other).getDoubleValue()); default: return coerceBin(context, sites(context).op_minus, other); } }
result = RubyRational.newRational(runtime, sum, 1); } else if (is_float) { result = RubyFloat.newFloat(runtime, (double) sum); } else { result = RubyFixnum.newFixnum(runtime, sum); result = RubyRational.newRationalConvert(context, RubyBignum.newBignum(runtime, sum), RubyFixnum.one(runtime)); } else if (is_float) { result = RubyFloat.newFloat(runtime, sum.doubleValue()); } else { result = RubyBignum.newBignum(runtime, sum); result = RubyFloat.newFloat(runtime, ((RubyRational) result).getDoubleValue(context)); is_float = true; break rational_loop; double f = ((RubyFloat) result).getDoubleValue(); double c = 0.0; double x, t; x = ((RubyRational) value).getDoubleValue(context); } else if (value instanceof RubyFloat) { x = ((RubyFloat) value).getDoubleValue(); } else { break float_loop; result = new RubyFloat(runtime, f);