MzScheme supports integers of an arbitrary magnitude; when an integer cannot be represented as a fixnum (i.e., 30 or 62 bits plus a sign bit), then it is reprsented by the MzScheme type scheme_bignum_type. There is no overlap in integer values represented by fixnums and bignums.
Rationals are implemented by the type scheme_rational_type, composed of a numerator and a denominator. The numerator and denominator fixnums or bignums (possibly mixed).
Complex numbers are implemented by the types scheme_complex_type and scheme_complex_izi_type, composed of a real and imaginary part. The real and imaginary parts will either be both flonums, both exact numbers (fixnums, bignums, and rationals can be mixed in any way), or one part will be eacxt 0 and the other part will be a flonum. If the inexact part is inexact 0, the type is scheme_complex_izi_type, otherwise the type is scheme_complex_type; this distinction make it easy to test whether a complex number should be treated as a real number.