if (args[0] instanceof RubyBigDecimal) {
return new RubyBigDecimal(runtime, (RubyClass)recv, ((RubyBigDecimal)args[0]));
} else if (args[0] instanceof RubyFloat || args[0] instanceof RubyRational) {
if (args.length != 2) {
// float input must be accompanied by precision
throw runtime.newArgumentError("can't omit precision for a rational");
}
if (args[0] instanceof RubyFloat) {
// precision can be no more than float digits
if (context.getPrecision() > RubyFloat.DIG + 1) {