MPFR Subnormalize ================== >>> import gmpy2 >>> gmpy2.set_context(gmpy2.ieee(64)) >>> zeroes = '0.' + '0' * 323 >>> gmpy2.mpfr(zeroes + '2470328229206232720') mpfr('0.0') >>> gmpy2.mpfr(zeroes + '2470328229206232721') mpfr('4.9406564584124654e-324') >>> gmpy2.mpfr(zeroes + '247032822920623272088') mpfr('0.0') >>> gmpy2.mpfr(zeroes + '247032822920623272089') mpfr('4.9406564584124654e-324') >>> gmpy2.set_context(gmpy2.ieee(32)) >>> def fmt(v): ... return '{:.23b}'.format(v) ... >>> a = gmpy2.mpfr('0x1p-126') >>> fmt(a) '1.00000000000000000000000p-126' >>> fmt(gmpy2.next_below(a)) '1.11111111111111111111110p-127' >>> fmt(gmpy2.next_above(a)) '1.00000000000000000000001p-126' >>> fmt(gmpy2.next_below(0)) '-1.00000000000000000000000p-149' >>> fmt(gmpy2.next_above(0)) '1.00000000000000000000000p-149' >>> fmt(gmpy2.next_toward(a, -10)) '1.11111111111111111111110p-127' >>> fmt(gmpy2.next_toward(a, 10)) '1.00000000000000000000001p-126'