+/* does allocate memory */
+fixnum factor_vm::bignum_to_fixnum_strict(bignum* bignum_in) {
+ fixnum fix = bignum_to_fixnum(bignum_in);
+ bignum* bignum_out = fixnum_to_bignum(fix);
+ GC_BIGNUM(bignum_out);
+ if (bignum_compare(bignum_in, bignum_out) != bignum_comparison_equal) {
+ general_error(ERROR_OUT_OF_FIXNUM_RANGE, tag<bignum>(bignum_in), false_object);
+ }
+ return fix;
+}
+