return new RubyArray(getContext().getCoreLibrary().getArrayClass(), new Object[]{sign * mantissa, exponent}, 2);
}
@Fallback
public RubyArray frexp(VirtualFrame frame, Object a) {
final RubyBasicObject boxed = box.box(a);
if (boxed.isNumeric()) {
try {
return frexp(floatNode.callFloat(frame, boxed, "to_f", null));
} catch (UseMethodMissingException e) {
throw new RaiseException(getContext().getCoreLibrary().typeErrorCantConvertInto(
boxed.getLogicalClass().getName(),
getContext().getCoreLibrary().getFloatClass().getName(),
this));
}
} else {
CompilerDirectives.transferToInterpreter();
throw new RaiseException(getContext().getCoreLibrary().typeErrorCantConvertInto(
boxed.getLogicalClass().getName(),
getContext().getCoreLibrary().getFloatClass().getName(),
this));
}
}