[llvm-branch-commits] [libc] d8ceb0f - Revert "[libc][NFC] Use user defined literals to build 128 and 256 bit consta…"

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Feb 14 09:52:44 PST 2024


Author: Guillaume Chatelet
Date: 2024-02-14T18:52:39+01:00
New Revision: d8ceb0ff406fad95b160a5894e49e4aa5a4c4076

URL: https://github.com/llvm/llvm-project/commit/d8ceb0ff406fad95b160a5894e49e4aa5a4c4076
DIFF: https://github.com/llvm/llvm-project/commit/d8ceb0ff406fad95b160a5894e49e4aa5a4c4076.diff

LOG: Revert "[libc][NFC] Use user defined literals to build 128 and 256 bit consta…"

This reverts commit 411554a3535e55a1436ccda80064d7a91814dc27.

Added: 
    

Modified: 
    libc/src/__support/integer_literals.h
    libc/src/math/generic/CMakeLists.txt
    libc/src/math/generic/exp.cpp
    libc/src/math/generic/exp10.cpp
    libc/src/math/generic/exp2.cpp
    libc/src/math/generic/expm1.cpp
    libc/src/math/generic/log.cpp
    libc/src/math/generic/log10.cpp
    libc/src/math/generic/log1p.cpp
    libc/src/math/generic/log2.cpp
    libc/test/src/__support/CMakeLists.txt
    libc/test/src/__support/FPUtil/fpbits_test.cpp
    libc/test/src/__support/integer_to_string_test.cpp
    libc/test/src/__support/str_to_long_double_test.cpp
    utils/bazel/llvm-project-overlay/libc/BUILD.bazel
    utils/bazel/llvm-project-overlay/libc/test/src/__support/BUILD.bazel

Removed: 
    


################################################################################
diff  --git a/libc/src/__support/integer_literals.h b/libc/src/__support/integer_literals.h
index ae09c5462a435b..c8e965c1a03a05 100644
--- a/libc/src/__support/integer_literals.h
+++ b/libc/src/__support/integer_literals.h
@@ -22,19 +22,19 @@
 namespace LIBC_NAMESPACE {
 
 LIBC_INLINE constexpr uint8_t operator""_u8(unsigned long long value) {
-  return static_cast<uint8_t>(value);
+  return value;
 }
 
 LIBC_INLINE constexpr uint16_t operator""_u16(unsigned long long value) {
-  return static_cast<uint16_t>(value);
+  return value;
 }
 
 LIBC_INLINE constexpr uint32_t operator""_u32(unsigned long long value) {
-  return static_cast<uint32_t>(value);
+  return value;
 }
 
 LIBC_INLINE constexpr uint64_t operator""_u64(unsigned long long value) {
-  return static_cast<uint64_t>(value);
+  return value;
 }
 
 namespace internal {
@@ -76,7 +76,7 @@ template <typename T, int base> struct DigitBuffer {
   // Returns the digit for a particular character.
   // Returns 255 if the character is invalid.
   LIBC_INLINE static constexpr uint8_t get_digit_value(const char c) {
-    const auto to_lower = [](char c) -> uint8_t { return c | 32; };
+    const auto to_lower = [](char c) { return c | 32; };
     const auto is_digit = [](char c) { return c >= '0' && c <= '9'; };
     const auto is_alpha = [](char c) {
       return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z');

diff  --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index ab7f5a91ab7bac..fdf383f070697e 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -622,8 +622,6 @@ add_entrypoint_object(
   DEPENDS
     .common_constants
     .explogxf
-    libc.include.errno
-    libc.include.math
     libc.src.__support.CPP.bit
     libc.src.__support.CPP.optional
     libc.src.__support.FPUtil.dyadic_float
@@ -634,9 +632,10 @@ add_entrypoint_object(
     libc.src.__support.FPUtil.polyeval
     libc.src.__support.FPUtil.rounding_mode
     libc.src.__support.FPUtil.triple_double
-    libc.src.__support.integer_literals
     libc.src.__support.macros.optimization
+    libc.include.errno
     libc.src.errno.errno
+    libc.include.math
   COMPILE_OPTIONS
     -O3
 )
@@ -673,8 +672,6 @@ add_entrypoint_object(
   DEPENDS
     .common_constants
     .explogxf
-    libc.include.errno
-    libc.include.math
     libc.src.__support.CPP.bit
     libc.src.__support.CPP.optional
     libc.src.__support.FPUtil.dyadic_float
@@ -685,9 +682,10 @@ add_entrypoint_object(
     libc.src.__support.FPUtil.polyeval
     libc.src.__support.FPUtil.rounding_mode
     libc.src.__support.FPUtil.triple_double
-    libc.src.__support.integer_literals
     libc.src.__support.macros.optimization
+    libc.include.errno
     libc.src.errno.errno
+    libc.include.math
   COMPILE_OPTIONS
     -O3
 )
@@ -733,8 +731,6 @@ add_entrypoint_object(
   DEPENDS
     .common_constants
     .explogxf
-    libc.include.errno
-    libc.include.math
     libc.src.__support.CPP.bit
     libc.src.__support.CPP.optional
     libc.src.__support.FPUtil.dyadic_float
@@ -745,9 +741,10 @@ add_entrypoint_object(
     libc.src.__support.FPUtil.polyeval
     libc.src.__support.FPUtil.rounding_mode
     libc.src.__support.FPUtil.triple_double
-    libc.src.__support.integer_literals
     libc.src.__support.macros.optimization
+    libc.include.errno
     libc.src.errno.errno
+    libc.include.math
   COMPILE_OPTIONS
     -O3
 )
@@ -794,8 +791,6 @@ add_entrypoint_object(
   DEPENDS
     .common_constants
     .explogxf
-    libc.include.errno
-    libc.include.math
     libc.src.__support.CPP.bit
     libc.src.__support.CPP.optional
     libc.src.__support.FPUtil.dyadic_float
@@ -806,9 +801,10 @@ add_entrypoint_object(
     libc.src.__support.FPUtil.polyeval
     libc.src.__support.FPUtil.rounding_mode
     libc.src.__support.FPUtil.triple_double
-    libc.src.__support.integer_literals
     libc.src.__support.macros.optimization
+    libc.include.errno
     libc.src.errno.errno
+    libc.include.math
   COMPILE_OPTIONS
     -O3
 )
@@ -1065,13 +1061,12 @@ add_entrypoint_object(
   DEPENDS
     .common_constants
     .log_range_reduction
-    libc.src.__support.FPUtil.double_double
-    libc.src.__support.FPUtil.dyadic_float
     libc.src.__support.FPUtil.fenv_impl
     libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.multiply_add
     libc.src.__support.FPUtil.polyeval
-    libc.src.__support.integer_literals
+    libc.src.__support.FPUtil.double_double
+    libc.src.__support.FPUtil.dyadic_float
     libc.src.__support.macros.optimization
   COMPILE_OPTIONS
     -O3
@@ -1102,13 +1097,12 @@ add_entrypoint_object(
     ../log1p.h
   DEPENDS
     .common_constants
-    libc.src.__support.FPUtil.double_double
-    libc.src.__support.FPUtil.dyadic_float
     libc.src.__support.FPUtil.fenv_impl
     libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.multiply_add
     libc.src.__support.FPUtil.polyeval
-    libc.src.__support.integer_literals
+    libc.src.__support.FPUtil.double_double
+    libc.src.__support.FPUtil.dyadic_float
     libc.src.__support.macros.optimization
   COMPILE_OPTIONS
     -O3
@@ -1141,13 +1135,12 @@ add_entrypoint_object(
   DEPENDS
     .common_constants
     .log_range_reduction
-    libc.src.__support.FPUtil.double_double
-    libc.src.__support.FPUtil.dyadic_float
     libc.src.__support.FPUtil.fenv_impl
     libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.multiply_add
     libc.src.__support.FPUtil.polyeval
-    libc.src.__support.integer_literals
+    libc.src.__support.FPUtil.double_double
+    libc.src.__support.FPUtil.dyadic_float
     libc.src.__support.macros.optimization
   COMPILE_OPTIONS
     -O3
@@ -1180,13 +1173,12 @@ add_entrypoint_object(
   DEPENDS
     .common_constants
     .log_range_reduction
-    libc.src.__support.FPUtil.double_double
-    libc.src.__support.FPUtil.dyadic_float
     libc.src.__support.FPUtil.fenv_impl
     libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.multiply_add
     libc.src.__support.FPUtil.polyeval
-    libc.src.__support.integer_literals
+    libc.src.__support.FPUtil.double_double
+    libc.src.__support.FPUtil.dyadic_float
     libc.src.__support.macros.optimization
   COMPILE_OPTIONS
     -O3

diff  --git a/libc/src/math/generic/exp.cpp b/libc/src/math/generic/exp.cpp
index 42a4491131a04e..f23170f8ed4259 100644
--- a/libc/src/math/generic/exp.cpp
+++ b/libc/src/math/generic/exp.cpp
@@ -21,7 +21,6 @@
 #include "src/__support/FPUtil/rounding_mode.h"
 #include "src/__support/FPUtil/triple_double.h"
 #include "src/__support/common.h"
-#include "src/__support/integer_literals.h"
 #include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
 
 #include <errno.h>
@@ -32,7 +31,6 @@ using fputil::DoubleDouble;
 using fputil::TripleDouble;
 using Float128 = typename fputil::DyadicFloat<128>;
 using Sign = fputil::Sign;
-using LIBC_NAMESPACE::operator""_u128;
 
 // log2(e)
 constexpr double LOG2_E = 0x1.71547652b82fep+0;
@@ -99,15 +97,21 @@ DoubleDouble poly_approx_dd(const DoubleDouble &dx) {
 // For |dx| < 2^-13 + 2^-30:
 //   | output - exp(dx) | < 2^-126.
 Float128 poly_approx_f128(const Float128 &dx) {
+  using MType = typename Float128::MantissaType;
+
   constexpr Float128 COEFFS_128[]{
-      {Sign::POS, -127, 0x80000000'00000000'00000000'00000000_u128}, // 1.0
-      {Sign::POS, -127, 0x80000000'00000000'00000000'00000000_u128}, // 1.0
-      {Sign::POS, -128, 0x80000000'00000000'00000000'00000000_u128}, // 0.5
-      {Sign::POS, -130, 0xaaaaaaaa'aaaaaaaa'aaaaaaaa'aaaaaaab_u128}, // 1/6
-      {Sign::POS, -132, 0xaaaaaaaa'aaaaaaaa'aaaaaaaa'aaaaaaab_u128}, // 1/24
-      {Sign::POS, -134, 0x88888888'88888888'88888888'88888889_u128}, // 1/120
-      {Sign::POS, -137, 0xb60b60b6'0b60b60b'60b60b60'b60b60b6_u128}, // 1/720
-      {Sign::POS, -140, 0xd00d00d0'0d00d00d'00d00d00'd00d00d0_u128}, // 1/5040
+      {Sign::POS, -127, MType({0, 0x8000000000000000})},                  // 1.0
+      {Sign::POS, -127, MType({0, 0x8000000000000000})},                  // 1.0
+      {Sign::POS, -128, MType({0, 0x8000000000000000})},                  // 0.5
+      {Sign::POS, -130, MType({0xaaaaaaaaaaaaaaab, 0xaaaaaaaaaaaaaaaa})}, // 1/6
+      {Sign::POS, -132,
+       MType({0xaaaaaaaaaaaaaaab, 0xaaaaaaaaaaaaaaaa})}, // 1/24
+      {Sign::POS, -134,
+       MType({0x8888888888888889, 0x8888888888888888})}, // 1/120
+      {Sign::POS, -137,
+       MType({0x60b60b60b60b60b6, 0xb60b60b60b60b60b})}, // 1/720
+      {Sign::POS, -140,
+       MType({0x00d00d00d00d00d0, 0xd00d00d00d00d00d})}, // 1/5040
   };
 
   Float128 p = fputil::polyeval(dx, COEFFS_128[0], COEFFS_128[1], COEFFS_128[2],

diff  --git a/libc/src/math/generic/exp10.cpp b/libc/src/math/generic/exp10.cpp
index 72ece669765688..6b40f5561845d8 100644
--- a/libc/src/math/generic/exp10.cpp
+++ b/libc/src/math/generic/exp10.cpp
@@ -21,7 +21,6 @@
 #include "src/__support/FPUtil/rounding_mode.h"
 #include "src/__support/FPUtil/triple_double.h"
 #include "src/__support/common.h"
-#include "src/__support/integer_literals.h"
 #include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
 
 #include <errno.h>
@@ -32,7 +31,6 @@ using fputil::DoubleDouble;
 using fputil::TripleDouble;
 using Float128 = typename fputil::DyadicFloat<128>;
 using Sign = fputil::Sign;
-using LIBC_NAMESPACE::operator""_u128;
 
 // log2(10)
 constexpr double LOG2_10 = 0x1.a934f0979a371p+1;
@@ -101,15 +99,17 @@ DoubleDouble poly_approx_dd(const DoubleDouble &dx) {
 // For |dx| < 2^-14:
 //   | output - 10^dx | < 1.5 * 2^-124.
 Float128 poly_approx_f128(const Float128 &dx) {
+  using MType = typename Float128::MantissaType;
+
   constexpr Float128 COEFFS_128[]{
-      {Sign::POS, -127, 0x80000000'00000000'00000000'00000000_u128}, // 1.0
-      {Sign::POS, -126, 0x935d8ddd'aaa8ac16'ea56d62b'82d30a2d_u128},
-      {Sign::POS, -126, 0xa9a92639'e753443a'80a99ce7'5f4d5bdb_u128},
-      {Sign::POS, -126, 0x82382c8e'f1652304'6a4f9d7d'bf6c9635_u128},
-      {Sign::POS, -124, 0x12bd7609'fd98c44c'34578701'9216c7af_u128},
-      {Sign::POS, -127, 0x450a7ff4'7535d889'cc41ed7e'0d27aee5_u128},
-      {Sign::POS, -130, 0xd3f6b844'702d636b'8326bb91'a6e7601d_u128},
-      {Sign::POS, -130, 0x45b937f0'd05bb1cd'fa7b46df'314112a9_u128},
+      {Sign::POS, -127, MType({0, 0x8000000000000000})}, // 1.0
+      {Sign::POS, -126, MType({0xea56d62b82d30a2d, 0x935d8dddaaa8ac16})},
+      {Sign::POS, -126, MType({0x80a99ce75f4d5bdb, 0xa9a92639e753443a})},
+      {Sign::POS, -126, MType({0x6a4f9d7dbf6c9635, 0x82382c8ef1652304})},
+      {Sign::POS, -124, MType({0x345787019216c7af, 0x12bd7609fd98c44c})},
+      {Sign::POS, -127, MType({0xcc41ed7e0d27aee5, 0x450a7ff47535d889})},
+      {Sign::POS, -130, MType({0x8326bb91a6e7601d, 0xd3f6b844702d636b})},
+      {Sign::POS, -130, MType({0xfa7b46df314112a9, 0x45b937f0d05bb1cd})},
   };
 
   Float128 p = fputil::polyeval(dx, COEFFS_128[0], COEFFS_128[1], COEFFS_128[2],

diff  --git a/libc/src/math/generic/exp2.cpp b/libc/src/math/generic/exp2.cpp
index 83f545eb116bd3..01e66d1ae00f70 100644
--- a/libc/src/math/generic/exp2.cpp
+++ b/libc/src/math/generic/exp2.cpp
@@ -21,7 +21,6 @@
 #include "src/__support/FPUtil/rounding_mode.h"
 #include "src/__support/FPUtil/triple_double.h"
 #include "src/__support/common.h"
-#include "src/__support/integer_literals.h"
 #include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
 
 #include <errno.h>
@@ -32,7 +31,6 @@ using fputil::DoubleDouble;
 using fputil::TripleDouble;
 using Float128 = typename fputil::DyadicFloat<128>;
 using Sign = fputil::Sign;
-using LIBC_NAMESPACE::operator""_u128;
 
 // Error bounds:
 // Errors when using double precision.
@@ -90,15 +88,17 @@ DoubleDouble poly_approx_dd(const DoubleDouble &dx) {
 // For |dx| < 2^-13 + 2^-30:
 //   | output - exp(dx) | < 2^-126.
 Float128 poly_approx_f128(const Float128 &dx) {
+  using MType = typename Float128::MantissaType;
+
   constexpr Float128 COEFFS_128[]{
-      {Sign::POS, -127, 0x80000000'00000000'00000000'00000000_u128}, // 1.0
-      {Sign::POS, -128, 0xb17217f7'd1cf79ab'c9e3b398'03f2f6af_u128},
-      {Sign::POS, -128, 0x3d7f7bff'058b1d50'de2d60dd'9c9a1d9f_u128},
-      {Sign::POS, -132, 0xe35846b8'2505fc59'9d3b15d9'e7fb6897_u128},
-      {Sign::POS, -134, 0x9d955b7d'd273b94e'184462f6'bcd2b9e7_u128},
-      {Sign::POS, -137, 0xaec3ff3c'53398883'39ea1bb9'64c51a89_u128},
-      {Sign::POS, -138, 0x2861225f'345c396a'842c5341'8fa8ae61_u128},
-      {Sign::POS, -144, 0xffe5fe2d'109a319d'7abeb5ab'd5ad2079_u128},
+      {Sign::POS, -127, MType({0, 0x8000000000000000})}, // 1.0
+      {Sign::POS, -128, MType({0xc9e3b39803f2f6af, 0xb17217f7d1cf79ab})},
+      {Sign::POS, -128, MType({0xde2d60dd9c9a1d9f, 0x3d7f7bff058b1d50})},
+      {Sign::POS, -132, MType({0x9d3b15d9e7fb6897, 0xe35846b82505fc59})},
+      {Sign::POS, -134, MType({0x184462f6bcd2b9e7, 0x9d955b7dd273b94e})},
+      {Sign::POS, -137, MType({0x39ea1bb964c51a89, 0xaec3ff3c53398883})},
+      {Sign::POS, -138, MType({0x842c53418fa8ae61, 0x2861225f345c396a})},
+      {Sign::POS, -144, MType({0x7abeb5abd5ad2079, 0xffe5fe2d109a319d})},
   };
 
   Float128 p = fputil::polyeval(dx, COEFFS_128[0], COEFFS_128[1], COEFFS_128[2],

diff  --git a/libc/src/math/generic/expm1.cpp b/libc/src/math/generic/expm1.cpp
index 9f14a8c2068ec1..c1fb80309d7b46 100644
--- a/libc/src/math/generic/expm1.cpp
+++ b/libc/src/math/generic/expm1.cpp
@@ -22,7 +22,6 @@
 #include "src/__support/FPUtil/rounding_mode.h"
 #include "src/__support/FPUtil/triple_double.h"
 #include "src/__support/common.h"
-#include "src/__support/integer_literals.h"
 #include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
 
 #include <errno.h>
@@ -40,7 +39,6 @@ using fputil::DoubleDouble;
 using fputil::TripleDouble;
 using Float128 = typename fputil::DyadicFloat<128>;
 using Sign = fputil::Sign;
-using LIBC_NAMESPACE::operator""_u128;
 
 // log2(e)
 constexpr double LOG2_E = 0x1.71547652b82fep+0;
@@ -109,14 +107,20 @@ DoubleDouble poly_approx_dd(const DoubleDouble &dx) {
 // For |dx| < 2^-13 + 2^-30:
 //   | output - exp(dx) | < 2^-126.
 Float128 poly_approx_f128(const Float128 &dx) {
+  using MType = typename Float128::MantissaType;
+
   constexpr Float128 COEFFS_128[]{
-      {Sign::POS, -127, 0x80000000'00000000'00000000'00000000_u128}, // 1.0
-      {Sign::POS, -128, 0x80000000'00000000'00000000'00000000_u128}, // 0.5
-      {Sign::POS, -130, 0xaaaaaaaa'aaaaaaaa'aaaaaaaa'aaaaaaab_u128}, // 1/6
-      {Sign::POS, -132, 0xaaaaaaaa'aaaaaaaa'aaaaaaaa'aaaaaaab_u128}, // 1/24
-      {Sign::POS, -134, 0x88888888'88888888'88888888'88888889_u128}, // 1/120
-      {Sign::POS, -137, 0xb60b60b6'0b60b60b'60b60b60'b60b60b6_u128}, // 1/720
-      {Sign::POS, -140, 0xd00d00d0'0d00d00d'00d00d00'd00d00d0_u128}, // 1/5040
+      {Sign::POS, -127, MType({0, 0x8000000000000000})},                  // 1.0
+      {Sign::POS, -128, MType({0, 0x8000000000000000})},                  // 0.5
+      {Sign::POS, -130, MType({0xaaaaaaaaaaaaaaab, 0xaaaaaaaaaaaaaaaa})}, // 1/6
+      {Sign::POS, -132,
+       MType({0xaaaaaaaaaaaaaaab, 0xaaaaaaaaaaaaaaaa})}, // 1/24
+      {Sign::POS, -134,
+       MType({0x8888888888888889, 0x8888888888888888})}, // 1/120
+      {Sign::POS, -137,
+       MType({0x60b60b60b60b60b6, 0xb60b60b60b60b60b})}, // 1/720
+      {Sign::POS, -140,
+       MType({0x00d00d00d00d00d0, 0xd00d00d00d00d00d})}, // 1/5040
   };
 
   Float128 p = fputil::polyeval(dx, COEFFS_128[0], COEFFS_128[1], COEFFS_128[2],
@@ -142,6 +146,7 @@ std::ostream &operator<<(std::ostream &OS, const DoubleDouble &r) {
 // TODO(lntue): investigate triple-double precision implementation for this
 // step.
 Float128 expm1_f128(double x, double kd, int idx1, int idx2) {
+  using MType = typename Float128::MantissaType;
   // Recalculate dx:
 
   double t1 = fputil::multiply_add(kd, MLOG_2_EXP2_M12_HI, x); // exact
@@ -165,8 +170,7 @@ Float128 expm1_f128(double x, double kd, int idx1, int idx2) {
   Float128 exp_mid = fputil::quick_mul(exp_mid1, exp_mid2);
 
   int hi = static_cast<int>(kd) >> 12;
-  Float128 minus_one{Sign::NEG, -127 - hi,
-                     0x80000000'00000000'00000000'00000000_u128};
+  Float128 minus_one{Sign::NEG, -127 - hi, MType({0, 0x8000000000000000})};
 
   Float128 exp_mid_m1 = fputil::quick_add(exp_mid, minus_one);
 

diff  --git a/libc/src/math/generic/log.cpp b/libc/src/math/generic/log.cpp
index d770112599a98f..9edc52b8a8e24c 100644
--- a/libc/src/math/generic/log.cpp
+++ b/libc/src/math/generic/log.cpp
@@ -14,7 +14,6 @@
 #include "src/__support/FPUtil/dyadic_float.h"
 #include "src/__support/FPUtil/multiply_add.h"
 #include "src/__support/common.h"
-#include "src/__support/integer_literals.h"
 #include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
 
 #include "common_constants.h"
@@ -24,8 +23,8 @@ namespace LIBC_NAMESPACE {
 
 // 128-bit precision dyadic floating point numbers.
 using Float128 = typename fputil::DyadicFloat<128>;
+using MType = typename Float128::MantissaType;
 using Sign = fputil::Sign;
-using LIBC_NAMESPACE::operator""_u128;
 
 namespace {
 
@@ -35,152 +34,150 @@ constexpr double HI_ERR = 0x1.0p-85;
 // Extra errors from P is from using x^2 to reduce evaluation latency.
 constexpr double P_ERR = 0x1.0p-50;
 
-// log(2) with 128-bit precision generated by SageMath with:
-// def format_hex(value):
-//     l = hex(value)[2:]
-//     n = 8
-//     x = [l[i:i + n] for i in range(0, len(l), n)]
-//     return "0x" + "'".join(x) + "_uint128"
-//  (s, m, e) = RealField(128)(2).log().sign_mantissa_exponent();
-//  print(format_hex(m));
+// log(2) with 128-bit prepcision generated by SageMath with:
+//   sage: (s, m, e) = RealField(128)(2).log().sign_mantissa_exponent();
+//   sage: print("MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})");
 const Float128 LOG_2(Sign::POS, /*exponent=*/-128, /*mantissa=*/
-                     0xb17217f7'd1cf79ab'c9e3b398'03f2f6af_u128);
+                     MType({0xc9e3b39803f2f6af, 0xb17217f7d1cf79ab}));
 
 alignas(64) const LogRR LOG_TABLE = {
     // -log(r) with 128-bit precision generated by SageMath with:
+    //
     // for i in range(128):
     //   r = 2^-8 * ceil( 2^8 * (1 - 2^(-8)) / (1 + i*2^(-7)) );
     //   s, m, e = RealField(128)(r).log().sign_mantissa_exponent();
-    //   print("{Sign::POS,", e, ", format_hex(m), "},");
+    //   print("{Sign::POS,", e, ", MType({", hex(m % 2^64), ",", hex((m >> 64)
+    //   % 2^64),
+    //         "})},");
     /* .step_1= */ {
-        {Sign::POS, 0, 0_u128},
-        {Sign::POS, -134, 0x8080abac'46f38946'662d417c'ed007a46_u128},
-        {Sign::POS, -133, 0x8102b2c4'9ac23a4f'91d082dc'e3ddcd38_u128},
-        {Sign::POS, -133, 0xc2492946'4655f45c'da5f3cc0'b3251dbd_u128},
-        {Sign::POS, -132, 0x820aec4f'3a222380'b9e3aea6'c444ef07_u128},
-        {Sign::POS, -132, 0xa33576a1'6f1f4c64'521016bd'904dc968_u128},
-        {Sign::POS, -132, 0xc4a550a4'fd9a19a8'be97660a'23cc540d_u128},
-        {Sign::POS, -132, 0xe65b9e6e'ed965c36'e09f5fe2'058d6006_u128},
-        {Sign::POS, -131, 0x842cc5ac'f1d03445'1fecdfa8'19b96098_u128},
-        {Sign::POS, -131, 0x8cb9de8a'32ab368a'a7c98595'30a45153_u128},
-        {Sign::POS, -131, 0x9defad3e'8f73217a'976d3b5b'45f6ca0b_u128},
-        {Sign::POS, -131, 0xaf4ad26c'bc8e5be7'0e8b8b88'a14ff0ce_u128},
-        {Sign::POS, -131, 0xb8069857'560707a3'6a677b4c'8bec22e1_u128},
-        {Sign::POS, -131, 0xc99af2ea'ca4c4570'eaf51f66'692844ba_u128},
-        {Sign::POS, -131, 0xdb56446d'6ad8deff'a8112e35'a60e6375_u128},
-        {Sign::POS, -131, 0xe442c00d'e2591b47'196ab34c'e0bccd12_u128},
-        {Sign::POS, -131, 0xf639cc18'5088fe5d'4066e87f'2c0f7340_u128},
-        {Sign::POS, -131, 0xff4489ce'deab2ca6'c17bd40d'8d9291ec_u128},
-        {Sign::POS, -130, 0x88bc7411'3f23def1'9c5a0fe3'96f40f1e_u128},
-        {Sign::POS, -130, 0x8d515bf1'1fb94f1c'88713268'840cbcc0_u128},
-        {Sign::POS, -130, 0x968b0864'3409ceb6'65c0da50'6a088484_u128},
-        {Sign::POS, -130, 0x9b2fe580'ac80b17d'411a5b94'4aca8708_u128},
-        {Sign::POS, -130, 0xa489ec19'9dab06f2'a9fb6cf0'ecb411b7_u128},
-        {Sign::POS, -130, 0xa93f2f25'0dac67d1'cad2fb8d'48054ae0_u128},
-        {Sign::POS, -130, 0xb2ba75f4'6099cf8b'2c3c2e77'904afa78_u128},
-        {Sign::POS, -130, 0xb780945b'ab55dce4'34c7bc3d'32750fde_u128},
-        {Sign::POS, -130, 0xc11e0b2a'8d1e0ddb'9a631e83'0fd30904_u128},
-        {Sign::POS, -130, 0xc5f57f59'c7f46155'aa8b6997'a402bf30_u128},
-        {Sign::POS, -130, 0xcad2d6e7'b80bf914'2c507fb7'a3d0bf6a_u128},
-        {Sign::POS, -130, 0xd49f69e4'56cf1b79'5f53bd2e'406e66e7_u128},
-        {Sign::POS, -130, 0xd98ec2ba'de71e539'58a98f2a'd65bee9b_u128},
-        {Sign::POS, -130, 0xde8439c1'dec56877'4d57da94'5b5d0aaa_u128},
-        {Sign::POS, -130, 0xe881bf93'2af3dac0'c524848e'3443e040_u128},
-        {Sign::POS, -130, 0xed89ed86'a44a01aa'11d49f96'cb88317b_u128},
-        {Sign::POS, -130, 0xf29877ff'38809091'3b020fa1'820c9492_u128},
-        {Sign::POS, -130, 0xf7ad6f26'e7ff2ef7'54d2238f'75f969b1_u128},
-        {Sign::POS, -130, 0xfcc8e365'9d9bcbec'ca0cdf30'1431b60f_u128},
-        {Sign::POS, -129, 0x8389c302'6ac3139b'62dda9d2'270fa1f4_u128},
-        {Sign::POS, -129, 0x86216b3b'0b17188b'163ceae8'8f720f1e_u128},
-        {Sign::POS, -129, 0x88bc7411'3f23def1'9c5a0fe3'96f40f1e_u128},
-        {Sign::POS, -129, 0x8b5ae65d'67db9acd'f7a51681'26a58b9a_u128},
-        {Sign::POS, -129, 0x8dfccb1a'd35ca6ed'5147bdb6'ddcaf59c_u128},
-        {Sign::POS, -129, 0x934b1089'a6dc93c1'df5bb3b6'0554e152_u128},
-        {Sign::POS, -129, 0x95f783e6'e49a9cfa'4a5004f3'ef063313_u128},
-        {Sign::POS, -129, 0x98a78f0e'9ae71d85'2cdec347'84707839_u128},
-        {Sign::POS, -129, 0x9b5b3bb5'f088b766'd878bbe3'd392be25_u128},
-        {Sign::POS, -129, 0x9e1293b9'998c1daa'5b035eae'273a855f_u128},
-        {Sign::POS, -129, 0xa0cda11e'af46390d'bb243827'3918db7e_u128},
-        {Sign::POS, -129, 0xa38c6e13'8e20d831'f698298a'dddd7f32_u128},
-        {Sign::POS, -129, 0xa64f04f0'b961df76'e4f5275c'2d15c21f_u128},
-        {Sign::POS, -129, 0xa9157039'c51ebe70'8164c759'686a2209_u128},
-        {Sign::POS, -129, 0xabdfba9e'468fd6f6'f72ea077'49ce6bd3_u128},
-        {Sign::POS, -129, 0xaeadeefa'caf97d35'7dd6e688'ebb13b03_u128},
-        {Sign::POS, -129, 0xb1801859'd56249dc'18ce51ff'f99479cd_u128},
-        {Sign::POS, -129, 0xb45641f4'e350a0d3'2756eba0'0bc33978_u128},
-        {Sign::POS, -129, 0xb7307735'78cb90b2'be1116c3'466beb6d_u128},
-        {Sign::POS, -129, 0xba0ec3b6'33dd8b09'49dc60b2'b059a60b_u128},
-        {Sign::POS, -129, 0xbcf13343'e7d9ec7d'2efd1778'1bb3afec_u128},
-        {Sign::POS, -129, 0xbfd7d1de'c0a8df6f'37eda996'244bccb0_u128},
-        {Sign::POS, -129, 0xc2c2abbb'6e5fd56f'33337789'd592e296_u128},
-        {Sign::POS, -129, 0xc5b1cd44'596fa51e'1a18fb8f'9f9ef280_u128},
-        {Sign::POS, -129, 0xc8a5431a'dfb44ca5'688ce7c1'a75e341a_u128},
-        {Sign::POS, -129, 0xcb9d1a18'9ab56e76'2d7e9307'c70c0668_u128},
-        {Sign::POS, -129, 0xce995f50'af69d861'ef2f3f4f'861ad6a9_u128},
-        {Sign::POS, -129, 0xd19a2011'27d3c645'7f9d79f5'1dcc7301_u128},
-        {Sign::POS, -129, 0xd19a2011'27d3c645'7f9d79f5'1dcc7301_u128},
-        {Sign::POS, -129, 0xd49f69e4'56cf1b79'5f53bd2e'406e66e7_u128},
-        {Sign::POS, -129, 0xd7a94a92'466e833a'ad88bba7'd0cee8e0_u128},
-        {Sign::POS, -129, 0xdab7d022'31484a92'96c20cca'6efe2ac5_u128},
-        {Sign::POS, -129, 0xddcb08dc'0717d85b'f40a666c'87842843_u128},
-        {Sign::POS, -129, 0xe0e30349'fd1cec80'7fe8e180'2aba24d6_u128},
-        {Sign::POS, -129, 0xe0e30349'fd1cec80'7fe8e180'2aba24d6_u128},
-        {Sign::POS, -129, 0xe3ffce3a'2aa64922'3eadb651'b49ac53a_u128},
-        {Sign::POS, -129, 0xe72178c0'323a1a0f'304e1653'e71d9973_u128},
-        {Sign::POS, -129, 0xea481236'f7d35baf'e9a767a8'0d6d97e8_u128},
-        {Sign::POS, -129, 0xed73aa42'64b0ade9'4f91cf4b'33e42998_u128},
-        {Sign::POS, -129, 0xf0a450d1'39366ca6'fc66eb64'08ff6433_u128},
-        {Sign::POS, -129, 0xf0a450d1'39366ca6'fc66eb64'08ff6433_u128},
-        {Sign::POS, -129, 0xf3da161e'ed6b9aaf'ac8d42f7'8d3e65d3_u128},
-        {Sign::POS, -129, 0xf7150ab5'a09f27f4'5a470250'd40ebe90_u128},
-        {Sign::POS, -129, 0xfa553f70'18c966f2'b780a545'a1b54dcf_u128},
-        {Sign::POS, -129, 0xfa553f70'18c966f2'b780a545'a1b54dcf_u128},
-        {Sign::POS, -129, 0xfd9ac57b'd244217e'8f05924d'258c14c5_u128},
-        {Sign::POS, -128, 0x8072d72d'903d588b'89d1b09c'70c4010a_u128},
-        {Sign::POS, -128, 0x821b05f3'b01d6774'030d58c3'f7e2ea1f_u128},
-        {Sign::POS, -128, 0x821b05f3'b01d6774'030d58c3'f7e2ea1f_u128},
-        {Sign::POS, -128, 0x83c5f829'9e2b4091'20f6fafe'8fbb68b9_u128},
-        {Sign::POS, -128, 0x8573b716'82a7d21a'e21f9f89'c1ab80b2_u128},
-        {Sign::POS, -128, 0x8573b716'82a7d21a'e21f9f89'c1ab80b2_u128},
-        {Sign::POS, -128, 0x87244c30'8e670a66'01e005d0'6dbfa8f8_u128},
-        {Sign::POS, -128, 0x88d7c11e'3ad53cdc'223111a7'07b6de2c_u128},
-        {Sign::POS, -128, 0x88d7c11e'3ad53cdc'223111a7'07b6de2c_u128},
-        {Sign::POS, -128, 0x8a8e1fb7'94b09134'2eb628db'a173c82d_u128},
-        {Sign::POS, -128, 0x8c477207'91e53313'be2ad194'15fe25a5_u128},
-        {Sign::POS, -128, 0x8c477207'91e53313'be2ad194'15fe25a5_u128},
-        {Sign::POS, -128, 0x8e03c24d'73003959'bddae1cc'ce247838_u128},
-        {Sign::POS, -128, 0x8fc31afe'30b2c6de'9b00bf16'7e95da67_u128},
-        {Sign::POS, -128, 0x8fc31afe'30b2c6de'9b00bf16'7e95da67_u128},
-        {Sign::POS, -128, 0x918586c5'f5e4bf01'9b92199e'd1a4bab1_u128},
-        {Sign::POS, -128, 0x934b1089'a6dc93c1'df5bb3b6'0554e152_u128},
-        {Sign::POS, -128, 0x934b1089'a6dc93c1'df5bb3b6'0554e152_u128},
-        {Sign::POS, -128, 0x9513c368'76083695'f3cbc416'a2418012_u128},
-        {Sign::POS, -128, 0x96dfaabd'86fa1646'be1188fb'c94e2f15_u128},
-        {Sign::POS, -128, 0x96dfaabd'86fa1646'be1188fb'c94e2f15_u128},
-        {Sign::POS, -128, 0x98aed221'a03458b6'1d2f8932'1647b358_u128},
-        {Sign::POS, -128, 0x98aed221'a03458b6'1d2f8932'1647b358_u128},
-        {Sign::POS, -128, 0x9a81456c'ec642e0f'e549f9aa'ea3cb5e1_u128},
-        {Sign::POS, -128, 0x9c5710b8'cbb73a42'a2554b2d'd4619e63_u128},
-        {Sign::POS, -128, 0x9c5710b8'cbb73a42'a2554b2d'd4619e63_u128},
-        {Sign::POS, -128, 0x9e304061'b5fda919'30603d87'b6df81ad_u128},
-        {Sign::POS, -128, 0x9e304061'b5fda919'30603d87'b6df81ad_u128},
-        {Sign::POS, -128, 0xa00ce109'2e5498c3'67879c5a'30cd1242_u128},
-        {Sign::POS, -128, 0xa1ecff97'c91e267b'0b7efae0'8e597e16_u128},
-        {Sign::POS, -128, 0xa1ecff97'c91e267b'0b7efae0'8e597e16_u128},
-        {Sign::POS, -128, 0xa3d0a93f'45169a4a'83594fab'088c0d65_u128},
-        {Sign::POS, -128, 0xa3d0a93f'45169a4a'83594fab'088c0d65_u128},
-        {Sign::POS, -128, 0xa5b7eb7c'b860fb88'af6a62a0'dec6e073_u128},
-        {Sign::POS, -128, 0xa5b7eb7c'b860fb88'af6a62a0'dec6e073_u128},
-        {Sign::POS, -128, 0xa7a2d41a'd270c9d7'49362382'a768847a_u128},
-        {Sign::POS, -128, 0xa7a2d41a'd270c9d7'49362382'a768847a_u128},
-        {Sign::POS, -128, 0xa9917134'33c2b998'8ba4aea6'14d05701_u128},
-        {Sign::POS, -128, 0xa9917134'33c2b998'8ba4aea6'14d05701_u128},
-        {Sign::POS, -128, 0xab83d135'dc633301'7fe6607b'a902ef3c_u128},
-        {Sign::POS, -128, 0xab83d135'dc633301'7fe6607b'a902ef3c_u128},
-        {Sign::POS, -128, 0xad7a02e1'b24efd31'd60864fd'949b4bd3_u128},
-        {Sign::POS, -128, 0xad7a02e1'b24efd31'd60864fd'949b4bd3_u128},
-        {Sign::POS, -128, 0xaf741551'20c9011c'066d235e'e63073dd_u128},
-        {Sign::POS, 0, 0_u128},
+        {Sign::POS, 0, MType(0)},
+        {Sign::POS, -134, MType({0x662d417ced007a46, 0x8080abac46f38946})},
+        {Sign::POS, -133, MType({0x91d082dce3ddcd38, 0x8102b2c49ac23a4f})},
+        {Sign::POS, -133, MType({0xda5f3cc0b3251dbd, 0xc24929464655f45c})},
+        {Sign::POS, -132, MType({0xb9e3aea6c444ef07, 0x820aec4f3a222380})},
+        {Sign::POS, -132, MType({0x521016bd904dc968, 0xa33576a16f1f4c64})},
+        {Sign::POS, -132, MType({0xbe97660a23cc540d, 0xc4a550a4fd9a19a8})},
+        {Sign::POS, -132, MType({0xe09f5fe2058d6006, 0xe65b9e6eed965c36})},
+        {Sign::POS, -131, MType({0x1fecdfa819b96098, 0x842cc5acf1d03445})},
+        {Sign::POS, -131, MType({0xa7c9859530a45153, 0x8cb9de8a32ab368a})},
+        {Sign::POS, -131, MType({0x976d3b5b45f6ca0b, 0x9defad3e8f73217a})},
+        {Sign::POS, -131, MType({0xe8b8b88a14ff0ce, 0xaf4ad26cbc8e5be7})},
+        {Sign::POS, -131, MType({0x6a677b4c8bec22e1, 0xb8069857560707a3})},
+        {Sign::POS, -131, MType({0xeaf51f66692844ba, 0xc99af2eaca4c4570})},
+        {Sign::POS, -131, MType({0xa8112e35a60e6375, 0xdb56446d6ad8deff})},
+        {Sign::POS, -131, MType({0x196ab34ce0bccd12, 0xe442c00de2591b47})},
+        {Sign::POS, -131, MType({0x4066e87f2c0f7340, 0xf639cc185088fe5d})},
+        {Sign::POS, -131, MType({0xc17bd40d8d9291ec, 0xff4489cedeab2ca6})},
+        {Sign::POS, -130, MType({0x9c5a0fe396f40f1e, 0x88bc74113f23def1})},
+        {Sign::POS, -130, MType({0x88713268840cbcc0, 0x8d515bf11fb94f1c})},
+        {Sign::POS, -130, MType({0x65c0da506a088484, 0x968b08643409ceb6})},
+        {Sign::POS, -130, MType({0x411a5b944aca8708, 0x9b2fe580ac80b17d})},
+        {Sign::POS, -130, MType({0xa9fb6cf0ecb411b7, 0xa489ec199dab06f2})},
+        {Sign::POS, -130, MType({0xcad2fb8d48054ae0, 0xa93f2f250dac67d1})},
+        {Sign::POS, -130, MType({0x2c3c2e77904afa78, 0xb2ba75f46099cf8b})},
+        {Sign::POS, -130, MType({0x34c7bc3d32750fde, 0xb780945bab55dce4})},
+        {Sign::POS, -130, MType({0x9a631e830fd30904, 0xc11e0b2a8d1e0ddb})},
+        {Sign::POS, -130, MType({0xaa8b6997a402bf30, 0xc5f57f59c7f46155})},
+        {Sign::POS, -130, MType({0x2c507fb7a3d0bf6a, 0xcad2d6e7b80bf914})},
+        {Sign::POS, -130, MType({0x5f53bd2e406e66e7, 0xd49f69e456cf1b79})},
+        {Sign::POS, -130, MType({0x58a98f2ad65bee9b, 0xd98ec2bade71e539})},
+        {Sign::POS, -130, MType({0x4d57da945b5d0aaa, 0xde8439c1dec56877})},
+        {Sign::POS, -130, MType({0xc524848e3443e040, 0xe881bf932af3dac0})},
+        {Sign::POS, -130, MType({0x11d49f96cb88317b, 0xed89ed86a44a01aa})},
+        {Sign::POS, -130, MType({0x3b020fa1820c9492, 0xf29877ff38809091})},
+        {Sign::POS, -130, MType({0x54d2238f75f969b1, 0xf7ad6f26e7ff2ef7})},
+        {Sign::POS, -130, MType({0xca0cdf301431b60f, 0xfcc8e3659d9bcbec})},
+        {Sign::POS, -129, MType({0x62dda9d2270fa1f4, 0x8389c3026ac3139b})},
+        {Sign::POS, -129, MType({0x163ceae88f720f1e, 0x86216b3b0b17188b})},
+        {Sign::POS, -129, MType({0x9c5a0fe396f40f1e, 0x88bc74113f23def1})},
+        {Sign::POS, -129, MType({0xf7a5168126a58b9a, 0x8b5ae65d67db9acd})},
+        {Sign::POS, -129, MType({0x5147bdb6ddcaf59c, 0x8dfccb1ad35ca6ed})},
+        {Sign::POS, -129, MType({0xdf5bb3b60554e152, 0x934b1089a6dc93c1})},
+        {Sign::POS, -129, MType({0x4a5004f3ef063313, 0x95f783e6e49a9cfa})},
+        {Sign::POS, -129, MType({0x2cdec34784707839, 0x98a78f0e9ae71d85})},
+        {Sign::POS, -129, MType({0xd878bbe3d392be25, 0x9b5b3bb5f088b766})},
+        {Sign::POS, -129, MType({0x5b035eae273a855f, 0x9e1293b9998c1daa})},
+        {Sign::POS, -129, MType({0xbb2438273918db7e, 0xa0cda11eaf46390d})},
+        {Sign::POS, -129, MType({0xf698298adddd7f32, 0xa38c6e138e20d831})},
+        {Sign::POS, -129, MType({0xe4f5275c2d15c21f, 0xa64f04f0b961df76})},
+        {Sign::POS, -129, MType({0x8164c759686a2209, 0xa9157039c51ebe70})},
+        {Sign::POS, -129, MType({0xf72ea07749ce6bd3, 0xabdfba9e468fd6f6})},
+        {Sign::POS, -129, MType({0x7dd6e688ebb13b03, 0xaeadeefacaf97d35})},
+        {Sign::POS, -129, MType({0x18ce51fff99479cd, 0xb1801859d56249dc})},
+        {Sign::POS, -129, MType({0x2756eba00bc33978, 0xb45641f4e350a0d3})},
+        {Sign::POS, -129, MType({0xbe1116c3466beb6d, 0xb730773578cb90b2})},
+        {Sign::POS, -129, MType({0x49dc60b2b059a60b, 0xba0ec3b633dd8b09})},
+        {Sign::POS, -129, MType({0x2efd17781bb3afec, 0xbcf13343e7d9ec7d})},
+        {Sign::POS, -129, MType({0x37eda996244bccb0, 0xbfd7d1dec0a8df6f})},
+        {Sign::POS, -129, MType({0x33337789d592e296, 0xc2c2abbb6e5fd56f})},
+        {Sign::POS, -129, MType({0x1a18fb8f9f9ef280, 0xc5b1cd44596fa51e})},
+        {Sign::POS, -129, MType({0x688ce7c1a75e341a, 0xc8a5431adfb44ca5})},
+        {Sign::POS, -129, MType({0x2d7e9307c70c0668, 0xcb9d1a189ab56e76})},
+        {Sign::POS, -129, MType({0xef2f3f4f861ad6a9, 0xce995f50af69d861})},
+        {Sign::POS, -129, MType({0x7f9d79f51dcc7301, 0xd19a201127d3c645})},
+        {Sign::POS, -129, MType({0x7f9d79f51dcc7301, 0xd19a201127d3c645})},
+        {Sign::POS, -129, MType({0x5f53bd2e406e66e7, 0xd49f69e456cf1b79})},
+        {Sign::POS, -129, MType({0xad88bba7d0cee8e0, 0xd7a94a92466e833a})},
+        {Sign::POS, -129, MType({0x96c20cca6efe2ac5, 0xdab7d02231484a92})},
+        {Sign::POS, -129, MType({0xf40a666c87842843, 0xddcb08dc0717d85b})},
+        {Sign::POS, -129, MType({0x7fe8e1802aba24d6, 0xe0e30349fd1cec80})},
+        {Sign::POS, -129, MType({0x7fe8e1802aba24d6, 0xe0e30349fd1cec80})},
+        {Sign::POS, -129, MType({0x3eadb651b49ac53a, 0xe3ffce3a2aa64922})},
+        {Sign::POS, -129, MType({0x304e1653e71d9973, 0xe72178c0323a1a0f})},
+        {Sign::POS, -129, MType({0xe9a767a80d6d97e8, 0xea481236f7d35baf})},
+        {Sign::POS, -129, MType({0x4f91cf4b33e42998, 0xed73aa4264b0ade9})},
+        {Sign::POS, -129, MType({0xfc66eb6408ff6433, 0xf0a450d139366ca6})},
+        {Sign::POS, -129, MType({0xfc66eb6408ff6433, 0xf0a450d139366ca6})},
+        {Sign::POS, -129, MType({0xac8d42f78d3e65d3, 0xf3da161eed6b9aaf})},
+        {Sign::POS, -129, MType({0x5a470250d40ebe90, 0xf7150ab5a09f27f4})},
+        {Sign::POS, -129, MType({0xb780a545a1b54dcf, 0xfa553f7018c966f2})},
+        {Sign::POS, -129, MType({0xb780a545a1b54dcf, 0xfa553f7018c966f2})},
+        {Sign::POS, -129, MType({0x8f05924d258c14c5, 0xfd9ac57bd244217e})},
+        {Sign::POS, -128, MType({0x89d1b09c70c4010a, 0x8072d72d903d588b})},
+        {Sign::POS, -128, MType({0x30d58c3f7e2ea1f, 0x821b05f3b01d6774})},
+        {Sign::POS, -128, MType({0x30d58c3f7e2ea1f, 0x821b05f3b01d6774})},
+        {Sign::POS, -128, MType({0x20f6fafe8fbb68b9, 0x83c5f8299e2b4091})},
+        {Sign::POS, -128, MType({0xe21f9f89c1ab80b2, 0x8573b71682a7d21a})},
+        {Sign::POS, -128, MType({0xe21f9f89c1ab80b2, 0x8573b71682a7d21a})},
+        {Sign::POS, -128, MType({0x1e005d06dbfa8f8, 0x87244c308e670a66})},
+        {Sign::POS, -128, MType({0x223111a707b6de2c, 0x88d7c11e3ad53cdc})},
+        {Sign::POS, -128, MType({0x223111a707b6de2c, 0x88d7c11e3ad53cdc})},
+        {Sign::POS, -128, MType({0x2eb628dba173c82d, 0x8a8e1fb794b09134})},
+        {Sign::POS, -128, MType({0xbe2ad19415fe25a5, 0x8c47720791e53313})},
+        {Sign::POS, -128, MType({0xbe2ad19415fe25a5, 0x8c47720791e53313})},
+        {Sign::POS, -128, MType({0xbddae1ccce247838, 0x8e03c24d73003959})},
+        {Sign::POS, -128, MType({0x9b00bf167e95da67, 0x8fc31afe30b2c6de})},
+        {Sign::POS, -128, MType({0x9b00bf167e95da67, 0x8fc31afe30b2c6de})},
+        {Sign::POS, -128, MType({0x9b92199ed1a4bab1, 0x918586c5f5e4bf01})},
+        {Sign::POS, -128, MType({0xdf5bb3b60554e152, 0x934b1089a6dc93c1})},
+        {Sign::POS, -128, MType({0xdf5bb3b60554e152, 0x934b1089a6dc93c1})},
+        {Sign::POS, -128, MType({0xf3cbc416a2418012, 0x9513c36876083695})},
+        {Sign::POS, -128, MType({0xbe1188fbc94e2f15, 0x96dfaabd86fa1646})},
+        {Sign::POS, -128, MType({0xbe1188fbc94e2f15, 0x96dfaabd86fa1646})},
+        {Sign::POS, -128, MType({0x1d2f89321647b358, 0x98aed221a03458b6})},
+        {Sign::POS, -128, MType({0x1d2f89321647b358, 0x98aed221a03458b6})},
+        {Sign::POS, -128, MType({0xe549f9aaea3cb5e1, 0x9a81456cec642e0f})},
+        {Sign::POS, -128, MType({0xa2554b2dd4619e63, 0x9c5710b8cbb73a42})},
+        {Sign::POS, -128, MType({0xa2554b2dd4619e63, 0x9c5710b8cbb73a42})},
+        {Sign::POS, -128, MType({0x30603d87b6df81ad, 0x9e304061b5fda919})},
+        {Sign::POS, -128, MType({0x30603d87b6df81ad, 0x9e304061b5fda919})},
+        {Sign::POS, -128, MType({0x67879c5a30cd1242, 0xa00ce1092e5498c3})},
+        {Sign::POS, -128, MType({0xb7efae08e597e16, 0xa1ecff97c91e267b})},
+        {Sign::POS, -128, MType({0xb7efae08e597e16, 0xa1ecff97c91e267b})},
+        {Sign::POS, -128, MType({0x83594fab088c0d65, 0xa3d0a93f45169a4a})},
+        {Sign::POS, -128, MType({0x83594fab088c0d65, 0xa3d0a93f45169a4a})},
+        {Sign::POS, -128, MType({0xaf6a62a0dec6e073, 0xa5b7eb7cb860fb88})},
+        {Sign::POS, -128, MType({0xaf6a62a0dec6e073, 0xa5b7eb7cb860fb88})},
+        {Sign::POS, -128, MType({0x49362382a768847a, 0xa7a2d41ad270c9d7})},
+        {Sign::POS, -128, MType({0x49362382a768847a, 0xa7a2d41ad270c9d7})},
+        {Sign::POS, -128, MType({0x8ba4aea614d05701, 0xa991713433c2b998})},
+        {Sign::POS, -128, MType({0x8ba4aea614d05701, 0xa991713433c2b998})},
+        {Sign::POS, -128, MType({0x7fe6607ba902ef3c, 0xab83d135dc633301})},
+        {Sign::POS, -128, MType({0x7fe6607ba902ef3c, 0xab83d135dc633301})},
+        {Sign::POS, -128, MType({0xd60864fd949b4bd3, 0xad7a02e1b24efd31})},
+        {Sign::POS, -128, MType({0xd60864fd949b4bd3, 0xad7a02e1b24efd31})},
+        {Sign::POS, -128, MType({0x66d235ee63073dd, 0xaf74155120c9011c})},
+        {Sign::POS, 0, MType(0)},
     },
     // -log(r) for the second step, generated by SageMath with:
     //
@@ -188,202 +185,202 @@ alignas(64) const LogRR LOG_TABLE = {
     //   r = 2^-16 * round( 2^16 / (1 + i*2^(-14)) );
     //   s, m, e = RealField(128)(r).log().sign_mantissa_exponent();
     //   print("{Sign::POS," if s == -1 else "{Sign::NEG,", e, ",
-    //         format_hex(m), "},");
+    //         MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})},");
     /* .step_2 = */
     {
-        {Sign::NEG, -135, 0x803faaca'c419abf2'a1c6f3fc'242ef8d0_u128},
-        {Sign::NEG, -136, 0xfc834da1'6f0d9f57'a225ebc0'2e6d9dd4_u128},
-        {Sign::NEG, -136, 0xf88735cc'c7433381'c33f6ad3'40ae18a9_u128},
-        {Sign::NEG, -136, 0xf48b0e17'1249b6bc'70b2a4d3'8a242244_u128},
-        {Sign::NEG, -136, 0xf08ed67f'd190e280'1d548190'48b811b0_u128},
-        {Sign::NEG, -136, 0xec928f06'86828706'aee59837'01d2a02b_u128},
-        {Sign::NEG, -136, 0xe89637aa'b2828aed'40abb8ab'72afa2d2_u128},
-        {Sign::NEG, -136, 0xe499d06b'd6eeead5'deb547a0'd4a26ef9_u128},
-        {Sign::NEG, -136, 0xe09d5949'751fb909'39c5bdfb'cf6087a0_u128},
-        {Sign::NEG, -136, 0xdca0d243'0e671d18'53ea9bf1'52de635f_u128},
-        {Sign::NEG, -136, 0xd8a43b58'2411537e'25b82043'6f5f4352_u128},
-        {Sign::NEG, -136, 0xd4a79488'3764ad41'3c2d13ea'1d0be058_u128},
-        {Sign::NEG, -136, 0xd0aaddd2'c9a18f95'4f3cfa62'bcb3ce3a_u128},
-        {Sign::NEG, -136, 0xccae1737'5c02737c'd0fff6cd'f14a86c7_u128},
-        {Sign::NEG, -136, 0xc8b140b5'6fbbe56a'7587b5f0'453ac3d2_u128},
-        {Sign::NEG, -136, 0xc4b45a4c'85fc84e2'b358ad16'dfd0d085_u128},
-        {Sign::NEG, -136, 0xc0b763fc'1fed041d'3c86fdce'5dbe7314_u128},
-        {Sign::NEG, -136, 0xbcba5dc3'beb027a6'70764e46'ac18a96d_u128},
-        {Sign::NEG, -136, 0xb8bd47a2'e362c600'c63be62b'8f285882_u128},
-        {Sign::NEG, -136, 0xb3c0d59a'244325a4'72e7b5a3'86e5e31b_u128},
-        {Sign::NEG, -136, 0xafc39bac'66434f27'c3ea2cd9'3f316b34_u128},
-        {Sign::NEG, -136, 0xabc651d4'91a7b438'1dfb11a7'cc892843_u128},
-        {Sign::NEG, -136, 0xa7c8f812'2773f38d'fc679a28'e9d9f212_u128},
-        {Sign::NEG, -136, 0xa3cb8e64'a8a5bbe6'e7bc977e'eec42254_u128},
-        {Sign::NEG, -136, 0x9fce14cb'9634cba6'b20f215b'd3b58c61_u128},
-        {Sign::NEG, -136, 0x9bd08b46'7112f078'abe28625'08d67a98_u128},
-        {Sign::NEG, -136, 0x97d2f1d4'ba2c06f0'd1aacedc'efe9d377_u128},
-        {Sign::NEG, -136, 0x93d54875'f265fa2c'f1eb25e7'7d05f58d_u128},
-        {Sign::NEG, -136, 0x8fd78f29'9aa0c375'cbef6fac'33691e95_u128},
-        {Sign::NEG, -136, 0x8bd9c5ef'33b669e0'27206404'62a0f8ad_u128},
-        {Sign::NEG, -136, 0x87dbecc6'3e7b01ed'e2f17751'34c8da75_u128},
-        {Sign::NEG, -136, 0x83de03ae'3bbcad2e'ff67e201'c8c50d67_u128},
-        {Sign::NEG, -137, 0xffc0154d'588733c5'3c742a7c'76356396_u128},
-        {Sign::NEG, -137, 0xf7c4035e'21a4052f'f90dd6b2'4aa686ec_u128},
-        {Sign::NEG, -137, 0xefc7d18d'd4485b9e'ca47c52b'7d7ffce2_u128},
-        {Sign::NEG, -137, 0xe7cb7fdb'71e0db36'3703617a'd3d8311f_u128},
-        {Sign::NEG, -137, 0xdfcf0e45'fbce3e80'7e4cfbd8'30393b88_u128},
-        {Sign::NEG, -137, 0xd7d27ccc'736555af'4f7a29cf'0fc2c38e_u128},
-        {Sign::NEG, -137, 0xcfd5cb6d'd9ef05dd'7370ae83'f9e72748_u128},
-        {Sign::NEG, -137, 0xc7d8fa29'30a84850'671486eb'4cd76f65_u128},
-        {Sign::NEG, -137, 0xbfdc08fd'78c229b9'e6dbb624'f9739782_u128},
-        {Sign::NEG, -137, 0xb7def7e9'b361c979'6b866e09'e57d9079_u128},
-        {Sign::NEG, -137, 0xafe1c6ec'e1a058dd'97fa2fd0'c9dc723e_u128},
-        {Sign::NEG, -137, 0xa7e47606'048b1a65'983e8089'7cf1e60f_u128},
-        {Sign::NEG, -137, 0x9fe70534'1d236102'7199cd06'ae5d39b3_u128},
-        {Sign::NEG, -137, 0x97e97476'2c5e8f58'43cd18a7'2a051a96_u128},
-        {Sign::NEG, -137, 0x8febc3cb'332616ff'7b6d1248'c3e1fd40_u128},
-        {Sign::NEG, -137, 0x87edf332'325777c5'f5572a88'14c703af_u128},
-        {Sign::NEG, -138, 0xffe00554'55887de0'26828c92'649a3a39_u128},
-        {Sign::NEG, -138, 0xefe3e464'3a640cf3'82c550bd'1216d82a_u128},
-        {Sign::NEG, -138, 0xdfe78392'14b4e8ae'da6959f7'f0e01bf0_u128},
-        {Sign::NEG, -138, 0xcfeae2db'e5d6736d'da93e2fa'85a8f214_u128},
-        {Sign::NEG, -138, 0xbfee023f'af0c2480'b47505bf'a5a03b06_u128},
-        {Sign::NEG, -138, 0xaff0e1bb'718186ad'b1475a51'80a43520_u128},
-        {Sign::NEG, -138, 0x9ff3814d'2e4a36b2'a8740b91'c95df537_u128},
-        {Sign::NEG, -138, 0x8ff5e0f2'e661e1c6'57d895d3'5921b59c_u128},
-        {Sign::NEG, -139, 0xfff00155'35588833'3c56c598'c659c2a3_u128},
-        {Sign::NEG, -139, 0xdff3c0e4'97ea4eb1'2ef8ec33'ed9d782a_u128},
-        {Sign::NEG, -139, 0xbff7008f'f5e0c257'379eba7e'6465ff63_u128},
-        {Sign::NEG, -139, 0x9ff9c053'5073a370'3f972b78'3fcab757_u128},
-        {Sign::NEG, -140, 0xfff80055'51558885'de026e27'1ee0549d_u128},
-        {Sign::NEG, -140, 0xbffb8023'febc0c25'eceb47ea'01f6c632_u128},
-        {Sign::NEG, -141, 0xfffc0015'54d55888'7333c578'57e1ed52_u128},
-        {Sign::NEG, -142, 0xfffe0005'55455588'87dde026'fa704374_u128},
-        {Sign::NEG, 0, 0_u128},
-        {Sign::POS, -141, 0x80010002'aab2aac4'44999abe'2fe2cc65_u128},
-        {Sign::POS, -140, 0x8002000a'aaeaac44'4eef3815'81464ccb_u128},
-        {Sign::POS, -140, 0xc0048024'01440c26'dfeb4850'85f6f454_u128},
-        {Sign::POS, -139, 0x8004002a'acaac445'99abe3be'3a1c6e93_u128},
-        {Sign::POS, -139, 0xa0064053'5a37a37a'6bc1e20e'ac8448b4_u128},
-        {Sign::POS, -139, 0xc0090090'0a20c275'979eedc0'64c242fd_u128},
-        {Sign::POS, -139, 0xe00c40e4'bd6e4efd'c72446cc'1bf728bd_u128},
-        {Sign::POS, -138, 0x800800aa'baac446e'f381b821'bbb569e5_u128},
-        {Sign::POS, -138, 0x900a20f3'19a3e273'569b26aa'a485ea5c_u128},
-        {Sign::POS, -138, 0xa00c814d'7c6a37f8'2dcf56c8'3c80b028_u128},
-        {Sign::POS, -138, 0xb00f21bb'e3e388ee'5f697682'84463b9b_u128},
-        {Sign::POS, -138, 0xc0120240'510c284c'b48ea6c0'5e2773a1_u128},
-        {Sign::POS, -138, 0xd01522dc'c4f87991'14d9d761'96d8043a_u128},
-        {Sign::POS, -138, 0xe0188393'40d4f241'e016a611'a4415d72_u128},
-        {Sign::POS, -138, 0xf01c2465'c5e61b6f'661e135f'49a47c40_u128},
-        {Sign::POS, -137, 0x801002ab'2ac4499a'be6bf0fa'435e8383_u128},
-        {Sign::POS, -137, 0x88121333'7898871e'9a31ba0c'bc030353_u128},
-        {Sign::POS, -137, 0x901443cc'cd362c9f'54b57dfe'0c4c840f_u128},
-        {Sign::POS, -137, 0x98169478'296fad41'7ad1e9c3'15328f7e_u128},
-        {Sign::POS, -137, 0xa0190536'8e2389b3'1f3f686c'f3d6be22_u128},
-        {Sign::POS, -137, 0xa81b9608'fc3c50ec'f105b66e'c4703ede_u128},
-        {Sign::POS, -137, 0xb01e46f0'74b0a0f3'610848c6'8df4d233_u128},
-        {Sign::POS, -137, 0xb82117ed'f8832797'd6aef30c'd312169a_u128},
-        {Sign::POS, -137, 0xc0240902'88c2a339'f3ac3796'08053d9d_u128},
-        {Sign::POS, -137, 0xc8271a2f'2689e388'e6e2acf8'f4d4c24a_u128},
-        {Sign::POS, -137, 0xd02a4b74'd2ffca44'ce6ae474'd860359f_u128},
-        {Sign::POS, -137, 0xd82d9cd4'8f574c00'28bb3cd9'f2a65fb5_u128},
-        {Sign::POS, -137, 0xe0310e4f'5ccf70e1'54f30dbe'f38a8066_u128},
-        {Sign::POS, -137, 0xe8349fe6'3cb35564'224a96f5'a7471c46_u128},
-        {Sign::POS, -137, 0xf038519a'305a2b1b'6ea92059'1aa02e1b_u128},
-        {Sign::POS, -137, 0xf83c236c'39273972'd462b637'56c87e80_u128},
-        {Sign::POS, -136, 0x80200aae'ac44ef38'338f7760'5fe77f2a_u128},
-        {Sign::POS, -136, 0x842213b7'47fec7bb'3ff51287'882500ed_u128},
-        {Sign::POS, -136, 0x88242cd0'7084ed02'cc394b3e'f0ebeb12_u128},
-        {Sign::POS, -136, 0x8c2655fa'a6a1323f'1ab9679b'55f78a6b_u128},
-        {Sign::POS, -136, 0x90288f36'6b237771'7025697d'10af0436_u128},
-        {Sign::POS, -136, 0x942ad884'3ee1a9cd'17e4b7ac'6c600cb4_u128},
-        {Sign::POS, -136, 0x982d31e4'a2b7c418'7013925a'9a8da7f3_u128},
-        {Sign::POS, -136, 0x9c2f9b58'1787cf0d'fd1a09c8'48e3950e_u128},
-        {Sign::POS, -136, 0xa03214df'1e39e1bd'84dd2de6'e3d90a37_u128},
-        {Sign::POS, -136, 0xa4349e7a'37bc21ed'318b2ddd'9d0a33b4_u128},
-        {Sign::POS, -136, 0xa8373829'e502c47a'bc031e6f'5acfd4a8_u128},
-        {Sign::POS, -136, 0xac39e1ee'a7080dbc'9dd91e52'c79fd070_u128},
-        {Sign::POS, -136, 0xb03c9bc8'fecc51e3'4af78fa1'cb48a12d_u128},
-        {Sign::POS, -136, 0xb43f65b9'6d55f55a'72de1d99'ce252efd_u128},
-        {Sign::POS, -136, 0xb74187bc'8ccffa84'efb1dbe7'21934877_u128},
-        {Sign::POS, -136, 0xbb446dd4'd9bca499'b4b080f2'30c87598_u128},
-        {Sign::POS, -136, 0xbf476404'a05f88f2'da6a7cd1'9c7fa4f2_u128},
-        {Sign::POS, -136, 0xc34a6a4c'61d5cc3c'df00e378'3b50ecfb_u128},
-        {Sign::POS, -136, 0xc74d80ac'9f42a52d'da2e5e02'ab4e183c_u128},
-        {Sign::POS, -136, 0xcb50a725'd9cf5ce6'ea5f6ee9'9d30c626_u128},
-        {Sign::POS, -136, 0xcf53ddb8'92ab4f55'a96d5956'531d7d8b_u128},
-        {Sign::POS, -136, 0xd3572465'4b0beb95'a8fc636e'b36afa75_u128},
-        {Sign::POS, -136, 0xd75a7b2c'842cb451'f67e2b82'7bfc4421_u128},
-        {Sign::POS, -136, 0xdb5de20e'bf4f4026'a6d8c817'516303e6_u128},
-        {Sign::POS, -136, 0xdf61590c'7dbb3a02'69b36ae5'962e85f4_u128},
-        {Sign::POS, -136, 0xe364e026'40be6188'24693eec'2a831cc3_u128},
-        {Sign::POS, -136, 0xe768775c'89ac8b70'94a339d5'6a55ab4a_u128},
-        {Sign::POS, -136, 0xeb6c1eaf'd9dfa1eb'fa9998fb'f9703bf4_u128},
-        {Sign::POS, -136, 0xef6fd620'b2b7a503'cafdc272'27b71eaa_u128},
-        {Sign::POS, -136, 0xf3739daf'959aaafc'688d4282'f6026aa3_u128},
-        {Sign::POS, -136, 0xf777755d'03f4e0b6'e54e9e38'04464cdd_u128},
-        {Sign::POS, -136, 0xfb7b5d29'7f388a12'cb78b383'f4b59dce_u128},
-        {Sign::POS, -136, 0xff7f5515'88de024f'ee055fc5'15062c04_u128},
-        {Sign::POS, -135, 0x81c1ae90'd131de38'207812b4'3382acdd_u128},
-        {Sign::POS, -135, 0x83c3baa7'26a721cc'dc90c4c4'b61f3a87_u128},
-        {Sign::POS, -135, 0x85c5cece'05941dbc'1a03f13f'b2c978b1_u128},
-        {Sign::POS, -135, 0x87c7eb05'aec1304f'b36f282e'83a7dc36_u128},
-        {Sign::POS, -135, 0x89ca0f4e'62f9c476'6ad14c3d'fa414391_u128},
-        {Sign::POS, -135, 0x8bcc3ba8'630c51f4'e8dd4ea0'd48b88e5_u128},
-        {Sign::POS, -135, 0x8dce7013'efca5d96'c02515af'e8caeb90_u128},
-        {Sign::POS, -135, 0x8fd0ac91'4a08795f'741ceaf3'349f3cf1_u128},
-        {Sign::POS, -135, 0x91d2f120'b29e44bb'83f7cd49'29d2c28c_u128},
-        {Sign::POS, -135, 0x93d53dc2'6a666cb1'795d03eb'c2fd03fa_u128},
-        {Sign::POS, -135, 0x95d79276'b23eac12'faf74f1d'1ad16acc_u128},
-        {Sign::POS, -135, 0x97d9ef3d'cb07cbad'e2de134f'72fee429_u128},
-        {Sign::POS, -135, 0x99dc5417'f5a5a27d'58d8dba6'cadac5d5_u128},
-        {Sign::POS, -135, 0x9bdec105'72ff15da'f07d90bc'5aae40a4_u128},
-        {Sign::POS, -135, 0x9d609804'6659ea6b'1deaf79d'9fc40374_u128},
-        {Sign::POS, -135, 0x9f631314'50b07988'7ba63e67'69b81999_u128},
-        {Sign::POS, -135, 0xa1659638'404d5f92'59ebfc93'35094e59_u128},
-        {Sign::POS, -135, 0xa3682170'7622f97a'16aae012'b5026f71_u128},
-        {Sign::POS, -135, 0xa56ab4bd'3326b378'ff5d4f2c'0e4b9cae_u128},
-        {Sign::POS, -135, 0xa76d501e'b8510941'855838b5'119dcb28_u128},
-        {Sign::POS, -135, 0xa96ff395'469d8630'75f70cbb'e9cf1603_u128},
-        {Sign::POS, -135, 0xab729f21'1f0ac57e'36a53ad4'd5541cc9_u128},
-        {Sign::POS, -135, 0xad7552c2'829a7270'04c5934e'c32d20d9_u128},
-        {Sign::POS, -135, 0xaf780e79'b2514889'3977e89a'ec59bfa2_u128},
-        {Sign::POS, -135, 0xb17ad246'ef3713bc'913d4e3d'c55c3e6e_u128},
-        {Sign::POS, -135, 0xb37d9e2a'7a56b09d'777b52a9'e70d8bcc_u128},
-        {Sign::POS, -135, 0xb5807224'94be0c91'55de916f'd30591de_u128},
-        {Sign::POS, -135, 0xb7834e35'7f7e2600'e79cfb37'be2861e4_u128},
-        {Sign::POS, -135, 0xb986325d'7bab0c89'90983104'd3805389_u128},
-        {Sign::POS, -135, 0xbb891e9c'ca5be12e'b860504b'aa6f984d_u128},
-        {Sign::POS, -135, 0xbd8c12f3'acaad68b'29178d6f'f5712b96_u128},
-        {Sign::POS, -135, 0xbf8f0f62'63b53102'7236fa47'ba19a198_u128},
-        {Sign::POS, -135, 0xc19213e9'309b46f2'4f34d64c'afcc50e3_u128},
-        {Sign::POS, -135, 0xc3952088'548080e4'120cc62e'b0a8db3e_u128},
-        {Sign::POS, -135, 0xc5983540'108b59be'11aa5084'779060e3_u128},
-        {Sign::POS, -135, 0xc79b5210'a5e55ef5'1c35fd62'36c8dcf1_u128},
-        {Sign::POS, -135, 0xc99e76fa'55bb30bd'ed4576a7'e4b878fe_u128},
-        {Sign::POS, -135, 0xcb20d7fa'3a336081'6caf4bb8'fd2c1131_u128},
-        {Sign::POS, -135, 0xcd240b10'753e78de'3f24a6cb'b09c654f_u128},
-        {Sign::POS, -135, 0xcf274640'7e0ff09f'78bc003b'b81e40f3_u128},
-        {Sign::POS, -135, 0xd12a898a'95dff002'56647301'edfd8e8b_u128},
-        {Sign::POS, -135, 0xd32dd4ee'fde9b2ef'28fe1c4d'04ca4ed9_u128},
-        {Sign::POS, -135, 0xd531286d'f76b892a'e1ea9ea6'cbf57379_u128},
-        {Sign::POS, -135, 0xd7348407'c3a6d688'a3832028'141a5cc2_u128},
-        {Sign::POS, -135, 0xd937e7bc'a3e0131b'557421dd'379d3ead_u128},
-        {Sign::POS, -135, 0xdb3b538c'd95ecb67'3cff8e87'a99bcaf0_u128},
-        {Sign::POS, -135, 0xdd3ec778'a56da093'99255ef3'4bd0801f_u128},
-        {Sign::POS, -135, 0xdf424380'495a489c'42b33220'abfa15cd_u128},
-        {Sign::POS, -135, 0xe145c7a4'06758e83'503b378f'aa97dbc0_u128},
-        {Sign::POS, -135, 0xe34953e4'1e135282'bdf2ca00'6f59b544_u128},
-        {Sign::POS, -135, 0xe54ce840'd18a8a3e'1979190a'f37ed16f_u128},
-        {Sign::POS, -135, 0xe75084ba'623540f4'31863ff7'cf898c9c_u128},
-        {Sign::POS, -135, 0xe9542951'117097b0'c983284f'60293647_u128},
-        {Sign::POS, -135, 0xeb57d605'209cc57e'510a969e'be03f804_u128},
-        {Sign::POS, -135, 0xed5b8ad6'd11d1797'9f53bffc'6d23fe30_u128},
-        {Sign::POS, -135, 0xef5f47c6'6457f199'b286c6e1'13337886_u128},
-        {Sign::POS, -135, 0xf0e21acd'd6e7d412'b6ed8085'2ae6fd63_u128},
-        {Sign::POS, -135, 0xf2e5e5f2'5450c5a2'df437fb0'f616082d_u128},
-        {Sign::POS, -135, 0xf4e9b935'685dbe0b'f237cff1'acb306b3_u128},
-        {Sign::POS, -135, 0xf6ed9497'5480b696'52dbfafb'4121a092_u128},
-        {Sign::POS, -135, 0xf8f17818'5a2ebfd9'0d816482'49cece4c_u128},
-        {Sign::POS, -135, 0xfaf563b8'bae001eb'ad95e6b0'b96903d3_u128},
-        {Sign::POS, -135, 0xfcf95778'b80fbc98'176cd568'87ac7fe9_u128},
-        {Sign::POS, -135, 0xfefd5358'933c478c'65f4c739'7f1f478d_u128},
+        {Sign::NEG, -135, MType({0xa1c6f3fc242ef8d0, 0x803faacac419abf2})},
+        {Sign::NEG, -136, MType({0xa225ebc02e6d9dd4, 0xfc834da16f0d9f57})},
+        {Sign::NEG, -136, MType({0xc33f6ad340ae18a9, 0xf88735ccc7433381})},
+        {Sign::NEG, -136, MType({0x70b2a4d38a242244, 0xf48b0e171249b6bc})},
+        {Sign::NEG, -136, MType({0x1d54819048b811b0, 0xf08ed67fd190e280})},
+        {Sign::NEG, -136, MType({0xaee5983701d2a02b, 0xec928f0686828706})},
+        {Sign::NEG, -136, MType({0x40abb8ab72afa2d2, 0xe89637aab2828aed})},
+        {Sign::NEG, -136, MType({0xdeb547a0d4a26ef9, 0xe499d06bd6eeead5})},
+        {Sign::NEG, -136, MType({0x39c5bdfbcf6087a0, 0xe09d5949751fb909})},
+        {Sign::NEG, -136, MType({0x53ea9bf152de635f, 0xdca0d2430e671d18})},
+        {Sign::NEG, -136, MType({0x25b820436f5f4352, 0xd8a43b582411537e})},
+        {Sign::NEG, -136, MType({0x3c2d13ea1d0be058, 0xd4a794883764ad41})},
+        {Sign::NEG, -136, MType({0x4f3cfa62bcb3ce3a, 0xd0aaddd2c9a18f95})},
+        {Sign::NEG, -136, MType({0xd0fff6cdf14a86c7, 0xccae17375c02737c})},
+        {Sign::NEG, -136, MType({0x7587b5f0453ac3d2, 0xc8b140b56fbbe56a})},
+        {Sign::NEG, -136, MType({0xb358ad16dfd0d085, 0xc4b45a4c85fc84e2})},
+        {Sign::NEG, -136, MType({0x3c86fdce5dbe7314, 0xc0b763fc1fed041d})},
+        {Sign::NEG, -136, MType({0x70764e46ac18a96d, 0xbcba5dc3beb027a6})},
+        {Sign::NEG, -136, MType({0xc63be62b8f285882, 0xb8bd47a2e362c600})},
+        {Sign::NEG, -136, MType({0x72e7b5a386e5e31b, 0xb3c0d59a244325a4})},
+        {Sign::NEG, -136, MType({0xc3ea2cd93f316b34, 0xafc39bac66434f27})},
+        {Sign::NEG, -136, MType({0x1dfb11a7cc892843, 0xabc651d491a7b438})},
+        {Sign::NEG, -136, MType({0xfc679a28e9d9f212, 0xa7c8f8122773f38d})},
+        {Sign::NEG, -136, MType({0xe7bc977eeec42254, 0xa3cb8e64a8a5bbe6})},
+        {Sign::NEG, -136, MType({0xb20f215bd3b58c61, 0x9fce14cb9634cba6})},
+        {Sign::NEG, -136, MType({0xabe2862508d67a98, 0x9bd08b467112f078})},
+        {Sign::NEG, -136, MType({0xd1aacedcefe9d377, 0x97d2f1d4ba2c06f0})},
+        {Sign::NEG, -136, MType({0xf1eb25e77d05f58d, 0x93d54875f265fa2c})},
+        {Sign::NEG, -136, MType({0xcbef6fac33691e95, 0x8fd78f299aa0c375})},
+        {Sign::NEG, -136, MType({0x2720640462a0f8ad, 0x8bd9c5ef33b669e0})},
+        {Sign::NEG, -136, MType({0xe2f1775134c8da75, 0x87dbecc63e7b01ed})},
+        {Sign::NEG, -136, MType({0xff67e201c8c50d67, 0x83de03ae3bbcad2e})},
+        {Sign::NEG, -137, MType({0x3c742a7c76356396, 0xffc0154d588733c5})},
+        {Sign::NEG, -137, MType({0xf90dd6b24aa686ec, 0xf7c4035e21a4052f})},
+        {Sign::NEG, -137, MType({0xca47c52b7d7ffce2, 0xefc7d18dd4485b9e})},
+        {Sign::NEG, -137, MType({0x3703617ad3d8311f, 0xe7cb7fdb71e0db36})},
+        {Sign::NEG, -137, MType({0x7e4cfbd830393b88, 0xdfcf0e45fbce3e80})},
+        {Sign::NEG, -137, MType({0x4f7a29cf0fc2c38e, 0xd7d27ccc736555af})},
+        {Sign::NEG, -137, MType({0x7370ae83f9e72748, 0xcfd5cb6dd9ef05dd})},
+        {Sign::NEG, -137, MType({0x671486eb4cd76f65, 0xc7d8fa2930a84850})},
+        {Sign::NEG, -137, MType({0xe6dbb624f9739782, 0xbfdc08fd78c229b9})},
+        {Sign::NEG, -137, MType({0x6b866e09e57d9079, 0xb7def7e9b361c979})},
+        {Sign::NEG, -137, MType({0x97fa2fd0c9dc723e, 0xafe1c6ece1a058dd})},
+        {Sign::NEG, -137, MType({0x983e80897cf1e60f, 0xa7e47606048b1a65})},
+        {Sign::NEG, -137, MType({0x7199cd06ae5d39b3, 0x9fe705341d236102})},
+        {Sign::NEG, -137, MType({0x43cd18a72a051a96, 0x97e974762c5e8f58})},
+        {Sign::NEG, -137, MType({0x7b6d1248c3e1fd40, 0x8febc3cb332616ff})},
+        {Sign::NEG, -137, MType({0xf5572a8814c703af, 0x87edf332325777c5})},
+        {Sign::NEG, -138, MType({0x26828c92649a3a39, 0xffe0055455887de0})},
+        {Sign::NEG, -138, MType({0x82c550bd1216d82a, 0xefe3e4643a640cf3})},
+        {Sign::NEG, -138, MType({0xda6959f7f0e01bf0, 0xdfe7839214b4e8ae})},
+        {Sign::NEG, -138, MType({0xda93e2fa85a8f214, 0xcfeae2dbe5d6736d})},
+        {Sign::NEG, -138, MType({0xb47505bfa5a03b06, 0xbfee023faf0c2480})},
+        {Sign::NEG, -138, MType({0xb1475a5180a43520, 0xaff0e1bb718186ad})},
+        {Sign::NEG, -138, MType({0xa8740b91c95df537, 0x9ff3814d2e4a36b2})},
+        {Sign::NEG, -138, MType({0x57d895d35921b59c, 0x8ff5e0f2e661e1c6})},
+        {Sign::NEG, -139, MType({0x3c56c598c659c2a3, 0xfff0015535588833})},
+        {Sign::NEG, -139, MType({0x2ef8ec33ed9d782a, 0xdff3c0e497ea4eb1})},
+        {Sign::NEG, -139, MType({0x379eba7e6465ff63, 0xbff7008ff5e0c257})},
+        {Sign::NEG, -139, MType({0x3f972b783fcab757, 0x9ff9c0535073a370})},
+        {Sign::NEG, -140, MType({0xde026e271ee0549d, 0xfff8005551558885})},
+        {Sign::NEG, -140, MType({0xeceb47ea01f6c632, 0xbffb8023febc0c25})},
+        {Sign::NEG, -141, MType({0x7333c57857e1ed52, 0xfffc001554d55888})},
+        {Sign::NEG, -142, MType({0x87dde026fa704374, 0xfffe000555455588})},
+        {Sign::NEG, 0, MType({0x0, 0x0})},
+        {Sign::POS, -141, MType({0x44999abe2fe2cc65, 0x80010002aab2aac4})},
+        {Sign::POS, -140, MType({0x4eef381581464ccb, 0x8002000aaaeaac44})},
+        {Sign::POS, -140, MType({0xdfeb485085f6f454, 0xc004802401440c26})},
+        {Sign::POS, -139, MType({0x99abe3be3a1c6e93, 0x8004002aacaac445})},
+        {Sign::POS, -139, MType({0x6bc1e20eac8448b4, 0xa00640535a37a37a})},
+        {Sign::POS, -139, MType({0x979eedc064c242fd, 0xc00900900a20c275})},
+        {Sign::POS, -139, MType({0xc72446cc1bf728bd, 0xe00c40e4bd6e4efd})},
+        {Sign::POS, -138, MType({0xf381b821bbb569e5, 0x800800aabaac446e})},
+        {Sign::POS, -138, MType({0x569b26aaa485ea5c, 0x900a20f319a3e273})},
+        {Sign::POS, -138, MType({0x2dcf56c83c80b028, 0xa00c814d7c6a37f8})},
+        {Sign::POS, -138, MType({0x5f69768284463b9b, 0xb00f21bbe3e388ee})},
+        {Sign::POS, -138, MType({0xb48ea6c05e2773a1, 0xc0120240510c284c})},
+        {Sign::POS, -138, MType({0x14d9d76196d8043a, 0xd01522dcc4f87991})},
+        {Sign::POS, -138, MType({0xe016a611a4415d72, 0xe018839340d4f241})},
+        {Sign::POS, -138, MType({0x661e135f49a47c40, 0xf01c2465c5e61b6f})},
+        {Sign::POS, -137, MType({0xbe6bf0fa435e8383, 0x801002ab2ac4499a})},
+        {Sign::POS, -137, MType({0x9a31ba0cbc030353, 0x881213337898871e})},
+        {Sign::POS, -137, MType({0x54b57dfe0c4c840f, 0x901443cccd362c9f})},
+        {Sign::POS, -137, MType({0x7ad1e9c315328f7e, 0x98169478296fad41})},
+        {Sign::POS, -137, MType({0x1f3f686cf3d6be22, 0xa01905368e2389b3})},
+        {Sign::POS, -137, MType({0xf105b66ec4703ede, 0xa81b9608fc3c50ec})},
+        {Sign::POS, -137, MType({0x610848c68df4d233, 0xb01e46f074b0a0f3})},
+        {Sign::POS, -137, MType({0xd6aef30cd312169a, 0xb82117edf8832797})},
+        {Sign::POS, -137, MType({0xf3ac379608053d9d, 0xc024090288c2a339})},
+        {Sign::POS, -137, MType({0xe6e2acf8f4d4c24a, 0xc8271a2f2689e388})},
+        {Sign::POS, -137, MType({0xce6ae474d860359f, 0xd02a4b74d2ffca44})},
+        {Sign::POS, -137, MType({0x28bb3cd9f2a65fb5, 0xd82d9cd48f574c00})},
+        {Sign::POS, -137, MType({0x54f30dbef38a8066, 0xe0310e4f5ccf70e1})},
+        {Sign::POS, -137, MType({0x224a96f5a7471c46, 0xe8349fe63cb35564})},
+        {Sign::POS, -137, MType({0x6ea920591aa02e1b, 0xf038519a305a2b1b})},
+        {Sign::POS, -137, MType({0xd462b63756c87e80, 0xf83c236c39273972})},
+        {Sign::POS, -136, MType({0x338f77605fe77f2a, 0x80200aaeac44ef38})},
+        {Sign::POS, -136, MType({0x3ff51287882500ed, 0x842213b747fec7bb})},
+        {Sign::POS, -136, MType({0xcc394b3ef0ebeb12, 0x88242cd07084ed02})},
+        {Sign::POS, -136, MType({0x1ab9679b55f78a6b, 0x8c2655faa6a1323f})},
+        {Sign::POS, -136, MType({0x7025697d10af0436, 0x90288f366b237771})},
+        {Sign::POS, -136, MType({0x17e4b7ac6c600cb4, 0x942ad8843ee1a9cd})},
+        {Sign::POS, -136, MType({0x7013925a9a8da7f3, 0x982d31e4a2b7c418})},
+        {Sign::POS, -136, MType({0xfd1a09c848e3950e, 0x9c2f9b581787cf0d})},
+        {Sign::POS, -136, MType({0x84dd2de6e3d90a37, 0xa03214df1e39e1bd})},
+        {Sign::POS, -136, MType({0x318b2ddd9d0a33b4, 0xa4349e7a37bc21ed})},
+        {Sign::POS, -136, MType({0xbc031e6f5acfd4a8, 0xa8373829e502c47a})},
+        {Sign::POS, -136, MType({0x9dd91e52c79fd070, 0xac39e1eea7080dbc})},
+        {Sign::POS, -136, MType({0x4af78fa1cb48a12d, 0xb03c9bc8fecc51e3})},
+        {Sign::POS, -136, MType({0x72de1d99ce252efd, 0xb43f65b96d55f55a})},
+        {Sign::POS, -136, MType({0xefb1dbe721934877, 0xb74187bc8ccffa84})},
+        {Sign::POS, -136, MType({0xb4b080f230c87598, 0xbb446dd4d9bca499})},
+        {Sign::POS, -136, MType({0xda6a7cd19c7fa4f2, 0xbf476404a05f88f2})},
+        {Sign::POS, -136, MType({0xdf00e3783b50ecfb, 0xc34a6a4c61d5cc3c})},
+        {Sign::POS, -136, MType({0xda2e5e02ab4e183c, 0xc74d80ac9f42a52d})},
+        {Sign::POS, -136, MType({0xea5f6ee99d30c626, 0xcb50a725d9cf5ce6})},
+        {Sign::POS, -136, MType({0xa96d5956531d7d8b, 0xcf53ddb892ab4f55})},
+        {Sign::POS, -136, MType({0xa8fc636eb36afa75, 0xd35724654b0beb95})},
+        {Sign::POS, -136, MType({0xf67e2b827bfc4421, 0xd75a7b2c842cb451})},
+        {Sign::POS, -136, MType({0xa6d8c817516303e6, 0xdb5de20ebf4f4026})},
+        {Sign::POS, -136, MType({0x69b36ae5962e85f4, 0xdf61590c7dbb3a02})},
+        {Sign::POS, -136, MType({0x24693eec2a831cc3, 0xe364e02640be6188})},
+        {Sign::POS, -136, MType({0x94a339d56a55ab4a, 0xe768775c89ac8b70})},
+        {Sign::POS, -136, MType({0xfa9998fbf9703bf4, 0xeb6c1eafd9dfa1eb})},
+        {Sign::POS, -136, MType({0xcafdc27227b71eaa, 0xef6fd620b2b7a503})},
+        {Sign::POS, -136, MType({0x688d4282f6026aa3, 0xf3739daf959aaafc})},
+        {Sign::POS, -136, MType({0xe54e9e3804464cdd, 0xf777755d03f4e0b6})},
+        {Sign::POS, -136, MType({0xcb78b383f4b59dce, 0xfb7b5d297f388a12})},
+        {Sign::POS, -136, MType({0xee055fc515062c04, 0xff7f551588de024f})},
+        {Sign::POS, -135, MType({0x207812b43382acdd, 0x81c1ae90d131de38})},
+        {Sign::POS, -135, MType({0xdc90c4c4b61f3a87, 0x83c3baa726a721cc})},
+        {Sign::POS, -135, MType({0x1a03f13fb2c978b1, 0x85c5cece05941dbc})},
+        {Sign::POS, -135, MType({0xb36f282e83a7dc36, 0x87c7eb05aec1304f})},
+        {Sign::POS, -135, MType({0x6ad14c3dfa414391, 0x89ca0f4e62f9c476})},
+        {Sign::POS, -135, MType({0xe8dd4ea0d48b88e5, 0x8bcc3ba8630c51f4})},
+        {Sign::POS, -135, MType({0xc02515afe8caeb90, 0x8dce7013efca5d96})},
+        {Sign::POS, -135, MType({0x741ceaf3349f3cf1, 0x8fd0ac914a08795f})},
+        {Sign::POS, -135, MType({0x83f7cd4929d2c28c, 0x91d2f120b29e44bb})},
+        {Sign::POS, -135, MType({0x795d03ebc2fd03fa, 0x93d53dc26a666cb1})},
+        {Sign::POS, -135, MType({0xfaf74f1d1ad16acc, 0x95d79276b23eac12})},
+        {Sign::POS, -135, MType({0xe2de134f72fee429, 0x97d9ef3dcb07cbad})},
+        {Sign::POS, -135, MType({0x58d8dba6cadac5d5, 0x99dc5417f5a5a27d})},
+        {Sign::POS, -135, MType({0xf07d90bc5aae40a4, 0x9bdec10572ff15da})},
+        {Sign::POS, -135, MType({0x1deaf79d9fc40374, 0x9d6098046659ea6b})},
+        {Sign::POS, -135, MType({0x7ba63e6769b81999, 0x9f63131450b07988})},
+        {Sign::POS, -135, MType({0x59ebfc9335094e59, 0xa1659638404d5f92})},
+        {Sign::POS, -135, MType({0x16aae012b5026f71, 0xa36821707622f97a})},
+        {Sign::POS, -135, MType({0xff5d4f2c0e4b9cae, 0xa56ab4bd3326b378})},
+        {Sign::POS, -135, MType({0x855838b5119dcb28, 0xa76d501eb8510941})},
+        {Sign::POS, -135, MType({0x75f70cbbe9cf1603, 0xa96ff395469d8630})},
+        {Sign::POS, -135, MType({0x36a53ad4d5541cc9, 0xab729f211f0ac57e})},
+        {Sign::POS, -135, MType({0x4c5934ec32d20d9, 0xad7552c2829a7270})},
+        {Sign::POS, -135, MType({0x3977e89aec59bfa2, 0xaf780e79b2514889})},
+        {Sign::POS, -135, MType({0x913d4e3dc55c3e6e, 0xb17ad246ef3713bc})},
+        {Sign::POS, -135, MType({0x777b52a9e70d8bcc, 0xb37d9e2a7a56b09d})},
+        {Sign::POS, -135, MType({0x55de916fd30591de, 0xb580722494be0c91})},
+        {Sign::POS, -135, MType({0xe79cfb37be2861e4, 0xb7834e357f7e2600})},
+        {Sign::POS, -135, MType({0x90983104d3805389, 0xb986325d7bab0c89})},
+        {Sign::POS, -135, MType({0xb860504baa6f984d, 0xbb891e9cca5be12e})},
+        {Sign::POS, -135, MType({0x29178d6ff5712b96, 0xbd8c12f3acaad68b})},
+        {Sign::POS, -135, MType({0x7236fa47ba19a198, 0xbf8f0f6263b53102})},
+        {Sign::POS, -135, MType({0x4f34d64cafcc50e3, 0xc19213e9309b46f2})},
+        {Sign::POS, -135, MType({0x120cc62eb0a8db3e, 0xc3952088548080e4})},
+        {Sign::POS, -135, MType({0x11aa5084779060e3, 0xc5983540108b59be})},
+        {Sign::POS, -135, MType({0x1c35fd6236c8dcf1, 0xc79b5210a5e55ef5})},
+        {Sign::POS, -135, MType({0xed4576a7e4b878fe, 0xc99e76fa55bb30bd})},
+        {Sign::POS, -135, MType({0x6caf4bb8fd2c1131, 0xcb20d7fa3a336081})},
+        {Sign::POS, -135, MType({0x3f24a6cbb09c654f, 0xcd240b10753e78de})},
+        {Sign::POS, -135, MType({0x78bc003bb81e40f3, 0xcf2746407e0ff09f})},
+        {Sign::POS, -135, MType({0x56647301edfd8e8b, 0xd12a898a95dff002})},
+        {Sign::POS, -135, MType({0x28fe1c4d04ca4ed9, 0xd32dd4eefde9b2ef})},
+        {Sign::POS, -135, MType({0xe1ea9ea6cbf57379, 0xd531286df76b892a})},
+        {Sign::POS, -135, MType({0xa3832028141a5cc2, 0xd7348407c3a6d688})},
+        {Sign::POS, -135, MType({0x557421dd379d3ead, 0xd937e7bca3e0131b})},
+        {Sign::POS, -135, MType({0x3cff8e87a99bcaf0, 0xdb3b538cd95ecb67})},
+        {Sign::POS, -135, MType({0x99255ef34bd0801f, 0xdd3ec778a56da093})},
+        {Sign::POS, -135, MType({0x42b33220abfa15cd, 0xdf424380495a489c})},
+        {Sign::POS, -135, MType({0x503b378faa97dbc0, 0xe145c7a406758e83})},
+        {Sign::POS, -135, MType({0xbdf2ca006f59b544, 0xe34953e41e135282})},
+        {Sign::POS, -135, MType({0x1979190af37ed16f, 0xe54ce840d18a8a3e})},
+        {Sign::POS, -135, MType({0x31863ff7cf898c9c, 0xe75084ba623540f4})},
+        {Sign::POS, -135, MType({0xc983284f60293647, 0xe9542951117097b0})},
+        {Sign::POS, -135, MType({0x510a969ebe03f804, 0xeb57d605209cc57e})},
+        {Sign::POS, -135, MType({0x9f53bffc6d23fe30, 0xed5b8ad6d11d1797})},
+        {Sign::POS, -135, MType({0xb286c6e113337886, 0xef5f47c66457f199})},
+        {Sign::POS, -135, MType({0xb6ed80852ae6fd63, 0xf0e21acdd6e7d412})},
+        {Sign::POS, -135, MType({0xdf437fb0f616082d, 0xf2e5e5f25450c5a2})},
+        {Sign::POS, -135, MType({0xf237cff1acb306b3, 0xf4e9b935685dbe0b})},
+        {Sign::POS, -135, MType({0x52dbfafb4121a092, 0xf6ed94975480b696})},
+        {Sign::POS, -135, MType({0xd81648249cece4c, 0xf8f178185a2ebfd9})},
+        {Sign::POS, -135, MType({0xad95e6b0b96903d3, 0xfaf563b8bae001eb})},
+        {Sign::POS, -135, MType({0x176cd56887ac7fe9, 0xfcf95778b80fbc98})},
+        {Sign::POS, -135, MType({0x65f4c7397f1f478d, 0xfefd5358933c478c})},
     },
     // -log(r) for the third step, generated by SageMath with:
     //
@@ -391,170 +388,170 @@ alignas(64) const LogRR LOG_TABLE = {
     //   r = 2^-21 * round( 2^21 / (1 + i*2^(-21)) );
     //   s, m, e = RealField(128)(r).log().sign_mantissa_exponent();
     //   print("{Sign::POS," if (s == -1) else "{Sign::NEG,", e, ",
-    //         format_hex(m), "},");
+    //         MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})},");
     /* .step_3 = */
     {
-        {Sign::NEG, -142, 0x9fff3801'4d52e45a'374b2940'76d669c3_u128},
-        {Sign::NEG, -142, 0x9dff3cf9'40fad85a'7f6f05dc'dbeb776e_u128},
-        {Sign::NEG, -142, 0x9bff41e1'34f1cb36'3d55e21d'41bbadf9_u128},
-        {Sign::NEG, -142, 0x99ff46b9'2936bcf4'ccdba2d5'4aadbc5c_u128},
-        {Sign::NEG, -142, 0x97ff4b81'1dc8ad9d'71dd16d3'073f79b2_u128},
-        {Sign::NEG, -142, 0x95ff5039'12a69d37'5837f3df'1a58dd48_u128},
-        {Sign::NEG, -142, 0x93ff54e1'07cf8bc9'93cad3bc'dd26fd6d_u128},
-        {Sign::NEG, -142, 0x91ff5978'fd42795b'2075312a'827f14fa_u128},
-        {Sign::NEG, -142, 0x8fff5e00'f2fe65f2'e21764e1'39c98f60_u128},
-        {Sign::NEG, -142, 0x8dff6278'e9025197'a492a295'51751b4c_u128},
-        {Sign::NEG, -142, 0x8bff66e0'df4d3c50'1bc8f5f6'58f1c3a2_u128},
-        {Sign::NEG, -142, 0x89ff6b38'd5de2622'e39d3faf'42340ed7_u128},
-        {Sign::NEG, -142, 0x87ff6f80'ccb40f16'7ff33266'82c02485_u128},
-        {Sign::NEG, -142, 0x85ff73b8'c3cdf731'5caf4fbe'343cf928_u128},
-        {Sign::NEG, -142, 0x83ff77e0'bb2ade79'cdb6e554'348f7fe8_u128},
-        {Sign::NEG, -142, 0x81ff7bf8'b2c9c4f6'0ef009c2'457de25d_u128},
-        {Sign::NEG, -143, 0xffff0001'55535558'8883333c'57b57c74_u128},
-        {Sign::NEG, -143, 0xfbff07f1'45931f44'f32668f3'9c70d183_u128},
-        {Sign::NEG, -143, 0xf7ff0fc1'3650e7bd'459a73c6'a6486fe3_u128},
-        {Sign::NEG, -143, 0xf3ff1771'278aaecd'37b18cca'7dd3a29f_u128},
-        {Sign::NEG, -143, 0xefff1f01'193e7480'513f610d'21bcfc78_u128},
-        {Sign::NEG, -143, 0xebff2671'0b6a38e1'ea190b95'c0690b7b_u128},
-        {Sign::NEG, -143, 0xe7ff2dc0'fe0bfbfd'2a150f64'f0ad1743_u128},
-        {Sign::NEG, -143, 0xe3ff34f0'f121bddd'090b5174'e995e9d1_u128},
-        {Sign::NEG, -143, 0xdfff3c00'e4a97e8c'4ed512b9'b93ea2bf_u128},
-        {Sign::NEG, -143, 0xdbff42f0'd8a13e15'934cea21'7ab794a2_u128},
-        {Sign::NEG, -143, 0xd7ff49c0'cd06fc83'3e4ebe94'8afd2c76_u128},
-        {Sign::NEG, -143, 0xd3ff5070'c1d8b9df'87b7c0f5'bcfee2e1_u128},
-        {Sign::NEG, -143, 0xcfff5700'b7147634'77666622'8cb6371b_u128},
-        {Sign::NEG, -143, 0xcbff5d70'acb8318b'e53a60f3'514db358_u128},
-        {Sign::NEG, -143, 0xc7ff63c0'a2c1ebef'79149c3b'6e57fa86_u128},
-        {Sign::NEG, -143, 0xc3ff69f0'992fa568'aad734c9'8416df2a_u128},
-        {Sign::NEG, -143, 0xbfff7000'8fff5e00'c2657367'9ed28334_u128},
-        {Sign::NEG, -143, 0xbbff75f0'872f15c0'd7a3c6db'6540809f_u128},
-        {Sign::NEG, -143, 0xb7ff7bc0'7ebcccb1'd277bde6'45fb1aad_u128},
-        {Sign::NEG, -143, 0xb3ff8170'76a682dc'6ac80145'a4087793_u128},
-        {Sign::NEG, -143, 0xafff8700'6eea3849'287c4db3'0271e265_u128},
-        {Sign::NEG, -143, 0xabff8c70'6785ed00'637d6de4'2eeb151e_u128},
-        {Sign::NEG, -143, 0xa7ff91c0'6077a10a'43b5348b'6b898a8c_u128},
-        {Sign::NEG, -143, 0xa3ff96f0'59bd546e'c10e7657'978bd7f6_u128},
-        {Sign::NEG, -143, 0x9fff9c00'53550735'a37503f4'57310e59_u128},
-        {Sign::NEG, -143, 0x9bffa0f0'4d3cb966'82d5a40a'3aa022ff_u128},
-        {Sign::NEG, -143, 0x97ffa5c0'47726b08'c71e0d3e'e3df5f4d_u128},
-        {Sign::NEG, -143, 0x93ffaa70'41f41c23'a83ce035'2bdbd79b_u128},
-        {Sign::NEG, -143, 0x8fffaf00'3cbfccbe'2e21a18d'4680e8e4_u128},
-        {Sign::NEG, -143, 0x8bffb370'37d37cdf'30bcb3e4'e5dfbd28_u128},
-        {Sign::NEG, -143, 0x87ffb7c0'332d2c8d'57ff51d7'5c66d64a_u128},
-        {Sign::NEG, -143, 0x83ffbbf0'2ecadbcf'1bdb87fd'be299f43_u128},
-        {Sign::NEG, -144, 0xffff8000'55551555'88885dde'02700703_u128},
-        {Sign::NEG, -144, 0xf7ff87e0'4d94724c'd259ca80'3a0c1870_u128},
-        {Sign::NEG, -144, 0xefff8f80'464fce8f'e5141308'51c7070a_u128},
-        {Sign::NEG, -144, 0xe7ff96e0'3f832a2a'30a16898'f3073a64_u128},
-        {Sign::NEG, -144, 0xdfff9e00'392a8526'c4ed6451'7b2949ce_u128},
-        {Sign::NEG, -144, 0xd7ffa4e0'3341df90'51e4fb4e'32cf6350_u128},
-        {Sign::NEG, -144, 0xcfffab80'2dc53971'277672a8'8350bcce_u128},
-        {Sign::NEG, -144, 0xc7ffb1e0'28b092d3'35915377'2a490f06_u128},
-        {Sign::NEG, -144, 0xbfffb800'23ffebc0'0c265ece'6b481a0e_u128},
-        {Sign::NEG, -144, 0xb7ffbde0'1faf4440'db2781c0'3fa132f6_u128},
-        {Sign::NEG, -144, 0xafffc380'1bba9c5e'7287c95c'845ada33_u128},
-        {Sign::NEG, -144, 0xa7ffc8e0'181df421'423b56b1'263e5a77_u128},
-        {Sign::NEG, -144, 0x9fffce00'14d54b91'5a3752ca'4c076fa3_u128},
-        {Sign::NEG, -144, 0x97ffd2e0'11dca2b6'6a71e2b2'7eb3f573_u128},
-        {Sign::NEG, -144, 0x8fffd780'0f2ff997'c2e21b72'cff39d8f_u128},
-        {Sign::NEG, -144, 0x87ffdbe0'0ccb503c'537ff612'feb7ac9e_u128},
-        {Sign::NEG, -145, 0xffffc000'15554d55'58888733'33c57c18_u128},
-        {Sign::NEG, -145, 0xefffc7c0'1193f9d1'fa514218'42311c42_u128},
-        {Sign::NEG, -145, 0xdfffcf00'0e4aa5fa'2c4ed6de'475b942c_u128},
-        {Sign::NEG, -145, 0xcfffd5c0'0b7151d8'ce77678c'bb6fcb88_u128},
-        {Sign::NEG, -145, 0xbfffdc00'08fffd78'00c26629'a679ed3b_u128},
-        {Sign::NEG, -145, 0xafffe1c0'06eea8e1'23287cb9'd3072728_u128},
-        {Sign::NEG, -145, 0x9fffe700'0535541c'd5a37540'fd057315_u128},
-        {Sign::NEG, -145, 0x8fffebc0'03cbff32'f82e21c1'fce36810_u128},
-        {Sign::NEG, -146, 0xffffe000'05555455'5588887d'dde02702_u128},
-        {Sign::NEG, -146, 0xdfffe780'0392aa14'9ac4ed72'adf5b295_u128},
-        {Sign::NEG, -146, 0xbfffee00'023fffaf'000c2664'8066b482_u128},
-        {Sign::NEG, -146, 0x9ffff380'014d552e'455a3754'b292c077_u128},
-        {Sign::NEG, -147, 0xfffff000'01555535'55588888'33333c58_u128},
-        {Sign::NEG, -147, 0xbffff700'008ffff5'e000c266'5736679f_u128},
-        {Sign::NEG, -148, 0xfffff800'00555551'55558888'85ddde02_u128},
-        {Sign::NEG, -149, 0xfffffc00'00155554'd5555888'88733334_u128},
-        {Sign::POS, 0, 0_u128},
-        {Sign::POS, -148, 0x80000200'000aaaaa'eaaaac44'444eeeef_u128},
-        {Sign::POS, -147, 0x80000400'002aaaac'aaaac444'459999ac_u128},
-        {Sign::POS, -147, 0xc0000900'0090000a'2000c266'7596679f_u128},
-        {Sign::POS, -146, 0x80000800'00aaaaba'aaac4444'6eeef381_u128},
-        {Sign::POS, -146, 0xa0000c80'014d557c'655a3755'f81815cc_u128},
-        {Sign::POS, -146, 0xc0001200'02400051'000c2668'4c66b482_u128},
-        {Sign::POS, -146, 0xe0001880'0392ab40'bac4ed7c'40fb07eb_u128},
-        {Sign::POS, -145, 0x80001000'02aaab2a'aac44449'999abe2c_u128},
-        {Sign::POS, -145, 0x90001440'03cc00cd'082e21d7'9cbb6812_u128},
-        {Sign::POS, -145, 0xa0001900'0535568d'd5a37569'adb01dc3_u128},
-        {Sign::POS, -145, 0xb0001e40'06eeac74'33287d01'e8c9d1d9_u128},
-        {Sign::POS, -145, 0xc0002400'09000288'00c266a3'2679ed48_u128},
-        {Sign::POS, -145, 0xd0002a40'0b7158d1'de776851'22b2764b_u128},
-        {Sign::POS, -145, 0xe0003100'0e4aaf5b'2c4ed810'a8063f03_u128},
-        {Sign::POS, -145, 0xf0003840'1194062e'0a5143e7'be891c8f_u128},
-        {Sign::POS, -144, 0x80002000'0aaaaeaa'ac4444ee'ef3813a1_u128},
-        {Sign::POS, -144, 0x88002420'0ccb5a6e'5b7ff7fe'1339025b_u128},
-        {Sign::POS, -144, 0x90002880'0f300668'42e21e26'caf39e33_u128},
-        {Sign::POS, -144, 0x98002d20'11dcb29e'f271e66f'a5554bc6_u128},
-        {Sign::POS, -144, 0xa0003200'14d55f19'5a3757e0'615cc676_u128},
-        {Sign::POS, -144, 0xa8003720'181e0bde'ca3b5d82'10ca5cab_u128},
-        {Sign::POS, -144, 0xb0003c80'1bbab8f6'f287d25f'3cb032bb_u128},
-        {Sign::POS, -144, 0xb8004220'1faf6669'e3278d84'0be28cdb_u128},
-        {Sign::POS, -144, 0xc0004800'24001440'0c266dfe'6b482076_u128},
-        {Sign::POS, -144, 0xc8004e20'28b0c282'3d9166de'380a6d3d_u128},
-        {Sign::POS, -144, 0xd0005480'2dc57139'a7768b35'6ba61e4b_u128},
-        {Sign::POS, -144, 0xd8005b20'3342206f'd9e51a18'49db73c1_u128},
-        {Sign::POS, -144, 0xe0006200'392ad02e'c4ed8a9d'907eb521_u128},
-        {Sign::POS, -144, 0xe8006920'3f838080'b8a197de'a928acd7_u128},
-        {Sign::POS, -144, 0xf0007080'46503170'65144cf7'dcc72d3b_u128},
-        {Sign::POS, -144, 0xf8007820'4d94e308'da5a1108'890d9f6a_u128},
-        {Sign::POS, -143, 0x80004000'2aaacaaa'c4445999'abe2ce2c_u128},
-        {Sign::POS, -143, 0x84004410'2ecb2431'1fdbbb4f'3bffc832_u128},
-        {Sign::POS, -143, 0x88004840'332d7e1d'97ff8f39'ec91b4ee_u128},
-        {Sign::POS, -143, 0x8c004c90'37d3d876'74bcfcf0'b3f0a95d_u128},
-        {Sign::POS, -143, 0x90005100'3cc03342'2e21f80c'a6813aff_u128},
-        {Sign::POS, -143, 0x94005590'41f48e87'6c3d4629'170ce87f_u128},
-        {Sign::POS, -143, 0x98005a40'4772ea4d'071e84e3'b80a8881_u128},
-        {Sign::POS, -143, 0x9c005f10'4d3d469a'06d62fdc'bdd6bec3_u128},
-        {Sign::POS, -143, 0xa0006400'5355a375'a375a6b7'01dc77c0_u128},
-        {Sign::POS, -143, 0xa4006910'59be00e7'450f3318'26ad6b05_u128},
-        {Sign::POS, -143, 0xa8006e40'60785ef6'83b60ea8'bd0aa459_u128},
-        {Sign::POS, -143, 0xac007390'6786bdab'277e6914'69dd13f5_u128},
-        {Sign::POS, -143, 0xb0007900'6eeb1d0d'287d6e0a'0d1e25eb_u128},
-        {Sign::POS, -143, 0xb4007e90'76a77d24'aec94b3b'e9b060f5_u128},
-        {Sign::POS, -143, 0xb8008440'7ebdddfa'1279365f'ce280cce_u128},
-        {Sign::POS, -143, 0xbc008a10'87303f95'dba5732f'3e83e04a_u128},
-        {Sign::POS, -143, 0xc0009000'9000a200'c2675967'9ed5b754_u128},
-        {Sign::POS, -143, 0xc4009610'99310543'aed95aca'5edb5109_u128},
-        {Sign::POS, -143, 0xc8009c40'a2c36967'b917091d'2687160f_u128},
-        {Sign::POS, -143, 0xcc00a290'acb9ce76'293d1c2a'0378e75d_u128},
-        {Sign::POS, -143, 0xd000a900'b7163478'776977bf'9766f5a7_u128},
-        {Sign::POS, -143, 0xd400af90'c1da9b78'4bbb31b1'4776a18b_u128},
-        {Sign::POS, -143, 0xd800b640'cd09037f'7e5297d7'6c8564ba_u128},
-        {Sign::POS, -143, 0xdc00bd10'd8a36c98'1751360f'8461c447_u128},
-        {Sign::POS, -143, 0xe000c400'e4abd6cc'4ed9dc3c'63f44c41_u128},
-        {Sign::POS, -143, 0xe400cb10'f1244226'8d10a446'6a5894d5_u128},
-        {Sign::POS, -143, 0xe800d240'fe0eaeb1'6a1af81b'b4e6510e_u128},
-        {Sign::POS, -143, 0xec00d991'0b6d1c77'ae1f97b0'542a677a_u128},
-        {Sign::POS, -143, 0xf000e101'19418b84'51469efe'81d014cc_u128},
-        {Sign::POS, -143, 0xf400e891'278dfbe2'7bb98c06'd77a18b4_u128},
-        {Sign::POS, -143, 0xf800f041'36546d9d'85a344d0'868bed17_u128},
-        {Sign::POS, -143, 0xfc00f811'4596e0c0'f7301d69'90e307cc_u128},
-        {Sign::POS, -142, 0x80008000'aaabaaac'4446eef3'8140138f_u128},
-        {Sign::POS, -142, 0x82008408'b2cbe5b8'10f5e432'96105497_u128},
-        {Sign::POS, -142, 0x84008820'bb2d2189'edbd4f83'ef63f730_u128},
-        {Sign::POS, -142, 0x86008c48'c3d05e27'feb654fd'541c638e_u128},
-        {Sign::POS, -142, 0x88009080'ccb69b98'7ffadeb8'882f7674_u128},
-        {Sign::POS, -142, 0x8a0094c8'd5e0d9e1'c5a59fd3'6bd44397_u128},
-        {Sign::POS, -142, 0x8c009920'df50190a'3bd21770'1b27dddb_u128},
-        {Sign::POS, -142, 0x8e009d88'e9055918'669c93b5'0e4a2595_u128},
-        {Sign::POS, -142, 0x9000a200'f3019a12'e22234cd'39f29cd4_u128},
-        {Sign::POS, -142, 0x9200a688'fd45dc00'6280efe8'307d41d9_u128},
-        {Sign::POS, -142, 0x9400ab21'07d31ee7'b3d7923a'436f6fc4_u128},
-        {Sign::POS, -142, 0x9600afc9'12aa62cf'ba45c3fc'a574c5a0_u128},
-        {Sign::POS, -142, 0x9800b481'1dcca7bf'71ec0b6d'8cd413d1_u128},
-        {Sign::POS, -142, 0x9a00b949'293aedbd'eeebcfd0'565c5006_u128},
-        {Sign::POS, -142, 0x9c00be21'34f634d2'5d675c6d'a8c98fc3_u128},
-        {Sign::POS, -142, 0x9e00c309'40ff7d04'0181e393'98a2099a_u128},
-        {Sign::POS, -142, 0xa000c801'4d57c65a'375f8195'cc8b1d29_u128},
+        {Sign::NEG, -142, MType({0x374b294076d669c3, 0x9fff38014d52e45a})},
+        {Sign::NEG, -142, MType({0x7f6f05dcdbeb776e, 0x9dff3cf940fad85a})},
+        {Sign::NEG, -142, MType({0x3d55e21d41bbadf9, 0x9bff41e134f1cb36})},
+        {Sign::NEG, -142, MType({0xccdba2d54aadbc5c, 0x99ff46b92936bcf4})},
+        {Sign::NEG, -142, MType({0x71dd16d3073f79b2, 0x97ff4b811dc8ad9d})},
+        {Sign::NEG, -142, MType({0x5837f3df1a58dd48, 0x95ff503912a69d37})},
+        {Sign::NEG, -142, MType({0x93cad3bcdd26fd6d, 0x93ff54e107cf8bc9})},
+        {Sign::NEG, -142, MType({0x2075312a827f14fa, 0x91ff5978fd42795b})},
+        {Sign::NEG, -142, MType({0xe21764e139c98f60, 0x8fff5e00f2fe65f2})},
+        {Sign::NEG, -142, MType({0xa492a29551751b4c, 0x8dff6278e9025197})},
+        {Sign::NEG, -142, MType({0x1bc8f5f658f1c3a2, 0x8bff66e0df4d3c50})},
+        {Sign::NEG, -142, MType({0xe39d3faf42340ed7, 0x89ff6b38d5de2622})},
+        {Sign::NEG, -142, MType({0x7ff3326682c02485, 0x87ff6f80ccb40f16})},
+        {Sign::NEG, -142, MType({0x5caf4fbe343cf928, 0x85ff73b8c3cdf731})},
+        {Sign::NEG, -142, MType({0xcdb6e554348f7fe8, 0x83ff77e0bb2ade79})},
+        {Sign::NEG, -142, MType({0xef009c2457de25d, 0x81ff7bf8b2c9c4f6})},
+        {Sign::NEG, -143, MType({0x8883333c57b57c74, 0xffff000155535558})},
+        {Sign::NEG, -143, MType({0xf32668f39c70d183, 0xfbff07f145931f44})},
+        {Sign::NEG, -143, MType({0x459a73c6a6486fe3, 0xf7ff0fc13650e7bd})},
+        {Sign::NEG, -143, MType({0x37b18cca7dd3a29f, 0xf3ff1771278aaecd})},
+        {Sign::NEG, -143, MType({0x513f610d21bcfc78, 0xefff1f01193e7480})},
+        {Sign::NEG, -143, MType({0xea190b95c0690b7b, 0xebff26710b6a38e1})},
+        {Sign::NEG, -143, MType({0x2a150f64f0ad1743, 0xe7ff2dc0fe0bfbfd})},
+        {Sign::NEG, -143, MType({0x90b5174e995e9d1, 0xe3ff34f0f121bddd})},
+        {Sign::NEG, -143, MType({0x4ed512b9b93ea2bf, 0xdfff3c00e4a97e8c})},
+        {Sign::NEG, -143, MType({0x934cea217ab794a2, 0xdbff42f0d8a13e15})},
+        {Sign::NEG, -143, MType({0x3e4ebe948afd2c76, 0xd7ff49c0cd06fc83})},
+        {Sign::NEG, -143, MType({0x87b7c0f5bcfee2e1, 0xd3ff5070c1d8b9df})},
+        {Sign::NEG, -143, MType({0x776666228cb6371b, 0xcfff5700b7147634})},
+        {Sign::NEG, -143, MType({0xe53a60f3514db358, 0xcbff5d70acb8318b})},
+        {Sign::NEG, -143, MType({0x79149c3b6e57fa86, 0xc7ff63c0a2c1ebef})},
+        {Sign::NEG, -143, MType({0xaad734c98416df2a, 0xc3ff69f0992fa568})},
+        {Sign::NEG, -143, MType({0xc26573679ed28334, 0xbfff70008fff5e00})},
+        {Sign::NEG, -143, MType({0xd7a3c6db6540809f, 0xbbff75f0872f15c0})},
+        {Sign::NEG, -143, MType({0xd277bde645fb1aad, 0xb7ff7bc07ebcccb1})},
+        {Sign::NEG, -143, MType({0x6ac80145a4087793, 0xb3ff817076a682dc})},
+        {Sign::NEG, -143, MType({0x287c4db30271e265, 0xafff87006eea3849})},
+        {Sign::NEG, -143, MType({0x637d6de42eeb151e, 0xabff8c706785ed00})},
+        {Sign::NEG, -143, MType({0x43b5348b6b898a8c, 0xa7ff91c06077a10a})},
+        {Sign::NEG, -143, MType({0xc10e7657978bd7f6, 0xa3ff96f059bd546e})},
+        {Sign::NEG, -143, MType({0xa37503f457310e59, 0x9fff9c0053550735})},
+        {Sign::NEG, -143, MType({0x82d5a40a3aa022ff, 0x9bffa0f04d3cb966})},
+        {Sign::NEG, -143, MType({0xc71e0d3ee3df5f4d, 0x97ffa5c047726b08})},
+        {Sign::NEG, -143, MType({0xa83ce0352bdbd79b, 0x93ffaa7041f41c23})},
+        {Sign::NEG, -143, MType({0x2e21a18d4680e8e4, 0x8fffaf003cbfccbe})},
+        {Sign::NEG, -143, MType({0x30bcb3e4e5dfbd28, 0x8bffb37037d37cdf})},
+        {Sign::NEG, -143, MType({0x57ff51d75c66d64a, 0x87ffb7c0332d2c8d})},
+        {Sign::NEG, -143, MType({0x1bdb87fdbe299f43, 0x83ffbbf02ecadbcf})},
+        {Sign::NEG, -144, MType({0x88885dde02700703, 0xffff800055551555})},
+        {Sign::NEG, -144, MType({0xd259ca803a0c1870, 0xf7ff87e04d94724c})},
+        {Sign::NEG, -144, MType({0xe514130851c7070a, 0xefff8f80464fce8f})},
+        {Sign::NEG, -144, MType({0x30a16898f3073a64, 0xe7ff96e03f832a2a})},
+        {Sign::NEG, -144, MType({0xc4ed64517b2949ce, 0xdfff9e00392a8526})},
+        {Sign::NEG, -144, MType({0x51e4fb4e32cf6350, 0xd7ffa4e03341df90})},
+        {Sign::NEG, -144, MType({0x277672a88350bcce, 0xcfffab802dc53971})},
+        {Sign::NEG, -144, MType({0x359153772a490f06, 0xc7ffb1e028b092d3})},
+        {Sign::NEG, -144, MType({0xc265ece6b481a0e, 0xbfffb80023ffebc0})},
+        {Sign::NEG, -144, MType({0xdb2781c03fa132f6, 0xb7ffbde01faf4440})},
+        {Sign::NEG, -144, MType({0x7287c95c845ada33, 0xafffc3801bba9c5e})},
+        {Sign::NEG, -144, MType({0x423b56b1263e5a77, 0xa7ffc8e0181df421})},
+        {Sign::NEG, -144, MType({0x5a3752ca4c076fa3, 0x9fffce0014d54b91})},
+        {Sign::NEG, -144, MType({0x6a71e2b27eb3f573, 0x97ffd2e011dca2b6})},
+        {Sign::NEG, -144, MType({0xc2e21b72cff39d8f, 0x8fffd7800f2ff997})},
+        {Sign::NEG, -144, MType({0x537ff612feb7ac9e, 0x87ffdbe00ccb503c})},
+        {Sign::NEG, -145, MType({0x5888873333c57c18, 0xffffc00015554d55})},
+        {Sign::NEG, -145, MType({0xfa51421842311c42, 0xefffc7c01193f9d1})},
+        {Sign::NEG, -145, MType({0x2c4ed6de475b942c, 0xdfffcf000e4aa5fa})},
+        {Sign::NEG, -145, MType({0xce77678cbb6fcb88, 0xcfffd5c00b7151d8})},
+        {Sign::NEG, -145, MType({0xc26629a679ed3b, 0xbfffdc0008fffd78})},
+        {Sign::NEG, -145, MType({0x23287cb9d3072728, 0xafffe1c006eea8e1})},
+        {Sign::NEG, -145, MType({0xd5a37540fd057315, 0x9fffe7000535541c})},
+        {Sign::NEG, -145, MType({0xf82e21c1fce36810, 0x8fffebc003cbff32})},
+        {Sign::NEG, -146, MType({0x5588887ddde02702, 0xffffe00005555455})},
+        {Sign::NEG, -146, MType({0x9ac4ed72adf5b295, 0xdfffe7800392aa14})},
+        {Sign::NEG, -146, MType({0xc26648066b482, 0xbfffee00023fffaf})},
+        {Sign::NEG, -146, MType({0x455a3754b292c077, 0x9ffff380014d552e})},
+        {Sign::NEG, -147, MType({0x5558888833333c58, 0xfffff00001555535})},
+        {Sign::NEG, -147, MType({0xe000c2665736679f, 0xbffff700008ffff5})},
+        {Sign::NEG, -148, MType({0x5555888885ddde02, 0xfffff80000555551})},
+        {Sign::NEG, -149, MType({0xd555588888733334, 0xfffffc0000155554})},
+        {Sign::POS, 0, MType({0x0, 0x0})},
+        {Sign::POS, -148, MType({0xeaaaac44444eeeef, 0x80000200000aaaaa})},
+        {Sign::POS, -147, MType({0xaaaac444459999ac, 0x80000400002aaaac})},
+        {Sign::POS, -147, MType({0x2000c2667596679f, 0xc00009000090000a})},
+        {Sign::POS, -146, MType({0xaaac44446eeef381, 0x8000080000aaaaba})},
+        {Sign::POS, -146, MType({0x655a3755f81815cc, 0xa0000c80014d557c})},
+        {Sign::POS, -146, MType({0xc26684c66b482, 0xc000120002400051})},
+        {Sign::POS, -146, MType({0xbac4ed7c40fb07eb, 0xe00018800392ab40})},
+        {Sign::POS, -145, MType({0xaac44449999abe2c, 0x8000100002aaab2a})},
+        {Sign::POS, -145, MType({0x82e21d79cbb6812, 0x9000144003cc00cd})},
+        {Sign::POS, -145, MType({0xd5a37569adb01dc3, 0xa00019000535568d})},
+        {Sign::POS, -145, MType({0x33287d01e8c9d1d9, 0xb0001e4006eeac74})},
+        {Sign::POS, -145, MType({0xc266a32679ed48, 0xc000240009000288})},
+        {Sign::POS, -145, MType({0xde77685122b2764b, 0xd0002a400b7158d1})},
+        {Sign::POS, -145, MType({0x2c4ed810a8063f03, 0xe00031000e4aaf5b})},
+        {Sign::POS, -145, MType({0xa5143e7be891c8f, 0xf00038401194062e})},
+        {Sign::POS, -144, MType({0xac4444eeef3813a1, 0x800020000aaaaeaa})},
+        {Sign::POS, -144, MType({0x5b7ff7fe1339025b, 0x880024200ccb5a6e})},
+        {Sign::POS, -144, MType({0x42e21e26caf39e33, 0x900028800f300668})},
+        {Sign::POS, -144, MType({0xf271e66fa5554bc6, 0x98002d2011dcb29e})},
+        {Sign::POS, -144, MType({0x5a3757e0615cc676, 0xa000320014d55f19})},
+        {Sign::POS, -144, MType({0xca3b5d8210ca5cab, 0xa8003720181e0bde})},
+        {Sign::POS, -144, MType({0xf287d25f3cb032bb, 0xb0003c801bbab8f6})},
+        {Sign::POS, -144, MType({0xe3278d840be28cdb, 0xb80042201faf6669})},
+        {Sign::POS, -144, MType({0xc266dfe6b482076, 0xc000480024001440})},
+        {Sign::POS, -144, MType({0x3d9166de380a6d3d, 0xc8004e2028b0c282})},
+        {Sign::POS, -144, MType({0xa7768b356ba61e4b, 0xd00054802dc57139})},
+        {Sign::POS, -144, MType({0xd9e51a1849db73c1, 0xd8005b203342206f})},
+        {Sign::POS, -144, MType({0xc4ed8a9d907eb521, 0xe0006200392ad02e})},
+        {Sign::POS, -144, MType({0xb8a197dea928acd7, 0xe80069203f838080})},
+        {Sign::POS, -144, MType({0x65144cf7dcc72d3b, 0xf000708046503170})},
+        {Sign::POS, -144, MType({0xda5a1108890d9f6a, 0xf80078204d94e308})},
+        {Sign::POS, -143, MType({0xc4445999abe2ce2c, 0x800040002aaacaaa})},
+        {Sign::POS, -143, MType({0x1fdbbb4f3bffc832, 0x840044102ecb2431})},
+        {Sign::POS, -143, MType({0x97ff8f39ec91b4ee, 0x88004840332d7e1d})},
+        {Sign::POS, -143, MType({0x74bcfcf0b3f0a95d, 0x8c004c9037d3d876})},
+        {Sign::POS, -143, MType({0x2e21f80ca6813aff, 0x900051003cc03342})},
+        {Sign::POS, -143, MType({0x6c3d4629170ce87f, 0x9400559041f48e87})},
+        {Sign::POS, -143, MType({0x71e84e3b80a8881, 0x98005a404772ea4d})},
+        {Sign::POS, -143, MType({0x6d62fdcbdd6bec3, 0x9c005f104d3d469a})},
+        {Sign::POS, -143, MType({0xa375a6b701dc77c0, 0xa00064005355a375})},
+        {Sign::POS, -143, MType({0x450f331826ad6b05, 0xa400691059be00e7})},
+        {Sign::POS, -143, MType({0x83b60ea8bd0aa459, 0xa8006e4060785ef6})},
+        {Sign::POS, -143, MType({0x277e691469dd13f5, 0xac0073906786bdab})},
+        {Sign::POS, -143, MType({0x287d6e0a0d1e25eb, 0xb00079006eeb1d0d})},
+        {Sign::POS, -143, MType({0xaec94b3be9b060f5, 0xb4007e9076a77d24})},
+        {Sign::POS, -143, MType({0x1279365fce280cce, 0xb80084407ebdddfa})},
+        {Sign::POS, -143, MType({0xdba5732f3e83e04a, 0xbc008a1087303f95})},
+        {Sign::POS, -143, MType({0xc26759679ed5b754, 0xc00090009000a200})},
+        {Sign::POS, -143, MType({0xaed95aca5edb5109, 0xc400961099310543})},
+        {Sign::POS, -143, MType({0xb917091d2687160f, 0xc8009c40a2c36967})},
+        {Sign::POS, -143, MType({0x293d1c2a0378e75d, 0xcc00a290acb9ce76})},
+        {Sign::POS, -143, MType({0x776977bf9766f5a7, 0xd000a900b7163478})},
+        {Sign::POS, -143, MType({0x4bbb31b14776a18b, 0xd400af90c1da9b78})},
+        {Sign::POS, -143, MType({0x7e5297d76c8564ba, 0xd800b640cd09037f})},
+        {Sign::POS, -143, MType({0x1751360f8461c447, 0xdc00bd10d8a36c98})},
+        {Sign::POS, -143, MType({0x4ed9dc3c63f44c41, 0xe000c400e4abd6cc})},
+        {Sign::POS, -143, MType({0x8d10a4466a5894d5, 0xe400cb10f1244226})},
+        {Sign::POS, -143, MType({0x6a1af81bb4e6510e, 0xe800d240fe0eaeb1})},
+        {Sign::POS, -143, MType({0xae1f97b0542a677a, 0xec00d9910b6d1c77})},
+        {Sign::POS, -143, MType({0x51469efe81d014cc, 0xf000e10119418b84})},
+        {Sign::POS, -143, MType({0x7bb98c06d77a18b4, 0xf400e891278dfbe2})},
+        {Sign::POS, -143, MType({0x85a344d0868bed17, 0xf800f04136546d9d})},
+        {Sign::POS, -143, MType({0xf7301d6990e307cc, 0xfc00f8114596e0c0})},
+        {Sign::POS, -142, MType({0x4446eef38140138f, 0x80008000aaabaaac})},
+        {Sign::POS, -142, MType({0x10f5e43296105497, 0x82008408b2cbe5b8})},
+        {Sign::POS, -142, MType({0xedbd4f83ef63f730, 0x84008820bb2d2189})},
+        {Sign::POS, -142, MType({0xfeb654fd541c638e, 0x86008c48c3d05e27})},
+        {Sign::POS, -142, MType({0x7ffadeb8882f7674, 0x88009080ccb69b98})},
+        {Sign::POS, -142, MType({0xc5a59fd36bd44397, 0x8a0094c8d5e0d9e1})},
+        {Sign::POS, -142, MType({0x3bd217701b27dddb, 0x8c009920df50190a})},
+        {Sign::POS, -142, MType({0x669c93b50e4a2595, 0x8e009d88e9055918})},
+        {Sign::POS, -142, MType({0xe22234cd39f29cd4, 0x9000a200f3019a12})},
+        {Sign::POS, -142, MType({0x6280efe8307d41d9, 0x9200a688fd45dc00})},
+        {Sign::POS, -142, MType({0xb3d7923a436f6fc4, 0x9400ab2107d31ee7})},
+        {Sign::POS, -142, MType({0xba45c3fca574c5a0, 0x9600afc912aa62cf})},
+        {Sign::POS, -142, MType({0x71ec0b6d8cd413d1, 0x9800b4811dcca7bf})},
+        {Sign::POS, -142, MType({0xeeebcfd0565c5006, 0x9a00b949293aedbd})},
+        {Sign::POS, -142, MType({0x5d675c6da8c98fc3, 0x9c00be2134f634d2})},
+        {Sign::POS, -142, MType({0x181e39398a2099a, 0x9e00c30940ff7d04})},
+        {Sign::POS, -142, MType({0x375f8195cc8b1d29, 0xa000c8014d57c65a})},
 
     },
     // -log(r) for the fourth step, generated by SageMath with:
@@ -563,139 +560,139 @@ alignas(64) const LogRR LOG_TABLE = {
     //   r = 2^-28 * round( 2^28 / (1 + i*2^(-28)) );
     //   s, m, e = RealField(128)(r).log().sign_mantissa_exponent();
     //   print("{Sign::POS," if (s == -1) else "{Sign::NEG,", e, ",
-    //         format_hex(m), "},");
+    //         MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})},");
     /* .step_4 = */
     {
-        {Sign::NEG, -149, 0x81fffef7'f002cb2b'4cd24d68'ff2f11ae_u128},
-        {Sign::NEG, -150, 0xfffffe00'00055555'45555588'8887ddde_u128},
-        {Sign::NEG, -150, 0xfbfffe0f'e0051653'f0fa101f'52b3971f_u128},
-        {Sign::NEG, -150, 0xf7fffe1f'8004d94a'9c9329d6'59ed3734_u128},
-        {Sign::NEG, -150, 0xf3fffe2e'e0049e31'4821006d'9b58462e_u128},
-        {Sign::NEG, -150, 0xeffffe3e'000464ff'f3a3f025'142f8c21_u128},
-        {Sign::NEG, -150, 0xebfffe4c'e0042dae'9f1c53bc'c1c4b11c_u128},
-        {Sign::NEG, -150, 0xe7fffe5b'8003f835'4a8a8474'a17fdd30_u128},
-        {Sign::NEG, -150, 0xe3fffe69'e003c48b'f5eeda0c'b0df586d_u128},
-        {Sign::NEG, -150, 0xdffffe78'000392aa'a149aac4'ed772adf_u128},
-        {Sign::NEG, -150, 0xdbfffe85'e0036289'4c9b4b5d'54f0bc96_u128},
-        {Sign::NEG, -150, 0xd7fffe93'8003341f'f7e40f15'e50a759f_u128},
-        {Sign::NEG, -150, 0xd3fffea0'e0030766'a32447ae'9b975e05_u128},
-        {Sign::NEG, -150, 0xcffffeae'0002dc55'4e5c4567'767ebdd5_u128},
-        {Sign::NEG, -150, 0xcbfffeba'e002b2e3'f98c5700'73bbbd19_u128},
-        {Sign::NEG, -150, 0xc7fffec7'80028b0a'a4b4c9b9'915d03dd_u128},
-        {Sign::NEG, -150, 0xc3fffed3'e00264c1'4fd5e952'cd845a28_u128},
-        {Sign::NEG, -150, 0xbffffee0'00023fff'faf0000c'26664806_u128},
-        {Sign::NEG, -150, 0xbbfffeeb'e0021cbe'a60356a5'9a49b57f_u128},
-        {Sign::NEG, -150, 0xb7fffef7'8001faf5'5110345f'27878a9b_u128},
-        {Sign::NEG, -150, 0xb3ffff02'e001da9b'fc16def8'cc8a4f61_u128},
-        {Sign::NEG, -150, 0xafffff0e'0001bbaa'a7179ab2'87cdcbd8_u128},
-        {Sign::NEG, -150, 0xabffff18'e0019e19'5212aa4c'57dea809_u128},
-        {Sign::NEG, -150, 0xa7ffff23'800181df'fd084f06'3b5a0bf8_u128},
-        {Sign::NEG, -150, 0xa3ffff2d'e00166f6'a7f8c8a0'30ed3fab_u128},
-        {Sign::NEG, -150, 0x9fffff38'00014d55'52e4555a'37554b29_u128},
-        {Sign::NEG, -150, 0x9bffff41'e00134f3'fdcb31f4'4d5e9676_u128},
-        {Sign::NEG, -150, 0x97ffff4b'80011dca'a8ad99ae'71e48997_u128},
-        {Sign::NEG, -150, 0x93ffff54'e00107d1'538bc648'a3d12c90_u128},
-        {Sign::NEG, -150, 0x8fffff5e'0000f2ff'fe65f002'e21cc765_u128},
-        {Sign::NEG, -150, 0x8bffff66'e000df4e'a93c4d9d'2bcd821a_u128},
-        {Sign::NEG, -150, 0x87ffff6f'8000ccb5'540f1457'7ff704b2_u128},
-        {Sign::NEG, -150, 0x83ffff77'e000bb2b'fede77f1'ddba1731_u128},
-        {Sign::NEG, -151, 0xffffff00'00015555'53555558'88888333_u128},
-        {Sign::NEG, -151, 0xf7ffff0f'c0013652'a8e7ba8d'659ed7dc_u128},
-        {Sign::NEG, -151, 0xefffff1f'0001193f'fe747e02'5142fc61_u128},
-        {Sign::NEG, -151, 0xe7ffff2d'c000fe0d'53fbfb37'4a1800c7_u128},
-        {Sign::NEG, -151, 0xdfffff3c'0000e4aa'a97e8aac'4ed77513_u128},
-        {Sign::NEG, -151, 0xd7ffff49'c000cd07'fefc81e1'5e50a947_u128},
-        {Sign::NEG, -151, 0xcfffff57'0000b715'54763356'7767ed66_u128},
-        {Sign::NEG, -151, 0xc7ffff63'c000a2c2'a9ebee8b'9915d174_u128},
-        {Sign::NEG, -151, 0xbfffff70'00008fff'ff5e0000'c2666573_u128},
-        {Sign::NEG, -151, 0xb7ffff7b'c0007ebd'54ccb135'f2787966_u128},
-        {Sign::NEG, -151, 0xafffff87'00006eea'aa3848ab'287cdd4e_u128},
-        {Sign::NEG, -151, 0xa7ffff91'c0006077'ffa109e0'63b5a12d_u128},
-        {Sign::NEG, -151, 0x9fffff9c'00005355'55073555'a3755504_u128},
-        {Sign::NEG, -151, 0x97ffffa5'c0004772'aa6b088a'e71e48d5_u128},
-        {Sign::NEG, -151, 0x8fffffaf'00003cbf'ffccbe00'2e21cca2_u128},
-        {Sign::NEG, -151, 0x87ffffb7'c000332d'552c8d35'77ff706a_u128},
-        {Sign::NEG, -152, 0xffffff80'00005555'55155555'8888885e_u128},
-        {Sign::NEG, -152, 0xefffff8f'8000464f'ffce8fc0'25142fe3_u128},
-        {Sign::NEG, -152, 0xdfffff9e'0000392a'aa8526aa'c4ed7764_u128},
-        {Sign::NEG, -152, 0xcfffffab'80002dc5'55397115'67767ee3_u128},
-        {Sign::NEG, -152, 0xbfffffb8'000023ff'ffebc000'0c26665f_u128},
-        {Sign::NEG, -152, 0xafffffc3'80001bba'aa9c5e6a'b287cdd9_u128},
-        {Sign::NEG, -152, 0x9fffffce'000014d5'554b9155'5a375553_u128},
-        {Sign::NEG, -152, 0x8fffffd7'80000f2f'fff997c0'02e21ccb_u128},
-        {Sign::NEG, -153, 0xffffffc0'00001555'554d5555'58888887_u128},
-        {Sign::NEG, -153, 0xdfffffcf'00000e4a'aaa5fa2a'ac4ed777_u128},
-        {Sign::NEG, -153, 0xbfffffdc'000008ff'fffd7800'00c26666_u128},
-        {Sign::NEG, -153, 0x9fffffe7'00000535'55541cd5'55a37555_u128},
-        {Sign::NEG, -154, 0xffffffe0'00000555'55545555'55888888_u128},
-        {Sign::NEG, -154, 0xbfffffee'0000023f'ffffaf00'000c2666_u128},
-        {Sign::NEG, -155, 0xfffffff0'00000155'55553555'55588889_u128},
-        {Sign::NEG, -156, 0xfffffff8'00000055'55555155'55558889_u128},
-        {Sign::POS, 0, 0_u128},
-        {Sign::POS, -155, 0x80000004'0000002a'aaaaacaa'aaaac444_u128},
-        {Sign::POS, -154, 0x80000008'000000aa'aaaabaaa'aaac4444_u128},
-        {Sign::POS, -154, 0xc0000012'00000240'00005100'000c2666_u128},
-        {Sign::POS, -153, 0x80000010'000002aa'aaab2aaa'aac44444_u128},
-        {Sign::POS, -153, 0xa0000019'00000535'55568dd5'55a37555_u128},
-        {Sign::POS, -153, 0xc0000024'00000900'00028800'00c26667_u128},
-        {Sign::POS, -153, 0xe0000031'00000e4a'aaaf5b2a'ac4ed778_u128},
-        {Sign::POS, -152, 0x80000020'00000aaa'aaaeaaaa'ac444445_u128},
-        {Sign::POS, -152, 0x90000028'80000f30'00066840'02e21cce_u128},
-        {Sign::POS, -152, 0xa0000032'000014d5'555f1955'5a375558_u128},
-        {Sign::POS, -152, 0xb000003c'80001bba'aab8f6ea'b287cde2_u128},
-        {Sign::POS, -152, 0xc0000048'00002400'00144000'0c26666e_u128},
-        {Sign::POS, -152, 0xd0000054'80002dc5'55713995'67767efb_u128},
-        {Sign::POS, -152, 0xe0000062'0000392a'aad02eaa'c4ed778b_u128},
-        {Sign::POS, -152, 0xf0000070'80004650'00317040'2514301d_u128},
-        {Sign::POS, -151, 0x80000040'00002aaa'aacaaaaa'c444445a_u128},
-        {Sign::POS, -151, 0x88000048'4000332d'557e1d75'77ff70a7_u128},
-        {Sign::POS, -151, 0x90000051'00003cc0'00334200'2e21ccf8_u128},
-        {Sign::POS, -151, 0x9800005a'40004772'aaea4cca'e71e494d_u128},
-        {Sign::POS, -151, 0xa0000064'00005355'55a37555'a37555a7_u128},
-        {Sign::POS, -151, 0xa800006e'40006078'005ef620'63b5a207_u128},
-        {Sign::POS, -151, 0xb0000079'00006eea'ab1d0cab'287cde6e_u128},
-        {Sign::POS, -151, 0xb8000084'40007ebd'55ddf975'f2787ade_u128},
-        {Sign::POS, -151, 0xc0000090'00009000'00a20000'c2666759_u128},
-        {Sign::POS, -151, 0xc800009c'4000a2c2'ab6966cb'9915d3e1_u128},
-        {Sign::POS, -151, 0xd00000a9'0000b715'56347756'7767f078_u128},
-        {Sign::POS, -151, 0xd80000b6'4000cd08'01037e21'5e50ad20_u128},
-        {Sign::POS, -151, 0xe00000c4'0000e4aa'abd6caac'4ed779dc_u128},
-        {Sign::POS, -151, 0xe80000d2'4000fe0d'56aeaf77'4a1806b0_u128},
-        {Sign::POS, -151, 0xf00000e1'00011940'018b8202'5143039f_u128},
-        {Sign::POS, -151, 0xf80000f0'40013652'ac6d9acd'659ee0ad_u128},
-        {Sign::POS, -150, 0x80000080'0000aaaa'abaaaaac'444446ef_u128},
-        {Sign::POS, -150, 0x84000088'2000bb2c'01218811'ddba1d9b_u128},
-        {Sign::POS, -150, 0x88000090'8000ccb5'569b9657'7ff70c5f_u128},
-        {Sign::POS, -150, 0x8c000099'2000df4e'ac1907bd'2bcd8b3b_u128},
-        {Sign::POS, -150, 0x900000a2'0000f300'019a1002'e21cd235_u128},
-        {Sign::POS, -150, 0x940000ab'200107d1'571ee468'a3d1394e_u128},
-        {Sign::POS, -150, 0x980000b4'80011dca'aca7bbae'71e4988b_u128},
-        {Sign::POS, -150, 0x9c0000be'200134f4'0234ce14'4d5ea7f0_u128},
-        {Sign::POS, -150, 0xa00000c8'00014d55'57c6555a'37555f82_u128},
-        {Sign::POS, -150, 0xa40000d2'200166f6'ad5c8cc0'30ed5744_u128},
-        {Sign::POS, -150, 0xa80000dc'800181e0'02f7b106'3b5a273b_u128},
-        {Sign::POS, -150, 0xac0000e7'20019e19'5898006c'57dec76f_u128},
-        {Sign::POS, -150, 0xb00000f2'0001bbaa'ae3dbab2'87cdefe3_u128},
-        {Sign::POS, -150, 0xb40000fd'2001da9c'03e92118'cc8a789f_u128},
-        {Sign::POS, -150, 0xb8000108'8001faf5'599a765f'2787b9aa_u128},
-        {Sign::POS, -150, 0xbc000114'20021cbe'af51fec5'9a49eb0a_u128},
-        {Sign::POS, -150, 0xc0000120'00024000'0510000c'266684c6_u128},
-        {Sign::POS, -150, 0xc400012c'200264c1'5ad4c172'cd849ee9_u128},
-        {Sign::POS, -150, 0xc8000138'80028b0a'b0a08bb9'915d5179_u128},
-        {Sign::POS, -150, 0xcc000145'2002b2e4'0673a920'73bc1480_u128},
-        {Sign::POS, -150, 0xd0000152'0002dc55'5c4e6567'767f2009_u128},
-        {Sign::POS, -150, 0xd400015f'20030766'b2310dce'9b97cc1d_u128},
-        {Sign::POS, -150, 0xd800016c'80033420'081bf115'e50af0c7_u128},
-        {Sign::POS, -150, 0xdc00017a'20036289'5e0f5f7d'54f14614_u128},
-        {Sign::POS, -150, 0xe0000188'000392aa'b40baac4'ed77c410_u128},
-        {Sign::POS, -150, 0xe4000196'2003c48c'0a11262c'b0e002c7_u128},
-        {Sign::POS, -150, 0xe80001a4'8003f835'60202674'a1809a47_u128},
-        {Sign::POS, -150, 0xec0001b3'20042dae'b63901dc'c1c582a0_u128},
-        {Sign::POS, -150, 0xf00001c2'00046500'0c5c1025'143073df_u128},
-        {Sign::POS, -150, 0xf40001d1'20049e31'6289aa8d'9b594616_u128},
-        {Sign::POS, -150, 0xf80001e0'8004d94a'b8c22bd6'59ee5155_u128},
-        {Sign::POS, -150, 0xfc0001f0'20051654'0f05f03f'52b4cdae_u128},
-        {Sign::POS, -149, 0x80000100'0002aaaa'b2aaaac4'4444999a_u128},
+        {Sign::NEG, -149, MType({0x4cd24d68ff2f11ae, 0x81fffef7f002cb2b})},
+        {Sign::NEG, -150, MType({0x455555888887ddde, 0xfffffe0000055555})},
+        {Sign::NEG, -150, MType({0xf0fa101f52b3971f, 0xfbfffe0fe0051653})},
+        {Sign::NEG, -150, MType({0x9c9329d659ed3734, 0xf7fffe1f8004d94a})},
+        {Sign::NEG, -150, MType({0x4821006d9b58462e, 0xf3fffe2ee0049e31})},
+        {Sign::NEG, -150, MType({0xf3a3f025142f8c21, 0xeffffe3e000464ff})},
+        {Sign::NEG, -150, MType({0x9f1c53bcc1c4b11c, 0xebfffe4ce0042dae})},
+        {Sign::NEG, -150, MType({0x4a8a8474a17fdd30, 0xe7fffe5b8003f835})},
+        {Sign::NEG, -150, MType({0xf5eeda0cb0df586d, 0xe3fffe69e003c48b})},
+        {Sign::NEG, -150, MType({0xa149aac4ed772adf, 0xdffffe78000392aa})},
+        {Sign::NEG, -150, MType({0x4c9b4b5d54f0bc96, 0xdbfffe85e0036289})},
+        {Sign::NEG, -150, MType({0xf7e40f15e50a759f, 0xd7fffe938003341f})},
+        {Sign::NEG, -150, MType({0xa32447ae9b975e05, 0xd3fffea0e0030766})},
+        {Sign::NEG, -150, MType({0x4e5c4567767ebdd5, 0xcffffeae0002dc55})},
+        {Sign::NEG, -150, MType({0xf98c570073bbbd19, 0xcbfffebae002b2e3})},
+        {Sign::NEG, -150, MType({0xa4b4c9b9915d03dd, 0xc7fffec780028b0a})},
+        {Sign::NEG, -150, MType({0x4fd5e952cd845a28, 0xc3fffed3e00264c1})},
+        {Sign::NEG, -150, MType({0xfaf0000c26664806, 0xbffffee000023fff})},
+        {Sign::NEG, -150, MType({0xa60356a59a49b57f, 0xbbfffeebe0021cbe})},
+        {Sign::NEG, -150, MType({0x5110345f27878a9b, 0xb7fffef78001faf5})},
+        {Sign::NEG, -150, MType({0xfc16def8cc8a4f61, 0xb3ffff02e001da9b})},
+        {Sign::NEG, -150, MType({0xa7179ab287cdcbd8, 0xafffff0e0001bbaa})},
+        {Sign::NEG, -150, MType({0x5212aa4c57dea809, 0xabffff18e0019e19})},
+        {Sign::NEG, -150, MType({0xfd084f063b5a0bf8, 0xa7ffff23800181df})},
+        {Sign::NEG, -150, MType({0xa7f8c8a030ed3fab, 0xa3ffff2de00166f6})},
+        {Sign::NEG, -150, MType({0x52e4555a37554b29, 0x9fffff3800014d55})},
+        {Sign::NEG, -150, MType({0xfdcb31f44d5e9676, 0x9bffff41e00134f3})},
+        {Sign::NEG, -150, MType({0xa8ad99ae71e48997, 0x97ffff4b80011dca})},
+        {Sign::NEG, -150, MType({0x538bc648a3d12c90, 0x93ffff54e00107d1})},
+        {Sign::NEG, -150, MType({0xfe65f002e21cc765, 0x8fffff5e0000f2ff})},
+        {Sign::NEG, -150, MType({0xa93c4d9d2bcd821a, 0x8bffff66e000df4e})},
+        {Sign::NEG, -150, MType({0x540f14577ff704b2, 0x87ffff6f8000ccb5})},
+        {Sign::NEG, -150, MType({0xfede77f1ddba1731, 0x83ffff77e000bb2b})},
+        {Sign::NEG, -151, MType({0x5355555888888333, 0xffffff0000015555})},
+        {Sign::NEG, -151, MType({0xa8e7ba8d659ed7dc, 0xf7ffff0fc0013652})},
+        {Sign::NEG, -151, MType({0xfe747e025142fc61, 0xefffff1f0001193f})},
+        {Sign::NEG, -151, MType({0x53fbfb374a1800c7, 0xe7ffff2dc000fe0d})},
+        {Sign::NEG, -151, MType({0xa97e8aac4ed77513, 0xdfffff3c0000e4aa})},
+        {Sign::NEG, -151, MType({0xfefc81e15e50a947, 0xd7ffff49c000cd07})},
+        {Sign::NEG, -151, MType({0x547633567767ed66, 0xcfffff570000b715})},
+        {Sign::NEG, -151, MType({0xa9ebee8b9915d174, 0xc7ffff63c000a2c2})},
+        {Sign::NEG, -151, MType({0xff5e0000c2666573, 0xbfffff7000008fff})},
+        {Sign::NEG, -151, MType({0x54ccb135f2787966, 0xb7ffff7bc0007ebd})},
+        {Sign::NEG, -151, MType({0xaa3848ab287cdd4e, 0xafffff8700006eea})},
+        {Sign::NEG, -151, MType({0xffa109e063b5a12d, 0xa7ffff91c0006077})},
+        {Sign::NEG, -151, MType({0x55073555a3755504, 0x9fffff9c00005355})},
+        {Sign::NEG, -151, MType({0xaa6b088ae71e48d5, 0x97ffffa5c0004772})},
+        {Sign::NEG, -151, MType({0xffccbe002e21cca2, 0x8fffffaf00003cbf})},
+        {Sign::NEG, -151, MType({0x552c8d3577ff706a, 0x87ffffb7c000332d})},
+        {Sign::NEG, -152, MType({0x551555558888885e, 0xffffff8000005555})},
+        {Sign::NEG, -152, MType({0xffce8fc025142fe3, 0xefffff8f8000464f})},
+        {Sign::NEG, -152, MType({0xaa8526aac4ed7764, 0xdfffff9e0000392a})},
+        {Sign::NEG, -152, MType({0x5539711567767ee3, 0xcfffffab80002dc5})},
+        {Sign::NEG, -152, MType({0xffebc0000c26665f, 0xbfffffb8000023ff})},
+        {Sign::NEG, -152, MType({0xaa9c5e6ab287cdd9, 0xafffffc380001bba})},
+        {Sign::NEG, -152, MType({0x554b91555a375553, 0x9fffffce000014d5})},
+        {Sign::NEG, -152, MType({0xfff997c002e21ccb, 0x8fffffd780000f2f})},
+        {Sign::NEG, -153, MType({0x554d555558888887, 0xffffffc000001555})},
+        {Sign::NEG, -153, MType({0xaaa5fa2aac4ed777, 0xdfffffcf00000e4a})},
+        {Sign::NEG, -153, MType({0xfffd780000c26666, 0xbfffffdc000008ff})},
+        {Sign::NEG, -153, MType({0x55541cd555a37555, 0x9fffffe700000535})},
+        {Sign::NEG, -154, MType({0x5554555555888888, 0xffffffe000000555})},
+        {Sign::NEG, -154, MType({0xffffaf00000c2666, 0xbfffffee0000023f})},
+        {Sign::NEG, -155, MType({0x5555355555588889, 0xfffffff000000155})},
+        {Sign::NEG, -156, MType({0x5555515555558889, 0xfffffff800000055})},
+        {Sign::POS, 0, MType({0x0, 0x0})},
+        {Sign::POS, -155, MType({0xaaaaacaaaaaac444, 0x800000040000002a})},
+        {Sign::POS, -154, MType({0xaaaabaaaaaac4444, 0x80000008000000aa})},
+        {Sign::POS, -154, MType({0x5100000c2666, 0xc000001200000240})},
+        {Sign::POS, -153, MType({0xaaab2aaaaac44444, 0x80000010000002aa})},
+        {Sign::POS, -153, MType({0x55568dd555a37555, 0xa000001900000535})},
+        {Sign::POS, -153, MType({0x2880000c26667, 0xc000002400000900})},
+        {Sign::POS, -153, MType({0xaaaf5b2aac4ed778, 0xe000003100000e4a})},
+        {Sign::POS, -152, MType({0xaaaeaaaaac444445, 0x8000002000000aaa})},
+        {Sign::POS, -152, MType({0x6684002e21cce, 0x9000002880000f30})},
+        {Sign::POS, -152, MType({0x555f19555a375558, 0xa0000032000014d5})},
+        {Sign::POS, -152, MType({0xaab8f6eab287cde2, 0xb000003c80001bba})},
+        {Sign::POS, -152, MType({0x1440000c26666e, 0xc000004800002400})},
+        {Sign::POS, -152, MType({0x5571399567767efb, 0xd000005480002dc5})},
+        {Sign::POS, -152, MType({0xaad02eaac4ed778b, 0xe00000620000392a})},
+        {Sign::POS, -152, MType({0x3170402514301d, 0xf000007080004650})},
+        {Sign::POS, -151, MType({0xaacaaaaac444445a, 0x8000004000002aaa})},
+        {Sign::POS, -151, MType({0x557e1d7577ff70a7, 0x880000484000332d})},
+        {Sign::POS, -151, MType({0x3342002e21ccf8, 0x9000005100003cc0})},
+        {Sign::POS, -151, MType({0xaaea4ccae71e494d, 0x9800005a40004772})},
+        {Sign::POS, -151, MType({0x55a37555a37555a7, 0xa000006400005355})},
+        {Sign::POS, -151, MType({0x5ef62063b5a207, 0xa800006e40006078})},
+        {Sign::POS, -151, MType({0xab1d0cab287cde6e, 0xb000007900006eea})},
+        {Sign::POS, -151, MType({0x55ddf975f2787ade, 0xb800008440007ebd})},
+        {Sign::POS, -151, MType({0xa20000c2666759, 0xc000009000009000})},
+        {Sign::POS, -151, MType({0xab6966cb9915d3e1, 0xc800009c4000a2c2})},
+        {Sign::POS, -151, MType({0x563477567767f078, 0xd00000a90000b715})},
+        {Sign::POS, -151, MType({0x1037e215e50ad20, 0xd80000b64000cd08})},
+        {Sign::POS, -151, MType({0xabd6caac4ed779dc, 0xe00000c40000e4aa})},
+        {Sign::POS, -151, MType({0x56aeaf774a1806b0, 0xe80000d24000fe0d})},
+        {Sign::POS, -151, MType({0x18b82025143039f, 0xf00000e100011940})},
+        {Sign::POS, -151, MType({0xac6d9acd659ee0ad, 0xf80000f040013652})},
+        {Sign::POS, -150, MType({0xabaaaaac444446ef, 0x800000800000aaaa})},
+        {Sign::POS, -150, MType({0x1218811ddba1d9b, 0x840000882000bb2c})},
+        {Sign::POS, -150, MType({0x569b96577ff70c5f, 0x880000908000ccb5})},
+        {Sign::POS, -150, MType({0xac1907bd2bcd8b3b, 0x8c0000992000df4e})},
+        {Sign::POS, -150, MType({0x19a1002e21cd235, 0x900000a20000f300})},
+        {Sign::POS, -150, MType({0x571ee468a3d1394e, 0x940000ab200107d1})},
+        {Sign::POS, -150, MType({0xaca7bbae71e4988b, 0x980000b480011dca})},
+        {Sign::POS, -150, MType({0x234ce144d5ea7f0, 0x9c0000be200134f4})},
+        {Sign::POS, -150, MType({0x57c6555a37555f82, 0xa00000c800014d55})},
+        {Sign::POS, -150, MType({0xad5c8cc030ed5744, 0xa40000d2200166f6})},
+        {Sign::POS, -150, MType({0x2f7b1063b5a273b, 0xa80000dc800181e0})},
+        {Sign::POS, -150, MType({0x5898006c57dec76f, 0xac0000e720019e19})},
+        {Sign::POS, -150, MType({0xae3dbab287cdefe3, 0xb00000f20001bbaa})},
+        {Sign::POS, -150, MType({0x3e92118cc8a789f, 0xb40000fd2001da9c})},
+        {Sign::POS, -150, MType({0x599a765f2787b9aa, 0xb80001088001faf5})},
+        {Sign::POS, -150, MType({0xaf51fec59a49eb0a, 0xbc00011420021cbe})},
+        {Sign::POS, -150, MType({0x510000c266684c6, 0xc000012000024000})},
+        {Sign::POS, -150, MType({0x5ad4c172cd849ee9, 0xc400012c200264c1})},
+        {Sign::POS, -150, MType({0xb0a08bb9915d5179, 0xc800013880028b0a})},
+        {Sign::POS, -150, MType({0x673a92073bc1480, 0xcc0001452002b2e4})},
+        {Sign::POS, -150, MType({0x5c4e6567767f2009, 0xd00001520002dc55})},
+        {Sign::POS, -150, MType({0xb2310dce9b97cc1d, 0xd400015f20030766})},
+        {Sign::POS, -150, MType({0x81bf115e50af0c7, 0xd800016c80033420})},
+        {Sign::POS, -150, MType({0x5e0f5f7d54f14614, 0xdc00017a20036289})},
+        {Sign::POS, -150, MType({0xb40baac4ed77c410, 0xe0000188000392aa})},
+        {Sign::POS, -150, MType({0xa11262cb0e002c7, 0xe40001962003c48c})},
+        {Sign::POS, -150, MType({0x60202674a1809a47, 0xe80001a48003f835})},
+        {Sign::POS, -150, MType({0xb63901dcc1c582a0, 0xec0001b320042dae})},
+        {Sign::POS, -150, MType({0xc5c1025143073df, 0xf00001c200046500})},
+        {Sign::POS, -150, MType({0x6289aa8d9b594616, 0xf40001d120049e31})},
+        {Sign::POS, -150, MType({0xb8c22bd659ee5155, 0xf80001e08004d94a})},
+        {Sign::POS, -150, MType({0xf05f03f52b4cdae, 0xfc0001f020051654})},
+        {Sign::POS, -149, MType({0xb2aaaac44444999a, 0x800001000002aaaa})},
 
     }};
 // > P = fpminimax((log(1 + x) - x)/x^2, 2, [|1, 128...|],
@@ -704,9 +701,9 @@ alignas(64) const LogRR LOG_TABLE = {
 // > dirtyinfnorm(log(1 + x)/x - x*P, [-0x1.0002143p-29 , 0x1p-29]);
 // 0x1.99a3...p-121
 const Float128 BIG_COEFFS[3]{
-    {Sign::NEG, -129, 0x80000000'0006a710'b59c58e5'554d581c_u128},
-    {Sign::POS, -129, 0xaaaaaaaa'aaaaaabd'de05c7c9'4ae9cbae_u128},
-    {Sign::NEG, -128, 0x80000000'00000000'00000000'00000000_u128},
+    {Sign::NEG, -129, MType({0xb59c58e5554d581c, 0x800000000006a710})},
+    {Sign::POS, -129, MType({0xde05c7c94ae9cbae, 0xaaaaaaaaaaaaaabd})},
+    {Sign::NEG, -128, MType({0x0, 0x8000000000000000})},
 };
 
 // Reuse the output of the fast pass range reduction.

diff  --git a/libc/src/math/generic/log10.cpp b/libc/src/math/generic/log10.cpp
index 66a2e455cf59b3..b3dc8982a7fb98 100644
--- a/libc/src/math/generic/log10.cpp
+++ b/libc/src/math/generic/log10.cpp
@@ -14,7 +14,6 @@
 #include "src/__support/FPUtil/dyadic_float.h"
 #include "src/__support/FPUtil/multiply_add.h"
 #include "src/__support/common.h"
-#include "src/__support/integer_literals.h"
 #include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
 
 #include "common_constants.h"
@@ -24,8 +23,8 @@ namespace LIBC_NAMESPACE {
 
 // 128-bit precision dyadic floating point numbers.
 using Float128 = typename fputil::DyadicFloat<128>;
+using MType = typename Float128::MantissaType;
 using Sign = fputil::Sign;
-using LIBC_NAMESPACE::operator""_u128;
 
 namespace {
 
@@ -38,16 +37,11 @@ constexpr double HI_ERR = 0x1.0p-85;
 // Extra errors from P is from using x^2 to reduce evaluation latency.
 constexpr double P_ERR = 0x1.0p-51;
 
-// log10(2) with 128-bit precision generated by SageMath with:
-// def format_hex(value):
-//     l = hex(value)[2:]
-//     n = 8
-//     x = [l[i:i + n] for i in range(0, len(l), n)]
-//     return "0x" + "'".join(x) + "_uint128"
-// (s, m, e) = RealField(128)(2).log10().sign_exponent_mantissa();
-// print(format_hex(m));
+// log10(2) with 128-bit prepcision generated by SageMath with:
+//   sage: (s, m, e) = RealField(128)(2).log10().sign_exponent_mantissa();
+//   sage: print("MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})");
 const Float128 LOG10_2(Sign::POS, /*exponent=*/-129, /*mantissa=*/
-                       0x9a209a84'fbcff798'8f8959ac'0b7c9178_u128);
+                       MType({0x8f8959ac0b7c9178, 0x9a209a84fbcff798}));
 
 const LogRR LOG10_TABLE = {
     // -log10(r) with 128-bit precision generated by SageMath with:
@@ -55,136 +49,138 @@ const LogRR LOG10_TABLE = {
     // for i in range(128):
     //   r = 2^-8 * ceil( 2^8 * (1 - 2^(-8)) / (1 + i*2^(-7)) );
     //   s, m, e = RealField(128)(r).log10().sign_mantissa_exponent();
-    //   print("{Sign::POS,", e, ", format_hex(m), "},");
+    //   print("{Sign::POS,", e, ", MType({", hex(m % 2^64), ",", hex((m >> 64)
+    //   % 2^64),
+    //         "})},");
     /* .step_1 = */ {
-        {Sign::POS, 0, 0_u128},
-        {Sign::POS, -136, 0xdf3b5ebb'da7e186b'65af394f'e05eafd3_u128},
-        {Sign::POS, -135, 0xe01d4057'2f029c16'a8fb8d87'b30163b5_u128},
-        {Sign::POS, -134, 0xa8c1263a'c3f57eb3'6bb0170e'5bb5d630_u128},
-        {Sign::POS, -134, 0xe1e841bb'c26204e5'fc2ea6eb'0ea1370e_u128},
-        {Sign::POS, -133, 0x8dc2eb02'274d6ff4'dc8a199a'4bb63382_u128},
-        {Sign::POS, -133, 0xaacde920'361dd054'86b57ea6'10c7db33_u128},
-        {Sign::POS, -133, 0xc81618eb'15421bab'5f034a40'e6a2f09d_u128},
-        {Sign::POS, -133, 0xe59c7e66'c5fedb4b'594a31b2'c5cc891c_u128},
-        {Sign::POS, -133, 0xf477584f'97b654de'221efda5'8221904b_u128},
-        {Sign::POS, -132, 0x892e8219'75106e09'68a0dc47'567691c9_u128},
-        {Sign::POS, -132, 0x9841c66e'17dfe7da'10bc94f4'4d216b49_u128},
-        {Sign::POS, -132, 0x9fd7be33'18306cc5'e303ea7e'23c9d6fb_u128},
-        {Sign::POS, -132, 0xaf1cb35b'f494a8dd'ce697dba'a00d4c7d_u128},
-        {Sign::POS, -132, 0xbe8380a2'fa7eba5a'9c216079'dcf0ea96_u128},
-        {Sign::POS, -132, 0xc643c775'8283a271'75278940'eecfc3a9_u128},
-        {Sign::POS, -132, 0xd5de75ec'27e4fe68'2d3467d2'53e2d1fc_u128},
-        {Sign::POS, -132, 0xddb904e8'f1272a95'ead4055d'cdec7b22_u128},
-        {Sign::POS, -132, 0xed88f6bb'355fa196'e1e0dda0'b3d375a4_u128},
-        {Sign::POS, -132, 0xf57e8281'ade9d92d'38dc40c4'fe11e608_u128},
-        {Sign::POS, -131, 0x82c2941b'b20bbe1f'3bcdcfe7'b23976cd_u128},
-        {Sign::POS, -131, 0x86cb3663'2807cdcd'456350b0'bda452a6_u128},
-        {Sign::POS, -131, 0x8eeaa306'458b760a'78185dcc'37fda01a_u128},
-        {Sign::POS, -131, 0x93018395'12fc1168'307643ad'bbbde1b3_u128},
-        {Sign::POS, -131, 0x9b3dd1d5'50c41443'6c449d40'9f883fe3_u128},
-        {Sign::POS, -131, 0x9f6356aa'03c34389'8ea7b30c'8b4ad886_u128},
-        {Sign::POS, -131, 0xa7bd56cd'de5d76a2'961c6e69'0d8879b4_u128},
-        {Sign::POS, -131, 0xabf1ea3e'1d7bd7cf'042643ce'd81ec14a_u128},
-        {Sign::POS, -131, 0xb02b9af7'4c2f879e'4742fb3d'0b5cdd19_u128},
-        {Sign::POS, -131, 0xb8ae8671'b3d7dd6c'f7e2ab36'f09e9014_u128},
-        {Sign::POS, -131, 0xbcf7dabd'87c01afc'8d3fc634'85e7ff13_u128},
-        {Sign::POS, -131, 0xc1467f69'4d10a581'f3edc493'75fbc5a5_u128},
-        {Sign::POS, -131, 0xc9f3ef07'e1f3fc5e'5fcd7d0c'e937375f_u128},
-        {Sign::POS, -131, 0xce52d50b'94fa253a'58252dad'a9f06111_u128},
-        {Sign::POS, -131, 0xd2b74192'fae43777'62f01e5f'f43708ab_u128},
-        {Sign::POS, -131, 0xd72142a8'4ca85abd'481d9b31'31f52639_u128},
-        {Sign::POS, -131, 0xdb90e68b'8abf14af'b305ced1'419fe924_u128},
-        {Sign::POS, -131, 0xe48150cf'32888b9c'849266a8'5513dc6d_u128},
-        {Sign::POS, -131, 0xe90234c6'5a15e533'080ecf32'66b4dcf4_u128},
-        {Sign::POS, -131, 0xed88f6bb'355fa196'e1e0dda0'b3d375a4_u128},
-        {Sign::POS, -131, 0xf215a60b'6557943f'ce3537a3'a211b25b_u128},
-        {Sign::POS, -131, 0xf6a85251'3757dfbd'5dab6830'7fedefcd_u128},
-        {Sign::POS, -131, 0xffdfe15d'e3c01bac'1be2585c'279c50a5_u128},
-        {Sign::POS, -130, 0x8242724a'155219f3'18aa3021'71017dcb_u128},
-        {Sign::POS, -130, 0x849812d0'ccbb5cbd'abc7e698'502d43c0_u128},
-        {Sign::POS, -130, 0x86f0dab1'ab5822b6'c339089a'51663370_u128},
-        {Sign::POS, -130, 0x894cd27d'9f182c63'26f70b34'ce5cf201_u128},
-        {Sign::POS, -130, 0x8bac02e8'ac3e09ac'676f20a8'7ab433df_u128},
-        {Sign::POS, -130, 0x8e0e74ca'ae062e24'6db4169c'c4b83bc3_u128},
-        {Sign::POS, -130, 0x90743120'1c7f651a'cd3fdb2f'ad0d1fd6_u128},
-        {Sign::POS, -130, 0x92dd410a'd7bfe103'49d03e16'3250d1d4_u128},
-        {Sign::POS, -130, 0x9549add2'f8a3c7e0'9ec7dc02'd5e723b9_u128},
-        {Sign::POS, -130, 0x97b980e7'a743d71c'34698d03'a5442573_u128},
-        {Sign::POS, -130, 0x9a2cc3df'f7548556'0522904d'1e47f3de_u128},
-        {Sign::POS, -130, 0x9ca3807b'ca9fe93f'791a7264'6c87b976_u128},
-        {Sign::POS, -130, 0x9f1dc0a4'b9cea286'3826f190'd655d736_u128},
-        {Sign::POS, -130, 0xa19b8e6f'03b60e45'544ab3e4'8199b299_u128},
-        {Sign::POS, -130, 0xa41cf41a'83643487'be775fa8'2961114e_u128},
-        {Sign::POS, -130, 0xa6a1fc13'ad241953'45798e50'19e6c082_u128},
-        {Sign::POS, -130, 0xa92ab0f4'92b772bd'91fb1ed0'cdc4d1fb_u128},
-        {Sign::POS, -130, 0xabb71d85'ef05380d'818b8b9c'bbd17b72_u128},
-        {Sign::POS, -130, 0xae474cc0'397f0d4f'a50c2fea'60c5b3b2_u128},
-        {Sign::POS, -130, 0xb0db49cc'c1823c8e'58ea3498'0ad8b720_u128},
-        {Sign::POS, -130, 0xb3732006'd1fbbba5'4b5f7194'1be508a4_u128},
-        {Sign::POS, -130, 0xb60edafc'dd99ad1d'9e405fb8'bcb1ff1e_u128},
-        {Sign::POS, -130, 0xb60edafc'dd99ad1d'9e405fb8'bcb1ff1e_u128},
-        {Sign::POS, -130, 0xb8ae8671'b3d7dd6c'f7e2ab36'f09e9014_u128},
-        {Sign::POS, -130, 0xbb522e5d'bf37f63b'c6696396'40c305bb_u128},
-        {Sign::POS, -130, 0xbdf9def0'4cf980ff'a3dc9e46'4e98764b_u128},
-        {Sign::POS, -130, 0xc0a5a490'dea95b5e'ffd3256b'59fa9c59_u128},
-        {Sign::POS, -130, 0xc3558be0'85e3f4bc'b0a2d486'72a051a5_u128},
-        {Sign::POS, -130, 0xc3558be0'85e3f4bc'b0a2d486'72a051a5_u128},
-        {Sign::POS, -130, 0xc609a1bb'4aa98f59'acb2ca5d'4ca1c10e_u128},
-        {Sign::POS, -130, 0xc8c1f339'9ca7d33b'43690b9e'3cde0d02_u128},
-        {Sign::POS, -130, 0xcb7e8db1'cfe04827'18b1fd60'383f7e5a_u128},
-        {Sign::POS, -130, 0xce3f7eb9'a517c969'0248757e'5f45af3d_u128},
-        {Sign::POS, -130, 0xd104d427'de7fbcc4'7c4acd60'5be48bc1_u128},
-        {Sign::POS, -130, 0xd104d427'de7fbcc4'7c4acd60'5be48bc1_u128},
-        {Sign::POS, -130, 0xd3ce9c15'e10ec927'58ff6362'9a92652d_u128},
-        {Sign::POS, -130, 0xd69ce4e1'6303fcdd'6b49be3b'd8c89f10_u128},
-        {Sign::POS, -130, 0xd96fbd2e'2814c9cc'e6dd603a'881e9060_u128},
-        {Sign::POS, -130, 0xd96fbd2e'2814c9cc'e6dd603a'881e9060_u128},
-        {Sign::POS, -130, 0xdc4733e7'cbcbfc8c'89e281c9'8c1d705c_u128},
-        {Sign::POS, -130, 0xdf235843'9aa5dd12'dc0db7cf'0cce9f32_u128},
-        {Sign::POS, -130, 0xe20439c2'7a7c01b8'fdf1c5b8'46db9deb_u128},
-        {Sign::POS, -130, 0xe20439c2'7a7c01b8'fdf1c5b8'46db9deb_u128},
-        {Sign::POS, -130, 0xe4e9e832'e2da0c05'3dd7eab4'8869c402_u128},
-        {Sign::POS, -130, 0xe7d473b2'e5db8f2a'4e8fcc90'0b41daef_u128},
-        {Sign::POS, -130, 0xe7d473b2'e5db8f2a'4e8fcc90'0b41daef_u128},
-        {Sign::POS, -130, 0xeac3ecb2'4a3ac7b4'7593e1a9'e917359a_u128},
-        {Sign::POS, -130, 0xedb863f4'b73f982d'e7741396'b49e1ce5_u128},
-        {Sign::POS, -130, 0xedb863f4'b73f982d'e7741396'b49e1ce5_u128},
-        {Sign::POS, -130, 0xf0b1ea93'f34675a7'c8ba4f8f'47b85a5c_u128},
-        {Sign::POS, -130, 0xf3b09202'359f9787'7007c127'6821b705_u128},
-        {Sign::POS, -130, 0xf3b09202'359f9787'7007c127'6821b705_u128},
-        {Sign::POS, -130, 0xf6b46c0c'8c8fdea1'7ee19afe'6db7e324_u128},
-        {Sign::POS, -130, 0xf9bd8add'584687f0'edf54f37'f6d40420_u128},
-        {Sign::POS, -130, 0xf9bd8add'584687f0'edf54f37'f6d40420_u128},
-        {Sign::POS, -130, 0xfccc00fe'dba4e6fb'efe52ccf'03e7dee1_u128},
-        {Sign::POS, -130, 0xffdfe15d'e3c01bac'1be2585c'279c50a5_u128},
-        {Sign::POS, -130, 0xffdfe15d'e3c01bac'1be2585c'279c50a5_u128},
-        {Sign::POS, -129, 0x817c9fa6'43880404'e0b571f5'c91b0446_u128},
-        {Sign::POS, -129, 0x830c1742'7ea55eca'7178594b'ef2def59_u128},
-        {Sign::POS, -129, 0x830c1742'7ea55eca'7178594b'ef2def59_u128},
-        {Sign::POS, -129, 0x849e6196'487c1d1c'9a741bb1'71158d2a_u128},
-        {Sign::POS, -129, 0x849e6196'487c1d1c'9a741bb1'71158d2a_u128},
-        {Sign::POS, -129, 0x863388eb'55ebd295'1a618264'446cb495_u128},
-        {Sign::POS, -129, 0x87cb97c3'ff9eac18'71dbdbbe'c51d7657_u128},
-        {Sign::POS, -129, 0x87cb97c3'ff9eac18'71dbdbbe'c51d7657_u128},
-        {Sign::POS, -129, 0x896698dc'e4cff76c'abe0b522'230f7d14_u128},
-        {Sign::POS, -129, 0x896698dc'e4cff76c'abe0b522'230f7d14_u128},
-        {Sign::POS, -129, 0x8b04972e'9d4d3011'd28e8ada'fea703b4_u128},
-        {Sign::POS, -129, 0x8ca59def'7b5cefc5'208422d8'3be34b27_u128},
-        {Sign::POS, -129, 0x8ca59def'7b5cefc5'208422d8'3be34b27_u128},
-        {Sign::POS, -129, 0x8e49b895'5e3ffb8a'c385cf49'402af0e4_u128},
-        {Sign::POS, -129, 0x8e49b895'5e3ffb8a'c385cf49'402af0e4_u128},
-        {Sign::POS, -129, 0x8ff0f2d7'960a075c'da982a61'4e12c6dd_u128},
-        {Sign::POS, -129, 0x8ff0f2d7'960a075c'da982a61'4e12c6dd_u128},
-        {Sign::POS, -129, 0x919b58b0'd999bbc8'038401fc'1c1b5c2c_u128},
-        {Sign::POS, -129, 0x919b58b0'd999bbc8'038401fc'1c1b5c2c_u128},
-        {Sign::POS, -129, 0x9348f661'4f821394'a9b55d3f'16da746a_u128},
-        {Sign::POS, -129, 0x9348f661'4f821394'a9b55d3f'16da746a_u128},
-        {Sign::POS, -129, 0x94f9d870'aac256a5'088d2d14'73d4f7f5_u128},
-        {Sign::POS, -129, 0x94f9d870'aac256a5'088d2d14'73d4f7f5_u128},
-        {Sign::POS, -129, 0x96ae0bb0'5c35d5bd'7c1e117d'ea19e9e6_u128},
-        {Sign::POS, -129, 0x96ae0bb0'5c35d5bd'7c1e117d'ea19e9e6_u128},
-        {Sign::POS, -129, 0x98659d3d'd9b12532'336db063'0f536fb9_u128},
-        {Sign::POS, 0, 0_u128},
+        {Sign::POS, 0, MType(0)},
+        {Sign::POS, -136, MType({0x65af394fe05eafd3, 0xdf3b5ebbda7e186b})},
+        {Sign::POS, -135, MType({0xa8fb8d87b30163b5, 0xe01d40572f029c16})},
+        {Sign::POS, -134, MType({0x6bb0170e5bb5d630, 0xa8c1263ac3f57eb3})},
+        {Sign::POS, -134, MType({0xfc2ea6eb0ea1370e, 0xe1e841bbc26204e5})},
+        {Sign::POS, -133, MType({0xdc8a199a4bb63382, 0x8dc2eb02274d6ff4})},
+        {Sign::POS, -133, MType({0x86b57ea610c7db33, 0xaacde920361dd054})},
+        {Sign::POS, -133, MType({0x5f034a40e6a2f09d, 0xc81618eb15421bab})},
+        {Sign::POS, -133, MType({0x594a31b2c5cc891c, 0xe59c7e66c5fedb4b})},
+        {Sign::POS, -133, MType({0x221efda58221904b, 0xf477584f97b654de})},
+        {Sign::POS, -132, MType({0x68a0dc47567691c9, 0x892e821975106e09})},
+        {Sign::POS, -132, MType({0x10bc94f44d216b49, 0x9841c66e17dfe7da})},
+        {Sign::POS, -132, MType({0xe303ea7e23c9d6fb, 0x9fd7be3318306cc5})},
+        {Sign::POS, -132, MType({0xce697dbaa00d4c7d, 0xaf1cb35bf494a8dd})},
+        {Sign::POS, -132, MType({0x9c216079dcf0ea96, 0xbe8380a2fa7eba5a})},
+        {Sign::POS, -132, MType({0x75278940eecfc3a9, 0xc643c7758283a271})},
+        {Sign::POS, -132, MType({0x2d3467d253e2d1fc, 0xd5de75ec27e4fe68})},
+        {Sign::POS, -132, MType({0xead4055dcdec7b22, 0xddb904e8f1272a95})},
+        {Sign::POS, -132, MType({0xe1e0dda0b3d375a4, 0xed88f6bb355fa196})},
+        {Sign::POS, -132, MType({0x38dc40c4fe11e608, 0xf57e8281ade9d92d})},
+        {Sign::POS, -131, MType({0x3bcdcfe7b23976cd, 0x82c2941bb20bbe1f})},
+        {Sign::POS, -131, MType({0x456350b0bda452a6, 0x86cb36632807cdcd})},
+        {Sign::POS, -131, MType({0x78185dcc37fda01a, 0x8eeaa306458b760a})},
+        {Sign::POS, -131, MType({0x307643adbbbde1b3, 0x9301839512fc1168})},
+        {Sign::POS, -131, MType({0x6c449d409f883fe3, 0x9b3dd1d550c41443})},
+        {Sign::POS, -131, MType({0x8ea7b30c8b4ad886, 0x9f6356aa03c34389})},
+        {Sign::POS, -131, MType({0x961c6e690d8879b4, 0xa7bd56cdde5d76a2})},
+        {Sign::POS, -131, MType({0x42643ced81ec14a, 0xabf1ea3e1d7bd7cf})},
+        {Sign::POS, -131, MType({0x4742fb3d0b5cdd19, 0xb02b9af74c2f879e})},
+        {Sign::POS, -131, MType({0xf7e2ab36f09e9014, 0xb8ae8671b3d7dd6c})},
+        {Sign::POS, -131, MType({0x8d3fc63485e7ff13, 0xbcf7dabd87c01afc})},
+        {Sign::POS, -131, MType({0xf3edc49375fbc5a5, 0xc1467f694d10a581})},
+        {Sign::POS, -131, MType({0x5fcd7d0ce937375f, 0xc9f3ef07e1f3fc5e})},
+        {Sign::POS, -131, MType({0x58252dada9f06111, 0xce52d50b94fa253a})},
+        {Sign::POS, -131, MType({0x62f01e5ff43708ab, 0xd2b74192fae43777})},
+        {Sign::POS, -131, MType({0x481d9b3131f52639, 0xd72142a84ca85abd})},
+        {Sign::POS, -131, MType({0xb305ced1419fe924, 0xdb90e68b8abf14af})},
+        {Sign::POS, -131, MType({0x849266a85513dc6d, 0xe48150cf32888b9c})},
+        {Sign::POS, -131, MType({0x80ecf3266b4dcf4, 0xe90234c65a15e533})},
+        {Sign::POS, -131, MType({0xe1e0dda0b3d375a4, 0xed88f6bb355fa196})},
+        {Sign::POS, -131, MType({0xce3537a3a211b25b, 0xf215a60b6557943f})},
+        {Sign::POS, -131, MType({0x5dab68307fedefcd, 0xf6a852513757dfbd})},
+        {Sign::POS, -131, MType({0x1be2585c279c50a5, 0xffdfe15de3c01bac})},
+        {Sign::POS, -130, MType({0x18aa302171017dcb, 0x8242724a155219f3})},
+        {Sign::POS, -130, MType({0xabc7e698502d43c0, 0x849812d0ccbb5cbd})},
+        {Sign::POS, -130, MType({0xc339089a51663370, 0x86f0dab1ab5822b6})},
+        {Sign::POS, -130, MType({0x26f70b34ce5cf201, 0x894cd27d9f182c63})},
+        {Sign::POS, -130, MType({0x676f20a87ab433df, 0x8bac02e8ac3e09ac})},
+        {Sign::POS, -130, MType({0x6db4169cc4b83bc3, 0x8e0e74caae062e24})},
+        {Sign::POS, -130, MType({0xcd3fdb2fad0d1fd6, 0x907431201c7f651a})},
+        {Sign::POS, -130, MType({0x49d03e163250d1d4, 0x92dd410ad7bfe103})},
+        {Sign::POS, -130, MType({0x9ec7dc02d5e723b9, 0x9549add2f8a3c7e0})},
+        {Sign::POS, -130, MType({0x34698d03a5442573, 0x97b980e7a743d71c})},
+        {Sign::POS, -130, MType({0x522904d1e47f3de, 0x9a2cc3dff7548556})},
+        {Sign::POS, -130, MType({0x791a72646c87b976, 0x9ca3807bca9fe93f})},
+        {Sign::POS, -130, MType({0x3826f190d655d736, 0x9f1dc0a4b9cea286})},
+        {Sign::POS, -130, MType({0x544ab3e48199b299, 0xa19b8e6f03b60e45})},
+        {Sign::POS, -130, MType({0xbe775fa82961114e, 0xa41cf41a83643487})},
+        {Sign::POS, -130, MType({0x45798e5019e6c082, 0xa6a1fc13ad241953})},
+        {Sign::POS, -130, MType({0x91fb1ed0cdc4d1fb, 0xa92ab0f492b772bd})},
+        {Sign::POS, -130, MType({0x818b8b9cbbd17b72, 0xabb71d85ef05380d})},
+        {Sign::POS, -130, MType({0xa50c2fea60c5b3b2, 0xae474cc0397f0d4f})},
+        {Sign::POS, -130, MType({0x58ea34980ad8b720, 0xb0db49ccc1823c8e})},
+        {Sign::POS, -130, MType({0x4b5f71941be508a4, 0xb3732006d1fbbba5})},
+        {Sign::POS, -130, MType({0x9e405fb8bcb1ff1e, 0xb60edafcdd99ad1d})},
+        {Sign::POS, -130, MType({0x9e405fb8bcb1ff1e, 0xb60edafcdd99ad1d})},
+        {Sign::POS, -130, MType({0xf7e2ab36f09e9014, 0xb8ae8671b3d7dd6c})},
+        {Sign::POS, -130, MType({0xc669639640c305bb, 0xbb522e5dbf37f63b})},
+        {Sign::POS, -130, MType({0xa3dc9e464e98764b, 0xbdf9def04cf980ff})},
+        {Sign::POS, -130, MType({0xffd3256b59fa9c59, 0xc0a5a490dea95b5e})},
+        {Sign::POS, -130, MType({0xb0a2d48672a051a5, 0xc3558be085e3f4bc})},
+        {Sign::POS, -130, MType({0xb0a2d48672a051a5, 0xc3558be085e3f4bc})},
+        {Sign::POS, -130, MType({0xacb2ca5d4ca1c10e, 0xc609a1bb4aa98f59})},
+        {Sign::POS, -130, MType({0x43690b9e3cde0d02, 0xc8c1f3399ca7d33b})},
+        {Sign::POS, -130, MType({0x18b1fd60383f7e5a, 0xcb7e8db1cfe04827})},
+        {Sign::POS, -130, MType({0x248757e5f45af3d, 0xce3f7eb9a517c969})},
+        {Sign::POS, -130, MType({0x7c4acd605be48bc1, 0xd104d427de7fbcc4})},
+        {Sign::POS, -130, MType({0x7c4acd605be48bc1, 0xd104d427de7fbcc4})},
+        {Sign::POS, -130, MType({0x58ff63629a92652d, 0xd3ce9c15e10ec927})},
+        {Sign::POS, -130, MType({0x6b49be3bd8c89f10, 0xd69ce4e16303fcdd})},
+        {Sign::POS, -130, MType({0xe6dd603a881e9060, 0xd96fbd2e2814c9cc})},
+        {Sign::POS, -130, MType({0xe6dd603a881e9060, 0xd96fbd2e2814c9cc})},
+        {Sign::POS, -130, MType({0x89e281c98c1d705c, 0xdc4733e7cbcbfc8c})},
+        {Sign::POS, -130, MType({0xdc0db7cf0cce9f32, 0xdf2358439aa5dd12})},
+        {Sign::POS, -130, MType({0xfdf1c5b846db9deb, 0xe20439c27a7c01b8})},
+        {Sign::POS, -130, MType({0xfdf1c5b846db9deb, 0xe20439c27a7c01b8})},
+        {Sign::POS, -130, MType({0x3dd7eab48869c402, 0xe4e9e832e2da0c05})},
+        {Sign::POS, -130, MType({0x4e8fcc900b41daef, 0xe7d473b2e5db8f2a})},
+        {Sign::POS, -130, MType({0x4e8fcc900b41daef, 0xe7d473b2e5db8f2a})},
+        {Sign::POS, -130, MType({0x7593e1a9e917359a, 0xeac3ecb24a3ac7b4})},
+        {Sign::POS, -130, MType({0xe7741396b49e1ce5, 0xedb863f4b73f982d})},
+        {Sign::POS, -130, MType({0xe7741396b49e1ce5, 0xedb863f4b73f982d})},
+        {Sign::POS, -130, MType({0xc8ba4f8f47b85a5c, 0xf0b1ea93f34675a7})},
+        {Sign::POS, -130, MType({0x7007c1276821b705, 0xf3b09202359f9787})},
+        {Sign::POS, -130, MType({0x7007c1276821b705, 0xf3b09202359f9787})},
+        {Sign::POS, -130, MType({0x7ee19afe6db7e324, 0xf6b46c0c8c8fdea1})},
+        {Sign::POS, -130, MType({0xedf54f37f6d40420, 0xf9bd8add584687f0})},
+        {Sign::POS, -130, MType({0xedf54f37f6d40420, 0xf9bd8add584687f0})},
+        {Sign::POS, -130, MType({0xefe52ccf03e7dee1, 0xfccc00fedba4e6fb})},
+        {Sign::POS, -130, MType({0x1be2585c279c50a5, 0xffdfe15de3c01bac})},
+        {Sign::POS, -130, MType({0x1be2585c279c50a5, 0xffdfe15de3c01bac})},
+        {Sign::POS, -129, MType({0xe0b571f5c91b0446, 0x817c9fa643880404})},
+        {Sign::POS, -129, MType({0x7178594bef2def59, 0x830c17427ea55eca})},
+        {Sign::POS, -129, MType({0x7178594bef2def59, 0x830c17427ea55eca})},
+        {Sign::POS, -129, MType({0x9a741bb171158d2a, 0x849e6196487c1d1c})},
+        {Sign::POS, -129, MType({0x9a741bb171158d2a, 0x849e6196487c1d1c})},
+        {Sign::POS, -129, MType({0x1a618264446cb495, 0x863388eb55ebd295})},
+        {Sign::POS, -129, MType({0x71dbdbbec51d7657, 0x87cb97c3ff9eac18})},
+        {Sign::POS, -129, MType({0x71dbdbbec51d7657, 0x87cb97c3ff9eac18})},
+        {Sign::POS, -129, MType({0xabe0b522230f7d14, 0x896698dce4cff76c})},
+        {Sign::POS, -129, MType({0xabe0b522230f7d14, 0x896698dce4cff76c})},
+        {Sign::POS, -129, MType({0xd28e8adafea703b4, 0x8b04972e9d4d3011})},
+        {Sign::POS, -129, MType({0x208422d83be34b27, 0x8ca59def7b5cefc5})},
+        {Sign::POS, -129, MType({0x208422d83be34b27, 0x8ca59def7b5cefc5})},
+        {Sign::POS, -129, MType({0xc385cf49402af0e4, 0x8e49b8955e3ffb8a})},
+        {Sign::POS, -129, MType({0xc385cf49402af0e4, 0x8e49b8955e3ffb8a})},
+        {Sign::POS, -129, MType({0xda982a614e12c6dd, 0x8ff0f2d7960a075c})},
+        {Sign::POS, -129, MType({0xda982a614e12c6dd, 0x8ff0f2d7960a075c})},
+        {Sign::POS, -129, MType({0x38401fc1c1b5c2c, 0x919b58b0d999bbc8})},
+        {Sign::POS, -129, MType({0x38401fc1c1b5c2c, 0x919b58b0d999bbc8})},
+        {Sign::POS, -129, MType({0xa9b55d3f16da746a, 0x9348f6614f821394})},
+        {Sign::POS, -129, MType({0xa9b55d3f16da746a, 0x9348f6614f821394})},
+        {Sign::POS, -129, MType({0x88d2d1473d4f7f5, 0x94f9d870aac256a5})},
+        {Sign::POS, -129, MType({0x88d2d1473d4f7f5, 0x94f9d870aac256a5})},
+        {Sign::POS, -129, MType({0x7c1e117dea19e9e6, 0x96ae0bb05c35d5bd})},
+        {Sign::POS, -129, MType({0x7c1e117dea19e9e6, 0x96ae0bb05c35d5bd})},
+        {Sign::POS, -129, MType({0x336db0630f536fb9, 0x98659d3dd9b12532})},
+        {Sign::POS, 0, MType(0)},
     },
     // -log10(r) for the second step, generated by SageMath with:
     //
@@ -192,513 +188,513 @@ const LogRR LOG10_TABLE = {
     //   r = 2^-16 * round( 2^16 / (1 + i*2^(-14)) );
     //   s, m, e = RealField(128)(r).log10().sign_mantissa_exponent();
     //   print("{Sign::POS," if s == -1 else "{Sign::NEG,", e, ",
-    //         format_hex(m), "},");
+    //         MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})},");
     /* .step_2 = */
     {
-        {Sign::NEG, -137, 0xdeca7290'13cd7c31'7f1ce002'fa34131b_u128},
-        {Sign::NEG, -137, 0xdb5475b4'4946d986'639afa08'5dd8b4c7_u128},
-        {Sign::NEG, -137, 0xd7de6b0e'10cab7d2'05512632'fe9a58cb_u128},
-        {Sign::NEG, -137, 0xd468529c'fc6fb395'b5380a99'53117d07_u128},
-        {Sign::NEG, -137, 0xd0f22c60'9e474741'70af2d7d'53be1f31_u128},
-        {Sign::NEG, -137, 0xcd7bf858'885dcae2'0ccd499c'49b74cc2_u128},
-        {Sign::NEG, -137, 0xca05b684'4cba73cf'5b51ddc3'987ebfb8_u128},
-        {Sign::NEG, -137, 0xc68f66e3'7d5f545a'49375f51'89b3782b_u128},
-        {Sign::NEG, -137, 0xc3190975'ac495b7a'f6e57738'865c712f_u128},
-        {Sign::NEG, -137, 0xbfa29e3a'6b70547e'ca02b10a'8c712acd_u128},
-        {Sign::NEG, -137, 0xbc2c2531'4cc6e6b6'78e50382'10208151_u128},
-        {Sign::NEG, -137, 0xb8b59e59'e23a9524'0fa099ec'd71ee0ea_u128},
-        {Sign::NEG, -137, 0xb53f09b3'bdb3be28'eeb445cc'b8fb09ed_u128},
-        {Sign::NEG, -137, 0xb1c8673e'71159b33'c352fff1'8a1c02fb_u128},
-        {Sign::NEG, -137, 0xae51b6f9'8e3e406e'7949e03e'cf9b390b_u128},
-        {Sign::NEG, -137, 0xaadaf8e4'a7069c6c'2681f33f'30aadedc_u128},
-        {Sign::NEG, -137, 0xa7642cff'4d4277d6'f01d5496'eea213b3_u128},
-        {Sign::NEG, -137, 0xa3ed5349'12c0751d'e92ef555'ff1de975_u128},
-        {Sign::NEG, -137, 0xa0766bc1'894a1022'eb0c7519'b3e7c1e0_u128},
-        {Sign::NEG, -137, 0x9c21b6e9'1e7f03a3'f60d204f'f0fe5296_u128},
-        {Sign::NEG, -137, 0x98aab049'1050bea8'125c19a4'f057c18b_u128},
-        {Sign::NEG, -137, 0x95339bd6'4cd953e7'7e9383ce'1bdf9575_u128},
-        {Sign::NEG, -137, 0x91bc7990'65cc57d6'bf274f4d'8f770253_u128},
-        {Sign::NEG, -137, 0x8e454976'ecd836ad'656bd9b7'58fe44ba_u128},
-        {Sign::NEG, -137, 0x8ace0b89'73a63413'bfdd2c7f'388fc014_u128},
-        {Sign::NEG, -137, 0x8756bfc7'8bda6ad0'83fbf6ed'936c493a_u128},
-        {Sign::NEG, -137, 0x83df6630'c713cc76'71bfa9a1'8bec01cc_u128},
-        {Sign::NEG, -137, 0x8067fec4'b6ec2111'f09d19f5'6dbfef72_u128},
-        {Sign::NEG, -138, 0xf9e11305'd9f00dad'4c422713'b1642228_u128},
-        {Sign::NEG, -138, 0xf2f20cd5'f58de39a'0c3c7c56'99b7a0a4_u128},
-        {Sign::NEG, -138, 0xec02eaf8'e3c656ff'b8db7c69'e3fa0797_u128},
-        {Sign::NEG, -138, 0xe513ad6d'c7a3a553'a083eb05'506ff7ed_u128},
-        {Sign::NEG, -138, 0xde245433'c425b5c5'c21595e7'45f1fa15_u128},
-        {Sign::NEG, -138, 0xd734df49'fc42189b'b9d5bcdb'fe719389_u128},
-        {Sign::NEG, -138, 0xd0454eaf'92e4068b'a17a1e85'e93461f4_u128},
-        {Sign::NEG, -138, 0xc955a263'aaec6016'e3537584'da333fda_u128},
-        {Sign::NEG, -138, 0xc265da65'6731ace5'00963177'f24682c2_u128},
-        {Sign::NEG, -138, 0xbb75f6b3'ea801b1e'4ac03734'7bcfc50e_u128},
-        {Sign::NEG, -138, 0xb485f74e'57997ec6'901a736a'4364cdfd_u128},
-        {Sign::NEG, -138, 0xad95dc33'd1355117'bb550acc'3b9d7247_u128},
-        {Sign::NEG, -138, 0xa6a5a563'7a00afdc'663cf2b2'7e8f1ffb_u128},
-        {Sign::NEG, -138, 0x9fb552dc'749e5cca'5f89bd08'feb39952_u128},
-        {Sign::NEG, -138, 0x98c4e49d'e3a6bcdd'23c2623c'73f494db_u128},
-        {Sign::NEG, -138, 0x91d45aa6'e9a7d7b0'4937d3b5'485af61e_u128},
-        {Sign::NEG, -138, 0x8ae3b4f6'a92556d9'df14214e'7a6d8111_u128},
-        {Sign::NEG, -138, 0x83f2f38c'44988544'bf7cfc14'999fb4bc_u128},
-        {Sign::NEG, -139, 0xfa042ccd'bce09d15'a990c0ee'569a8d51_u128},
-        {Sign::NEG, -139, 0xec223b0b'32227c9e'a38463e9'd941e1c2_u128},
-        {Sign::NEG, -139, 0xde4011cf'2daaff31'ba032453'0edaa03f_u128},
-        {Sign::NEG, -139, 0xd05db117'f419b857'5e997a02'dad7ace7_u128},
-        {Sign::NEG, -139, 0xc27b18e3'c9f977c7'4a14676d'4d0f817e_u128},
-        {Sign::NEG, -139, 0xb4984930'f3c0481c'857c002e'e7a1e473_u128},
-        {Sign::NEG, -139, 0xa6b541fd'b5cf6d89'5923b2eb'72d8012a_u128},
-        {Sign::NEG, -139, 0x98d20348'5473648b'21cde8f8'5ca1f9fd_u128},
-        {Sign::NEG, -139, 0x8aee8d0f'13e3e09e'0be08e08'b1d212d4_u128},
-        {Sign::NEG, -140, 0xfa15bea0'708795e1'69502399'8e6bd7b0_u128},
-        {Sign::NEG, -140, 0xde4df414'0b42822f'634cea67'50617a92_u128},
-        {Sign::NEG, -140, 0xc285ba75'7feb2781'fbd7e970'aef9dbb8_u128},
-        {Sign::NEG, -140, 0xa6bd11c1'564a8ace'9aedc1c1'ba7d0695_u128},
-        {Sign::NEG, -140, 0x8af3f9f4'1600120a'8d306ba2'07233c44_u128},
-        {Sign::NEG, -141, 0xde54e614'8d030322'856a0a3a'00fcf3c1_u128},
-        {Sign::NEG, -141, 0xa6c0fa00'de35f314'b3a2c140'7cf6d38d_u128},
-        {Sign::NEG, -142, 0xde585f4c'5bbbcd3d'd791cf6a'70c3a504_u128},
-        {Sign::NEG, -143, 0xde5a1bf6'27b1f68f'10a633f2'c4a8ea22_u128},
-        {Sign::NEG, 0, 0_u128},
-        {Sign::POS, -143, 0xde5d9565'8a729eab'ed4a68e5'e6e83ddf_u128},
-        {Sign::POS, -142, 0xde5f522b'21e3e25a'3281f187'2cdbee94_u128},
-        {Sign::POS, -141, 0xa6c8cb3b'7e5bbbfd'f1466eda'a96e356e_u128},
-        {Sign::POS, -141, 0xde62cbd2'1e895473'8a607fd6'95dfc3d9_u128},
-        {Sign::POS, -140, 0x8afed570'32bebc7c'c36b8713'ceefe2de_u128},
-        {Sign::POS, -140, 0xa6ccb436'a3c72fa4'5c2e76c9'53e3e3e6_u128},
-        {Sign::POS, -140, 0xc29b023f'dcb2dccf'8e4950fa'5c943bbf_u128},
-        {Sign::POS, -140, 0xde69bf8f'58005dfc'20fa8a73'c585f634_u128},
-        {Sign::POS, -140, 0xfa38ec28'905810a3'0aa106d9'b0a9717a_u128},
-        {Sign::POS, -139, 0x8b044407'80460c2a'85d70e03'2de41aec_u128},
-        {Sign::POS, -139, 0x98ec49a3'11cc30ab'beee21cb'b82a9a78_u128},
-        {Sign::POS, -139, 0xa6d486e8'ba5151a0'abd7b0fd'd8efe6f6_u128},
-        {Sign::POS, -139, 0xb4bcfbda'377d31cc'3221c56e'2c1aa912_u128},
-        {Sign::POS, -139, 0xc2a5a879'470c7c37'57b795a3'6d9c5f19_u128},
-        {Sign::POS, -139, 0xd08e8cc7'a6d0c580'131ec142'c053ac3b_u128},
-        {Sign::POS, -139, 0xde77a8c7'14b08d28'35e3298f'4bb2aa0a_u128},
-        {Sign::POS, -139, 0xec60fc79'4ea73ee4'7133dafd'fc44f160_u128},
-        {Sign::POS, -139, 0xfa4a87e0'12c533eb'74b37d23'121c59d5_u128},
-        {Sign::POS, -138, 0x841a257e'8f97da22'93bf5f42'07da8a4c_u128},
-        {Sign::POS, -138, 0x8b0f22e9'19107c0c'fdb5990e'c6057f4e_u128},
-        {Sign::POS, -138, 0x92043c30'84f41481'2d408a58'b1b202fe_u128},
-        {Sign::POS, -138, 0x98f97155'b274b1ab'1759381b'61dfbf01_u128},
-        {Sign::POS, -138, 0x9feec259'80cedbbe'41e90a05'4df4b9f1_u128},
-        {Sign::POS, -138, 0xa6e42f3c'cf49959d'a1e66c62'03725d50_u128},
-        {Sign::POS, -138, 0xadd9b800'7d365d83'8693d36a'b45bd7ce_u128},
-        {Sign::POS, -138, 0xb4cf5ca5'69f12da9'91e25bb4'0ad3f098_u128},
-        {Sign::POS, -138, 0xbbc51d2c'74e07cf0'bdf94392'c4cc7f6c_u128},
-        {Sign::POS, -138, 0xc2baf996'7d753f89'6fe37973'354a82f9_u128},
-        {Sign::POS, -138, 0xc9b0f1e4'632ae79b'97647b42'67bfd801_u128},
-        {Sign::POS, -138, 0xd0a70617'058765ee'dbf5c32a'454f7bdf_u128},
-        {Sign::POS, -138, 0xd79d362f'441b2a92'd6edfe04'c37ba916_u128},
-        {Sign::POS, -138, 0xde93822d'fe812587'5ad3480c'cfbe9890_u128},
-        {Sign::POS, -138, 0xe589ea14'145ec764'c7d9ac76'5be7e325_u128},
-        {Sign::POS, -138, 0xec806de2'65640204'6d8f24b9'a3ca011b_u128},
-        {Sign::POS, -138, 0xf3770d99'd14b4928'f9b65480'7dcdd5b2_u128},
-        {Sign::POS, -138, 0xfa6dc93b'37d99326'f4513f47'45663028_u128},
-        {Sign::POS, -137, 0x80b25063'bc6f2cc6'a46e9a72'd80da75f_u128},
-        {Sign::POS, -137, 0x842dca1f'ba19cce6'ee60992b'51ffac4b_u128},
-        {Sign::POS, -137, 0x87a951d2'04deeaf3'1977fa1c'786886b3_u128},
-        {Sign::POS, -137, 0x8b24e77b'0cb60a84'0e5f7c52'cdf119d5_u128},
-        {Sign::POS, -137, 0x8ea08b1b'419bf221'3bf9d70d'a1021a10_u128},
-        {Sign::POS, -137, 0x921c3cb3'1392ab94'fd0406b0'7523b8e6_u128},
-        {Sign::POS, -137, 0x9597fc42'f2a18441'0453ee32'c020f2a8_u128},
-        {Sign::POS, -137, 0x9913c9cb'4ed50d72'cfb3ec22'066bf7f6_u128},
-        {Sign::POS, -137, 0x9c8fa54c'983f1cb8'215c025b'd493ecf9_u128},
-        {Sign::POS, -137, 0x9f2c9319'2e68232b'39c116b7'ee3a83ec_u128},
-        {Sign::POS, -137, 0xa2a8870f'24ac5f66'f41f4b3e'de2782f0_u128},
-        {Sign::POS, -137, 0xa62488ff'3c735799'61196927'723eb75c_u128},
-        {Sign::POS, -137, 0xa9a098e9'e5e2a432'0e615e83'6cb1edab_u128},
-        {Sign::POS, -137, 0xad1cb6cf'91252372'6981331c'5fc71cfc_u128},
-        {Sign::POS, -137, 0xb098e2b0'ae6af9c2'5f6a4faa'054f11fa_u128},
-        {Sign::POS, -137, 0xb4151c8d'ade99205'02a68bc6'81a74c28_u128},
-        {Sign::POS, -137, 0xb7916466'ffdb9ded'382ba24d'90566403_u128},
-        {Sign::POS, -137, 0xbb0dba3d'14811652'6ad1abe5'1dd22e00_u128},
-        {Sign::POS, -137, 0xbe8a1e10'5c1f3b85'456d3f7f'59b13960_u128},
-        {Sign::POS, -137, 0xc2068fe1'470095a4'738dd8b7'd66e9058_u128},
-        {Sign::POS, -137, 0xc5830fb0'4574f4f1'68e123fe'd7ff11c6_u128},
-        {Sign::POS, -137, 0xc8ff9d7d'c7d17225'2f3bd097'80c3aa11_u128},
-        {Sign::POS, -137, 0xcc7c394a'3e706ec5'3b48887f'1ce36935_u128},
-        {Sign::POS, -137, 0xcff8e316'19b19578'47ddae65'5ecc4633_u128},
-        {Sign::POS, -137, 0xd3759ae1'c9f9da5b'37fa81ee'f4819c88_u128},
-        {Sign::POS, -137, 0xd6f260ad'bfb37b55'ff6c4a8d'747c65ed_u128},
-        {Sign::POS, -137, 0xda6f347a'6b4e0070'921c2949'3a33318c_u128},
-        {Sign::POS, -137, 0xddec1648'3d3e3c27'da0631eb'65e731d8_u128},
-        {Sign::POS, -137, 0xe1690617'a5fe4bc2'b3da6c07'd110babc_u128},
-        {Sign::POS, -137, 0xe4e603e9'160d97a6'f2485c78'68b8835a_u128},
-        {Sign::POS, -137, 0xe8630fbc'fdf0d3ae'67f5b7ed'01344055_u128},
-        {Sign::POS, -137, 0xebe02993'ce31ff7b'f820df44'5b1d0622_u128},
-        {Sign::POS, -137, 0xef5d516d'f76066d0'adefc674'b7eca5cd_u128},
-        {Sign::POS, -137, 0xf2da874b'ea10a1e0'da6be6dc'057d3235_u128},
-        {Sign::POS, -137, 0xf657cb2e'16dc95a9'392bdde1'52ab5ff5_u128},
-        {Sign::POS, -137, 0xf9d51d14'ee637444'1bab58e2'ec99cf73_u128},
-        {Sign::POS, -137, 0xfd527d00'e149bd3e'9b51ef7e'3388d692_u128},
-        {Sign::POS, -136, 0x8067f579'301c9ef6'e914c6a7'f3f22fa2_u128},
-        {Sign::POS, -136, 0x8226b374'edf088e2'0d22862e'b2081c94_u128},
-        {Sign::POS, -136, 0x83e57873'e27ad153'29ebd0b4'76cd8fd8_u128},
-        {Sign::POS, -136, 0x85a44476'461854a0'98feddc2'806d01ed_u128},
-        {Sign::POS, -136, 0x8763177c'512896af'471bfc26'1a401854_u128},
-        {Sign::POS, -136, 0x88b23a5b'61430a16'b6f89c19'b4cd1acd_u128},
-        {Sign::POS, -136, 0x8a7119a8'5909ebe9'b39aaf34'163fb099_u128},
-        {Sign::POS, -136, 0x8c2ffff9'9357e887'1665f0f8'21541c36_u128},
-        {Sign::POS, -136, 0x8deeed4f'489679a6'a5051754'e049c1cb_u128},
-        {Sign::POS, -136, 0x8fade1a9'b131c159'8c5a9a1c'57b2e986_u128},
-        {Sign::POS, -136, 0x916cdd09'05988a35'1d844843'8a26a9ae_u128},
-        {Sign::POS, -136, 0x932bdf6d'7e3c477d'8e3a0913'ecd2fd02_u128},
-        {Sign::POS, -136, 0x94eae8d7'53911550'bc881a45'f47f1d36_u128},
-        {Sign::POS, -136, 0x96a9f946'be0db8d0'f5e51c05'499b06d0_u128},
-        {Sign::POS, -136, 0x986910bb'f62ba04f'c1a43be8'1a243fde_u128},
-        {Sign::POS, -136, 0x9a282f37'3466e378'aec3cfeb'e971beb7_u128},
-        {Sign::POS, -136, 0x9be754b8'b13e437c'2518b293'28614989_u128},
-        {Sign::POS, -136, 0x9da68140'a5332b3a'39d6b147'cbe803a4_u128},
-        {Sign::POS, -136, 0x9f65b4cf'48c9af6d'87765e30'04ae428d_u128},
-        {Sign::POS, -136, 0xa124ef64'd4888ed6'08f896ab'28245bac_u128},
-        {Sign::POS, -136, 0xa2e43101'80f93263'f8880fb5'ca630c87_u128},
-        {Sign::POS, -136, 0xa4a379a5'86a7ad62'b179397c'f82e935c_u128},
-        {Sign::POS, -136, 0xa662c951'1e22bda3'95a8cb71'7197ad81_u128},
-        {Sign::POS, -136, 0xa8222004'7ffbcba8'f6394a34'b7f9a4a4_u128},
-        {Sign::POS, -136, 0xa9e17dbf'e4c6ead0'ffafd8c2'b57884e8_u128},
-        {Sign::POS, -136, 0xaba0e283'851ad980'a970a643'b8a6ac2b_u128},
-        {Sign::POS, -136, 0xad604e4f'9991014e'a89b49fb'749d47e0_u128},
-        {Sign::POS, -136, 0xaf1fc124'5ac5772e'66475ed2'ac983305_u128},
-        {Sign::POS, -136, 0xb06f5be1'bf1918e7'b4fd6209'364bb36f_u128},
-        {Sign::POS, -136, 0xb22edb06'36da31d6'8b5ce79b'0965962a_u128},
-        {Sign::POS, -136, 0xb3ee6133'f7149769'6724232b'07396427_u128},
-        {Sign::POS, -136, 0xb5adee6b'386e62ae'2f02b14d'cad8a49c_u128},
-        {Sign::POS, -136, 0xb76d82ac'339058db'bd6443a8'1f792e07_u128},
-        {Sign::POS, -136, 0xb92d1df7'2125eb7c'ea1cd962'5749939a_u128},
-        {Sign::POS, -136, 0xbaecc04c'39dd389b'97775e31'42198913_u128},
-        {Sign::POS, -136, 0xbcac69ab'b6670aeb'c2a701b8'09a2bc39_u128},
-        {Sign::POS, -136, 0xbe6c1a15'cf76d9f6'979b990f'39e662e3_u128},
-        {Sign::POS, -136, 0xc02bd18a'bdc2ca45'88395c46'3ddd82b2_u128},
-        {Sign::POS, -136, 0xc1eb900a'ba03ad8d'66f451bd'9ba5ed05_u128},
-        {Sign::POS, -136, 0xc3ab5595'fcf502d9'84cfb941'3f6437a6_u128},
-        {Sign::POS, -136, 0xc56b222c'bf54f6b6'd2c1c8d3'2943ca42_u128},
-        {Sign::POS, -136, 0xc72af5cf'39e4635f'067c0d1f'd95192e6_u128},
-        {Sign::POS, -136, 0xc8ead07d'a566d0e3'c298bf9e'db6441f2_u128},
-        {Sign::POS, -136, 0xcaaab238'3aa27559'c22d646a'ddde3910_u128},
-        {Sign::POS, -136, 0xcc6a9aff'32603504'07c301e5'c7d1ca40_u128},
-        {Sign::POS, -136, 0xce2a8ad2'c56ba27f'0fb44446'4df02505_u128},
-        {Sign::POS, -136, 0xcfea81b3'2c92feec'05f1df35'91ae898f_u128},
-        {Sign::POS, -136, 0xd13a7f7c'07506f7d'b43caf8e'7b891066_u128},
-        {Sign::POS, -136, 0xd2fa82b3'6a610c4f'597fb13f'0d0fdf19_u128},
-        {Sign::POS, -136, 0xd4ba8cf8'3dd2a06b'3c21f1c6'0a60b0d6_u128},
-        {Sign::POS, -136, 0xd67a9e4a'ba7d7ce5'2b745590'9a0428a4_u128},
-        {Sign::POS, -136, 0xd83ab6ab'193ca223'1438b605'73d2da10_u128},
-        {Sign::POS, -136, 0xd9fad619'92edc008'49f86400'c5ab2b11_u128},
-        {Sign::POS, -136, 0xdbbafc96'60713620'd3c313d1'48a23c35_u128},
-        {Sign::POS, -136, 0xdd7b2a21'baaa13cc'bc568523'55e0f0d5_u128},
+        {Sign::NEG, -137, MType({0x7f1ce002fa34131b, 0xdeca729013cd7c31})},
+        {Sign::NEG, -137, MType({0x639afa085dd8b4c7, 0xdb5475b44946d986})},
+        {Sign::NEG, -137, MType({0x5512632fe9a58cb, 0xd7de6b0e10cab7d2})},
+        {Sign::NEG, -137, MType({0xb5380a9953117d07, 0xd468529cfc6fb395})},
+        {Sign::NEG, -137, MType({0x70af2d7d53be1f31, 0xd0f22c609e474741})},
+        {Sign::NEG, -137, MType({0xccd499c49b74cc2, 0xcd7bf858885dcae2})},
+        {Sign::NEG, -137, MType({0x5b51ddc3987ebfb8, 0xca05b6844cba73cf})},
+        {Sign::NEG, -137, MType({0x49375f5189b3782b, 0xc68f66e37d5f545a})},
+        {Sign::NEG, -137, MType({0xf6e57738865c712f, 0xc3190975ac495b7a})},
+        {Sign::NEG, -137, MType({0xca02b10a8c712acd, 0xbfa29e3a6b70547e})},
+        {Sign::NEG, -137, MType({0x78e5038210208151, 0xbc2c25314cc6e6b6})},
+        {Sign::NEG, -137, MType({0xfa099ecd71ee0ea, 0xb8b59e59e23a9524})},
+        {Sign::NEG, -137, MType({0xeeb445ccb8fb09ed, 0xb53f09b3bdb3be28})},
+        {Sign::NEG, -137, MType({0xc352fff18a1c02fb, 0xb1c8673e71159b33})},
+        {Sign::NEG, -137, MType({0x7949e03ecf9b390b, 0xae51b6f98e3e406e})},
+        {Sign::NEG, -137, MType({0x2681f33f30aadedc, 0xaadaf8e4a7069c6c})},
+        {Sign::NEG, -137, MType({0xf01d5496eea213b3, 0xa7642cff4d4277d6})},
+        {Sign::NEG, -137, MType({0xe92ef555ff1de975, 0xa3ed534912c0751d})},
+        {Sign::NEG, -137, MType({0xeb0c7519b3e7c1e0, 0xa0766bc1894a1022})},
+        {Sign::NEG, -137, MType({0xf60d204ff0fe5296, 0x9c21b6e91e7f03a3})},
+        {Sign::NEG, -137, MType({0x125c19a4f057c18b, 0x98aab0491050bea8})},
+        {Sign::NEG, -137, MType({0x7e9383ce1bdf9575, 0x95339bd64cd953e7})},
+        {Sign::NEG, -137, MType({0xbf274f4d8f770253, 0x91bc799065cc57d6})},
+        {Sign::NEG, -137, MType({0x656bd9b758fe44ba, 0x8e454976ecd836ad})},
+        {Sign::NEG, -137, MType({0xbfdd2c7f388fc014, 0x8ace0b8973a63413})},
+        {Sign::NEG, -137, MType({0x83fbf6ed936c493a, 0x8756bfc78bda6ad0})},
+        {Sign::NEG, -137, MType({0x71bfa9a18bec01cc, 0x83df6630c713cc76})},
+        {Sign::NEG, -137, MType({0xf09d19f56dbfef72, 0x8067fec4b6ec2111})},
+        {Sign::NEG, -138, MType({0x4c422713b1642228, 0xf9e11305d9f00dad})},
+        {Sign::NEG, -138, MType({0xc3c7c5699b7a0a4, 0xf2f20cd5f58de39a})},
+        {Sign::NEG, -138, MType({0xb8db7c69e3fa0797, 0xec02eaf8e3c656ff})},
+        {Sign::NEG, -138, MType({0xa083eb05506ff7ed, 0xe513ad6dc7a3a553})},
+        {Sign::NEG, -138, MType({0xc21595e745f1fa15, 0xde245433c425b5c5})},
+        {Sign::NEG, -138, MType({0xb9d5bcdbfe719389, 0xd734df49fc42189b})},
+        {Sign::NEG, -138, MType({0xa17a1e85e93461f4, 0xd0454eaf92e4068b})},
+        {Sign::NEG, -138, MType({0xe3537584da333fda, 0xc955a263aaec6016})},
+        {Sign::NEG, -138, MType({0x963177f24682c2, 0xc265da656731ace5})},
+        {Sign::NEG, -138, MType({0x4ac037347bcfc50e, 0xbb75f6b3ea801b1e})},
+        {Sign::NEG, -138, MType({0x901a736a4364cdfd, 0xb485f74e57997ec6})},
+        {Sign::NEG, -138, MType({0xbb550acc3b9d7247, 0xad95dc33d1355117})},
+        {Sign::NEG, -138, MType({0x663cf2b27e8f1ffb, 0xa6a5a5637a00afdc})},
+        {Sign::NEG, -138, MType({0x5f89bd08feb39952, 0x9fb552dc749e5cca})},
+        {Sign::NEG, -138, MType({0x23c2623c73f494db, 0x98c4e49de3a6bcdd})},
+        {Sign::NEG, -138, MType({0x4937d3b5485af61e, 0x91d45aa6e9a7d7b0})},
+        {Sign::NEG, -138, MType({0xdf14214e7a6d8111, 0x8ae3b4f6a92556d9})},
+        {Sign::NEG, -138, MType({0xbf7cfc14999fb4bc, 0x83f2f38c44988544})},
+        {Sign::NEG, -139, MType({0xa990c0ee569a8d51, 0xfa042ccdbce09d15})},
+        {Sign::NEG, -139, MType({0xa38463e9d941e1c2, 0xec223b0b32227c9e})},
+        {Sign::NEG, -139, MType({0xba0324530edaa03f, 0xde4011cf2daaff31})},
+        {Sign::NEG, -139, MType({0x5e997a02dad7ace7, 0xd05db117f419b857})},
+        {Sign::NEG, -139, MType({0x4a14676d4d0f817e, 0xc27b18e3c9f977c7})},
+        {Sign::NEG, -139, MType({0x857c002ee7a1e473, 0xb4984930f3c0481c})},
+        {Sign::NEG, -139, MType({0x5923b2eb72d8012a, 0xa6b541fdb5cf6d89})},
+        {Sign::NEG, -139, MType({0x21cde8f85ca1f9fd, 0x98d203485473648b})},
+        {Sign::NEG, -139, MType({0xbe08e08b1d212d4, 0x8aee8d0f13e3e09e})},
+        {Sign::NEG, -140, MType({0x695023998e6bd7b0, 0xfa15bea0708795e1})},
+        {Sign::NEG, -140, MType({0x634cea6750617a92, 0xde4df4140b42822f})},
+        {Sign::NEG, -140, MType({0xfbd7e970aef9dbb8, 0xc285ba757feb2781})},
+        {Sign::NEG, -140, MType({0x9aedc1c1ba7d0695, 0xa6bd11c1564a8ace})},
+        {Sign::NEG, -140, MType({0x8d306ba207233c44, 0x8af3f9f41600120a})},
+        {Sign::NEG, -141, MType({0x856a0a3a00fcf3c1, 0xde54e6148d030322})},
+        {Sign::NEG, -141, MType({0xb3a2c1407cf6d38d, 0xa6c0fa00de35f314})},
+        {Sign::NEG, -142, MType({0xd791cf6a70c3a504, 0xde585f4c5bbbcd3d})},
+        {Sign::NEG, -143, MType({0x10a633f2c4a8ea22, 0xde5a1bf627b1f68f})},
+        {Sign::NEG, 0, MType({0x0, 0x0})},
+        {Sign::POS, -143, MType({0xed4a68e5e6e83ddf, 0xde5d95658a729eab})},
+        {Sign::POS, -142, MType({0x3281f1872cdbee94, 0xde5f522b21e3e25a})},
+        {Sign::POS, -141, MType({0xf1466edaa96e356e, 0xa6c8cb3b7e5bbbfd})},
+        {Sign::POS, -141, MType({0x8a607fd695dfc3d9, 0xde62cbd21e895473})},
+        {Sign::POS, -140, MType({0xc36b8713ceefe2de, 0x8afed57032bebc7c})},
+        {Sign::POS, -140, MType({0x5c2e76c953e3e3e6, 0xa6ccb436a3c72fa4})},
+        {Sign::POS, -140, MType({0x8e4950fa5c943bbf, 0xc29b023fdcb2dccf})},
+        {Sign::POS, -140, MType({0x20fa8a73c585f634, 0xde69bf8f58005dfc})},
+        {Sign::POS, -140, MType({0xaa106d9b0a9717a, 0xfa38ec28905810a3})},
+        {Sign::POS, -139, MType({0x85d70e032de41aec, 0x8b04440780460c2a})},
+        {Sign::POS, -139, MType({0xbeee21cbb82a9a78, 0x98ec49a311cc30ab})},
+        {Sign::POS, -139, MType({0xabd7b0fdd8efe6f6, 0xa6d486e8ba5151a0})},
+        {Sign::POS, -139, MType({0x3221c56e2c1aa912, 0xb4bcfbda377d31cc})},
+        {Sign::POS, -139, MType({0x57b795a36d9c5f19, 0xc2a5a879470c7c37})},
+        {Sign::POS, -139, MType({0x131ec142c053ac3b, 0xd08e8cc7a6d0c580})},
+        {Sign::POS, -139, MType({0x35e3298f4bb2aa0a, 0xde77a8c714b08d28})},
+        {Sign::POS, -139, MType({0x7133dafdfc44f160, 0xec60fc794ea73ee4})},
+        {Sign::POS, -139, MType({0x74b37d23121c59d5, 0xfa4a87e012c533eb})},
+        {Sign::POS, -138, MType({0x93bf5f4207da8a4c, 0x841a257e8f97da22})},
+        {Sign::POS, -138, MType({0xfdb5990ec6057f4e, 0x8b0f22e919107c0c})},
+        {Sign::POS, -138, MType({0x2d408a58b1b202fe, 0x92043c3084f41481})},
+        {Sign::POS, -138, MType({0x1759381b61dfbf01, 0x98f97155b274b1ab})},
+        {Sign::POS, -138, MType({0x41e90a054df4b9f1, 0x9feec25980cedbbe})},
+        {Sign::POS, -138, MType({0xa1e66c6203725d50, 0xa6e42f3ccf49959d})},
+        {Sign::POS, -138, MType({0x8693d36ab45bd7ce, 0xadd9b8007d365d83})},
+        {Sign::POS, -138, MType({0x91e25bb40ad3f098, 0xb4cf5ca569f12da9})},
+        {Sign::POS, -138, MType({0xbdf94392c4cc7f6c, 0xbbc51d2c74e07cf0})},
+        {Sign::POS, -138, MType({0x6fe37973354a82f9, 0xc2baf9967d753f89})},
+        {Sign::POS, -138, MType({0x97647b4267bfd801, 0xc9b0f1e4632ae79b})},
+        {Sign::POS, -138, MType({0xdbf5c32a454f7bdf, 0xd0a70617058765ee})},
+        {Sign::POS, -138, MType({0xd6edfe04c37ba916, 0xd79d362f441b2a92})},
+        {Sign::POS, -138, MType({0x5ad3480ccfbe9890, 0xde93822dfe812587})},
+        {Sign::POS, -138, MType({0xc7d9ac765be7e325, 0xe589ea14145ec764})},
+        {Sign::POS, -138, MType({0x6d8f24b9a3ca011b, 0xec806de265640204})},
+        {Sign::POS, -138, MType({0xf9b654807dcdd5b2, 0xf3770d99d14b4928})},
+        {Sign::POS, -138, MType({0xf4513f4745663028, 0xfa6dc93b37d99326})},
+        {Sign::POS, -137, MType({0xa46e9a72d80da75f, 0x80b25063bc6f2cc6})},
+        {Sign::POS, -137, MType({0xee60992b51ffac4b, 0x842dca1fba19cce6})},
+        {Sign::POS, -137, MType({0x1977fa1c786886b3, 0x87a951d204deeaf3})},
+        {Sign::POS, -137, MType({0xe5f7c52cdf119d5, 0x8b24e77b0cb60a84})},
+        {Sign::POS, -137, MType({0x3bf9d70da1021a10, 0x8ea08b1b419bf221})},
+        {Sign::POS, -137, MType({0xfd0406b07523b8e6, 0x921c3cb31392ab94})},
+        {Sign::POS, -137, MType({0x453ee32c020f2a8, 0x9597fc42f2a18441})},
+        {Sign::POS, -137, MType({0xcfb3ec22066bf7f6, 0x9913c9cb4ed50d72})},
+        {Sign::POS, -137, MType({0x215c025bd493ecf9, 0x9c8fa54c983f1cb8})},
+        {Sign::POS, -137, MType({0x39c116b7ee3a83ec, 0x9f2c93192e68232b})},
+        {Sign::POS, -137, MType({0xf41f4b3ede2782f0, 0xa2a8870f24ac5f66})},
+        {Sign::POS, -137, MType({0x61196927723eb75c, 0xa62488ff3c735799})},
+        {Sign::POS, -137, MType({0xe615e836cb1edab, 0xa9a098e9e5e2a432})},
+        {Sign::POS, -137, MType({0x6981331c5fc71cfc, 0xad1cb6cf91252372})},
+        {Sign::POS, -137, MType({0x5f6a4faa054f11fa, 0xb098e2b0ae6af9c2})},
+        {Sign::POS, -137, MType({0x2a68bc681a74c28, 0xb4151c8dade99205})},
+        {Sign::POS, -137, MType({0x382ba24d90566403, 0xb7916466ffdb9ded})},
+        {Sign::POS, -137, MType({0x6ad1abe51dd22e00, 0xbb0dba3d14811652})},
+        {Sign::POS, -137, MType({0x456d3f7f59b13960, 0xbe8a1e105c1f3b85})},
+        {Sign::POS, -137, MType({0x738dd8b7d66e9058, 0xc2068fe1470095a4})},
+        {Sign::POS, -137, MType({0x68e123fed7ff11c6, 0xc5830fb04574f4f1})},
+        {Sign::POS, -137, MType({0x2f3bd09780c3aa11, 0xc8ff9d7dc7d17225})},
+        {Sign::POS, -137, MType({0x3b48887f1ce36935, 0xcc7c394a3e706ec5})},
+        {Sign::POS, -137, MType({0x47ddae655ecc4633, 0xcff8e31619b19578})},
+        {Sign::POS, -137, MType({0x37fa81eef4819c88, 0xd3759ae1c9f9da5b})},
+        {Sign::POS, -137, MType({0xff6c4a8d747c65ed, 0xd6f260adbfb37b55})},
+        {Sign::POS, -137, MType({0x921c29493a33318c, 0xda6f347a6b4e0070})},
+        {Sign::POS, -137, MType({0xda0631eb65e731d8, 0xddec16483d3e3c27})},
+        {Sign::POS, -137, MType({0xb3da6c07d110babc, 0xe1690617a5fe4bc2})},
+        {Sign::POS, -137, MType({0xf2485c7868b8835a, 0xe4e603e9160d97a6})},
+        {Sign::POS, -137, MType({0x67f5b7ed01344055, 0xe8630fbcfdf0d3ae})},
+        {Sign::POS, -137, MType({0xf820df445b1d0622, 0xebe02993ce31ff7b})},
+        {Sign::POS, -137, MType({0xadefc674b7eca5cd, 0xef5d516df76066d0})},
+        {Sign::POS, -137, MType({0xda6be6dc057d3235, 0xf2da874bea10a1e0})},
+        {Sign::POS, -137, MType({0x392bdde152ab5ff5, 0xf657cb2e16dc95a9})},
+        {Sign::POS, -137, MType({0x1bab58e2ec99cf73, 0xf9d51d14ee637444})},
+        {Sign::POS, -137, MType({0x9b51ef7e3388d692, 0xfd527d00e149bd3e})},
+        {Sign::POS, -136, MType({0xe914c6a7f3f22fa2, 0x8067f579301c9ef6})},
+        {Sign::POS, -136, MType({0xd22862eb2081c94, 0x8226b374edf088e2})},
+        {Sign::POS, -136, MType({0x29ebd0b476cd8fd8, 0x83e57873e27ad153})},
+        {Sign::POS, -136, MType({0x98feddc2806d01ed, 0x85a44476461854a0})},
+        {Sign::POS, -136, MType({0x471bfc261a401854, 0x8763177c512896af})},
+        {Sign::POS, -136, MType({0xb6f89c19b4cd1acd, 0x88b23a5b61430a16})},
+        {Sign::POS, -136, MType({0xb39aaf34163fb099, 0x8a7119a85909ebe9})},
+        {Sign::POS, -136, MType({0x1665f0f821541c36, 0x8c2ffff99357e887})},
+        {Sign::POS, -136, MType({0xa5051754e049c1cb, 0x8deeed4f489679a6})},
+        {Sign::POS, -136, MType({0x8c5a9a1c57b2e986, 0x8fade1a9b131c159})},
+        {Sign::POS, -136, MType({0x1d8448438a26a9ae, 0x916cdd0905988a35})},
+        {Sign::POS, -136, MType({0x8e3a0913ecd2fd02, 0x932bdf6d7e3c477d})},
+        {Sign::POS, -136, MType({0xbc881a45f47f1d36, 0x94eae8d753911550})},
+        {Sign::POS, -136, MType({0xf5e51c05499b06d0, 0x96a9f946be0db8d0})},
+        {Sign::POS, -136, MType({0xc1a43be81a243fde, 0x986910bbf62ba04f})},
+        {Sign::POS, -136, MType({0xaec3cfebe971beb7, 0x9a282f373466e378})},
+        {Sign::POS, -136, MType({0x2518b29328614989, 0x9be754b8b13e437c})},
+        {Sign::POS, -136, MType({0x39d6b147cbe803a4, 0x9da68140a5332b3a})},
+        {Sign::POS, -136, MType({0x87765e3004ae428d, 0x9f65b4cf48c9af6d})},
+        {Sign::POS, -136, MType({0x8f896ab28245bac, 0xa124ef64d4888ed6})},
+        {Sign::POS, -136, MType({0xf8880fb5ca630c87, 0xa2e4310180f93263})},
+        {Sign::POS, -136, MType({0xb179397cf82e935c, 0xa4a379a586a7ad62})},
+        {Sign::POS, -136, MType({0x95a8cb717197ad81, 0xa662c9511e22bda3})},
+        {Sign::POS, -136, MType({0xf6394a34b7f9a4a4, 0xa82220047ffbcba8})},
+        {Sign::POS, -136, MType({0xffafd8c2b57884e8, 0xa9e17dbfe4c6ead0})},
+        {Sign::POS, -136, MType({0xa970a643b8a6ac2b, 0xaba0e283851ad980})},
+        {Sign::POS, -136, MType({0xa89b49fb749d47e0, 0xad604e4f9991014e})},
+        {Sign::POS, -136, MType({0x66475ed2ac983305, 0xaf1fc1245ac5772e})},
+        {Sign::POS, -136, MType({0xb4fd6209364bb36f, 0xb06f5be1bf1918e7})},
+        {Sign::POS, -136, MType({0x8b5ce79b0965962a, 0xb22edb0636da31d6})},
+        {Sign::POS, -136, MType({0x6724232b07396427, 0xb3ee6133f7149769})},
+        {Sign::POS, -136, MType({0x2f02b14dcad8a49c, 0xb5adee6b386e62ae})},
+        {Sign::POS, -136, MType({0xbd6443a81f792e07, 0xb76d82ac339058db})},
+        {Sign::POS, -136, MType({0xea1cd9625749939a, 0xb92d1df72125eb7c})},
+        {Sign::POS, -136, MType({0x97775e3142198913, 0xbaecc04c39dd389b})},
+        {Sign::POS, -136, MType({0xc2a701b809a2bc39, 0xbcac69abb6670aeb})},
+        {Sign::POS, -136, MType({0x979b990f39e662e3, 0xbe6c1a15cf76d9f6})},
+        {Sign::POS, -136, MType({0x88395c463ddd82b2, 0xc02bd18abdc2ca45})},
+        {Sign::POS, -136, MType({0x66f451bd9ba5ed05, 0xc1eb900aba03ad8d})},
+        {Sign::POS, -136, MType({0x84cfb9413f6437a6, 0xc3ab5595fcf502d9})},
+        {Sign::POS, -136, MType({0xd2c1c8d32943ca42, 0xc56b222cbf54f6b6})},
+        {Sign::POS, -136, MType({0x67c0d1fd95192e6, 0xc72af5cf39e4635f})},
+        {Sign::POS, -136, MType({0xc298bf9edb6441f2, 0xc8ead07da566d0e3})},
+        {Sign::POS, -136, MType({0xc22d646addde3910, 0xcaaab2383aa27559})},
+        {Sign::POS, -136, MType({0x7c301e5c7d1ca40, 0xcc6a9aff32603504})},
+        {Sign::POS, -136, MType({0xfb444464df02505, 0xce2a8ad2c56ba27f})},
+        {Sign::POS, -136, MType({0x5f1df3591ae898f, 0xcfea81b32c92feec})},
+        {Sign::POS, -136, MType({0xb43caf8e7b891066, 0xd13a7f7c07506f7d})},
+        {Sign::POS, -136, MType({0x597fb13f0d0fdf19, 0xd2fa82b36a610c4f})},
+        {Sign::POS, -136, MType({0x3c21f1c60a60b0d6, 0xd4ba8cf83dd2a06b})},
+        {Sign::POS, -136, MType({0x2b7455909a0428a4, 0xd67a9e4aba7d7ce5})},
+        {Sign::POS, -136, MType({0x1438b60573d2da10, 0xd83ab6ab193ca223})},
+        {Sign::POS, -136, MType({0x49f86400c5ab2b11, 0xd9fad61992edc008})},
+        {Sign::POS, -136, MType({0xd3c313d148a23c35, 0xdbbafc9660713620})},
+        {Sign::POS, -136, MType({0xbc56852355e0f0d5, 0xdd7b2a21baaa13cc})},
     },
     // -log10(r) for the third step, generated by SageMath with:
     //
     // for i in range(-80, 81):
     //   r = 2^-21 * round( 2^21 / (1 + i*2^(-21)) );
     //   s, m, e = RealField(128)(r).log10().sign_mantissa_exponent();
-    //   print("{Sign::POS," if (s == -1) else "{Sign::NEG,", e, "," ,
-    //         format_hex(m), "},");
+    //   print("{Sign::POS," if (s == -1) else "{Sign::NEG,", e, ",
+    //         MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})},");
     /* .step_3 = */
     {
-        {Sign::NEG, -143, 0x8af8b9b3'22ba8c7d'54d7e498'98ca0093_u128},
-        {Sign::NEG, -143, 0x893c0652'9deffc3d'c321bbf1'6665f29c_u128},
-        {Sign::NEG, -143, 0x877f52e4'33ac7ec4'8246df71'40c3e4ae_u128},
-        {Sign::NEG, -143, 0x85c29f67'e3ef35bc'1deaa9e8'5780e4c1_u128},
-        {Sign::NEG, -143, 0x8405ebdd'aeb742cf'0cd8a512'1a9162d0_u128},
-        {Sign::NEG, -143, 0x82493845'9403c7a7'b10486fa'4644308d_u128},
-        {Sign::NEG, -143, 0x808c849f'93d3e5f0'578a2f61'eedd4be8_u128},
-        {Sign::NEG, -144, 0xfd9fa1d7'5c4d7ea6'715b4a49'1790e8a7_u128},
-        {Sign::NEG, -144, 0xfa263a53'c5f6eaf4'efb6273a'04c71573_u128},
-        {Sign::NEG, -144, 0xf6acd2b4'64a25420'474d9015'60c17807_u128},
-        {Sign::NEG, -144, 0xf3336af9'384dfd7c'6b9a5dec'eb80ec57_u128},
-        {Sign::NEG, -144, 0xefba0322'40f82a5d'2665a32f'7cc64f79_u128},
-        {Sign::NEG, -144, 0xec409b2f'7e9f1e16'17c8a673'16659363_u128},
-        {Sign::NEG, -144, 0xe8c73320'f1411bfa'b62cdd3e'f5c8673d_u128},
-        {Sign::NEG, -144, 0xe54dcaf6'98dc675e'4e4be6d5'a4a07422_u128},
-        {Sign::NEG, -144, 0xe1d462b0'756f4394'032f86ff'08c92e22_u128},
-        {Sign::NEG, -144, 0xde5afa4e'86f7f3ee'ce31a0d2'7359396f_u128},
-        {Sign::NEG, -144, 0xdae191d0'cd74bbc1'7efc3180'aee36373_u128},
-        {Sign::NEG, -144, 0xd7682937'48e3de5e'bb894b1e'0ce72fc4_u128},
-        {Sign::NEG, -144, 0xd3eec081'f9439f19'00230f6c'7270f8be_u128},
-        {Sign::NEG, -144, 0xd07557b0'de924142'9f63aaa5'63e9a399_u128},
-        {Sign::NEG, -144, 0xccfbeec3'f8ce082d'c2354e44'1015e7eb_u128},
-        {Sign::NEG, -144, 0xc98285bb'47f5372c'67d22bcf'5a452a4c_u128},
-        {Sign::NEG, -144, 0xc6091c96'cc061190'65c46fa3'e3afea18_u128},
-        {Sign::NEG, -144, 0xc28fb356'84fedaab'67e63bbe'1405c20d_u128},
-        {Sign::NEG, -144, 0xbf1649fa'72ddd5ce'f061a284'212afbad_u128},
-        {Sign::NEG, -144, 0xbb9ce082'95a1464c'57b0a190'1625b539_u128},
-        {Sign::NEG, -144, 0xb82376ee'ed476f74'cc9d1c79'd93a9a1e_u128},
-        {Sign::NEG, -144, 0xb4aa0d3f'79ce9499'5440d7a1'31392da8_u128},
-        {Sign::NEG, -144, 0xb130a374'3b34f90a'ca0572f7'c9f7a7de_u128},
-        {Sign::NEG, -144, 0xadb7398d'3178e019'dfa464cb'37fe6455_u128},
-        {Sign::NEG, -144, 0xaa3dcf8a'5c988d17'1d26f48e'fb62e2e0_u128},
-        {Sign::NEG, -144, 0xa6c4656b'bc924352'e0e635a6'81d259e2_u128},
-        {Sign::NEG, -144, 0xa34afb31'5164461d'5f8b022f'27cbda35_u128},
-        {Sign::NEG, -144, 0x9fd190db'1b0cd8c6'a40df5ca'390a0465_u128},
-        {Sign::NEG, -144, 0x9c582669'198a3e9e'8fb76866'f01c4f2d_u128},
-        {Sign::NEG, -144, 0x98debbdb'4cdabaf4'da1f690c'752fdeff_u128},
-        {Sign::NEG, -144, 0x95655131'b4fc9119'112db8a3'dc07ee78_u128},
-        {Sign::NEG, -144, 0x91ebe66c'51ee045a'9919c4c2'2125c79e_u128},
-        {Sign::NEG, -144, 0x8e727b8b'23ad5808'ac6aa272'26204db3_u128},
-        {Sign::NEG, -144, 0x8af9108e'2a38cf72'5bf708fe'ad2b1780_u128},
-        {Sign::NEG, -144, 0x877fa575'658eade6'8ee54cbc'53cd19ed_u128},
-        {Sign::NEG, -144, 0x84063a40'd5ad36b4'02ab59d3'8cc6e2c5_u128},
-        {Sign::NEG, -144, 0x808ccef0'7a92ad29'4b0eaf0a'99286378_u128},
-        {Sign::NEG, -145, 0xfa26c708'a87aa929'a448b11f'012c975c_u128},
-        {Sign::NEG, -145, 0xf333eff8'c556e089'b0a1d584'117de73b_u128},
-        {Sign::NEG, -145, 0xec4118b1'4bb6870e'e890f9fb'57fdabb6_u128},
-        {Sign::NEG, -145, 0xe54e4132'3b962355'261d48c7'1e693130_u128},
-        {Sign::NEG, -145, 0xde5b697b'94f23bf7'efecdd48'ed894c32_u128},
-        {Sign::NEG, -145, 0xd768918d'57c75792'7944b995'7598a88a_u128},
-        {Sign::NEG, -145, 0xd075b967'8411fcbf'a208bc08'75093645_u128},
-        {Sign::NEG, -145, 0xc982e10a'19ceb219'f6bb94d8'9da8b432_u128},
-        {Sign::NEG, -145, 0xc2900875'18f9fe3b'b07ebbab'782457b0_u128},
-        {Sign::NEG, -145, 0xbb9d2fa8'819067be'b5126529'45eb9165_u128},
-        {Sign::NEG, -145, 0xb4aa56a4'538e753c'96d57890'e171eea5_u128},
-        {Sign::NEG, -145, 0xadb77d68'8ef0ad4e'94c5854b'9cd01726_u128},
-        {Sign::NEG, -145, 0xa6c4a3f5'33b3968d'9a7eb881'1ec3e6bb_u128},
-        {Sign::NEG, -145, 0x9fd1ca4a'41d3b792'403bd2ab'3e0fa2d7_u128},
-        {Sign::NEG, -145, 0x98def067'b94d96f4'cad61d29'db384b6b_u128},
-        {Sign::NEG, -145, 0x91ec164d'9a1dbb4d'2bc55fd6'b8a306ec_u128},
-        {Sign::NEG, -145, 0x8af93bfb'e440ab33'011fd699'5111a927_u128},
-        {Sign::NEG, -145, 0x84066172'97b2ed3d'959a26fa'ac7e5494_u128},
-        {Sign::NEG, -146, 0xfa270d63'68e21007'c10eab72'66ac6bc0_u128},
-        {Sign::NEG, -146, 0xec415772'74ef0439'0bb178b9'0026b2b2_u128},
-        {Sign::NEG, -146, 0xde5ba112'5385c43b'ac3bfd92'5e6b33e1_u128},
-        {Sign::NEG, -146, 0xd075ea43'049f5d3b'9d0a01a9'5b355319_u128},
-        {Sign::NEG, -146, 0xc2903304'8834dc64'31b3b7b2'0a6a6496_u128},
-        {Sign::NEG, -146, 0xb4aa7b56'de3f4ee0'170da891'504620f4_u128},
-        {Sign::NEG, -146, 0xa6c4c33a'06b7c1d9'53289e84'744549cb_u128},
-        {Sign::NEG, -146, 0x98df0aae'01974279'45519048'b0ce7e7f_u128},
-        {Sign::NEG, -146, 0x8af951b2'ced6dde8'a6118c42'bf99407e_u128},
-        {Sign::NEG, -147, 0xfa273090'dcdf429f'0e5b474c'c5a64cf6_u128},
-        {Sign::NEG, -147, 0xde5bbcdd'c0b533aa'a74dab3b'd6067bc7_u128},
-        {Sign::NEG, -147, 0xc290484c'4921a941'9f73f4e3'7357341b_u128},
-        {Sign::NEG, -147, 0xa6c4d2dc'7616bdb0'31bf5d5f'815220e7_u128},
-        {Sign::NEG, -147, 0x8af95c8e'47868b41'4b987ca5'fca242d7_u128},
-        {Sign::NEG, -148, 0xde5bcac3'7ac6587d'19be3fab'd93832c5_u128},
-        {Sign::NEG, -148, 0xa6c4daad'af3d75e0'8fd43f0c'9ce444d3_u128},
-        {Sign::NEG, -149, 0xde5bd1b6'58ad4676'061cd853'e796bc2c_u128},
-        {Sign::NEG, -150, 0xde5bd52f'c7d8545f'87d6afab'fba0644f_u128},
-        {Sign::POS, 0, 0_u128},
-        {Sign::POS, -150, 0xde5bdc22'a69d9e19'a9bf3200'1043629d_u128},
-        {Sign::POS, -149, 0xde5bdf9c'1637d9ef'8014f0f3'60272d82_u128},
-        {Sign::POS, -148, 0xa6c4ea50'24795bd2'fe94a02f'c639c0e3_u128},
-        {Sign::POS, -148, 0xde5be68e'f5db7f99'bee710a5'ace7c8d4_u128},
-        {Sign::POS, -147, 0x8af97245'3faf11e8'1a778d81'00437e4f_u128},
-        {Sign::POS, -147, 0xa6c4f221'608e89fe'97d773f8'992f7051_u128},
-        {Sign::POS, -147, 0xc29072db'dd9a0dd5'0c9ee584'1a3afa95_u128},
-        {Sign::POS, -147, 0xde5bf474'b6df8331'7b644b13'993cf4ef_u128},
-        {Sign::POS, -147, 0xfa2776eb'ec6ccfdb'3448f66e'2bd7a0ca_u128},
-        {Sign::POS, -146, 0x8af97d20'bf27eccd'6a7ca5f1'a87a1a3c_u128},
-        {Sign::POS, -146, 0x98df3f3a'b64b431d'245675fe'3061108f_u128},
-        {Sign::POS, -146, 0xa6c501c3'dba75dc2'64136e97'019d0a3b_u128},
-        {Sign::POS, -146, 0xb4aac4bc'2f432fa3'6cdadac4'd6925bd4_u128},
-        {Sign::POS, -146, 0xc2908823'b125aba7'2899e237'91d29632_u128},
-        {Sign::POS, -146, 0xd0764bfa'6155c4b5'28039e1f'0323a4c1_u128},
-        {Sign::POS, -146, 0xde5c1040'3fda6db5'a2912e03'afc8cc28_u128},
-        {Sign::POS, -146, 0xec41d4f5'4cba9991'7681cc9f'9e0d89f9_u128},
-        {Sign::POS, -146, 0xfa279a19'87fd3b32'28dae4b7'241255e1_u128},
-        {Sign::POS, -145, 0x8406afd6'78d4a2c0'f2b412f8'dceda28e_u128},
-        {Sign::POS, -145, 0x8af992d7'c4e2d5b5'bf5dccd9'67504857_u128},
-        {Sign::POS, -145, 0x91ec7610'a82cafed'3716dbf9'50b07f85_u128},
-        {Sign::POS, -145, 0x98df5981'22b5aadd'69eebe0b'8e5b18e1_u128},
-        {Sign::POS, -145, 0x9fd23d29'34813ffc'bb583ce6'5af56beb_u128},
-        {Sign::POS, -145, 0xa6c52108'dd92e8c1'e22978ef'a7a962a0_u128},
-        {Sign::POS, -145, 0xadb80520'1dee1ea3'e89bf389'8ef27836_u128},
-        {Sign::POS, -145, 0xb4aae96e'f5965b1a'2c4c997e'c90bab0b_u128},
-        {Sign::POS, -145, 0xbb9dcdf5'648f179c'5e3bcd6f'21fe6224_u128},
-        {Sign::POS, -145, 0xc290b2b3'6adbcda2'82cd723b'f1524680_u128},
-        {Sign::POS, -145, 0xc98397a9'087ff6a4'f1c8f574'935e109b_u128},
-        {Sign::POS, -145, 0xd0767cd6'3d7f0c1c'565959c2'e4394a59_u128},
-        {Sign::POS, -145, 0xd769623b'09dc8781'af0d4157'bc4f05be_u128},
-        {Sign::POS, -145, 0xde5c47d7'6d9be24e'4dd6f857'6e9188b8_u128},
-        {Sign::POS, -145, 0xe54f2dab'68c095fb'd80c7f46'484eee3d_u128},
-        {Sign::POS, -145, 0xec4213b6'fb4e1c04'46679575'12a6bd26_u128},
-        {Sign::POS, -145, 0xf334f9fa'2547ede1'e505c36d'95a074fa_u128},
-        {Sign::POS, -145, 0xfa27e074'e6b1850f'5368655f'1ce3110b_u128},
-        {Sign::POS, -144, 0x808d6393'9fc72d83'c23a5ac5'7f06c112_u128},
-        {Sign::POS, -144, 0x8406d708'97f0f4a2'df39eb58'90580f93_u128},
-        {Sign::POS, -144, 0x87804a99'5bd7d4a2'cd896f3e'43f38669_u128},
-        {Sign::POS, -144, 0x8af9be45'eb7d8a41'83b16ff7'eecace8c_u128},
-        {Sign::POS, -144, 0x8e73320e'46e3d23d'21ec7ae8'ffa1531d_u128},
-        {Sign::POS, -144, 0x91eca5f2'6e0c6953'f227268d'464ae907_u128},
-        {Sign::POS, -144, 0x956619f2'60f90c44'680017af'3bbaf2d3_u128},
-        {Sign::POS, -144, 0x98df8e0e'1fab77cd'20c8069e'4ae400de_u128},
-        {Sign::POS, -144, 0x9c590245'aa2568ac'e381c465'1a67ee13_u128},
-        {Sign::POS, -144, 0x9fd27699'00689ba2'a0e23fff'd718794e_u128},
-        {Sign::POS, -144, 0xa34beb08'2276cd6d'73508b92'7f485b97_u128},
-        {Sign::POS, -144, 0xa6c55f93'1051bacc'9ee5e19f'2eecdb55_u128},
-        {Sign::POS, -144, 0xaa3ed439'c9fb207f'916daa3c'6c8fdc9d_u128},
-        {Sign::POS, -144, 0xadb848fc'4f74bb45'e265804b'77126ed3_u128},
-        {Sign::POS, -144, 0xb131bdda'a0c047df'52fd36ae'943fd7b4_u128},
-        {Sign::POS, -144, 0xb4ab32d4'bddf830b'ce16dd7f'60311bf6_u128},
-        {Sign::POS, -144, 0xb824a7ea'a6d4298b'6846c745'1d8105ac_u128},
-        {Sign::POS, -144, 0xbb9e1d1c'5b9ff81e'5fd38e2b'0650a884_u128},
-        {Sign::POS, -144, 0xbf179269'dc44ab85'1cb61936'9e1c641f_u128},
-        {Sign::POS, -144, 0xc29107d3'28c40080'3099a17e'0461648c_u128},
-        {Sign::POS, -144, 0xc60a7d58'411fb3d0'56dbb75e'4813a12b_u128},
-        {Sign::POS, -144, 0xc983f2f9'25598236'748c47b1'bbe45a07_u128},
-        {Sign::POS, -144, 0xccfd68b5'd5732873'986da106'4b5913e1_u128},
-        {Sign::POS, -144, 0xd076de8e'516e6348'faf478d3'd0b31300_u128},
-        {Sign::POS, -144, 0xd3f05482'994cef77'fe47f0b2'6ba754ff_u128},
-        {Sign::POS, -144, 0xd769ca92'ad1089c2'2e419b90'd8e709b7_u128},
-        {Sign::POS, -144, 0xdae340be'8cbaeee9'406d82ea'ca788b6f_u128},
-        {Sign::POS, -144, 0xde5cb706'384ddbaf'140a2bff'40e0d670_u128},
-        {Sign::POS, -144, 0xe1d62d69'afcb0cd5'b2089d06'e51d8034_u128},
-        {Sign::POS, -144, 0xe54fa3e8'f3343f1f'4d0c626a'636f2e4f_u128},
-        {Sign::POS, -144, 0xe8c91a84'028b2f4e'416b93f8'c6f48d30_u128},
-        {Sign::POS, -144, 0xec42913a'ddd19a25'152eda1d'd615c6f5_u128},
-        {Sign::POS, -144, 0xefbc080d'85093c66'78117318'6fc07a66_u128},
-        {Sign::POS, -144, 0xf3357efb'f833d2d5'43813830'e974324d_u128},
-        {Sign::POS, -144, 0xf6aef606'37531a34'7a9ea2ef'6e1f5d41_u128},
-        {Sign::POS, -144, 0xfa286d2c'4268cf47'4a3cd252'5dccc623_u128},
-        {Sign::POS, -144, 0xfda1e46e'1976aed1'08e19004'ae218d5d_u128},
-        {Sign::POS, -143, 0x808dade5'de3f3aca'9b62aaca'25d5d18a_u128},
-        {Sign::POS, -143, 0x824a69a2'95c0f02b'bee9a8d4'3e00613c_u128},
-        {Sign::POS, -143, 0x8407256d'334155ed'd8d4b69c'2056f729_u128},
-        {Sign::POS, -143, 0x85c3e145'b6c14a72'e7cc2860'5d7bb77e_u128},
-        {Sign::POS, -143, 0x87809d2c'2041ac1c'ff51b4bd'c834a8f1_u128},
-        {Sign::POS, -143, 0x893d5920'6fc3594e'47c0774a'a81c3561_u128},
-        {Sign::POS, -143, 0x8afa1522'a5473068'fe4cf331'ecb9eb62_u128},
+        {Sign::NEG, -143, MType({0x54d7e49898ca0093, 0x8af8b9b322ba8c7d})},
+        {Sign::NEG, -143, MType({0xc321bbf16665f29c, 0x893c06529deffc3d})},
+        {Sign::NEG, -143, MType({0x8246df7140c3e4ae, 0x877f52e433ac7ec4})},
+        {Sign::NEG, -143, MType({0x1deaa9e85780e4c1, 0x85c29f67e3ef35bc})},
+        {Sign::NEG, -143, MType({0xcd8a5121a9162d0, 0x8405ebddaeb742cf})},
+        {Sign::NEG, -143, MType({0xb10486fa4644308d, 0x824938459403c7a7})},
+        {Sign::NEG, -143, MType({0x578a2f61eedd4be8, 0x808c849f93d3e5f0})},
+        {Sign::NEG, -144, MType({0x715b4a491790e8a7, 0xfd9fa1d75c4d7ea6})},
+        {Sign::NEG, -144, MType({0xefb6273a04c71573, 0xfa263a53c5f6eaf4})},
+        {Sign::NEG, -144, MType({0x474d901560c17807, 0xf6acd2b464a25420})},
+        {Sign::NEG, -144, MType({0x6b9a5deceb80ec57, 0xf3336af9384dfd7c})},
+        {Sign::NEG, -144, MType({0x2665a32f7cc64f79, 0xefba032240f82a5d})},
+        {Sign::NEG, -144, MType({0x17c8a67316659363, 0xec409b2f7e9f1e16})},
+        {Sign::NEG, -144, MType({0xb62cdd3ef5c8673d, 0xe8c73320f1411bfa})},
+        {Sign::NEG, -144, MType({0x4e4be6d5a4a07422, 0xe54dcaf698dc675e})},
+        {Sign::NEG, -144, MType({0x32f86ff08c92e22, 0xe1d462b0756f4394})},
+        {Sign::NEG, -144, MType({0xce31a0d27359396f, 0xde5afa4e86f7f3ee})},
+        {Sign::NEG, -144, MType({0x7efc3180aee36373, 0xdae191d0cd74bbc1})},
+        {Sign::NEG, -144, MType({0xbb894b1e0ce72fc4, 0xd768293748e3de5e})},
+        {Sign::NEG, -144, MType({0x230f6c7270f8be, 0xd3eec081f9439f19})},
+        {Sign::NEG, -144, MType({0x9f63aaa563e9a399, 0xd07557b0de924142})},
+        {Sign::NEG, -144, MType({0xc2354e441015e7eb, 0xccfbeec3f8ce082d})},
+        {Sign::NEG, -144, MType({0x67d22bcf5a452a4c, 0xc98285bb47f5372c})},
+        {Sign::NEG, -144, MType({0x65c46fa3e3afea18, 0xc6091c96cc061190})},
+        {Sign::NEG, -144, MType({0x67e63bbe1405c20d, 0xc28fb35684fedaab})},
+        {Sign::NEG, -144, MType({0xf061a284212afbad, 0xbf1649fa72ddd5ce})},
+        {Sign::NEG, -144, MType({0x57b0a1901625b539, 0xbb9ce08295a1464c})},
+        {Sign::NEG, -144, MType({0xcc9d1c79d93a9a1e, 0xb82376eeed476f74})},
+        {Sign::NEG, -144, MType({0x5440d7a131392da8, 0xb4aa0d3f79ce9499})},
+        {Sign::NEG, -144, MType({0xca0572f7c9f7a7de, 0xb130a3743b34f90a})},
+        {Sign::NEG, -144, MType({0xdfa464cb37fe6455, 0xadb7398d3178e019})},
+        {Sign::NEG, -144, MType({0x1d26f48efb62e2e0, 0xaa3dcf8a5c988d17})},
+        {Sign::NEG, -144, MType({0xe0e635a681d259e2, 0xa6c4656bbc924352})},
+        {Sign::NEG, -144, MType({0x5f8b022f27cbda35, 0xa34afb315164461d})},
+        {Sign::NEG, -144, MType({0xa40df5ca390a0465, 0x9fd190db1b0cd8c6})},
+        {Sign::NEG, -144, MType({0x8fb76866f01c4f2d, 0x9c582669198a3e9e})},
+        {Sign::NEG, -144, MType({0xda1f690c752fdeff, 0x98debbdb4cdabaf4})},
+        {Sign::NEG, -144, MType({0x112db8a3dc07ee78, 0x95655131b4fc9119})},
+        {Sign::NEG, -144, MType({0x9919c4c22125c79e, 0x91ebe66c51ee045a})},
+        {Sign::NEG, -144, MType({0xac6aa27226204db3, 0x8e727b8b23ad5808})},
+        {Sign::NEG, -144, MType({0x5bf708fead2b1780, 0x8af9108e2a38cf72})},
+        {Sign::NEG, -144, MType({0x8ee54cbc53cd19ed, 0x877fa575658eade6})},
+        {Sign::NEG, -144, MType({0x2ab59d38cc6e2c5, 0x84063a40d5ad36b4})},
+        {Sign::NEG, -144, MType({0x4b0eaf0a99286378, 0x808ccef07a92ad29})},
+        {Sign::NEG, -145, MType({0xa448b11f012c975c, 0xfa26c708a87aa929})},
+        {Sign::NEG, -145, MType({0xb0a1d584117de73b, 0xf333eff8c556e089})},
+        {Sign::NEG, -145, MType({0xe890f9fb57fdabb6, 0xec4118b14bb6870e})},
+        {Sign::NEG, -145, MType({0x261d48c71e693130, 0xe54e41323b962355})},
+        {Sign::NEG, -145, MType({0xefecdd48ed894c32, 0xde5b697b94f23bf7})},
+        {Sign::NEG, -145, MType({0x7944b9957598a88a, 0xd768918d57c75792})},
+        {Sign::NEG, -145, MType({0xa208bc0875093645, 0xd075b9678411fcbf})},
+        {Sign::NEG, -145, MType({0xf6bb94d89da8b432, 0xc982e10a19ceb219})},
+        {Sign::NEG, -145, MType({0xb07ebbab782457b0, 0xc290087518f9fe3b})},
+        {Sign::NEG, -145, MType({0xb512652945eb9165, 0xbb9d2fa8819067be})},
+        {Sign::NEG, -145, MType({0x96d57890e171eea5, 0xb4aa56a4538e753c})},
+        {Sign::NEG, -145, MType({0x94c5854b9cd01726, 0xadb77d688ef0ad4e})},
+        {Sign::NEG, -145, MType({0x9a7eb8811ec3e6bb, 0xa6c4a3f533b3968d})},
+        {Sign::NEG, -145, MType({0x403bd2ab3e0fa2d7, 0x9fd1ca4a41d3b792})},
+        {Sign::NEG, -145, MType({0xcad61d29db384b6b, 0x98def067b94d96f4})},
+        {Sign::NEG, -145, MType({0x2bc55fd6b8a306ec, 0x91ec164d9a1dbb4d})},
+        {Sign::NEG, -145, MType({0x11fd6995111a927, 0x8af93bfbe440ab33})},
+        {Sign::NEG, -145, MType({0x959a26faac7e5494, 0x8406617297b2ed3d})},
+        {Sign::NEG, -146, MType({0xc10eab7266ac6bc0, 0xfa270d6368e21007})},
+        {Sign::NEG, -146, MType({0xbb178b90026b2b2, 0xec41577274ef0439})},
+        {Sign::NEG, -146, MType({0xac3bfd925e6b33e1, 0xde5ba1125385c43b})},
+        {Sign::NEG, -146, MType({0x9d0a01a95b355319, 0xd075ea43049f5d3b})},
+        {Sign::NEG, -146, MType({0x31b3b7b20a6a6496, 0xc29033048834dc64})},
+        {Sign::NEG, -146, MType({0x170da891504620f4, 0xb4aa7b56de3f4ee0})},
+        {Sign::NEG, -146, MType({0x53289e84744549cb, 0xa6c4c33a06b7c1d9})},
+        {Sign::NEG, -146, MType({0x45519048b0ce7e7f, 0x98df0aae01974279})},
+        {Sign::NEG, -146, MType({0xa6118c42bf99407e, 0x8af951b2ced6dde8})},
+        {Sign::NEG, -147, MType({0xe5b474cc5a64cf6, 0xfa273090dcdf429f})},
+        {Sign::NEG, -147, MType({0xa74dab3bd6067bc7, 0xde5bbcddc0b533aa})},
+        {Sign::NEG, -147, MType({0x9f73f4e37357341b, 0xc290484c4921a941})},
+        {Sign::NEG, -147, MType({0x31bf5d5f815220e7, 0xa6c4d2dc7616bdb0})},
+        {Sign::NEG, -147, MType({0x4b987ca5fca242d7, 0x8af95c8e47868b41})},
+        {Sign::NEG, -148, MType({0x19be3fabd93832c5, 0xde5bcac37ac6587d})},
+        {Sign::NEG, -148, MType({0x8fd43f0c9ce444d3, 0xa6c4daadaf3d75e0})},
+        {Sign::NEG, -149, MType({0x61cd853e796bc2c, 0xde5bd1b658ad4676})},
+        {Sign::NEG, -150, MType({0x87d6afabfba0644f, 0xde5bd52fc7d8545f})},
+        {Sign::POS, 0, MType({0x0, 0x0})},
+        {Sign::POS, -150, MType({0xa9bf32001043629d, 0xde5bdc22a69d9e19})},
+        {Sign::POS, -149, MType({0x8014f0f360272d82, 0xde5bdf9c1637d9ef})},
+        {Sign::POS, -148, MType({0xfe94a02fc639c0e3, 0xa6c4ea5024795bd2})},
+        {Sign::POS, -148, MType({0xbee710a5ace7c8d4, 0xde5be68ef5db7f99})},
+        {Sign::POS, -147, MType({0x1a778d8100437e4f, 0x8af972453faf11e8})},
+        {Sign::POS, -147, MType({0x97d773f8992f7051, 0xa6c4f221608e89fe})},
+        {Sign::POS, -147, MType({0xc9ee5841a3afa95, 0xc29072dbdd9a0dd5})},
+        {Sign::POS, -147, MType({0x7b644b13993cf4ef, 0xde5bf474b6df8331})},
+        {Sign::POS, -147, MType({0x3448f66e2bd7a0ca, 0xfa2776ebec6ccfdb})},
+        {Sign::POS, -146, MType({0x6a7ca5f1a87a1a3c, 0x8af97d20bf27eccd})},
+        {Sign::POS, -146, MType({0x245675fe3061108f, 0x98df3f3ab64b431d})},
+        {Sign::POS, -146, MType({0x64136e97019d0a3b, 0xa6c501c3dba75dc2})},
+        {Sign::POS, -146, MType({0x6cdadac4d6925bd4, 0xb4aac4bc2f432fa3})},
+        {Sign::POS, -146, MType({0x2899e23791d29632, 0xc2908823b125aba7})},
+        {Sign::POS, -146, MType({0x28039e1f0323a4c1, 0xd0764bfa6155c4b5})},
+        {Sign::POS, -146, MType({0xa2912e03afc8cc28, 0xde5c10403fda6db5})},
+        {Sign::POS, -146, MType({0x7681cc9f9e0d89f9, 0xec41d4f54cba9991})},
+        {Sign::POS, -146, MType({0x28dae4b7241255e1, 0xfa279a1987fd3b32})},
+        {Sign::POS, -145, MType({0xf2b412f8dceda28e, 0x8406afd678d4a2c0})},
+        {Sign::POS, -145, MType({0xbf5dccd967504857, 0x8af992d7c4e2d5b5})},
+        {Sign::POS, -145, MType({0x3716dbf950b07f85, 0x91ec7610a82cafed})},
+        {Sign::POS, -145, MType({0x69eebe0b8e5b18e1, 0x98df598122b5aadd})},
+        {Sign::POS, -145, MType({0xbb583ce65af56beb, 0x9fd23d2934813ffc})},
+        {Sign::POS, -145, MType({0xe22978efa7a962a0, 0xa6c52108dd92e8c1})},
+        {Sign::POS, -145, MType({0xe89bf3898ef27836, 0xadb805201dee1ea3})},
+        {Sign::POS, -145, MType({0x2c4c997ec90bab0b, 0xb4aae96ef5965b1a})},
+        {Sign::POS, -145, MType({0x5e3bcd6f21fe6224, 0xbb9dcdf5648f179c})},
+        {Sign::POS, -145, MType({0x82cd723bf1524680, 0xc290b2b36adbcda2})},
+        {Sign::POS, -145, MType({0xf1c8f574935e109b, 0xc98397a9087ff6a4})},
+        {Sign::POS, -145, MType({0x565959c2e4394a59, 0xd0767cd63d7f0c1c})},
+        {Sign::POS, -145, MType({0xaf0d4157bc4f05be, 0xd769623b09dc8781})},
+        {Sign::POS, -145, MType({0x4dd6f8576e9188b8, 0xde5c47d76d9be24e})},
+        {Sign::POS, -145, MType({0xd80c7f46484eee3d, 0xe54f2dab68c095fb})},
+        {Sign::POS, -145, MType({0x4667957512a6bd26, 0xec4213b6fb4e1c04})},
+        {Sign::POS, -145, MType({0xe505c36d95a074fa, 0xf334f9fa2547ede1})},
+        {Sign::POS, -145, MType({0x5368655f1ce3110b, 0xfa27e074e6b1850f})},
+        {Sign::POS, -144, MType({0xc23a5ac57f06c112, 0x808d63939fc72d83})},
+        {Sign::POS, -144, MType({0xdf39eb5890580f93, 0x8406d70897f0f4a2})},
+        {Sign::POS, -144, MType({0xcd896f3e43f38669, 0x87804a995bd7d4a2})},
+        {Sign::POS, -144, MType({0x83b16ff7eecace8c, 0x8af9be45eb7d8a41})},
+        {Sign::POS, -144, MType({0x21ec7ae8ffa1531d, 0x8e73320e46e3d23d})},
+        {Sign::POS, -144, MType({0xf227268d464ae907, 0x91eca5f26e0c6953})},
+        {Sign::POS, -144, MType({0x680017af3bbaf2d3, 0x956619f260f90c44})},
+        {Sign::POS, -144, MType({0x20c8069e4ae400de, 0x98df8e0e1fab77cd})},
+        {Sign::POS, -144, MType({0xe381c4651a67ee13, 0x9c590245aa2568ac})},
+        {Sign::POS, -144, MType({0xa0e23fffd718794e, 0x9fd2769900689ba2})},
+        {Sign::POS, -144, MType({0x73508b927f485b97, 0xa34beb082276cd6d})},
+        {Sign::POS, -144, MType({0x9ee5e19f2eecdb55, 0xa6c55f931051bacc})},
+        {Sign::POS, -144, MType({0x916daa3c6c8fdc9d, 0xaa3ed439c9fb207f})},
+        {Sign::POS, -144, MType({0xe265804b77126ed3, 0xadb848fc4f74bb45})},
+        {Sign::POS, -144, MType({0x52fd36ae943fd7b4, 0xb131bddaa0c047df})},
+        {Sign::POS, -144, MType({0xce16dd7f60311bf6, 0xb4ab32d4bddf830b})},
+        {Sign::POS, -144, MType({0x6846c7451d8105ac, 0xb824a7eaa6d4298b})},
+        {Sign::POS, -144, MType({0x5fd38e2b0650a884, 0xbb9e1d1c5b9ff81e})},
+        {Sign::POS, -144, MType({0x1cb619369e1c641f, 0xbf179269dc44ab85})},
+        {Sign::POS, -144, MType({0x3099a17e0461648c, 0xc29107d328c40080})},
+        {Sign::POS, -144, MType({0x56dbb75e4813a12b, 0xc60a7d58411fb3d0})},
+        {Sign::POS, -144, MType({0x748c47b1bbe45a07, 0xc983f2f925598236})},
+        {Sign::POS, -144, MType({0x986da1064b5913e1, 0xccfd68b5d5732873})},
+        {Sign::POS, -144, MType({0xfaf478d3d0b31300, 0xd076de8e516e6348})},
+        {Sign::POS, -144, MType({0xfe47f0b26ba754ff, 0xd3f05482994cef77})},
+        {Sign::POS, -144, MType({0x2e419b90d8e709b7, 0xd769ca92ad1089c2})},
+        {Sign::POS, -144, MType({0x406d82eaca788b6f, 0xdae340be8cbaeee9})},
+        {Sign::POS, -144, MType({0x140a2bff40e0d670, 0xde5cb706384ddbaf})},
+        {Sign::POS, -144, MType({0xb2089d06e51d8034, 0xe1d62d69afcb0cd5})},
+        {Sign::POS, -144, MType({0x4d0c626a636f2e4f, 0xe54fa3e8f3343f1f})},
+        {Sign::POS, -144, MType({0x416b93f8c6f48d30, 0xe8c91a84028b2f4e})},
+        {Sign::POS, -144, MType({0x152eda1dd615c6f5, 0xec42913addd19a25})},
+        {Sign::POS, -144, MType({0x781173186fc07a66, 0xefbc080d85093c66})},
+        {Sign::POS, -144, MType({0x43813830e974324d, 0xf3357efbf833d2d5})},
+        {Sign::POS, -144, MType({0x7a9ea2ef6e1f5d41, 0xf6aef60637531a34})},
+        {Sign::POS, -144, MType({0x4a3cd2525dccc623, 0xfa286d2c4268cf47})},
+        {Sign::POS, -144, MType({0x8e19004ae218d5d, 0xfda1e46e1976aed1})},
+        {Sign::POS, -143, MType({0x9b62aaca25d5d18a, 0x808dade5de3f3aca})},
+        {Sign::POS, -143, MType({0xbee9a8d43e00613c, 0x824a69a295c0f02b})},
+        {Sign::POS, -143, MType({0xd8d4b69c2056f729, 0x8407256d334155ed})},
+        {Sign::POS, -143, MType({0xe7cc28605d7bb77e, 0x85c3e145b6c14a72})},
+        {Sign::POS, -143, MType({0xff51b4bdc834a8f1, 0x87809d2c2041ac1c})},
+        {Sign::POS, -143, MType({0x47c0774aa81c3561, 0x893d59206fc3594e})},
+        {Sign::POS, -143, MType({0xfe4cf331ecb9eb62, 0x8afa1522a5473068})},
     },
     // -log10(r) for the fourth step, generated by SageMath with:
     //
     // for i in range(-65, 65):
     //   r = 2^-28 * round( 2^28 / (1 + i*2^(-28)) );
     //   s, m, e = RealField(128)(r).log10().sign_mantissa_exponent();
-    //   print("{Sign::POS," if (s == -1) else "{Sign::NEG,", e, ",",
-    //         format_hex(m), "},");
+    //   print("{Sign::POS," if (s == -1) else "{Sign::NEG,", e, ",
+    //         MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})},");
     /* .step_4 = */
     {
-        {Sign::NEG, -151, 0xe1d54641'22cf95a4'e471a82b'bedbe0ae_u128},
-        {Sign::NEG, -151, 0xde5bd6ec'7f7bc110'af6e93be'8e4c1764_u128},
-        {Sign::NEG, -151, 0xdae26797'a490f80e'e44848f0'a5779499_u128},
-        {Sign::NEG, -151, 0xd768f842'920f3a98'90205533'f4e70566_u128},
-        {Sign::NEG, -151, 0xd3ef88ed'47f688a6'c01844ac'e3729e48_u128},
-        {Sign::NEG, -151, 0xd0761997'c646e232'8151a232'4e41c7c4_u128},
-        {Sign::NEG, -151, 0xccfcaa42'0d004734'e0edf74d'88cacafd_u128},
-        {Sign::NEG, -151, 0xc9833aec'1c22b7a6'ec0ecc3a'5cd27e58_u128},
-        {Sign::NEG, -151, 0xc609cb95'f3ae3381'afd5a7e7'0a6bf214_u128},
-        {Sign::NEG, -151, 0xc2905c3f'93a2babe'39640ff4'47f81ceb_u128},
-        {Sign::NEG, -151, 0xbf16ece8'fc004d55'95db88b5'422588b1_u128},
-        {Sign::NEG, -151, 0xbb9d7d92'2cc6eb40'd25d952f'9beffeec_u128},
-        {Sign::NEG, -151, 0xb8240e3b'25f69478'fc0bb71b'6ea03578_u128},
-        {Sign::NEG, -151, 0xb4aa9ee3'e78f48f7'20076ee3'49cb7b20_u128},
-        {Sign::NEG, -151, 0xb1312f8c'719108b4'4b723ba4'3353643d_u128},
-        {Sign::NEG, -151, 0xadb7c034'c3fbd3a9'8b6d9b2d'a7657754_u128},
-        {Sign::NEG, -151, 0xaa3e50dc'decfa9cf'ed1b0a01'987ad9b4_u128},
-        {Sign::NEG, -151, 0xa6c4e184'c20c8b20'7d9c0354'6f57fc11_u128},
-        {Sign::NEG, -151, 0xa34b722c'6db27794'4a12010d'0b0c4727_u128},
-        {Sign::NEG, -151, 0x9fd202d3'e1c16f24'5f9e7bc4'c0f1c851_u128},
-        {Sign::NEG, -151, 0x9c58937b'1e3971c9'cb62eac7'5cacde29_u128},
-        {Sign::NEG, -151, 0x98df2422'231a7f7d'9a80c413'202be52a_u128},
-        {Sign::NEG, -151, 0x9565b4c8'f0649838'da197c58'c3a6e445_u128},
-        {Sign::NEG, -151, 0x91ec456f'8617bbf4'974e86fb'759f3988_u128},
-        {Sign::NEG, -151, 0x8e72d615'e433eaa9'df415610'dadf46b3_u128},
-        {Sign::NEG, -151, 0x8af966bc'0ab92451'bf135a61'0e7a1ddc_u128},
-        {Sign::NEG, -151, 0x877ff761'f9a768e5'43e60366'a1cb2e09_u128},
-        {Sign::NEG, -151, 0x84068807'b0feb85d'7adabf4e'9c75efce_u128},
-        {Sign::NEG, -151, 0x808d18ad'30bf12b3'7112faf8'7c6591ee_u128},
-        {Sign::NEG, -152, 0xfa2752a4'f1d0efc0'676043ec'6b994be5_u128},
-        {Sign::NEG, -152, 0xf33473ef'12f5cfb9'9fa73d18'6649999d_u128},
-        {Sign::NEG, -152, 0xec419538'c4ecc544'a53db362'aa5cc6f0_u128},
-        {Sign::NEG, -152, 0xe54eb682'07b5d053'9266761d'e5e05f13_u128},
-        {Sign::NEG, -152, 0xde5bd7ca'db50f0d8'81645201'b36e17ba_u128},
-        {Sign::NEG, -152, 0xd768f913'3fbe26c5'8c7a112a'9a2b2a52_u128},
-        {Sign::NEG, -152, 0xd0761a5b'34fd720c'cdea7b1a'0dc7ad42_u128},
-        {Sign::NEG, -152, 0xc9833ba2'bb0ed2a0'5ff854b6'6e7ded1f_u128},
-        {Sign::NEG, -152, 0xc2905ce9'd1f24872'5ce6604b'0911c5ed_u128},
-        {Sign::NEG, -152, 0xbb9d7e30'79a7d374'def75d88'16cffc59_u128},
-        {Sign::NEG, -152, 0xb4aa9f76'b22f739a'006e0982'bd8d96ef_u128},
-        {Sign::NEG, -152, 0xadb7c0bc'7b8928d3'db8d1eb5'0fa7375c_u128},
-        {Sign::NEG, -152, 0xa6c4e201'd5b4f314'8a9754fe'0c0073a7_u128},
-        {Sign::NEG, -152, 0x9fd20346'c0b2d24e'27cf61a1'9e032f69_u128},
-        {Sign::NEG, -152, 0x98df248b'3c82c672'cd77f748'9d9ef50b_u128},
-        {Sign::NEG, -152, 0x91ec45cf'4924cf74'95d3c600'cf484f03_u128},
-        {Sign::NEG, -152, 0x8af96712'e698ed45'9b257b3c'e3f82109_u128},
-        {Sign::NEG, -152, 0x84068856'14df1fd7'f7afc1d4'792b015a_u128},
-        {Sign::NEG, -153, 0xfa275331'a7eece3b'8b6a8408'31c123d8_u128},
-        {Sign::NEG, -153, 0xec4195b6'47c38612'3ef142da'7335b35a_u128},
-        {Sign::NEG, -153, 0xde5bd83a'093c6718'3e79062c'7cbb3b7d_u128},
-        {Sign::NEG, -153, 0xd0761abc'ec597131'be870ed4'ed5b755b_u128},
-        {Sign::NEG, -153, 0xc2905d3e'f11aa442'f3a09874'3d20fb64_u128},
-        {Sign::NEG, -153, 0xb4aa9fc0'17800030'124ad974'bd15fbca_u128},
-        {Sign::NEG, -153, 0xa6c4e240'5f8984dd'4f0b030a'9742eb00_u128},
-        {Sign::NEG, -153, 0x98df24bf'c937322e'de664133'cead362d_u128},
-        {Sign::NEG, -153, 0x8af9673e'54890808'f4e1bab8'3f55f5a1_u128},
-        {Sign::NEG, -154, 0xfa275378'02fe0c9f'8e052253'3c713e98_u128},
-        {Sign::NEG, -154, 0xde5bd871'a03259cf'129bc1c6'f293726e_u128},
-        {Sign::NEG, -154, 0xc2905d69'80aef768'e0918216'6eeb17eb_u128},
-        {Sign::NEG, -154, 0xa6c4e25f'a473e535'60f08720'313daa3f_u128},
-        {Sign::NEG, -154, 0x8af96754'0b8122fc'fcc2ea56'6b3af38b_u128},
-        {Sign::NEG, -155, 0xde5bd88d'6bad6110'3a25757e'00f4e3a0_u128},
-        {Sign::NEG, -155, 0xa6c4e26f'46e91b3e'55d3f9e7'0cf177b8_u128},
-        {Sign::NEG, -156, 0xde5bd89b'516ae82a'3d4aac85'125398d0_u128},
-        {Sign::NEG, -157, 0xde5bd8a2'4449ac95'9ab5a849'a06f400d_u128},
-        {Sign::POS, 0, 0_u128},
-        {Sign::POS, -157, 0xde5bd8b0'2a073729'0d3cc88f'd4ef34c2_u128},
-        {Sign::POS, -156, 0xde5bd8b7'1ce5fd51'225916c2'b3f33c90_u128},
-        {Sign::POS, -155, 0xa6c4e28e'8bd3930a'17847f98'acf08d54_u128},
-        {Sign::POS, -155, 0xde5bd8c5'02a38b5e'04439783'0931fddd_u128},
-        {Sign::POS, -154, 0x8af9677f'79717409'c2ab3859'13176984_u128},
-        {Sign::POS, -154, 0xa6c4e29e'2e48d4cc'e454dec8'2bde52e5_u128},
-        {Sign::POS, -154, 0xc2905dbe'9fd7e82f'fe1522b0'470d7d7f_u128},
-        {Sign::POS, -154, 0xde5bd8e0'ce1eae6a'a6e2721f'2afc3cce_u128},
-        {Sign::POS, -154, 0xfa275404'b91d27b4'75b3458e'ec3c106c_u128},
-        {Sign::POS, -153, 0x8af96795'3069aa22'80bf0ff2'f6cd9f93_u128},
-        {Sign::POS, -153, 0x98df2528'e2a09a29'f09cc73b'7013b906_u128},
-        {Sign::POS, -153, 0xa6c4e2bd'7333640c'55ee1480'619827c4_u128},
-        {Sign::POS, -153, 0xb4aaa052'e22207e5'7c2e48d7'72250b3c_u128},
-        {Sign::POS, -153, 0xc2905de9'2f6c85d1'2ed8ba8c'6fa81c98_u128},
-        {Sign::POS, -153, 0xd0761b80'5b12ddeb'3968c521'4f33fc4f_u128},
-        {Sign::POS, -153, 0xde5bd918'6515104f'6759c94e'2d017fad_u128},
-        {Sign::POS, -153, 0xec4196b1'4d731d19'84272d01'4c70fe58_u128},
-        {Sign::POS, -153, 0xfa27544b'142d0465'5b4c5b5f'180b9fe1_u128},
-        {Sign::POS, -152, 0x840688f2'dca16327'5c226261'10c254a4_u128},
-        {Sign::POS, -152, 0x8af967c0'9e5a3178'b345ef5d'90dd6545_u128},
-        {Sign::POS, -152, 0x91ec468e'cf40ed34'98ce9208'7c5cb614_u128},
-        {Sign::POS, -152, 0x98df255d'6f559668'f27a0a60'56dcfe57_u128},
-        {Sign::POS, -152, 0x9fd2042c'7e982d23'a6061afe'b7929f24_u128},
-        {Sign::POS, -152, 0xa6c4e2fb'fd08b172'99308918'494a4a20_u128},
-        {Sign::POS, -152, 0xadb7c1cb'eaa72363'b1b71c7c'ca69a844_u128},
-        {Sign::POS, -152, 0xb4aaa09c'47738304'd5579f97'0cf000a9_u128},
-        {Sign::POS, -152, 0xbb9d7f6d'136dd063'e9cfdf6c'f676df42_u128},
-        {Sign::POS, -152, 0xc2905e3e'4e960b8e'd4ddab9f'8032bbab_u128},
-        {Sign::POS, -152, 0xc9833d0f'f8ec3493'7c3ed66a'b6f39fe9_u128},
-        {Sign::POS, -152, 0xd0761be2'12704b7f'c5b134a5'bb25cf2e_u128},
-        {Sign::POS, -152, 0xd768fab4'9b225061'96f29dc2'c0d26ca0_u128},
-        {Sign::POS, -152, 0xde5bd987'93024346'd5c0ebcf'0fa0221e_u128},
-        {Sign::POS, -152, 0xe54eb85a'fa10243d'67d9fb73'02d3c705_u128},
-        {Sign::POS, -152, 0xec41972e'd04bf353'32fbabf2'095106f1_u128},
-        {Sign::POS, -152, 0xf3347603'15b5b096'1ce3df2a'a59b0889_u128},
-        {Sign::POS, -152, 0xfa2754d7'ca4d5c14'0b507996'6dd5143e_u128},
-        {Sign::POS, -151, 0x808d19d6'77097aed'71ffb125'05e19d89_u128},
-        {Sign::POS, -151, 0x84068941'40833efc'4657417a'9e657eae_u128},
-        {Sign::POS, -151, 0x877ff8ac'4193fa3d'758de3f1'68f9f8c9_u128},
-        {Sign::POS, -151, 0x8af96817'7a3bacb7'f2828ffc'57f43581_u128},
-        {Sign::POS, -151, 0x8e72d782'ea7a5672'b0143e5b'e77b1053_u128},
-        {Sign::POS, -151, 0x91ec46ee'924ff774'a121e91e'1d8769ef_u128},
-        {Sign::POS, -151, 0x9565b65a'71bc8fc4'b88a8b9e'89e47b9c_u128},
-        {Sign::POS, -151, 0x98df25c6'88c01f69'e92d2286'46302a9c_u128},
-        {Sign::POS, -151, 0x9c589532'd75aa66b'25e8abcb'f5db5b8c_u128},
-        {Sign::POS, -151, 0x9fd2049f'5d8c24cf'619c26b3'c62a45c8_u128},
-        {Sign::POS, -151, 0xa34b740c'1b549a9d'8f2693cf'6e34c6cc_u128},
-        {Sign::POS, -151, 0xa6c4e379'10b407dc'a166f4fe'2ee6b59a_u128},
-        {Sign::POS, -151, 0xaa3e52e6'3daa6c93'8b3c4d6c'd3003616_u128},
-        {Sign::POS, -151, 0xadb7c253'a237c8c9'3f85a195'af160c71_u128},
-        {Sign::POS, -151, 0xb13131c1'3e5c1c84'b121f740'a191f084_u128},
-        {Sign::POS, -151, 0xb4aaa12f'121767cc'd2f05583'12b2e136_u128},
-        {Sign::POS, -151, 0xb824109d'1d69aaa8'97cfc4bf'f48d77de_u128},
-        {Sign::POS, -151, 0xbb9d800b'6052e51e'f29f4ea7'c30c3ba5_u128},
-        {Sign::POS, -151, 0xbf16ef79'dad31736'd63dfe38'83eff4e9_u128},
-        {Sign::POS, -151, 0xc2905ee8'8cea40f7'358adfbd'c6d0009f_u128},
-        {Sign::POS, -151, 0xc609ce57'76986267'036500d0'a51aa3b6_u128},
-        {Sign::POS, -151, 0xc9833dc6'97dd7b8d'32ab7057'c2155e78_u128},
-        {Sign::POS, -151, 0xccfcad35'f0b98c70'b63d3e87'4add3ff0_u128},
-        {Sign::POS, -151, 0xd0761ca5'812c9518'80f97ce0'f6673948_u128},
-        {Sign::POS, -151, 0xd3ef8c15'4936958b'85bf3e34'0580712d_u128},
-        {Sign::POS, -151, 0xd768fb85'48d78dd0'b76d969d'42ce9734_u128},
-        {Sign::POS, -151, 0xdae26af5'800f7def'08e39b87'02d0373a_u128},
-        {Sign::POS, -151, 0xde5bda65'eede65ed'6d0063a9'23dd0cc6_u128},
+        {Sign::NEG, -151, MType({0xe471a82bbedbe0ae, 0xe1d5464122cf95a4})},
+        {Sign::NEG, -151, MType({0xaf6e93be8e4c1764, 0xde5bd6ec7f7bc110})},
+        {Sign::NEG, -151, MType({0xe44848f0a5779499, 0xdae26797a490f80e})},
+        {Sign::NEG, -151, MType({0x90205533f4e70566, 0xd768f842920f3a98})},
+        {Sign::NEG, -151, MType({0xc01844ace3729e48, 0xd3ef88ed47f688a6})},
+        {Sign::NEG, -151, MType({0x8151a2324e41c7c4, 0xd0761997c646e232})},
+        {Sign::NEG, -151, MType({0xe0edf74d88cacafd, 0xccfcaa420d004734})},
+        {Sign::NEG, -151, MType({0xec0ecc3a5cd27e58, 0xc9833aec1c22b7a6})},
+        {Sign::NEG, -151, MType({0xafd5a7e70a6bf214, 0xc609cb95f3ae3381})},
+        {Sign::NEG, -151, MType({0x39640ff447f81ceb, 0xc2905c3f93a2babe})},
+        {Sign::NEG, -151, MType({0x95db88b5422588b1, 0xbf16ece8fc004d55})},
+        {Sign::NEG, -151, MType({0xd25d952f9beffeec, 0xbb9d7d922cc6eb40})},
+        {Sign::NEG, -151, MType({0xfc0bb71b6ea03578, 0xb8240e3b25f69478})},
+        {Sign::NEG, -151, MType({0x20076ee349cb7b20, 0xb4aa9ee3e78f48f7})},
+        {Sign::NEG, -151, MType({0x4b723ba43353643d, 0xb1312f8c719108b4})},
+        {Sign::NEG, -151, MType({0x8b6d9b2da7657754, 0xadb7c034c3fbd3a9})},
+        {Sign::NEG, -151, MType({0xed1b0a01987ad9b4, 0xaa3e50dcdecfa9cf})},
+        {Sign::NEG, -151, MType({0x7d9c03546f57fc11, 0xa6c4e184c20c8b20})},
+        {Sign::NEG, -151, MType({0x4a12010d0b0c4727, 0xa34b722c6db27794})},
+        {Sign::NEG, -151, MType({0x5f9e7bc4c0f1c851, 0x9fd202d3e1c16f24})},
+        {Sign::NEG, -151, MType({0xcb62eac75cacde29, 0x9c58937b1e3971c9})},
+        {Sign::NEG, -151, MType({0x9a80c413202be52a, 0x98df2422231a7f7d})},
+        {Sign::NEG, -151, MType({0xda197c58c3a6e445, 0x9565b4c8f0649838})},
+        {Sign::NEG, -151, MType({0x974e86fb759f3988, 0x91ec456f8617bbf4})},
+        {Sign::NEG, -151, MType({0xdf415610dadf46b3, 0x8e72d615e433eaa9})},
+        {Sign::NEG, -151, MType({0xbf135a610e7a1ddc, 0x8af966bc0ab92451})},
+        {Sign::NEG, -151, MType({0x43e60366a1cb2e09, 0x877ff761f9a768e5})},
+        {Sign::NEG, -151, MType({0x7adabf4e9c75efce, 0x84068807b0feb85d})},
+        {Sign::NEG, -151, MType({0x7112faf87c6591ee, 0x808d18ad30bf12b3})},
+        {Sign::NEG, -152, MType({0x676043ec6b994be5, 0xfa2752a4f1d0efc0})},
+        {Sign::NEG, -152, MType({0x9fa73d186649999d, 0xf33473ef12f5cfb9})},
+        {Sign::NEG, -152, MType({0xa53db362aa5cc6f0, 0xec419538c4ecc544})},
+        {Sign::NEG, -152, MType({0x9266761de5e05f13, 0xe54eb68207b5d053})},
+        {Sign::NEG, -152, MType({0x81645201b36e17ba, 0xde5bd7cadb50f0d8})},
+        {Sign::NEG, -152, MType({0x8c7a112a9a2b2a52, 0xd768f9133fbe26c5})},
+        {Sign::NEG, -152, MType({0xcdea7b1a0dc7ad42, 0xd0761a5b34fd720c})},
+        {Sign::NEG, -152, MType({0x5ff854b66e7ded1f, 0xc9833ba2bb0ed2a0})},
+        {Sign::NEG, -152, MType({0x5ce6604b0911c5ed, 0xc2905ce9d1f24872})},
+        {Sign::NEG, -152, MType({0xdef75d8816cffc59, 0xbb9d7e3079a7d374})},
+        {Sign::NEG, -152, MType({0x6e0982bd8d96ef, 0xb4aa9f76b22f739a})},
+        {Sign::NEG, -152, MType({0xdb8d1eb50fa7375c, 0xadb7c0bc7b8928d3})},
+        {Sign::NEG, -152, MType({0x8a9754fe0c0073a7, 0xa6c4e201d5b4f314})},
+        {Sign::NEG, -152, MType({0x27cf61a19e032f69, 0x9fd20346c0b2d24e})},
+        {Sign::NEG, -152, MType({0xcd77f7489d9ef50b, 0x98df248b3c82c672})},
+        {Sign::NEG, -152, MType({0x95d3c600cf484f03, 0x91ec45cf4924cf74})},
+        {Sign::NEG, -152, MType({0x9b257b3ce3f82109, 0x8af96712e698ed45})},
+        {Sign::NEG, -152, MType({0xf7afc1d4792b015a, 0x8406885614df1fd7})},
+        {Sign::NEG, -153, MType({0x8b6a840831c123d8, 0xfa275331a7eece3b})},
+        {Sign::NEG, -153, MType({0x3ef142da7335b35a, 0xec4195b647c38612})},
+        {Sign::NEG, -153, MType({0x3e79062c7cbb3b7d, 0xde5bd83a093c6718})},
+        {Sign::NEG, -153, MType({0xbe870ed4ed5b755b, 0xd0761abcec597131})},
+        {Sign::NEG, -153, MType({0xf3a098743d20fb64, 0xc2905d3ef11aa442})},
+        {Sign::NEG, -153, MType({0x124ad974bd15fbca, 0xb4aa9fc017800030})},
+        {Sign::NEG, -153, MType({0x4f0b030a9742eb00, 0xa6c4e2405f8984dd})},
+        {Sign::NEG, -153, MType({0xde664133cead362d, 0x98df24bfc937322e})},
+        {Sign::NEG, -153, MType({0xf4e1bab83f55f5a1, 0x8af9673e54890808})},
+        {Sign::NEG, -154, MType({0x8e0522533c713e98, 0xfa27537802fe0c9f})},
+        {Sign::NEG, -154, MType({0x129bc1c6f293726e, 0xde5bd871a03259cf})},
+        {Sign::NEG, -154, MType({0xe09182166eeb17eb, 0xc2905d6980aef768})},
+        {Sign::NEG, -154, MType({0x60f08720313daa3f, 0xa6c4e25fa473e535})},
+        {Sign::NEG, -154, MType({0xfcc2ea566b3af38b, 0x8af967540b8122fc})},
+        {Sign::NEG, -155, MType({0x3a25757e00f4e3a0, 0xde5bd88d6bad6110})},
+        {Sign::NEG, -155, MType({0x55d3f9e70cf177b8, 0xa6c4e26f46e91b3e})},
+        {Sign::NEG, -156, MType({0x3d4aac85125398d0, 0xde5bd89b516ae82a})},
+        {Sign::NEG, -157, MType({0x9ab5a849a06f400d, 0xde5bd8a24449ac95})},
+        {Sign::POS, 0, MType({0x0, 0x0})},
+        {Sign::POS, -157, MType({0xd3cc88fd4ef34c2, 0xde5bd8b02a073729})},
+        {Sign::POS, -156, MType({0x225916c2b3f33c90, 0xde5bd8b71ce5fd51})},
+        {Sign::POS, -155, MType({0x17847f98acf08d54, 0xa6c4e28e8bd3930a})},
+        {Sign::POS, -155, MType({0x44397830931fddd, 0xde5bd8c502a38b5e})},
+        {Sign::POS, -154, MType({0xc2ab385913176984, 0x8af9677f79717409})},
+        {Sign::POS, -154, MType({0xe454dec82bde52e5, 0xa6c4e29e2e48d4cc})},
+        {Sign::POS, -154, MType({0xfe1522b0470d7d7f, 0xc2905dbe9fd7e82f})},
+        {Sign::POS, -154, MType({0xa6e2721f2afc3cce, 0xde5bd8e0ce1eae6a})},
+        {Sign::POS, -154, MType({0x75b3458eec3c106c, 0xfa275404b91d27b4})},
+        {Sign::POS, -153, MType({0x80bf0ff2f6cd9f93, 0x8af967953069aa22})},
+        {Sign::POS, -153, MType({0xf09cc73b7013b906, 0x98df2528e2a09a29})},
+        {Sign::POS, -153, MType({0x55ee1480619827c4, 0xa6c4e2bd7333640c})},
+        {Sign::POS, -153, MType({0x7c2e48d772250b3c, 0xb4aaa052e22207e5})},
+        {Sign::POS, -153, MType({0x2ed8ba8c6fa81c98, 0xc2905de92f6c85d1})},
+        {Sign::POS, -153, MType({0x3968c5214f33fc4f, 0xd0761b805b12ddeb})},
+        {Sign::POS, -153, MType({0x6759c94e2d017fad, 0xde5bd9186515104f})},
+        {Sign::POS, -153, MType({0x84272d014c70fe58, 0xec4196b14d731d19})},
+        {Sign::POS, -153, MType({0x5b4c5b5f180b9fe1, 0xfa27544b142d0465})},
+        {Sign::POS, -152, MType({0x5c22626110c254a4, 0x840688f2dca16327})},
+        {Sign::POS, -152, MType({0xb345ef5d90dd6545, 0x8af967c09e5a3178})},
+        {Sign::POS, -152, MType({0x98ce92087c5cb614, 0x91ec468ecf40ed34})},
+        {Sign::POS, -152, MType({0xf27a0a6056dcfe57, 0x98df255d6f559668})},
+        {Sign::POS, -152, MType({0xa6061afeb7929f24, 0x9fd2042c7e982d23})},
+        {Sign::POS, -152, MType({0x99308918494a4a20, 0xa6c4e2fbfd08b172})},
+        {Sign::POS, -152, MType({0xb1b71c7cca69a844, 0xadb7c1cbeaa72363})},
+        {Sign::POS, -152, MType({0xd5579f970cf000a9, 0xb4aaa09c47738304})},
+        {Sign::POS, -152, MType({0xe9cfdf6cf676df42, 0xbb9d7f6d136dd063})},
+        {Sign::POS, -152, MType({0xd4ddab9f8032bbab, 0xc2905e3e4e960b8e})},
+        {Sign::POS, -152, MType({0x7c3ed66ab6f39fe9, 0xc9833d0ff8ec3493})},
+        {Sign::POS, -152, MType({0xc5b134a5bb25cf2e, 0xd0761be212704b7f})},
+        {Sign::POS, -152, MType({0x96f29dc2c0d26ca0, 0xd768fab49b225061})},
+        {Sign::POS, -152, MType({0xd5c0ebcf0fa0221e, 0xde5bd98793024346})},
+        {Sign::POS, -152, MType({0x67d9fb7302d3c705, 0xe54eb85afa10243d})},
+        {Sign::POS, -152, MType({0x32fbabf2095106f1, 0xec41972ed04bf353})},
+        {Sign::POS, -152, MType({0x1ce3df2aa59b0889, 0xf334760315b5b096})},
+        {Sign::POS, -152, MType({0xb5079966dd5143e, 0xfa2754d7ca4d5c14})},
+        {Sign::POS, -151, MType({0x71ffb12505e19d89, 0x808d19d677097aed})},
+        {Sign::POS, -151, MType({0x4657417a9e657eae, 0x8406894140833efc})},
+        {Sign::POS, -151, MType({0x758de3f168f9f8c9, 0x877ff8ac4193fa3d})},
+        {Sign::POS, -151, MType({0xf2828ffc57f43581, 0x8af968177a3bacb7})},
+        {Sign::POS, -151, MType({0xb0143e5be77b1053, 0x8e72d782ea7a5672})},
+        {Sign::POS, -151, MType({0xa121e91e1d8769ef, 0x91ec46ee924ff774})},
+        {Sign::POS, -151, MType({0xb88a8b9e89e47b9c, 0x9565b65a71bc8fc4})},
+        {Sign::POS, -151, MType({0xe92d228646302a9c, 0x98df25c688c01f69})},
+        {Sign::POS, -151, MType({0x25e8abcbf5db5b8c, 0x9c589532d75aa66b})},
+        {Sign::POS, -151, MType({0x619c26b3c62a45c8, 0x9fd2049f5d8c24cf})},
+        {Sign::POS, -151, MType({0x8f2693cf6e34c6cc, 0xa34b740c1b549a9d})},
+        {Sign::POS, -151, MType({0xa166f4fe2ee6b59a, 0xa6c4e37910b407dc})},
+        {Sign::POS, -151, MType({0x8b3c4d6cd3003616, 0xaa3e52e63daa6c93})},
+        {Sign::POS, -151, MType({0x3f85a195af160c71, 0xadb7c253a237c8c9})},
+        {Sign::POS, -151, MType({0xb121f740a191f084, 0xb13131c13e5c1c84})},
+        {Sign::POS, -151, MType({0xd2f0558312b2e136, 0xb4aaa12f121767cc})},
+        {Sign::POS, -151, MType({0x97cfc4bff48d77de, 0xb824109d1d69aaa8})},
+        {Sign::POS, -151, MType({0xf29f4ea7c30c3ba5, 0xbb9d800b6052e51e})},
+        {Sign::POS, -151, MType({0xd63dfe3883eff4e9, 0xbf16ef79dad31736})},
+        {Sign::POS, -151, MType({0x358adfbdc6d0009f, 0xc2905ee88cea40f7})},
+        {Sign::POS, -151, MType({0x36500d0a51aa3b6, 0xc609ce5776986267})},
+        {Sign::POS, -151, MType({0x32ab7057c2155e78, 0xc9833dc697dd7b8d})},
+        {Sign::POS, -151, MType({0xb63d3e874add3ff0, 0xccfcad35f0b98c70})},
+        {Sign::POS, -151, MType({0x80f97ce0f6673948, 0xd0761ca5812c9518})},
+        {Sign::POS, -151, MType({0x85bf3e340580712d, 0xd3ef8c154936958b})},
+        {Sign::POS, -151, MType({0xb76d969d42ce9734, 0xd768fb8548d78dd0})},
+        {Sign::POS, -151, MType({0x8e39b8702d0373a, 0xdae26af5800f7def})},
+        {Sign::POS, -151, MType({0x6d0063a923dd0cc6, 0xde5bda65eede65ed})},
     }};
 
 // > P = fpminimax(log10(1 + x)/x, 3, [|128...|], [-0x1.0002143p-29 , 0x1p-29]);
@@ -706,10 +702,10 @@ const LogRR LOG10_TABLE = {
 // > dirtyinfnorm(log10(1 + x)/x - P, [-0x1.0002143p-29 , 0x1p-29]);
 // 0x1.64fb8...p-123
 const Float128 BIG_COEFFS[4]{
-    {Sign::NEG, -131, 0xde5bd8a9'373f89a7'6903c4ce'1582517d_u128},
-    {Sign::POS, -130, 0x943d3b1b'7a1af679'b8a21791'624e2e8a_u128},
-    {Sign::NEG, -130, 0xde5bd8a9'37287195'355baaaf'abc25990_u128},
-    {Sign::POS, -129, 0xde5bd8a9'37287195'355baaaf'ad33dbd9_u128},
+    {Sign::NEG, -131, MType({0x6903c4ce1582517d, 0xde5bd8a9373f89a7})},
+    {Sign::POS, -130, MType({0xb8a21791624e2e8a, 0x943d3b1b7a1af679})},
+    {Sign::NEG, -130, MType({0x355baaafabc25990, 0xde5bd8a937287195})},
+    {Sign::POS, -129, MType({0x355baaafad33dbd9, 0xde5bd8a937287195})},
 };
 
 // Reuse the output of the fast pass range reduction.

diff  --git a/libc/src/math/generic/log1p.cpp b/libc/src/math/generic/log1p.cpp
index 12710cfe0de21a..0edab70124c955 100644
--- a/libc/src/math/generic/log1p.cpp
+++ b/libc/src/math/generic/log1p.cpp
@@ -14,7 +14,6 @@
 #include "src/__support/FPUtil/dyadic_float.h"
 #include "src/__support/FPUtil/multiply_add.h"
 #include "src/__support/common.h"
-#include "src/__support/integer_literals.h"
 #include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
 
 #include "common_constants.h"
@@ -23,24 +22,19 @@ namespace LIBC_NAMESPACE {
 
 // 128-bit precision dyadic floating point numbers.
 using Float128 = typename fputil::DyadicFloat<128>;
+using MType = typename Float128::MantissaType;
 using Sign = fputil::Sign;
-using LIBC_NAMESPACE::operator""_u128;
 
 namespace {
 
 // Extra errors from P is from using x^2 to reduce evaluation latency.
 constexpr double P_ERR = 0x1.0p-50;
 
-// log(2) with 128-bit precision generated by SageMath with:
-// def format_hex(value):
-//     l = hex(value)[2:]
-//     n = 8
-//     x = [l[i:i + n] for i in range(0, len(l), n)]
-//     return "0x" + "'".join(x) + "_uint128"
-// (s, m, e) = RealField(128)(2).log().sign_mantissa_exponent();
-// print(format_hex(m));
+// log(2) with 128-bit prepcision generated by SageMath with:
+//   sage: (s, m, e) = RealField(128)(2).log().sign_mantissa_exponent();
+//   sage: print("MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})");
 const Float128 LOG_2(Sign::POS, /*exponent=*/-128, /*mantissa=*/
-                     0xb17217f7'd1cf79ab'c9e3b398'03f2f6af_u128);
+                     MType({0xc9e3b39803f2f6af, 0xb17217f7d1cf79ab}));
 
 // R1[i] = 2^-8 * nearestint( 2^8 / (1 + i * 2^-7) )
 constexpr double R1[129] = {
@@ -251,137 +245,139 @@ constexpr double P_COEFFS[6] = {-0x1p-1,
 // for i in range(129):
 //   r = 2^-8 * round( 2^8 / (1 + i*2^(-7)) );
 //   s, m, e = RealField(128)(r).log().sign_mantissa_exponent();
-//   print("{Sign::POS,", e, ", format_hex(m), "},");
+//   print("{Sign::POS,", e, ", MType({", hex(m % 2^64), ",", hex((m >> 64) %
+//   2^64),
+//         "})},");
 const Float128 LOG_R1[129] = {
-    {Sign::POS, 0, 0_u128},
-    {Sign::POS, -134, 0x8080abac'46f38946'662d417c'ed007a46_u128},
-    {Sign::POS, -133, 0x8102b2c4'9ac23a4f'91d082dc'e3ddcd38_u128},
-    {Sign::POS, -133, 0xc2492946'4655f45c'da5f3cc0'b3251dbd_u128},
-    {Sign::POS, -132, 0x820aec4f'3a222380'b9e3aea6'c444ef07_u128},
-    {Sign::POS, -132, 0xa33576a1'6f1f4c64'521016bd'904dc968_u128},
-    {Sign::POS, -132, 0xb3e4a796'a5dac208'27cca0bc'c06c2f92_u128},
-    {Sign::POS, -132, 0xd5779687'd887e0d1'a9dda170'56e45ed5_u128},
-    {Sign::POS, -132, 0xf7518e00'35c3dd83'606d8909'3278a939_u128},
-    {Sign::POS, -131, 0x8cb9de8a'32ab368a'a7c98595'30a45153_u128},
-    {Sign::POS, -131, 0x9defad3e'8f73217a'976d3b5b'45f6ca0b_u128},
-    {Sign::POS, -131, 0xa6988ae9'03f562ed'3e858f08'597b3a69_u128},
-    {Sign::POS, -131, 0xb8069857'560707a3'6a677b4c'8bec22e1_u128},
-    {Sign::POS, -131, 0xc99af2ea'ca4c4570'eaf51f66'692844ba_u128},
-    {Sign::POS, -131, 0xd273b205'8de1bd49'46bbf837'b4d320c6_u128},
-    {Sign::POS, -131, 0xe442c00d'e2591b47'196ab34c'e0bccd12_u128},
-    {Sign::POS, -131, 0xed393b1c'22351280'3f4e2e66'0317d55f_u128},
-    {Sign::POS, -131, 0xff4489ce'deab2ca6'c17bd40d'8d9291ec_u128},
-    {Sign::POS, -130, 0x88bc7411'3f23def1'9c5a0fe3'96f40f1e_u128},
-    {Sign::POS, -130, 0x8d515bf1'1fb94f1c'88713268'840cbcc0_u128},
-    {Sign::POS, -130, 0x968b0864'3409ceb6'65c0da50'6a088484_u128},
-    {Sign::POS, -130, 0x9b2fe580'ac80b17d'411a5b94'4aca8708_u128},
-    {Sign::POS, -130, 0xa489ec19'9dab06f2'a9fb6cf0'ecb411b7_u128},
-    {Sign::POS, -130, 0xa93f2f25'0dac67d1'cad2fb8d'48054ae0_u128},
-    {Sign::POS, -130, 0xadfa035a'a1ed8fdc'149767e4'10316d2c_u128},
-    {Sign::POS, -130, 0xb780945b'ab55dce4'34c7bc3d'32750fde_u128},
-    {Sign::POS, -130, 0xbc4c6c2a'226399ef'8f6ebcfb'2016a439_u128},
-    {Sign::POS, -130, 0xc5f57f59'c7f46155'aa8b6997'a402bf30_u128},
-    {Sign::POS, -130, 0xcad2d6e7'b80bf914'2c507fb7'a3d0bf6a_u128},
-    {Sign::POS, -130, 0xcfb62038'44b3209a'd0cb02f3'3f79c16c_u128},
-    {Sign::POS, -130, 0xd98ec2ba'de71e539'58a98f2a'd65bee9b_u128},
-    {Sign::POS, -130, 0xde8439c1'dec56877'4d57da94'5b5d0aaa_u128},
-    {Sign::POS, -130, 0xe37fde37'807b84e3'4e9a750b'6b68781d_u128},
-    {Sign::POS, -130, 0xe881bf93'2af3dac0'c524848e'3443e040_u128},
-    {Sign::POS, -130, 0xf29877ff'38809091'3b020fa1'820c9492_u128},
-    {Sign::POS, -130, 0xf7ad6f26'e7ff2ef7'54d2238f'75f969b1_u128},
-    {Sign::POS, -130, 0xfcc8e365'9d9bcbec'ca0cdf30'1431b60f_u128},
-    {Sign::POS, -129, 0x80f572b1'363487b9'f5bd0b5b'3479d5f4_u128},
-    {Sign::POS, -129, 0x86216b3b'0b17188b'163ceae8'8f720f1e_u128},
-    {Sign::POS, -129, 0x88bc7411'3f23def1'9c5a0fe3'96f40f1e_u128},
-    {Sign::POS, -129, 0x8b5ae65d'67db9acd'f7a51681'26a58b9a_u128},
-    {Sign::POS, -129, 0x8dfccb1a'd35ca6ed'5147bdb6'ddcaf59c_u128},
-    {Sign::POS, -129, 0x90a22b68'75c6a1f7'ae91aeba'609c8877_u128},
-    {Sign::POS, -129, 0x934b1089'a6dc93c1'df5bb3b6'0554e152_u128},
-    {Sign::POS, -129, 0x95f783e6'e49a9cfa'4a5004f3'ef063313_u128},
-    {Sign::POS, -129, 0x9b5b3bb5'f088b766'd878bbe3'd392be25_u128},
-    {Sign::POS, -129, 0x9e1293b9'998c1daa'5b035eae'273a855f_u128},
-    {Sign::POS, -129, 0xa0cda11e'af46390d'bb243827'3918db7e_u128},
-    {Sign::POS, -129, 0xa38c6e13'8e20d831'f698298a'dddd7f32_u128},
-    {Sign::POS, -129, 0xa64f04f0'b961df76'e4f5275c'2d15c21f_u128},
-    {Sign::POS, -129, 0xa9157039'c51ebe70'8164c759'686a2209_u128},
-    {Sign::POS, -129, 0xabdfba9e'468fd6f6'f72ea077'49ce6bd3_u128},
-    {Sign::POS, -129, 0xaeadeefa'caf97d35'7dd6e688'ebb13b03_u128},
-    {Sign::POS, -129, 0xb1801859'd56249dc'18ce51ff'f99479cd_u128},
-    {Sign::POS, -129, 0xb45641f4'e350a0d3'2756eba0'0bc33978_u128},
-    {Sign::POS, -129, 0xb7307735'78cb90b2'be1116c3'466beb6d_u128},
-    {Sign::POS, -129, 0xba0ec3b6'33dd8b09'49dc60b2'b059a60b_u128},
-    {Sign::POS, -129, 0xbcf13343'e7d9ec7d'2efd1778'1bb3afec_u128},
-    {Sign::POS, -129, 0xbfd7d1de'c0a8df6f'37eda996'244bccb0_u128},
-    {Sign::POS, -129, 0xc2c2abbb'6e5fd56f'33337789'd592e296_u128},
-    {Sign::POS, -129, 0xc5b1cd44'596fa51e'1a18fb8f'9f9ef280_u128},
-    {Sign::POS, -129, 0xc8a5431a'dfb44ca5'688ce7c1'a75e341a_u128},
-    {Sign::POS, -129, 0xcb9d1a18'9ab56e76'2d7e9307'c70c0668_u128},
-    {Sign::POS, -129, 0xcb9d1a18'9ab56e76'2d7e9307'c70c0668_u128},
-    {Sign::POS, -129, 0xce995f50'af69d861'ef2f3f4f'861ad6a9_u128},
-    {Sign::POS, -129, 0xd19a2011'27d3c645'7f9d79f5'1dcc7301_u128},
-    {Sign::POS, -129, 0xd49f69e4'56cf1b79'5f53bd2e'406e66e7_u128},
-    {Sign::POS, -129, 0xd7a94a92'466e833a'ad88bba7'd0cee8e0_u128},
-    {Sign::POS, -129, 0xdab7d022'31484a92'96c20cca'6efe2ac5_u128},
-    {Sign::POS, -129, 0xddcb08dc'0717d85b'f40a666c'87842843_u128},
-    {Sign::POS, -129, 0xe0e30349'fd1cec80'7fe8e180'2aba24d6_u128},
-    {Sign::POS, -129, 0xe0e30349'fd1cec80'7fe8e180'2aba24d6_u128},
-    {Sign::POS, -129, 0xe3ffce3a'2aa64922'3eadb651'b49ac53a_u128},
-    {Sign::POS, -129, 0xe72178c0'323a1a0f'304e1653'e71d9973_u128},
-    {Sign::POS, -129, 0xea481236'f7d35baf'e9a767a8'0d6d97e8_u128},
-    {Sign::POS, -129, 0xed73aa42'64b0ade9'4f91cf4b'33e42998_u128},
-    {Sign::POS, -129, 0xed73aa42'64b0ade9'4f91cf4b'33e42998_u128},
-    {Sign::POS, -129, 0xf0a450d1'39366ca6'fc66eb64'08ff6433_u128},
-    {Sign::POS, -129, 0xf3da161e'ed6b9aaf'ac8d42f7'8d3e65d3_u128},
-    {Sign::POS, -129, 0xf7150ab5'a09f27f4'5a470250'd40ebe90_u128},
-    {Sign::POS, -129, 0xf7150ab5'a09f27f4'5a470250'd40ebe90_u128},
-    {Sign::POS, -129, 0xfa553f70'18c966f2'b780a545'a1b54dcf_u128},
-    {Sign::POS, -129, 0xfd9ac57b'd244217e'8f05924d'258c14c5_u128},
-    {Sign::POS, -128, 0x8072d72d'903d588b'89d1b09c'70c4010a_u128},
-    {Sign::POS, -128, 0x8072d72d'903d588b'89d1b09c'70c4010a_u128},
-    {Sign::POS, -128, 0x821b05f3'b01d6774'030d58c3'f7e2ea1f_u128},
-    {Sign::POS, -128, 0x83c5f829'9e2b4091'20f6fafe'8fbb68b9_u128},
-    {Sign::POS, -128, 0x8573b716'82a7d21a'e21f9f89'c1ab80b2_u128},
-    {Sign::POS, -128, 0x8573b716'82a7d21a'e21f9f89'c1ab80b2_u128},
-    {Sign::POS, -128, 0x87244c30'8e670a66'01e005d0'6dbfa8f8_u128},
-    {Sign::POS, -128, 0x88d7c11e'3ad53cdc'223111a7'07b6de2c_u128},
-    {Sign::POS, -128, 0x88d7c11e'3ad53cdc'223111a7'07b6de2c_u128},
-    {Sign::POS, -128, 0x8a8e1fb7'94b09134'2eb628db'a173c82d_u128},
-    {Sign::POS, -128, 0x8c477207'91e53313'be2ad194'15fe25a5_u128},
-    {Sign::POS, -128, 0x8c477207'91e53313'be2ad194'15fe25a5_u128},
-    {Sign::POS, -128, 0x8e03c24d'73003959'bddae1cc'ce247838_u128},
-    {Sign::POS, -128, 0x8fc31afe'30b2c6de'9b00bf16'7e95da67_u128},
-    {Sign::POS, -128, 0x8fc31afe'30b2c6de'9b00bf16'7e95da67_u128},
-    {Sign::POS, -128, 0x918586c5'f5e4bf01'9b92199e'd1a4bab1_u128},
-    {Sign::POS, -128, 0x934b1089'a6dc93c1'df5bb3b6'0554e152_u128},
-    {Sign::POS, -128, 0x934b1089'a6dc93c1'df5bb3b6'0554e152_u128},
-    {Sign::POS, -128, 0x9513c368'76083695'f3cbc416'a2418012_u128},
-    {Sign::POS, -128, 0x96dfaabd'86fa1646'be1188fb'c94e2f15_u128},
-    {Sign::POS, -128, 0x96dfaabd'86fa1646'be1188fb'c94e2f15_u128},
-    {Sign::POS, -128, 0x98aed221'a03458b6'1d2f8932'1647b358_u128},
-    {Sign::POS, -128, 0x98aed221'a03458b6'1d2f8932'1647b358_u128},
-    {Sign::POS, -128, 0x9a81456c'ec642e0f'e549f9aa'ea3cb5e1_u128},
-    {Sign::POS, -128, 0x9c5710b8'cbb73a42'a2554b2d'd4619e63_u128},
-    {Sign::POS, -128, 0x9c5710b8'cbb73a42'a2554b2d'd4619e63_u128},
-    {Sign::POS, -128, 0x9e304061'b5fda919'30603d87'b6df81ad_u128},
-    {Sign::POS, -128, 0x9e304061'b5fda919'30603d87'b6df81ad_u128},
-    {Sign::POS, -128, 0xa00ce109'2e5498c3'67879c5a'30cd1242_u128},
-    {Sign::POS, -128, 0xa00ce109'2e5498c3'67879c5a'30cd1242_u128},
-    {Sign::POS, -128, 0xa1ecff97'c91e267b'0b7efae0'8e597e16_u128},
-    {Sign::POS, -128, 0xa3d0a93f'45169a4a'83594fab'088c0d65_u128},
-    {Sign::POS, -128, 0xa3d0a93f'45169a4a'83594fab'088c0d65_u128},
-    {Sign::POS, -128, 0xa5b7eb7c'b860fb88'af6a62a0'dec6e073_u128},
-    {Sign::POS, -128, 0xa5b7eb7c'b860fb88'af6a62a0'dec6e073_u128},
-    {Sign::POS, -128, 0xa7a2d41a'd270c9d7'49362382'a768847a_u128},
-    {Sign::POS, -128, 0xa7a2d41a'd270c9d7'49362382'a768847a_u128},
-    {Sign::POS, -128, 0xa9917134'33c2b998'8ba4aea6'14d05701_u128},
-    {Sign::POS, -128, 0xa9917134'33c2b998'8ba4aea6'14d05701_u128},
-    {Sign::POS, -128, 0xab83d135'dc633301'7fe6607b'a902ef3c_u128},
-    {Sign::POS, -128, 0xab83d135'dc633301'7fe6607b'a902ef3c_u128},
-    {Sign::POS, -128, 0xad7a02e1'b24efd31'd60864fd'949b4bd3_u128},
-    {Sign::POS, -128, 0xad7a02e1'b24efd31'd60864fd'949b4bd3_u128},
-    {Sign::POS, -128, 0xaf741551'20c9011c'066d235e'e63073dd_u128},
-    {Sign::POS, -128, 0xaf741551'20c9011c'066d235e'e63073dd_u128},
-    {Sign::POS, 0, 0_u128},
+    {Sign::POS, 0, MType(0)},
+    {Sign::POS, -134, MType({0x662d417ced007a46, 0x8080abac46f38946})},
+    {Sign::POS, -133, MType({0x91d082dce3ddcd38, 0x8102b2c49ac23a4f})},
+    {Sign::POS, -133, MType({0xda5f3cc0b3251dbd, 0xc24929464655f45c})},
+    {Sign::POS, -132, MType({0xb9e3aea6c444ef07, 0x820aec4f3a222380})},
+    {Sign::POS, -132, MType({0x521016bd904dc968, 0xa33576a16f1f4c64})},
+    {Sign::POS, -132, MType({0x27cca0bcc06c2f92, 0xb3e4a796a5dac208})},
+    {Sign::POS, -132, MType({0xa9dda17056e45ed5, 0xd5779687d887e0d1})},
+    {Sign::POS, -132, MType({0x606d89093278a939, 0xf7518e0035c3dd83})},
+    {Sign::POS, -131, MType({0xa7c9859530a45153, 0x8cb9de8a32ab368a})},
+    {Sign::POS, -131, MType({0x976d3b5b45f6ca0b, 0x9defad3e8f73217a})},
+    {Sign::POS, -131, MType({0x3e858f08597b3a69, 0xa6988ae903f562ed})},
+    {Sign::POS, -131, MType({0x6a677b4c8bec22e1, 0xb8069857560707a3})},
+    {Sign::POS, -131, MType({0xeaf51f66692844ba, 0xc99af2eaca4c4570})},
+    {Sign::POS, -131, MType({0x46bbf837b4d320c6, 0xd273b2058de1bd49})},
+    {Sign::POS, -131, MType({0x196ab34ce0bccd12, 0xe442c00de2591b47})},
+    {Sign::POS, -131, MType({0x3f4e2e660317d55f, 0xed393b1c22351280})},
+    {Sign::POS, -131, MType({0xc17bd40d8d9291ec, 0xff4489cedeab2ca6})},
+    {Sign::POS, -130, MType({0x9c5a0fe396f40f1e, 0x88bc74113f23def1})},
+    {Sign::POS, -130, MType({0x88713268840cbcc0, 0x8d515bf11fb94f1c})},
+    {Sign::POS, -130, MType({0x65c0da506a088484, 0x968b08643409ceb6})},
+    {Sign::POS, -130, MType({0x411a5b944aca8708, 0x9b2fe580ac80b17d})},
+    {Sign::POS, -130, MType({0xa9fb6cf0ecb411b7, 0xa489ec199dab06f2})},
+    {Sign::POS, -130, MType({0xcad2fb8d48054ae0, 0xa93f2f250dac67d1})},
+    {Sign::POS, -130, MType({0x149767e410316d2c, 0xadfa035aa1ed8fdc})},
+    {Sign::POS, -130, MType({0x34c7bc3d32750fde, 0xb780945bab55dce4})},
+    {Sign::POS, -130, MType({0x8f6ebcfb2016a439, 0xbc4c6c2a226399ef})},
+    {Sign::POS, -130, MType({0xaa8b6997a402bf30, 0xc5f57f59c7f46155})},
+    {Sign::POS, -130, MType({0x2c507fb7a3d0bf6a, 0xcad2d6e7b80bf914})},
+    {Sign::POS, -130, MType({0xd0cb02f33f79c16c, 0xcfb6203844b3209a})},
+    {Sign::POS, -130, MType({0x58a98f2ad65bee9b, 0xd98ec2bade71e539})},
+    {Sign::POS, -130, MType({0x4d57da945b5d0aaa, 0xde8439c1dec56877})},
+    {Sign::POS, -130, MType({0x4e9a750b6b68781d, 0xe37fde37807b84e3})},
+    {Sign::POS, -130, MType({0xc524848e3443e040, 0xe881bf932af3dac0})},
+    {Sign::POS, -130, MType({0x3b020fa1820c9492, 0xf29877ff38809091})},
+    {Sign::POS, -130, MType({0x54d2238f75f969b1, 0xf7ad6f26e7ff2ef7})},
+    {Sign::POS, -130, MType({0xca0cdf301431b60f, 0xfcc8e3659d9bcbec})},
+    {Sign::POS, -129, MType({0xf5bd0b5b3479d5f4, 0x80f572b1363487b9})},
+    {Sign::POS, -129, MType({0x163ceae88f720f1e, 0x86216b3b0b17188b})},
+    {Sign::POS, -129, MType({0x9c5a0fe396f40f1e, 0x88bc74113f23def1})},
+    {Sign::POS, -129, MType({0xf7a5168126a58b9a, 0x8b5ae65d67db9acd})},
+    {Sign::POS, -129, MType({0x5147bdb6ddcaf59c, 0x8dfccb1ad35ca6ed})},
+    {Sign::POS, -129, MType({0xae91aeba609c8877, 0x90a22b6875c6a1f7})},
+    {Sign::POS, -129, MType({0xdf5bb3b60554e152, 0x934b1089a6dc93c1})},
+    {Sign::POS, -129, MType({0x4a5004f3ef063313, 0x95f783e6e49a9cfa})},
+    {Sign::POS, -129, MType({0xd878bbe3d392be25, 0x9b5b3bb5f088b766})},
+    {Sign::POS, -129, MType({0x5b035eae273a855f, 0x9e1293b9998c1daa})},
+    {Sign::POS, -129, MType({0xbb2438273918db7e, 0xa0cda11eaf46390d})},
+    {Sign::POS, -129, MType({0xf698298adddd7f32, 0xa38c6e138e20d831})},
+    {Sign::POS, -129, MType({0xe4f5275c2d15c21f, 0xa64f04f0b961df76})},
+    {Sign::POS, -129, MType({0x8164c759686a2209, 0xa9157039c51ebe70})},
+    {Sign::POS, -129, MType({0xf72ea07749ce6bd3, 0xabdfba9e468fd6f6})},
+    {Sign::POS, -129, MType({0x7dd6e688ebb13b03, 0xaeadeefacaf97d35})},
+    {Sign::POS, -129, MType({0x18ce51fff99479cd, 0xb1801859d56249dc})},
+    {Sign::POS, -129, MType({0x2756eba00bc33978, 0xb45641f4e350a0d3})},
+    {Sign::POS, -129, MType({0xbe1116c3466beb6d, 0xb730773578cb90b2})},
+    {Sign::POS, -129, MType({0x49dc60b2b059a60b, 0xba0ec3b633dd8b09})},
+    {Sign::POS, -129, MType({0x2efd17781bb3afec, 0xbcf13343e7d9ec7d})},
+    {Sign::POS, -129, MType({0x37eda996244bccb0, 0xbfd7d1dec0a8df6f})},
+    {Sign::POS, -129, MType({0x33337789d592e296, 0xc2c2abbb6e5fd56f})},
+    {Sign::POS, -129, MType({0x1a18fb8f9f9ef280, 0xc5b1cd44596fa51e})},
+    {Sign::POS, -129, MType({0x688ce7c1a75e341a, 0xc8a5431adfb44ca5})},
+    {Sign::POS, -129, MType({0x2d7e9307c70c0668, 0xcb9d1a189ab56e76})},
+    {Sign::POS, -129, MType({0x2d7e9307c70c0668, 0xcb9d1a189ab56e76})},
+    {Sign::POS, -129, MType({0xef2f3f4f861ad6a9, 0xce995f50af69d861})},
+    {Sign::POS, -129, MType({0x7f9d79f51dcc7301, 0xd19a201127d3c645})},
+    {Sign::POS, -129, MType({0x5f53bd2e406e66e7, 0xd49f69e456cf1b79})},
+    {Sign::POS, -129, MType({0xad88bba7d0cee8e0, 0xd7a94a92466e833a})},
+    {Sign::POS, -129, MType({0x96c20cca6efe2ac5, 0xdab7d02231484a92})},
+    {Sign::POS, -129, MType({0xf40a666c87842843, 0xddcb08dc0717d85b})},
+    {Sign::POS, -129, MType({0x7fe8e1802aba24d6, 0xe0e30349fd1cec80})},
+    {Sign::POS, -129, MType({0x7fe8e1802aba24d6, 0xe0e30349fd1cec80})},
+    {Sign::POS, -129, MType({0x3eadb651b49ac53a, 0xe3ffce3a2aa64922})},
+    {Sign::POS, -129, MType({0x304e1653e71d9973, 0xe72178c0323a1a0f})},
+    {Sign::POS, -129, MType({0xe9a767a80d6d97e8, 0xea481236f7d35baf})},
+    {Sign::POS, -129, MType({0x4f91cf4b33e42998, 0xed73aa4264b0ade9})},
+    {Sign::POS, -129, MType({0x4f91cf4b33e42998, 0xed73aa4264b0ade9})},
+    {Sign::POS, -129, MType({0xfc66eb6408ff6433, 0xf0a450d139366ca6})},
+    {Sign::POS, -129, MType({0xac8d42f78d3e65d3, 0xf3da161eed6b9aaf})},
+    {Sign::POS, -129, MType({0x5a470250d40ebe90, 0xf7150ab5a09f27f4})},
+    {Sign::POS, -129, MType({0x5a470250d40ebe90, 0xf7150ab5a09f27f4})},
+    {Sign::POS, -129, MType({0xb780a545a1b54dcf, 0xfa553f7018c966f2})},
+    {Sign::POS, -129, MType({0x8f05924d258c14c5, 0xfd9ac57bd244217e})},
+    {Sign::POS, -128, MType({0x89d1b09c70c4010a, 0x8072d72d903d588b})},
+    {Sign::POS, -128, MType({0x89d1b09c70c4010a, 0x8072d72d903d588b})},
+    {Sign::POS, -128, MType({0x30d58c3f7e2ea1f, 0x821b05f3b01d6774})},
+    {Sign::POS, -128, MType({0x20f6fafe8fbb68b9, 0x83c5f8299e2b4091})},
+    {Sign::POS, -128, MType({0xe21f9f89c1ab80b2, 0x8573b71682a7d21a})},
+    {Sign::POS, -128, MType({0xe21f9f89c1ab80b2, 0x8573b71682a7d21a})},
+    {Sign::POS, -128, MType({0x1e005d06dbfa8f8, 0x87244c308e670a66})},
+    {Sign::POS, -128, MType({0x223111a707b6de2c, 0x88d7c11e3ad53cdc})},
+    {Sign::POS, -128, MType({0x223111a707b6de2c, 0x88d7c11e3ad53cdc})},
+    {Sign::POS, -128, MType({0x2eb628dba173c82d, 0x8a8e1fb794b09134})},
+    {Sign::POS, -128, MType({0xbe2ad19415fe25a5, 0x8c47720791e53313})},
+    {Sign::POS, -128, MType({0xbe2ad19415fe25a5, 0x8c47720791e53313})},
+    {Sign::POS, -128, MType({0xbddae1ccce247838, 0x8e03c24d73003959})},
+    {Sign::POS, -128, MType({0x9b00bf167e95da67, 0x8fc31afe30b2c6de})},
+    {Sign::POS, -128, MType({0x9b00bf167e95da67, 0x8fc31afe30b2c6de})},
+    {Sign::POS, -128, MType({0x9b92199ed1a4bab1, 0x918586c5f5e4bf01})},
+    {Sign::POS, -128, MType({0xdf5bb3b60554e152, 0x934b1089a6dc93c1})},
+    {Sign::POS, -128, MType({0xdf5bb3b60554e152, 0x934b1089a6dc93c1})},
+    {Sign::POS, -128, MType({0xf3cbc416a2418012, 0x9513c36876083695})},
+    {Sign::POS, -128, MType({0xbe1188fbc94e2f15, 0x96dfaabd86fa1646})},
+    {Sign::POS, -128, MType({0xbe1188fbc94e2f15, 0x96dfaabd86fa1646})},
+    {Sign::POS, -128, MType({0x1d2f89321647b358, 0x98aed221a03458b6})},
+    {Sign::POS, -128, MType({0x1d2f89321647b358, 0x98aed221a03458b6})},
+    {Sign::POS, -128, MType({0xe549f9aaea3cb5e1, 0x9a81456cec642e0f})},
+    {Sign::POS, -128, MType({0xa2554b2dd4619e63, 0x9c5710b8cbb73a42})},
+    {Sign::POS, -128, MType({0xa2554b2dd4619e63, 0x9c5710b8cbb73a42})},
+    {Sign::POS, -128, MType({0x30603d87b6df81ad, 0x9e304061b5fda919})},
+    {Sign::POS, -128, MType({0x30603d87b6df81ad, 0x9e304061b5fda919})},
+    {Sign::POS, -128, MType({0x67879c5a30cd1242, 0xa00ce1092e5498c3})},
+    {Sign::POS, -128, MType({0x67879c5a30cd1242, 0xa00ce1092e5498c3})},
+    {Sign::POS, -128, MType({0xb7efae08e597e16, 0xa1ecff97c91e267b})},
+    {Sign::POS, -128, MType({0x83594fab088c0d65, 0xa3d0a93f45169a4a})},
+    {Sign::POS, -128, MType({0x83594fab088c0d65, 0xa3d0a93f45169a4a})},
+    {Sign::POS, -128, MType({0xaf6a62a0dec6e073, 0xa5b7eb7cb860fb88})},
+    {Sign::POS, -128, MType({0xaf6a62a0dec6e073, 0xa5b7eb7cb860fb88})},
+    {Sign::POS, -128, MType({0x49362382a768847a, 0xa7a2d41ad270c9d7})},
+    {Sign::POS, -128, MType({0x49362382a768847a, 0xa7a2d41ad270c9d7})},
+    {Sign::POS, -128, MType({0x8ba4aea614d05701, 0xa991713433c2b998})},
+    {Sign::POS, -128, MType({0x8ba4aea614d05701, 0xa991713433c2b998})},
+    {Sign::POS, -128, MType({0x7fe6607ba902ef3c, 0xab83d135dc633301})},
+    {Sign::POS, -128, MType({0x7fe6607ba902ef3c, 0xab83d135dc633301})},
+    {Sign::POS, -128, MType({0xd60864fd949b4bd3, 0xad7a02e1b24efd31})},
+    {Sign::POS, -128, MType({0xd60864fd949b4bd3, 0xad7a02e1b24efd31})},
+    {Sign::POS, -128, MType({0x66d235ee63073dd, 0xaf74155120c9011c})},
+    {Sign::POS, -128, MType({0x66d235ee63073dd, 0xaf74155120c9011c})},
+    {Sign::POS, 0, MType(0)},
 };
 
 // Logarithm range reduction - Step 2:
@@ -435,196 +431,196 @@ constexpr double S2[198] = {
 //   r = 2^-18 * round( 2^18 / (1 + i*2^(-14)) );
 //   s, m, e = RealField(128)(r).log().sign_mantissa_exponent();
 //   print("{Sign::POS," if (s == -1) else "{Sign::NEG,", e, ",
-//         format_hex(m), "},");
+//         MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})},");
 const Float128 LOG_R2[198] = {
-    {Sign::NEG, -135, 0xb67dab2a'1a5742a4'a0e061c5'f7431c5e_u128},
-    {Sign::NEG, -135, 0xb4807f24'af682939'5d5bfe7b'969ed6ec_u128},
-    {Sign::NEG, -135, 0xb2834b35'b4d54d5f'4d08702d'dfabc23f_u128},
-    {Sign::NEG, -135, 0xb0860f5c'eba9be95'd4d36650'8b9953df_u128},
-    {Sign::NEG, -135, 0xae68f71a'a09e8847'ac18a289'f8f214a9_u128},
-    {Sign::NEG, -135, 0xac6baaee'd676e8f1'd5b42054'abb88c45_u128},
-    {Sign::NEG, -135, 0xaa6e56d8'7cd632d6'09809d58'ee484964_u128},
-    {Sign::NEG, -135, 0xa870fad7'54bb8791'b9e6fc7c'72f06d73_u128},
-    {Sign::NEG, -135, 0xa67396eb'1f231892'6f78d6d0'105c00e2_u128},
-    {Sign::NEG, -135, 0xa4762b13'9d0626e7'028f7126'29209148_u128},
-    {Sign::NEG, -135, 0xa258dfd1'0aedaa67'c98d898e'f172df02_u128},
-    {Sign::NEG, -135, 0xa05b63a3'73e60a83'fcc37c3c'3062bfa1_u128},
-    {Sign::NEG, -135, 0x9e5ddf89'cf42f501'3eb450db'05763c36_u128},
-    {Sign::NEG, -135, 0x9c605383'ddf1b88c'7146a86f'd458b775_u128},
-    {Sign::NEG, -135, 0x9a62bf91'60dcb286'c20a0c92'81474436_u128},
-    {Sign::NEG, -135, 0x986523b2'18eb4ed6'cdc57316'ec4aebc3_u128},
-    {Sign::NEG, -135, 0x96677fe5'c70207b9'c060dad7'4cef4273_u128},
-    {Sign::NEG, -135, 0x9449f92d'2ff44633'ed8def1a'3e433499_u128},
-    {Sign::NEG, -135, 0x924c4507'3220b5e0'3ce7a1f8'5c27b4fc_u128},
-    {Sign::NEG, -135, 0x904e88f3'68fea63f'f2ca8934'49f7f2cb_u128},
-    {Sign::NEG, -135, 0x8e50c4f1'956699ed'8d77d9fa'bd2853cf_u128},
-    {Sign::NEG, -135, 0x8c52f901'782e20ec'93e828d7'5b58ded4_u128},
-    {Sign::NEG, -135, 0x8a552522'd227d87a'9f9605b0'53c5acf0_u128},
-    {Sign::NEG, -135, 0x88574955'64236ae0'62a14939'3bca7241_u128},
-    {Sign::NEG, -135, 0x86398719'b66bac7c'aea6b56c'e89203d4_u128},
-    {Sign::NEG, -135, 0x843b9aef'044e4dcc'0242bd86'd00609b2_u128},
-    {Sign::NEG, -135, 0x823da6d4'c89c6927'daabf927'74bac84e_u128},
-    {Sign::NEG, -135, 0x803faaca'c419abf2'a1c6f3fc'242ef8d0_u128},
-    {Sign::NEG, -136, 0xfc834da1'6f0d9f57'a225ebc0'2e6d9dd4_u128},
-    {Sign::NEG, -136, 0xf88735cc'c7433381'c33f6ad3'40ae18a9_u128},
-    {Sign::NEG, -136, 0xf48b0e17'1249b6bc'70b2a4d3'8a242244_u128},
-    {Sign::NEG, -136, 0xf08ed67f'd190e280'1d548190'48b811b0_u128},
-    {Sign::NEG, -136, 0xec52ca07'ed95f236'9c21b650'afe9ede0_u128},
-    {Sign::NEG, -136, 0xe85671ad'ecd28aac'935519c9'6d30e463_u128},
-    {Sign::NEG, -136, 0xe45a0970'dc912ca7'ba88f6f2'e2672cfe_u128},
-    {Sign::NEG, -136, 0xe05d9150'3e298bc8'0b1a8b84'657ae069_u128},
-    {Sign::NEG, -136, 0xdc61094b'92ed70ef'ea3bff8d'197b20a1_u128},
-    {Sign::NEG, -136, 0xd8647162'5c28b9e5'cdbb931d'6fecc249_u128},
-    {Sign::NEG, -136, 0xd467c994'1b2158f5'd971d560'd5f00820_u128},
-    {Sign::NEG, -136, 0xd06b11e0'51175493'75563561'244c090b_u128},
-    {Sign::NEG, -136, 0xcc6e4a46'7f44c6fa'dc393c9a'3f3b380f_u128},
-    {Sign::NEG, -136, 0xc831a4c6'f6fa709d'e6abe6e9'e4ee2096_u128},
-    {Sign::NEG, -136, 0xc434bc61'24a0f16e'3ce3c822'8583a66e_u128},
-    {Sign::NEG, -136, 0xc037c413'c61bfd93'b96a79f5'c5a4963a_u128},
-    {Sign::NEG, -136, 0xbc3abbde'5c8d9bde'aaef2733'7008679f_u128},
-    {Sign::NEG, -136, 0xb83da3c0'6911e509'a49a3fca'ddc8bc5a_u128},
-    {Sign::NEG, -136, 0xb4407bb9'6cbf035a'e0254feb'785362fa_u128},
-    {Sign::NEG, -136, 0xb04343c8'e8a53245'9893a4e2'5ab9dc95_u128},
-    {Sign::NEG, -136, 0xac45fbee'5dcebe0b'5d8b0f40'a3708915_u128},
-    {Sign::NEG, -136, 0xa848a429'4d40035d'5f4c11c2'c7a58c69_u128},
-    {Sign::NEG, -136, 0xa44b3c79'37f76efd'b348cc5d'f706ffba_u128},
-    {Sign::NEG, -136, 0xa04dc4dd'9eed7d60'9159f2c5'5a18befd_u128},
-    {Sign::NEG, -136, 0x9c106456'3058bef3'bdfdee41'fe6a5a02_u128},
-    {Sign::NEG, -136, 0x9812cbe3'46475a24'4580ddf8'9853254d_u128},
-    {Sign::NEG, -136, 0x94152383'53489ffb'ac75e10d'61fc3ee8_u128},
-    {Sign::NEG, -136, 0x90176b35'd83ce8e2'cad9b30b'29736155_u128},
-    {Sign::NEG, -136, 0x8c19a2fa'55fe9b14'6f881deb'98fc45f3_u128},
-    {Sign::NEG, -136, 0x881bcad0'4d622a3e'70a04b63'b7248c96_u128},
-    {Sign::NEG, -136, 0x841de2b7'3f361722'b4823fb4'8035eddd_u128},
-    {Sign::NEG, -136, 0x801feaae'ac42ef38'3364ccb5'b13cd47f_u128},
-    {Sign::NEG, -137, 0xf843c56c'2a969897'e306977b'049f0ad5_u128},
-    {Sign::NEG, -137, 0xf0479599'f617a843'e3c4d9e9'619bc045_u128},
-    {Sign::NEG, -137, 0xe84b45e5'bc76702c'4356d525'b5e6432d_u128},
-    {Sign::NEG, -137, 0xe04ed64e'7f14697a'7839dcd7'989339ab_u128},
-    {Sign::NEG, -137, 0xd85246d3'3f47230b'4e21f045'ecb76f23_u128},
-    {Sign::NEG, -137, 0xd0559772'fe5840b0'902e248d'd4ba9b28_u128},
-    {Sign::NEG, -137, 0xc858c82c'bd857a72'a4444906'7ef92e01_u128},
-    {Sign::NEG, -137, 0xc05bd8ff'7e009bd2'17926207'cc22e4e6_u128},
-    {Sign::NEG, -137, 0xb85ec9ea'40ef8309'1c349622'f3fa5d82_u128},
-    {Sign::NEG, -137, 0xafe1c6ec'e1a058dd'97fa2fd0'c9dc723e_u128},
-    {Sign::NEG, -137, 0xa7e47606'048b1a65'983e8089'7cf1e60f_u128},
-    {Sign::NEG, -137, 0x9fe70534'1d236102'7199cd06'ae5d39b3_u128},
-    {Sign::NEG, -137, 0x97e97476'2c5e8f58'43cd18a7'2a051a96_u128},
-    {Sign::NEG, -137, 0x8febc3cb'332616ff'7b6d1248'c3e1fd40_u128},
-    {Sign::NEG, -137, 0x87edf332'325777c5'f5572a88'14c703af_u128},
-    {Sign::NEG, -138, 0xffe00554'55887de0'26828c92'649a3a39_u128},
-    {Sign::NEG, -138, 0xefe3e464'3a640cf3'82c550bd'1216d82a_u128},
-    {Sign::NEG, -138, 0xdfe78392'14b4e8ae'da6959f7'f0e01bf0_u128},
-    {Sign::NEG, -138, 0xcfeae2db'e5d6736d'da93e2fa'85a8f214_u128},
-    {Sign::NEG, -138, 0xbfee023f'af0c2480'b47505bf'a5a03b06_u128},
-    {Sign::NEG, -138, 0xaff0e1bb'718186ad'b1475a51'80a43520_u128},
-    {Sign::NEG, -138, 0x9ff3814d'2e4a36b2'a8740b91'c95df537_u128},
-    {Sign::NEG, -138, 0x8ff5e0f2'e661e1c6'57d895d3'5921b59c_u128},
-    {Sign::NEG, -139, 0xfff00155'35588833'3c56c598'c659c2a3_u128},
-    {Sign::NEG, -139, 0xdff3c0e4'97ea4eb1'2ef8ec33'ed9d782a_u128},
-    {Sign::NEG, -139, 0xbff7008f'f5e0c257'379eba7e'6465ff63_u128},
-    {Sign::NEG, -139, 0x9ff9c053'5073a370'3f972b78'3fcab757_u128},
-    {Sign::NEG, -140, 0xfff80055'51558885'de026e27'1ee0549d_u128},
-    {Sign::NEG, -140, 0xbffb8023'febc0c25'eceb47ea'01f6c632_u128},
-    {Sign::NEG, -141, 0xfffc0015'54d55888'7333c578'57e1ed52_u128},
-    {Sign::NEG, -142, 0xfffe0005'55455588'87dde026'fa704374_u128},
-    {Sign::POS, 0, 0_u128},
-    {Sign::POS, -141, 0x80010002'aab2aac4'44999abe'2fe2cc65_u128},
-    {Sign::POS, -140, 0x8002000a'aaeaac44'4eef3815'81464ccb_u128},
-    {Sign::POS, -140, 0xc0048024'01440c26'dfeb4850'85f6f454_u128},
-    {Sign::POS, -139, 0x8004002a'acaac445'99abe3be'3a1c6e93_u128},
-    {Sign::POS, -139, 0xa0064053'5a37a37a'6bc1e20e'ac8448b4_u128},
-    {Sign::POS, -139, 0xc0090090'0a20c275'979eedc0'64c242fd_u128},
-    {Sign::POS, -139, 0xe00c40e4'bd6e4efd'c72446cc'1bf728bd_u128},
-    {Sign::POS, -138, 0x800800aa'baac446e'f381b821'bbb569e5_u128},
-    {Sign::POS, -138, 0x900a20f3'19a3e273'569b26aa'a485ea5c_u128},
-    {Sign::POS, -138, 0xa00c814d'7c6a37f8'2dcf56c8'3c80b028_u128},
-    {Sign::POS, -138, 0xb00f21bb'e3e388ee'5f697682'84463b9b_u128},
-    {Sign::POS, -138, 0xc0120240'510c284c'b48ea6c0'5e2773a1_u128},
-    {Sign::POS, -138, 0xd01522dc'c4f87991'14d9d761'96d8043a_u128},
-    {Sign::POS, -138, 0xe0188393'40d4f241'e016a611'a4415d72_u128},
-    {Sign::POS, -138, 0xf01c2465'c5e61b6f'661e135f'49a47c40_u128},
-    {Sign::POS, -137, 0x801002ab'2ac4499a'be6bf0fa'435e8383_u128},
-    {Sign::POS, -137, 0x88121333'7898871e'9a31ba0c'bc030353_u128},
-    {Sign::POS, -137, 0x901443cc'cd362c9f'54b57dfe'0c4c840f_u128},
-    {Sign::POS, -137, 0x98169478'296fad41'7ad1e9c3'15328f7e_u128},
-    {Sign::POS, -137, 0xa0190536'8e2389b3'1f3f686c'f3d6be22_u128},
-    {Sign::POS, -137, 0xa81b9608'fc3c50ec'f105b66e'c4703ede_u128},
-    {Sign::POS, -137, 0xb01e46f0'74b0a0f3'610848c6'8df4d233_u128},
-    {Sign::POS, -137, 0xb7a0e9ed'7613acb0'2e0efddf'33a20464_u128},
-    {Sign::POS, -137, 0xbfa3d900'8e042ffb'c2cdb3c7'50f127b4_u128},
-    {Sign::POS, -137, 0xc7a6e82b'a36a7073'bd953378'6d3f4c49_u128},
-    {Sign::POS, -137, 0xcfaa176f'b76c8eb1'82e237c9'a4d450e3_u128},
-    {Sign::POS, -137, 0xd7ad66cd'cb3cbe14'c00b46a4'd0e3dfd0_u128},
-    {Sign::POS, -137, 0xdfb0d646'e0194584'ea999c0d'f8546710_u128},
-    {Sign::POS, -137, 0xe7b465db'f74c8032'cec6c2a9'ad974f4f_u128},
-    {Sign::POS, -137, 0xefb8158e'122cde5a'2d2045da'1570a07c_u128},
-    {Sign::POS, -137, 0xf7bbe55e'321ce603'6752e9b2'381e3edc_u128},
-    {Sign::POS, -137, 0xffbfd54d'588b33c5'3c1ed527'28e00e40_u128},
-    {Sign::POS, -136, 0x83e1f2ae'43793dc3'493b0d87'3fb9a340_u128},
-    {Sign::POS, -136, 0x87e40ac6'5f6cc4a0'29e38750'c9d26893_u128},
-    {Sign::POS, -136, 0x8be632ef'80e9a0df'aab9e832'7258ac3f_u128},
-    {Sign::POS, -136, 0x8fe86b2a'28bf51b3'28bc403d'8a5f3c63_u128},
-    {Sign::POS, -136, 0x93eab376'd7c36377'f720c1c9'7227fcdc_u128},
-    {Sign::POS, -136, 0x97ed0bd6'0ed17018'6ad9a3e3'd11b66c1_u128},
-    {Sign::POS, -136, 0x9bef7448'4ecb1f6c'edb27b79'c90b4019_u128},
-    {Sign::POS, -136, 0x9fb1c4cd'27012e19'a092a0d7'ab21722a_u128},
-    {Sign::POS, -136, 0xa3b44c65'b71c2d85'535d52f0'939a4d02_u128},
-    {Sign::POS, -136, 0xa7b6e412'cadcb3dc'90a57e11'edc1864e_u128},
-    {Sign::POS, -136, 0xabb98bd4'e33c4381'68e9c901'60031159_u128},
-    {Sign::POS, -136, 0xafbc43ac'813a6ea3'bf60594f'929adeb8_u128},
-    {Sign::POS, -136, 0xb3bf0b9a'25dcd7a2'8a421588'86775205_u128},
-    {Sign::POS, -136, 0xb7c1e39e'522f316d'1ab45417'663dee9e_u128},
-    {Sign::POS, -136, 0xbbc4cbb9'87433fe4'6c51ae3c'e1aea68a_u128},
-    {Sign::POS, -136, 0xbfc7c3ec'4630d83c'7c52ae8b'40ebabb7_u128},
-    {Sign::POS, -136, 0xc3cacc37'1015e15d'a857126f'7cfaaa67_u128},
-    {Sign::POS, -136, 0xc7cde49a'66165446'14d05662'cd29464a_u128},
-    {Sign::POS, -136, 0xcb90da16'44d29bb7'8379db06'ef3cd6bb_u128},
-    {Sign::POS, -136, 0xcf9411aa'99ddb7de'9025f4c6'7dd38bb6_u128},
-    {Sign::POS, -136, 0xd3975958'f681086d'd6f8a61c'892032ee_u128},
-    {Sign::POS, -136, 0xd79ab121'dbf8714c'9a2f20b4'e2332d47_u128},
-    {Sign::POS, -136, 0xdb9e1905'cb85ea59'3c767d61'f51d375b_u128},
-    {Sign::POS, -136, 0xdfa19105'46717fca'd4b2bd65'bb25493c_u128},
-    {Sign::POS, -136, 0xe3a51920'ce095292'c96c1254'a30ef91f_u128},
-    {Sign::POS, -136, 0xe7a8b158'e3a198be'73e324ce'0946b214_u128},
-    {Sign::POS, -136, 0xebac59ae'08949dd8'cacd125a'12bac62c_u128},
-    {Sign::POS, -136, 0xef6fd620'b2b7a503'cafdc272'27b71eaa_u128},
-    {Sign::POS, -136, 0xf3739daf'959aaafc'688d4282'f6026aa3_u128},
-    {Sign::POS, -136, 0xf777755d'03f4e0b6'e54e9e38'04464cdd_u128},
-    {Sign::POS, -136, 0xfb7b5d29'7f388a12'cb78b383'f4b59dce_u128},
-    {Sign::POS, -136, 0xff7f5515'88de024f'ee055fc5'15062c04_u128},
-    {Sign::POS, -135, 0x81c1ae90'd131de38'207812b4'3382acdd_u128},
-    {Sign::POS, -135, 0x83c3baa7'26a721cc'dc90c4c4'b61f3a87_u128},
-    {Sign::POS, -135, 0x85c5cece'05941dbc'1a03f13f'b2c978b1_u128},
-    {Sign::POS, -135, 0x87c7eb05'aec1304f'b36f282e'83a7dc36_u128},
-    {Sign::POS, -135, 0x89a9eccd'56a980c0'd82a4661'6d4c393f_u128},
-    {Sign::POS, -135, 0x8bac18a6'40185360'bc6ff847'13c9babd_u128},
-    {Sign::POS, -135, 0x8dae4c90'b22574f4'9f7942a5'16fc2d8a_u128},
-    {Sign::POS, -135, 0x8fb0888c'eda546ab'15e50cfd'9b29b427_u128},
-    {Sign::POS, -135, 0x91b2cc9b'336f3718'9f465296'ae7dd49a_u128},
-    {Sign::POS, -135, 0x93b518bb'c45dc268'b49c1eb9'b348e6e4_u128},
-    {Sign::POS, -135, 0x95b76cee'e14e728e'daa320cd'64c9d9c7_u128},
-    {Sign::POS, -135, 0x9799a333'de49b963'75a91950'ffe1e3b5_u128},
-    {Sign::POS, -135, 0x999c070b'a32068cd'5c6abcbf'43f03f14_u128},
-    {Sign::POS, -135, 0x9b9e72f6'b295ad4f'5a9e7f26'5d1ed157_u128},
-    {Sign::POS, -135, 0x9da0e6f5'4d9318fd'efeb98d0'2a195c17_u128},
-    {Sign::POS, -135, 0x9fa36307'b5054ca8'2aa503a3'110ab5a7_u128},
-    {Sign::POS, -135, 0xa1a5e72e'29dbf808'd0fe7e05'869eb825_u128},
-    {Sign::POS, -135, 0xa3884a68'a750cb10'e80a28f4'e1e500d2_u128},
-    {Sign::POS, -135, 0xa58ade36'aeef9f0b'53106415'1ca6e30b_u128},
-    {Sign::POS, -135, 0xa78d7a19'82c4b08f'27c01ffa'8e2e3c4b_u128},
-    {Sign::POS, -135, 0xa9901e11'63cbbbf5'7ba9408d'c857d568_u128},
-    {Sign::POS, -135, 0xab92ca1e'93038d76'104d1e33'31d3b4fa_u128},
-    {Sign::POS, -135, 0xad957e41'516e0158'9343c846'fcdf9137_u128},
-    {Sign::POS, -135, 0xaf780e79'b2514889'3977e89a'ec59bfa2_u128},
-    {Sign::POS, -135, 0xb17ad246'ef3713bc'913d4e3d'c55c3e6e_u128},
-    {Sign::POS, -135, 0xb37d9e2a'7a56b09d'777b52a9'e70d8bcc_u128},
-    {Sign::POS, -135, 0xb5807224'94be0c91'55de916f'd30591de_u128},
-    {Sign::POS, -135, 0xb7834e35'7f7e2600'e79cfb37'be2861e4_u128},
-    {Sign::POS, -135, 0xb986325d'7bab0c89'90983104'd3805389_u128},
-    {Sign::POS, -135, 0xbb68ef9c'254aa378'59e3b2ec'71ce64f4_u128},
-    {Sign::POS, -135, 0xbd6be371'8c77636f'e83183bf'3dd612ef_u128},
-    {Sign::POS, -135, 0xbf6edf5e'c44d9d35'c4e3b0ac'2fd52b7f_u128},
+    {Sign::NEG, -135, MType({0xa0e061c5f7431c5e, 0xb67dab2a1a5742a4})},
+    {Sign::NEG, -135, MType({0x5d5bfe7b969ed6ec, 0xb4807f24af682939})},
+    {Sign::NEG, -135, MType({0x4d08702ddfabc23f, 0xb2834b35b4d54d5f})},
+    {Sign::NEG, -135, MType({0xd4d366508b9953df, 0xb0860f5ceba9be95})},
+    {Sign::NEG, -135, MType({0xac18a289f8f214a9, 0xae68f71aa09e8847})},
+    {Sign::NEG, -135, MType({0xd5b42054abb88c45, 0xac6baaeed676e8f1})},
+    {Sign::NEG, -135, MType({0x9809d58ee484964, 0xaa6e56d87cd632d6})},
+    {Sign::NEG, -135, MType({0xb9e6fc7c72f06d73, 0xa870fad754bb8791})},
+    {Sign::NEG, -135, MType({0x6f78d6d0105c00e2, 0xa67396eb1f231892})},
+    {Sign::NEG, -135, MType({0x28f712629209148, 0xa4762b139d0626e7})},
+    {Sign::NEG, -135, MType({0xc98d898ef172df02, 0xa258dfd10aedaa67})},
+    {Sign::NEG, -135, MType({0xfcc37c3c3062bfa1, 0xa05b63a373e60a83})},
+    {Sign::NEG, -135, MType({0x3eb450db05763c36, 0x9e5ddf89cf42f501})},
+    {Sign::NEG, -135, MType({0x7146a86fd458b775, 0x9c605383ddf1b88c})},
+    {Sign::NEG, -135, MType({0xc20a0c9281474436, 0x9a62bf9160dcb286})},
+    {Sign::NEG, -135, MType({0xcdc57316ec4aebc3, 0x986523b218eb4ed6})},
+    {Sign::NEG, -135, MType({0xc060dad74cef4273, 0x96677fe5c70207b9})},
+    {Sign::NEG, -135, MType({0xed8def1a3e433499, 0x9449f92d2ff44633})},
+    {Sign::NEG, -135, MType({0x3ce7a1f85c27b4fc, 0x924c45073220b5e0})},
+    {Sign::NEG, -135, MType({0xf2ca893449f7f2cb, 0x904e88f368fea63f})},
+    {Sign::NEG, -135, MType({0x8d77d9fabd2853cf, 0x8e50c4f1956699ed})},
+    {Sign::NEG, -135, MType({0x93e828d75b58ded4, 0x8c52f901782e20ec})},
+    {Sign::NEG, -135, MType({0x9f9605b053c5acf0, 0x8a552522d227d87a})},
+    {Sign::NEG, -135, MType({0x62a149393bca7241, 0x8857495564236ae0})},
+    {Sign::NEG, -135, MType({0xaea6b56ce89203d4, 0x86398719b66bac7c})},
+    {Sign::NEG, -135, MType({0x242bd86d00609b2, 0x843b9aef044e4dcc})},
+    {Sign::NEG, -135, MType({0xdaabf92774bac84e, 0x823da6d4c89c6927})},
+    {Sign::NEG, -135, MType({0xa1c6f3fc242ef8d0, 0x803faacac419abf2})},
+    {Sign::NEG, -136, MType({0xa225ebc02e6d9dd4, 0xfc834da16f0d9f57})},
+    {Sign::NEG, -136, MType({0xc33f6ad340ae18a9, 0xf88735ccc7433381})},
+    {Sign::NEG, -136, MType({0x70b2a4d38a242244, 0xf48b0e171249b6bc})},
+    {Sign::NEG, -136, MType({0x1d54819048b811b0, 0xf08ed67fd190e280})},
+    {Sign::NEG, -136, MType({0x9c21b650afe9ede0, 0xec52ca07ed95f236})},
+    {Sign::NEG, -136, MType({0x935519c96d30e463, 0xe85671adecd28aac})},
+    {Sign::NEG, -136, MType({0xba88f6f2e2672cfe, 0xe45a0970dc912ca7})},
+    {Sign::NEG, -136, MType({0xb1a8b84657ae069, 0xe05d91503e298bc8})},
+    {Sign::NEG, -136, MType({0xea3bff8d197b20a1, 0xdc61094b92ed70ef})},
+    {Sign::NEG, -136, MType({0xcdbb931d6fecc249, 0xd86471625c28b9e5})},
+    {Sign::NEG, -136, MType({0xd971d560d5f00820, 0xd467c9941b2158f5})},
+    {Sign::NEG, -136, MType({0x75563561244c090b, 0xd06b11e051175493})},
+    {Sign::NEG, -136, MType({0xdc393c9a3f3b380f, 0xcc6e4a467f44c6fa})},
+    {Sign::NEG, -136, MType({0xe6abe6e9e4ee2096, 0xc831a4c6f6fa709d})},
+    {Sign::NEG, -136, MType({0x3ce3c8228583a66e, 0xc434bc6124a0f16e})},
+    {Sign::NEG, -136, MType({0xb96a79f5c5a4963a, 0xc037c413c61bfd93})},
+    {Sign::NEG, -136, MType({0xaaef27337008679f, 0xbc3abbde5c8d9bde})},
+    {Sign::NEG, -136, MType({0xa49a3fcaddc8bc5a, 0xb83da3c06911e509})},
+    {Sign::NEG, -136, MType({0xe0254feb785362fa, 0xb4407bb96cbf035a})},
+    {Sign::NEG, -136, MType({0x9893a4e25ab9dc95, 0xb04343c8e8a53245})},
+    {Sign::NEG, -136, MType({0x5d8b0f40a3708915, 0xac45fbee5dcebe0b})},
+    {Sign::NEG, -136, MType({0x5f4c11c2c7a58c69, 0xa848a4294d40035d})},
+    {Sign::NEG, -136, MType({0xb348cc5df706ffba, 0xa44b3c7937f76efd})},
+    {Sign::NEG, -136, MType({0x9159f2c55a18befd, 0xa04dc4dd9eed7d60})},
+    {Sign::NEG, -136, MType({0xbdfdee41fe6a5a02, 0x9c1064563058bef3})},
+    {Sign::NEG, -136, MType({0x4580ddf89853254d, 0x9812cbe346475a24})},
+    {Sign::NEG, -136, MType({0xac75e10d61fc3ee8, 0x9415238353489ffb})},
+    {Sign::NEG, -136, MType({0xcad9b30b29736155, 0x90176b35d83ce8e2})},
+    {Sign::NEG, -136, MType({0x6f881deb98fc45f3, 0x8c19a2fa55fe9b14})},
+    {Sign::NEG, -136, MType({0x70a04b63b7248c96, 0x881bcad04d622a3e})},
+    {Sign::NEG, -136, MType({0xb4823fb48035eddd, 0x841de2b73f361722})},
+    {Sign::NEG, -136, MType({0x3364ccb5b13cd47f, 0x801feaaeac42ef38})},
+    {Sign::NEG, -137, MType({0xe306977b049f0ad5, 0xf843c56c2a969897})},
+    {Sign::NEG, -137, MType({0xe3c4d9e9619bc045, 0xf0479599f617a843})},
+    {Sign::NEG, -137, MType({0x4356d525b5e6432d, 0xe84b45e5bc76702c})},
+    {Sign::NEG, -137, MType({0x7839dcd7989339ab, 0xe04ed64e7f14697a})},
+    {Sign::NEG, -137, MType({0x4e21f045ecb76f23, 0xd85246d33f47230b})},
+    {Sign::NEG, -137, MType({0x902e248dd4ba9b28, 0xd0559772fe5840b0})},
+    {Sign::NEG, -137, MType({0xa44449067ef92e01, 0xc858c82cbd857a72})},
+    {Sign::NEG, -137, MType({0x17926207cc22e4e6, 0xc05bd8ff7e009bd2})},
+    {Sign::NEG, -137, MType({0x1c349622f3fa5d82, 0xb85ec9ea40ef8309})},
+    {Sign::NEG, -137, MType({0x97fa2fd0c9dc723e, 0xafe1c6ece1a058dd})},
+    {Sign::NEG, -137, MType({0x983e80897cf1e60f, 0xa7e47606048b1a65})},
+    {Sign::NEG, -137, MType({0x7199cd06ae5d39b3, 0x9fe705341d236102})},
+    {Sign::NEG, -137, MType({0x43cd18a72a051a96, 0x97e974762c5e8f58})},
+    {Sign::NEG, -137, MType({0x7b6d1248c3e1fd40, 0x8febc3cb332616ff})},
+    {Sign::NEG, -137, MType({0xf5572a8814c703af, 0x87edf332325777c5})},
+    {Sign::NEG, -138, MType({0x26828c92649a3a39, 0xffe0055455887de0})},
+    {Sign::NEG, -138, MType({0x82c550bd1216d82a, 0xefe3e4643a640cf3})},
+    {Sign::NEG, -138, MType({0xda6959f7f0e01bf0, 0xdfe7839214b4e8ae})},
+    {Sign::NEG, -138, MType({0xda93e2fa85a8f214, 0xcfeae2dbe5d6736d})},
+    {Sign::NEG, -138, MType({0xb47505bfa5a03b06, 0xbfee023faf0c2480})},
+    {Sign::NEG, -138, MType({0xb1475a5180a43520, 0xaff0e1bb718186ad})},
+    {Sign::NEG, -138, MType({0xa8740b91c95df537, 0x9ff3814d2e4a36b2})},
+    {Sign::NEG, -138, MType({0x57d895d35921b59c, 0x8ff5e0f2e661e1c6})},
+    {Sign::NEG, -139, MType({0x3c56c598c659c2a3, 0xfff0015535588833})},
+    {Sign::NEG, -139, MType({0x2ef8ec33ed9d782a, 0xdff3c0e497ea4eb1})},
+    {Sign::NEG, -139, MType({0x379eba7e6465ff63, 0xbff7008ff5e0c257})},
+    {Sign::NEG, -139, MType({0x3f972b783fcab757, 0x9ff9c0535073a370})},
+    {Sign::NEG, -140, MType({0xde026e271ee0549d, 0xfff8005551558885})},
+    {Sign::NEG, -140, MType({0xeceb47ea01f6c632, 0xbffb8023febc0c25})},
+    {Sign::NEG, -141, MType({0x7333c57857e1ed52, 0xfffc001554d55888})},
+    {Sign::NEG, -142, MType({0x87dde026fa704374, 0xfffe000555455588})},
+    {Sign::POS, 0, MType({0x0, 0x0})},
+    {Sign::POS, -141, MType({0x44999abe2fe2cc65, 0x80010002aab2aac4})},
+    {Sign::POS, -140, MType({0x4eef381581464ccb, 0x8002000aaaeaac44})},
+    {Sign::POS, -140, MType({0xdfeb485085f6f454, 0xc004802401440c26})},
+    {Sign::POS, -139, MType({0x99abe3be3a1c6e93, 0x8004002aacaac445})},
+    {Sign::POS, -139, MType({0x6bc1e20eac8448b4, 0xa00640535a37a37a})},
+    {Sign::POS, -139, MType({0x979eedc064c242fd, 0xc00900900a20c275})},
+    {Sign::POS, -139, MType({0xc72446cc1bf728bd, 0xe00c40e4bd6e4efd})},
+    {Sign::POS, -138, MType({0xf381b821bbb569e5, 0x800800aabaac446e})},
+    {Sign::POS, -138, MType({0x569b26aaa485ea5c, 0x900a20f319a3e273})},
+    {Sign::POS, -138, MType({0x2dcf56c83c80b028, 0xa00c814d7c6a37f8})},
+    {Sign::POS, -138, MType({0x5f69768284463b9b, 0xb00f21bbe3e388ee})},
+    {Sign::POS, -138, MType({0xb48ea6c05e2773a1, 0xc0120240510c284c})},
+    {Sign::POS, -138, MType({0x14d9d76196d8043a, 0xd01522dcc4f87991})},
+    {Sign::POS, -138, MType({0xe016a611a4415d72, 0xe018839340d4f241})},
+    {Sign::POS, -138, MType({0x661e135f49a47c40, 0xf01c2465c5e61b6f})},
+    {Sign::POS, -137, MType({0xbe6bf0fa435e8383, 0x801002ab2ac4499a})},
+    {Sign::POS, -137, MType({0x9a31ba0cbc030353, 0x881213337898871e})},
+    {Sign::POS, -137, MType({0x54b57dfe0c4c840f, 0x901443cccd362c9f})},
+    {Sign::POS, -137, MType({0x7ad1e9c315328f7e, 0x98169478296fad41})},
+    {Sign::POS, -137, MType({0x1f3f686cf3d6be22, 0xa01905368e2389b3})},
+    {Sign::POS, -137, MType({0xf105b66ec4703ede, 0xa81b9608fc3c50ec})},
+    {Sign::POS, -137, MType({0x610848c68df4d233, 0xb01e46f074b0a0f3})},
+    {Sign::POS, -137, MType({0x2e0efddf33a20464, 0xb7a0e9ed7613acb0})},
+    {Sign::POS, -137, MType({0xc2cdb3c750f127b4, 0xbfa3d9008e042ffb})},
+    {Sign::POS, -137, MType({0xbd9533786d3f4c49, 0xc7a6e82ba36a7073})},
+    {Sign::POS, -137, MType({0x82e237c9a4d450e3, 0xcfaa176fb76c8eb1})},
+    {Sign::POS, -137, MType({0xc00b46a4d0e3dfd0, 0xd7ad66cdcb3cbe14})},
+    {Sign::POS, -137, MType({0xea999c0df8546710, 0xdfb0d646e0194584})},
+    {Sign::POS, -137, MType({0xcec6c2a9ad974f4f, 0xe7b465dbf74c8032})},
+    {Sign::POS, -137, MType({0x2d2045da1570a07c, 0xefb8158e122cde5a})},
+    {Sign::POS, -137, MType({0x6752e9b2381e3edc, 0xf7bbe55e321ce603})},
+    {Sign::POS, -137, MType({0x3c1ed52728e00e40, 0xffbfd54d588b33c5})},
+    {Sign::POS, -136, MType({0x493b0d873fb9a340, 0x83e1f2ae43793dc3})},
+    {Sign::POS, -136, MType({0x29e38750c9d26893, 0x87e40ac65f6cc4a0})},
+    {Sign::POS, -136, MType({0xaab9e8327258ac3f, 0x8be632ef80e9a0df})},
+    {Sign::POS, -136, MType({0x28bc403d8a5f3c63, 0x8fe86b2a28bf51b3})},
+    {Sign::POS, -136, MType({0xf720c1c97227fcdc, 0x93eab376d7c36377})},
+    {Sign::POS, -136, MType({0x6ad9a3e3d11b66c1, 0x97ed0bd60ed17018})},
+    {Sign::POS, -136, MType({0xedb27b79c90b4019, 0x9bef74484ecb1f6c})},
+    {Sign::POS, -136, MType({0xa092a0d7ab21722a, 0x9fb1c4cd27012e19})},
+    {Sign::POS, -136, MType({0x535d52f0939a4d02, 0xa3b44c65b71c2d85})},
+    {Sign::POS, -136, MType({0x90a57e11edc1864e, 0xa7b6e412cadcb3dc})},
+    {Sign::POS, -136, MType({0x68e9c90160031159, 0xabb98bd4e33c4381})},
+    {Sign::POS, -136, MType({0xbf60594f929adeb8, 0xafbc43ac813a6ea3})},
+    {Sign::POS, -136, MType({0x8a42158886775205, 0xb3bf0b9a25dcd7a2})},
+    {Sign::POS, -136, MType({0x1ab45417663dee9e, 0xb7c1e39e522f316d})},
+    {Sign::POS, -136, MType({0x6c51ae3ce1aea68a, 0xbbc4cbb987433fe4})},
+    {Sign::POS, -136, MType({0x7c52ae8b40ebabb7, 0xbfc7c3ec4630d83c})},
+    {Sign::POS, -136, MType({0xa857126f7cfaaa67, 0xc3cacc371015e15d})},
+    {Sign::POS, -136, MType({0x14d05662cd29464a, 0xc7cde49a66165446})},
+    {Sign::POS, -136, MType({0x8379db06ef3cd6bb, 0xcb90da1644d29bb7})},
+    {Sign::POS, -136, MType({0x9025f4c67dd38bb6, 0xcf9411aa99ddb7de})},
+    {Sign::POS, -136, MType({0xd6f8a61c892032ee, 0xd3975958f681086d})},
+    {Sign::POS, -136, MType({0x9a2f20b4e2332d47, 0xd79ab121dbf8714c})},
+    {Sign::POS, -136, MType({0x3c767d61f51d375b, 0xdb9e1905cb85ea59})},
+    {Sign::POS, -136, MType({0xd4b2bd65bb25493c, 0xdfa1910546717fca})},
+    {Sign::POS, -136, MType({0xc96c1254a30ef91f, 0xe3a51920ce095292})},
+    {Sign::POS, -136, MType({0x73e324ce0946b214, 0xe7a8b158e3a198be})},
+    {Sign::POS, -136, MType({0xcacd125a12bac62c, 0xebac59ae08949dd8})},
+    {Sign::POS, -136, MType({0xcafdc27227b71eaa, 0xef6fd620b2b7a503})},
+    {Sign::POS, -136, MType({0x688d4282f6026aa3, 0xf3739daf959aaafc})},
+    {Sign::POS, -136, MType({0xe54e9e3804464cdd, 0xf777755d03f4e0b6})},
+    {Sign::POS, -136, MType({0xcb78b383f4b59dce, 0xfb7b5d297f388a12})},
+    {Sign::POS, -136, MType({0xee055fc515062c04, 0xff7f551588de024f})},
+    {Sign::POS, -135, MType({0x207812b43382acdd, 0x81c1ae90d131de38})},
+    {Sign::POS, -135, MType({0xdc90c4c4b61f3a87, 0x83c3baa726a721cc})},
+    {Sign::POS, -135, MType({0x1a03f13fb2c978b1, 0x85c5cece05941dbc})},
+    {Sign::POS, -135, MType({0xb36f282e83a7dc36, 0x87c7eb05aec1304f})},
+    {Sign::POS, -135, MType({0xd82a46616d4c393f, 0x89a9eccd56a980c0})},
+    {Sign::POS, -135, MType({0xbc6ff84713c9babd, 0x8bac18a640185360})},
+    {Sign::POS, -135, MType({0x9f7942a516fc2d8a, 0x8dae4c90b22574f4})},
+    {Sign::POS, -135, MType({0x15e50cfd9b29b427, 0x8fb0888ceda546ab})},
+    {Sign::POS, -135, MType({0x9f465296ae7dd49a, 0x91b2cc9b336f3718})},
+    {Sign::POS, -135, MType({0xb49c1eb9b348e6e4, 0x93b518bbc45dc268})},
+    {Sign::POS, -135, MType({0xdaa320cd64c9d9c7, 0x95b76ceee14e728e})},
+    {Sign::POS, -135, MType({0x75a91950ffe1e3b5, 0x9799a333de49b963})},
+    {Sign::POS, -135, MType({0x5c6abcbf43f03f14, 0x999c070ba32068cd})},
+    {Sign::POS, -135, MType({0x5a9e7f265d1ed157, 0x9b9e72f6b295ad4f})},
+    {Sign::POS, -135, MType({0xefeb98d02a195c17, 0x9da0e6f54d9318fd})},
+    {Sign::POS, -135, MType({0x2aa503a3110ab5a7, 0x9fa36307b5054ca8})},
+    {Sign::POS, -135, MType({0xd0fe7e05869eb825, 0xa1a5e72e29dbf808})},
+    {Sign::POS, -135, MType({0xe80a28f4e1e500d2, 0xa3884a68a750cb10})},
+    {Sign::POS, -135, MType({0x531064151ca6e30b, 0xa58ade36aeef9f0b})},
+    {Sign::POS, -135, MType({0x27c01ffa8e2e3c4b, 0xa78d7a1982c4b08f})},
+    {Sign::POS, -135, MType({0x7ba9408dc857d568, 0xa9901e1163cbbbf5})},
+    {Sign::POS, -135, MType({0x104d1e3331d3b4fa, 0xab92ca1e93038d76})},
+    {Sign::POS, -135, MType({0x9343c846fcdf9137, 0xad957e41516e0158})},
+    {Sign::POS, -135, MType({0x3977e89aec59bfa2, 0xaf780e79b2514889})},
+    {Sign::POS, -135, MType({0x913d4e3dc55c3e6e, 0xb17ad246ef3713bc})},
+    {Sign::POS, -135, MType({0x777b52a9e70d8bcc, 0xb37d9e2a7a56b09d})},
+    {Sign::POS, -135, MType({0x55de916fd30591de, 0xb580722494be0c91})},
+    {Sign::POS, -135, MType({0xe79cfb37be2861e4, 0xb7834e357f7e2600})},
+    {Sign::POS, -135, MType({0x90983104d3805389, 0xb986325d7bab0c89})},
+    {Sign::POS, -135, MType({0x59e3b2ec71ce64f4, 0xbb68ef9c254aa378})},
+    {Sign::POS, -135, MType({0xe83183bf3dd612ef, 0xbd6be3718c77636f})},
+    {Sign::POS, -135, MType({0xc4e3b0ac2fd52b7f, 0xbf6edf5ec44d9d35})},
 };
 
 // Logarithm range reduction - Step 3:
@@ -664,147 +660,147 @@ constexpr double S3[139] = {
 //   r = 2^-21 * round( 2^21 / (1 + i*2^(-21)) );
 //   s, m, e = RealField(128)(r).log().sign_mantissa_exponent();
 //   print("{Sign::POS," if (s == -1) else "{Sign::NEG,", e, ",
-//         format_hex(m), "},");
+//         MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})},");
 const Float128 LOG_R3[139] = {
-    {Sign::NEG, -142, 0x89ff6b38'd5de2622'e39d3faf'42340ed7_u128},
-    {Sign::NEG, -142, 0x87ff6f80'ccb40f16'7ff33266'82c02485_u128},
-    {Sign::NEG, -142, 0x85ff73b8'c3cdf731'5caf4fbe'343cf928_u128},
-    {Sign::NEG, -142, 0x83ff77e0'bb2ade79'cdb6e554'348f7fe8_u128},
-    {Sign::NEG, -142, 0x81ff7bf8'b2c9c4f6'0ef009c2'457de25d_u128},
-    {Sign::NEG, -143, 0xffff0001'55535558'8883333c'57b57c74_u128},
-    {Sign::NEG, -143, 0xfbff07f1'45931f44'f32668f3'9c70d183_u128},
-    {Sign::NEG, -143, 0xf7ff0fc1'3650e7bd'459a73c6'a6486fe3_u128},
-    {Sign::NEG, -143, 0xf3ff1771'278aaecd'37b18cca'7dd3a29f_u128},
-    {Sign::NEG, -143, 0xefff1f01'193e7480'513f610d'21bcfc78_u128},
-    {Sign::NEG, -143, 0xebff2671'0b6a38e1'ea190b95'c0690b7b_u128},
-    {Sign::NEG, -143, 0xe7ff2dc0'fe0bfbfd'2a150f64'f0ad1743_u128},
-    {Sign::NEG, -143, 0xe3ff34f0'f121bddd'090b5174'e995e9d1_u128},
-    {Sign::NEG, -143, 0xdfff3c00'e4a97e8c'4ed512b9'b93ea2bf_u128},
-    {Sign::NEG, -143, 0xdbff42f0'd8a13e15'934cea21'7ab794a2_u128},
-    {Sign::NEG, -143, 0xd7ff49c0'cd06fc83'3e4ebe94'8afd2c76_u128},
-    {Sign::NEG, -143, 0xd3ff5070'c1d8b9df'87b7c0f5'bcfee2e1_u128},
-    {Sign::NEG, -143, 0xcfff5700'b7147634'77666622'8cb6371b_u128},
-    {Sign::NEG, -143, 0xcbff5d70'acb8318b'e53a60f3'514db358_u128},
-    {Sign::NEG, -143, 0xc7ff63c0'a2c1ebef'79149c3b'6e57fa86_u128},
-    {Sign::NEG, -143, 0xc3ff69f0'992fa568'aad734c9'8416df2a_u128},
-    {Sign::NEG, -143, 0xbfff7000'8fff5e00'c2657367'9ed28334_u128},
-    {Sign::NEG, -143, 0xbbff75f0'872f15c0'd7a3c6db'6540809f_u128},
-    {Sign::NEG, -143, 0xb7ff7bc0'7ebcccb1'd277bde6'45fb1aad_u128},
-    {Sign::NEG, -143, 0xb3ff8170'76a682dc'6ac80145'a4087793_u128},
-    {Sign::NEG, -143, 0xafff8700'6eea3849'287c4db3'0271e265_u128},
-    {Sign::NEG, -143, 0xabff8c70'6785ed00'637d6de4'2eeb151e_u128},
-    {Sign::NEG, -143, 0xa7ff91c0'6077a10a'43b5348b'6b898a8c_u128},
-    {Sign::NEG, -143, 0xa3ff96f0'59bd546e'c10e7657'978bd7f6_u128},
-    {Sign::NEG, -143, 0x9fff9c00'53550735'a37503f4'57310e59_u128},
-    {Sign::NEG, -143, 0x9bffa0f0'4d3cb966'82d5a40a'3aa022ff_u128},
-    {Sign::NEG, -143, 0x97ffa5c0'47726b08'c71e0d3e'e3df5f4d_u128},
-    {Sign::NEG, -143, 0x93ffaa70'41f41c23'a83ce035'2bdbd79b_u128},
-    {Sign::NEG, -143, 0x8fffaf00'3cbfccbe'2e21a18d'4680e8e4_u128},
-    {Sign::NEG, -143, 0x8bffb370'37d37cdf'30bcb3e4'e5dfbd28_u128},
-    {Sign::NEG, -143, 0x87ffb7c0'332d2c8d'57ff51d7'5c66d64a_u128},
-    {Sign::NEG, -143, 0x83ffbbf0'2ecadbcf'1bdb87fd'be299f43_u128},
-    {Sign::NEG, -144, 0xffff8000'55551555'88885dde'02700703_u128},
-    {Sign::NEG, -144, 0xf7ff87e0'4d94724c'd259ca80'3a0c1870_u128},
-    {Sign::NEG, -144, 0xefff8f80'464fce8f'e5141308'51c7070a_u128},
-    {Sign::NEG, -144, 0xe7ff96e0'3f832a2a'30a16898'f3073a64_u128},
-    {Sign::NEG, -144, 0xdfff9e00'392a8526'c4ed6451'7b2949ce_u128},
-    {Sign::NEG, -144, 0xd7ffa4e0'3341df90'51e4fb4e'32cf6350_u128},
-    {Sign::NEG, -144, 0xcfffab80'2dc53971'277672a8'8350bcce_u128},
-    {Sign::NEG, -144, 0xc7ffb1e0'28b092d3'35915377'2a490f06_u128},
-    {Sign::NEG, -144, 0xbfffb800'23ffebc0'0c265ece'6b481a0e_u128},
-    {Sign::NEG, -144, 0xb7ffbde0'1faf4440'db2781c0'3fa132f6_u128},
-    {Sign::NEG, -144, 0xafffc380'1bba9c5e'7287c95c'845ada33_u128},
-    {Sign::NEG, -144, 0xa7ffc8e0'181df421'423b56b1'263e5a77_u128},
-    {Sign::NEG, -144, 0x9fffce00'14d54b91'5a3752ca'4c076fa3_u128},
-    {Sign::NEG, -144, 0x97ffd2e0'11dca2b6'6a71e2b2'7eb3f573_u128},
-    {Sign::NEG, -144, 0x8fffd780'0f2ff997'c2e21b72'cff39d8f_u128},
-    {Sign::NEG, -144, 0x87ffdbe0'0ccb503c'537ff612'feb7ac9e_u128},
-    {Sign::NEG, -145, 0xffffc000'15554d55'58888733'33c57c18_u128},
-    {Sign::NEG, -145, 0xefffc7c0'1193f9d1'fa514218'42311c42_u128},
-    {Sign::NEG, -145, 0xdfffcf00'0e4aa5fa'2c4ed6de'475b942c_u128},
-    {Sign::NEG, -145, 0xcfffd5c0'0b7151d8'ce77678c'bb6fcb88_u128},
-    {Sign::NEG, -145, 0xbfffdc00'08fffd78'00c26629'a679ed3b_u128},
-    {Sign::NEG, -145, 0xafffe1c0'06eea8e1'23287cb9'd3072728_u128},
-    {Sign::NEG, -145, 0x9fffe700'0535541c'd5a37540'fd057315_u128},
-    {Sign::NEG, -145, 0x8fffebc0'03cbff32'f82e21c1'fce36810_u128},
-    {Sign::NEG, -146, 0xffffe000'05555455'5588887d'dde02702_u128},
-    {Sign::NEG, -146, 0xdfffe780'0392aa14'9ac4ed72'adf5b295_u128},
-    {Sign::NEG, -146, 0xbfffee00'023fffaf'000c2664'8066b482_u128},
-    {Sign::NEG, -146, 0x9ffff380'014d552e'455a3754'b292c077_u128},
-    {Sign::NEG, -147, 0xfffff000'01555535'55588888'33333c58_u128},
-    {Sign::NEG, -147, 0xbffff700'008ffff5'e000c266'5736679f_u128},
-    {Sign::NEG, -148, 0xfffff800'00555551'55558888'85ddde02_u128},
-    {Sign::NEG, -149, 0xfffffc00'00155554'd5555888'88733334_u128},
-    {Sign::POS, 0, 0_u128},
-    {Sign::POS, -148, 0x80000200'000aaaaa'eaaaac44'444eeeef_u128},
-    {Sign::POS, -147, 0x80000400'002aaaac'aaaac444'459999ac_u128},
-    {Sign::POS, -147, 0xc0000900'0090000a'2000c266'7596679f_u128},
-    {Sign::POS, -146, 0x80000800'00aaaaba'aaac4444'6eeef381_u128},
-    {Sign::POS, -146, 0xa0000c80'014d557c'655a3755'f81815cc_u128},
-    {Sign::POS, -146, 0xc0001200'02400051'000c2668'4c66b482_u128},
-    {Sign::POS, -146, 0xe0001880'0392ab40'bac4ed7c'40fb07eb_u128},
-    {Sign::POS, -145, 0x80001000'02aaab2a'aac44449'999abe2c_u128},
-    {Sign::POS, -145, 0x90001440'03cc00cd'082e21d7'9cbb6812_u128},
-    {Sign::POS, -145, 0xa0001900'0535568d'd5a37569'adb01dc3_u128},
-    {Sign::POS, -145, 0xb0001e40'06eeac74'33287d01'e8c9d1d9_u128},
-    {Sign::POS, -145, 0xc0002400'09000288'00c266a3'2679ed48_u128},
-    {Sign::POS, -145, 0xd0002a40'0b7158d1'de776851'22b2764b_u128},
-    {Sign::POS, -145, 0xe0003100'0e4aaf5b'2c4ed810'a8063f03_u128},
-    {Sign::POS, -145, 0xf0003840'1194062e'0a5143e7'be891c8f_u128},
-    {Sign::POS, -144, 0x80002000'0aaaaeaa'ac4444ee'ef3813a1_u128},
-    {Sign::POS, -144, 0x88002420'0ccb5a6e'5b7ff7fe'1339025b_u128},
-    {Sign::POS, -144, 0x90002880'0f300668'42e21e26'caf39e33_u128},
-    {Sign::POS, -144, 0x98002d20'11dcb29e'f271e66f'a5554bc6_u128},
-    {Sign::POS, -144, 0xa0003200'14d55f19'5a3757e0'615cc676_u128},
-    {Sign::POS, -144, 0xa8003720'181e0bde'ca3b5d82'10ca5cab_u128},
-    {Sign::POS, -144, 0xb0003c80'1bbab8f6'f287d25f'3cb032bb_u128},
-    {Sign::POS, -144, 0xb8004220'1faf6669'e3278d84'0be28cdb_u128},
-    {Sign::POS, -144, 0xc0004800'24001440'0c266dfe'6b482076_u128},
-    {Sign::POS, -144, 0xc8004e20'28b0c282'3d9166de'380a6d3d_u128},
-    {Sign::POS, -144, 0xd0005480'2dc57139'a7768b35'6ba61e4b_u128},
-    {Sign::POS, -144, 0xd8005b20'3342206f'd9e51a18'49db73c1_u128},
-    {Sign::POS, -144, 0xe0006200'392ad02e'c4ed8a9d'907eb521_u128},
-    {Sign::POS, -144, 0xe8006920'3f838080'b8a197de'a928acd7_u128},
-    {Sign::POS, -144, 0xf0007080'46503170'65144cf7'dcc72d3b_u128},
-    {Sign::POS, -144, 0xf8007820'4d94e308'da5a1108'890d9f6a_u128},
-    {Sign::POS, -143, 0x80004000'2aaacaaa'c4445999'abe2ce2c_u128},
-    {Sign::POS, -143, 0x84004410'2ecb2431'1fdbbb4f'3bffc832_u128},
-    {Sign::POS, -143, 0x88004840'332d7e1d'97ff8f39'ec91b4ee_u128},
-    {Sign::POS, -143, 0x8c004c90'37d3d876'74bcfcf0'b3f0a95d_u128},
-    {Sign::POS, -143, 0x90005100'3cc03342'2e21f80c'a6813aff_u128},
-    {Sign::POS, -143, 0x94005590'41f48e87'6c3d4629'170ce87f_u128},
-    {Sign::POS, -143, 0x98005a40'4772ea4d'071e84e3'b80a8881_u128},
-    {Sign::POS, -143, 0x9c005f10'4d3d469a'06d62fdc'bdd6bec3_u128},
-    {Sign::POS, -143, 0xa0006400'5355a375'a375a6b7'01dc77c0_u128},
-    {Sign::POS, -143, 0xa4006910'59be00e7'450f3318'26ad6b05_u128},
-    {Sign::POS, -143, 0xa8006e40'60785ef6'83b60ea8'bd0aa459_u128},
-    {Sign::POS, -143, 0xac007390'6786bdab'277e6914'69dd13f5_u128},
-    {Sign::POS, -143, 0xb0007900'6eeb1d0d'287d6e0a'0d1e25eb_u128},
-    {Sign::POS, -143, 0xb4007e90'76a77d24'aec94b3b'e9b060f5_u128},
-    {Sign::POS, -143, 0xb8008440'7ebdddfa'1279365f'ce280cce_u128},
-    {Sign::POS, -143, 0xbc008a10'87303f95'dba5732f'3e83e04a_u128},
-    {Sign::POS, -143, 0xc0009000'9000a200'c2675967'9ed5b754_u128},
-    {Sign::POS, -143, 0xc4009610'99310543'aed95aca'5edb5109_u128},
-    {Sign::POS, -143, 0xc8009c40'a2c36967'b917091d'2687160f_u128},
-    {Sign::POS, -143, 0xcc00a290'acb9ce76'293d1c2a'0378e75d_u128},
-    {Sign::POS, -143, 0xd000a900'b7163478'776977bf'9766f5a7_u128},
-    {Sign::POS, -143, 0xd400af90'c1da9b78'4bbb31b1'4776a18b_u128},
-    {Sign::POS, -143, 0xd800b640'cd09037f'7e5297d7'6c8564ba_u128},
-    {Sign::POS, -143, 0xdc00bd10'd8a36c98'1751360f'8461c447_u128},
-    {Sign::POS, -143, 0xe000c400'e4abd6cc'4ed9dc3c'63f44c41_u128},
-    {Sign::POS, -143, 0xe400cb10'f1244226'8d10a446'6a5894d5_u128},
-    {Sign::POS, -143, 0xe800d240'fe0eaeb1'6a1af81b'b4e6510e_u128},
-    {Sign::POS, -143, 0xec00d991'0b6d1c77'ae1f97b0'542a677a_u128},
-    {Sign::POS, -143, 0xf000e101'19418b84'51469efe'81d014cc_u128},
-    {Sign::POS, -143, 0xf400e891'278dfbe2'7bb98c06'd77a18b4_u128},
-    {Sign::POS, -143, 0xf800f041'36546d9d'85a344d0'868bed17_u128},
-    {Sign::POS, -143, 0xfc00f811'4596e0c0'f7301d69'90e307cc_u128},
-    {Sign::POS, -142, 0x80008000'aaabaaac'4446eef3'8140138f_u128},
-    {Sign::POS, -142, 0x82008408'b2cbe5b8'10f5e432'96105497_u128},
-    {Sign::POS, -142, 0x84008820'bb2d2189'edbd4f83'ef63f730_u128},
-    {Sign::POS, -142, 0x86008c48'c3d05e27'feb654fd'541c638e_u128},
-    {Sign::POS, -142, 0x88009080'ccb69b98'7ffadeb8'882f7674_u128},
-    {Sign::POS, -142, 0x8a0094c8'd5e0d9e1'c5a59fd3'6bd44397_u128},
+    {Sign::NEG, -142, MType({0xe39d3faf42340ed7, 0x89ff6b38d5de2622})},
+    {Sign::NEG, -142, MType({0x7ff3326682c02485, 0x87ff6f80ccb40f16})},
+    {Sign::NEG, -142, MType({0x5caf4fbe343cf928, 0x85ff73b8c3cdf731})},
+    {Sign::NEG, -142, MType({0xcdb6e554348f7fe8, 0x83ff77e0bb2ade79})},
+    {Sign::NEG, -142, MType({0xef009c2457de25d, 0x81ff7bf8b2c9c4f6})},
+    {Sign::NEG, -143, MType({0x8883333c57b57c74, 0xffff000155535558})},
+    {Sign::NEG, -143, MType({0xf32668f39c70d183, 0xfbff07f145931f44})},
+    {Sign::NEG, -143, MType({0x459a73c6a6486fe3, 0xf7ff0fc13650e7bd})},
+    {Sign::NEG, -143, MType({0x37b18cca7dd3a29f, 0xf3ff1771278aaecd})},
+    {Sign::NEG, -143, MType({0x513f610d21bcfc78, 0xefff1f01193e7480})},
+    {Sign::NEG, -143, MType({0xea190b95c0690b7b, 0xebff26710b6a38e1})},
+    {Sign::NEG, -143, MType({0x2a150f64f0ad1743, 0xe7ff2dc0fe0bfbfd})},
+    {Sign::NEG, -143, MType({0x90b5174e995e9d1, 0xe3ff34f0f121bddd})},
+    {Sign::NEG, -143, MType({0x4ed512b9b93ea2bf, 0xdfff3c00e4a97e8c})},
+    {Sign::NEG, -143, MType({0x934cea217ab794a2, 0xdbff42f0d8a13e15})},
+    {Sign::NEG, -143, MType({0x3e4ebe948afd2c76, 0xd7ff49c0cd06fc83})},
+    {Sign::NEG, -143, MType({0x87b7c0f5bcfee2e1, 0xd3ff5070c1d8b9df})},
+    {Sign::NEG, -143, MType({0x776666228cb6371b, 0xcfff5700b7147634})},
+    {Sign::NEG, -143, MType({0xe53a60f3514db358, 0xcbff5d70acb8318b})},
+    {Sign::NEG, -143, MType({0x79149c3b6e57fa86, 0xc7ff63c0a2c1ebef})},
+    {Sign::NEG, -143, MType({0xaad734c98416df2a, 0xc3ff69f0992fa568})},
+    {Sign::NEG, -143, MType({0xc26573679ed28334, 0xbfff70008fff5e00})},
+    {Sign::NEG, -143, MType({0xd7a3c6db6540809f, 0xbbff75f0872f15c0})},
+    {Sign::NEG, -143, MType({0xd277bde645fb1aad, 0xb7ff7bc07ebcccb1})},
+    {Sign::NEG, -143, MType({0x6ac80145a4087793, 0xb3ff817076a682dc})},
+    {Sign::NEG, -143, MType({0x287c4db30271e265, 0xafff87006eea3849})},
+    {Sign::NEG, -143, MType({0x637d6de42eeb151e, 0xabff8c706785ed00})},
+    {Sign::NEG, -143, MType({0x43b5348b6b898a8c, 0xa7ff91c06077a10a})},
+    {Sign::NEG, -143, MType({0xc10e7657978bd7f6, 0xa3ff96f059bd546e})},
+    {Sign::NEG, -143, MType({0xa37503f457310e59, 0x9fff9c0053550735})},
+    {Sign::NEG, -143, MType({0x82d5a40a3aa022ff, 0x9bffa0f04d3cb966})},
+    {Sign::NEG, -143, MType({0xc71e0d3ee3df5f4d, 0x97ffa5c047726b08})},
+    {Sign::NEG, -143, MType({0xa83ce0352bdbd79b, 0x93ffaa7041f41c23})},
+    {Sign::NEG, -143, MType({0x2e21a18d4680e8e4, 0x8fffaf003cbfccbe})},
+    {Sign::NEG, -143, MType({0x30bcb3e4e5dfbd28, 0x8bffb37037d37cdf})},
+    {Sign::NEG, -143, MType({0x57ff51d75c66d64a, 0x87ffb7c0332d2c8d})},
+    {Sign::NEG, -143, MType({0x1bdb87fdbe299f43, 0x83ffbbf02ecadbcf})},
+    {Sign::NEG, -144, MType({0x88885dde02700703, 0xffff800055551555})},
+    {Sign::NEG, -144, MType({0xd259ca803a0c1870, 0xf7ff87e04d94724c})},
+    {Sign::NEG, -144, MType({0xe514130851c7070a, 0xefff8f80464fce8f})},
+    {Sign::NEG, -144, MType({0x30a16898f3073a64, 0xe7ff96e03f832a2a})},
+    {Sign::NEG, -144, MType({0xc4ed64517b2949ce, 0xdfff9e00392a8526})},
+    {Sign::NEG, -144, MType({0x51e4fb4e32cf6350, 0xd7ffa4e03341df90})},
+    {Sign::NEG, -144, MType({0x277672a88350bcce, 0xcfffab802dc53971})},
+    {Sign::NEG, -144, MType({0x359153772a490f06, 0xc7ffb1e028b092d3})},
+    {Sign::NEG, -144, MType({0xc265ece6b481a0e, 0xbfffb80023ffebc0})},
+    {Sign::NEG, -144, MType({0xdb2781c03fa132f6, 0xb7ffbde01faf4440})},
+    {Sign::NEG, -144, MType({0x7287c95c845ada33, 0xafffc3801bba9c5e})},
+    {Sign::NEG, -144, MType({0x423b56b1263e5a77, 0xa7ffc8e0181df421})},
+    {Sign::NEG, -144, MType({0x5a3752ca4c076fa3, 0x9fffce0014d54b91})},
+    {Sign::NEG, -144, MType({0x6a71e2b27eb3f573, 0x97ffd2e011dca2b6})},
+    {Sign::NEG, -144, MType({0xc2e21b72cff39d8f, 0x8fffd7800f2ff997})},
+    {Sign::NEG, -144, MType({0x537ff612feb7ac9e, 0x87ffdbe00ccb503c})},
+    {Sign::NEG, -145, MType({0x5888873333c57c18, 0xffffc00015554d55})},
+    {Sign::NEG, -145, MType({0xfa51421842311c42, 0xefffc7c01193f9d1})},
+    {Sign::NEG, -145, MType({0x2c4ed6de475b942c, 0xdfffcf000e4aa5fa})},
+    {Sign::NEG, -145, MType({0xce77678cbb6fcb88, 0xcfffd5c00b7151d8})},
+    {Sign::NEG, -145, MType({0xc26629a679ed3b, 0xbfffdc0008fffd78})},
+    {Sign::NEG, -145, MType({0x23287cb9d3072728, 0xafffe1c006eea8e1})},
+    {Sign::NEG, -145, MType({0xd5a37540fd057315, 0x9fffe7000535541c})},
+    {Sign::NEG, -145, MType({0xf82e21c1fce36810, 0x8fffebc003cbff32})},
+    {Sign::NEG, -146, MType({0x5588887ddde02702, 0xffffe00005555455})},
+    {Sign::NEG, -146, MType({0x9ac4ed72adf5b295, 0xdfffe7800392aa14})},
+    {Sign::NEG, -146, MType({0xc26648066b482, 0xbfffee00023fffaf})},
+    {Sign::NEG, -146, MType({0x455a3754b292c077, 0x9ffff380014d552e})},
+    {Sign::NEG, -147, MType({0x5558888833333c58, 0xfffff00001555535})},
+    {Sign::NEG, -147, MType({0xe000c2665736679f, 0xbffff700008ffff5})},
+    {Sign::NEG, -148, MType({0x5555888885ddde02, 0xfffff80000555551})},
+    {Sign::NEG, -149, MType({0xd555588888733334, 0xfffffc0000155554})},
+    {Sign::POS, 0, MType({0x0, 0x0})},
+    {Sign::POS, -148, MType({0xeaaaac44444eeeef, 0x80000200000aaaaa})},
+    {Sign::POS, -147, MType({0xaaaac444459999ac, 0x80000400002aaaac})},
+    {Sign::POS, -147, MType({0x2000c2667596679f, 0xc00009000090000a})},
+    {Sign::POS, -146, MType({0xaaac44446eeef381, 0x8000080000aaaaba})},
+    {Sign::POS, -146, MType({0x655a3755f81815cc, 0xa0000c80014d557c})},
+    {Sign::POS, -146, MType({0xc26684c66b482, 0xc000120002400051})},
+    {Sign::POS, -146, MType({0xbac4ed7c40fb07eb, 0xe00018800392ab40})},
+    {Sign::POS, -145, MType({0xaac44449999abe2c, 0x8000100002aaab2a})},
+    {Sign::POS, -145, MType({0x82e21d79cbb6812, 0x9000144003cc00cd})},
+    {Sign::POS, -145, MType({0xd5a37569adb01dc3, 0xa00019000535568d})},
+    {Sign::POS, -145, MType({0x33287d01e8c9d1d9, 0xb0001e4006eeac74})},
+    {Sign::POS, -145, MType({0xc266a32679ed48, 0xc000240009000288})},
+    {Sign::POS, -145, MType({0xde77685122b2764b, 0xd0002a400b7158d1})},
+    {Sign::POS, -145, MType({0x2c4ed810a8063f03, 0xe00031000e4aaf5b})},
+    {Sign::POS, -145, MType({0xa5143e7be891c8f, 0xf00038401194062e})},
+    {Sign::POS, -144, MType({0xac4444eeef3813a1, 0x800020000aaaaeaa})},
+    {Sign::POS, -144, MType({0x5b7ff7fe1339025b, 0x880024200ccb5a6e})},
+    {Sign::POS, -144, MType({0x42e21e26caf39e33, 0x900028800f300668})},
+    {Sign::POS, -144, MType({0xf271e66fa5554bc6, 0x98002d2011dcb29e})},
+    {Sign::POS, -144, MType({0x5a3757e0615cc676, 0xa000320014d55f19})},
+    {Sign::POS, -144, MType({0xca3b5d8210ca5cab, 0xa8003720181e0bde})},
+    {Sign::POS, -144, MType({0xf287d25f3cb032bb, 0xb0003c801bbab8f6})},
+    {Sign::POS, -144, MType({0xe3278d840be28cdb, 0xb80042201faf6669})},
+    {Sign::POS, -144, MType({0xc266dfe6b482076, 0xc000480024001440})},
+    {Sign::POS, -144, MType({0x3d9166de380a6d3d, 0xc8004e2028b0c282})},
+    {Sign::POS, -144, MType({0xa7768b356ba61e4b, 0xd00054802dc57139})},
+    {Sign::POS, -144, MType({0xd9e51a1849db73c1, 0xd8005b203342206f})},
+    {Sign::POS, -144, MType({0xc4ed8a9d907eb521, 0xe0006200392ad02e})},
+    {Sign::POS, -144, MType({0xb8a197dea928acd7, 0xe80069203f838080})},
+    {Sign::POS, -144, MType({0x65144cf7dcc72d3b, 0xf000708046503170})},
+    {Sign::POS, -144, MType({0xda5a1108890d9f6a, 0xf80078204d94e308})},
+    {Sign::POS, -143, MType({0xc4445999abe2ce2c, 0x800040002aaacaaa})},
+    {Sign::POS, -143, MType({0x1fdbbb4f3bffc832, 0x840044102ecb2431})},
+    {Sign::POS, -143, MType({0x97ff8f39ec91b4ee, 0x88004840332d7e1d})},
+    {Sign::POS, -143, MType({0x74bcfcf0b3f0a95d, 0x8c004c9037d3d876})},
+    {Sign::POS, -143, MType({0x2e21f80ca6813aff, 0x900051003cc03342})},
+    {Sign::POS, -143, MType({0x6c3d4629170ce87f, 0x9400559041f48e87})},
+    {Sign::POS, -143, MType({0x71e84e3b80a8881, 0x98005a404772ea4d})},
+    {Sign::POS, -143, MType({0x6d62fdcbdd6bec3, 0x9c005f104d3d469a})},
+    {Sign::POS, -143, MType({0xa375a6b701dc77c0, 0xa00064005355a375})},
+    {Sign::POS, -143, MType({0x450f331826ad6b05, 0xa400691059be00e7})},
+    {Sign::POS, -143, MType({0x83b60ea8bd0aa459, 0xa8006e4060785ef6})},
+    {Sign::POS, -143, MType({0x277e691469dd13f5, 0xac0073906786bdab})},
+    {Sign::POS, -143, MType({0x287d6e0a0d1e25eb, 0xb00079006eeb1d0d})},
+    {Sign::POS, -143, MType({0xaec94b3be9b060f5, 0xb4007e9076a77d24})},
+    {Sign::POS, -143, MType({0x1279365fce280cce, 0xb80084407ebdddfa})},
+    {Sign::POS, -143, MType({0xdba5732f3e83e04a, 0xbc008a1087303f95})},
+    {Sign::POS, -143, MType({0xc26759679ed5b754, 0xc00090009000a200})},
+    {Sign::POS, -143, MType({0xaed95aca5edb5109, 0xc400961099310543})},
+    {Sign::POS, -143, MType({0xb917091d2687160f, 0xc8009c40a2c36967})},
+    {Sign::POS, -143, MType({0x293d1c2a0378e75d, 0xcc00a290acb9ce76})},
+    {Sign::POS, -143, MType({0x776977bf9766f5a7, 0xd000a900b7163478})},
+    {Sign::POS, -143, MType({0x4bbb31b14776a18b, 0xd400af90c1da9b78})},
+    {Sign::POS, -143, MType({0x7e5297d76c8564ba, 0xd800b640cd09037f})},
+    {Sign::POS, -143, MType({0x1751360f8461c447, 0xdc00bd10d8a36c98})},
+    {Sign::POS, -143, MType({0x4ed9dc3c63f44c41, 0xe000c400e4abd6cc})},
+    {Sign::POS, -143, MType({0x8d10a4466a5894d5, 0xe400cb10f1244226})},
+    {Sign::POS, -143, MType({0x6a1af81bb4e6510e, 0xe800d240fe0eaeb1})},
+    {Sign::POS, -143, MType({0xae1f97b0542a677a, 0xec00d9910b6d1c77})},
+    {Sign::POS, -143, MType({0x51469efe81d014cc, 0xf000e10119418b84})},
+    {Sign::POS, -143, MType({0x7bb98c06d77a18b4, 0xf400e891278dfbe2})},
+    {Sign::POS, -143, MType({0x85a344d0868bed17, 0xf800f04136546d9d})},
+    {Sign::POS, -143, MType({0xf7301d6990e307cc, 0xfc00f8114596e0c0})},
+    {Sign::POS, -142, MType({0x4446eef38140138f, 0x80008000aaabaaac})},
+    {Sign::POS, -142, MType({0x10f5e43296105497, 0x82008408b2cbe5b8})},
+    {Sign::POS, -142, MType({0xedbd4f83ef63f730, 0x84008820bb2d2189})},
+    {Sign::POS, -142, MType({0xfeb654fd541c638e, 0x86008c48c3d05e27})},
+    {Sign::POS, -142, MType({0x7ffadeb8882f7674, 0x88009080ccb69b98})},
+    {Sign::POS, -142, MType({0xc5a59fd36bd44397, 0x8a0094c8d5e0d9e1})},
 };
 
 // Minimax polynomial generated by Sollya with:
@@ -814,10 +810,10 @@ const Float128 LOG_R3[139] = {
 // > dirtyinfnorm(log(1 + x)/x - 1 - x*P, [-0x1.01928p-22 , 0x1p-22]);
 // 0x1.ce1e...p-116
 const Float128 BIG_COEFFS[4]{
-    {Sign::POS, -130, 0xccccccd7'4818e397'7ed78465'd460315b_u128},
-    {Sign::NEG, -129, 0x80000000'000478b0'c6388a23'871ce156_u128},
-    {Sign::POS, -129, 0xaaaaaaaa'aaaaaaaa'aa807bd8'67763262_u128},
-    {Sign::NEG, -128, 0x80000000'00000000'00000000'00000000_u128},
+    {Sign::POS, -130, MType({0x7ed78465d460315b, 0xccccccd74818e397})},
+    {Sign::NEG, -129, MType({0xc6388a23871ce156, 0x80000000000478b0})},
+    {Sign::POS, -129, MType({0xaa807bd867763262, 0xaaaaaaaaaaaaaaaa})},
+    {Sign::NEG, -128, MType({0x0, 0x8000000000000000})},
 };
 
 LIBC_INLINE double log1p_accurate(int e_x, int index,

diff  --git a/libc/src/math/generic/log2.cpp b/libc/src/math/generic/log2.cpp
index 9657b344ffbd7c..ab392166475c70 100644
--- a/libc/src/math/generic/log2.cpp
+++ b/libc/src/math/generic/log2.cpp
@@ -14,7 +14,6 @@
 #include "src/__support/FPUtil/dyadic_float.h"
 #include "src/__support/FPUtil/multiply_add.h"
 #include "src/__support/common.h"
-#include "src/__support/integer_literals.h"
 #include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
 
 #include "common_constants.h"
@@ -24,8 +23,8 @@ namespace LIBC_NAMESPACE {
 
 // 128-bit precision dyadic floating point numbers.
 using Float128 = typename fputil::DyadicFloat<128>;
+using MType = typename Float128::MantissaType;
 using Sign = fputil::Sign;
-using LIBC_NAMESPACE::operator""_u128;
 
 namespace {
 
@@ -168,144 +167,142 @@ const fputil::DoubleDouble LOG_R1[128] = {
 
 const LogRR LOG2_TABLE = {
     // -log2(r) with 128-bit precision generated by SageMath with:
-    // def format_hex(value):
-    //     l = hex(value)[2:]
-    //     n = 8
-    //     x = [l[i:i + n] for i in range(0, len(l), n)]
-    //     return "0x" + "'".join(x) + "_uint128"
+    //
     // for i in range(1, 127):
     //   r = 2^-8 * ceil( 2^8 * (1 - 2^(-8)) / (1 + i*2^(-7)) );
     //   s, m, e = RealField(128)(r).log2().sign_mantissa_exponent();
-    //   print("{Sign::POS,", e, ", format_hex(m), "},");
+    //   print("{Sign::POS,", e, ", MType({", hex(m % 2^64), ",", hex((m >> 64)
+    //   % 2^64),
+    //         "})},");
     /* .step_1 = */ {
-        {Sign::POS, 0, 0_u128},
-        {Sign::POS, -134, 0xb963dd10'7b993ada'e8c25163'0adb856a_u128},
-        {Sign::POS, -133, 0xba1f7430'f9aab1b2'a41b08fb'e05f82d0_u128},
-        {Sign::POS, -132, 0x8c25c726'2b57c149'1f06c085'bc1b865d_u128},
-        {Sign::POS, -132, 0xbb9ca64e'cac6aaef'2e1c07f0'438ebac0_u128},
-        {Sign::POS, -132, 0xeb75e8f8'ff5ff022'aacc0e21'd6541224_u128},
-        {Sign::POS, -131, 0x8dd99530'02a4e866'31514aef'39ce6303_u128},
-        {Sign::POS, -131, 0xa62b07f3'457c4070'50799bea'aab2940c_u128},
-        {Sign::POS, -131, 0xbeb024b6'7dda6339'da288fc6'15a727dc_u128},
-        {Sign::POS, -131, 0xcb0657cd'5dbe4f6f'22dbbace'd44516ce_u128},
-        {Sign::POS, -131, 0xe3da945b'878e27d0'd939dcee'cdd9ce05_u128},
-        {Sign::POS, -131, 0xfce4aee0'e88b2749'9596a8e2'e84c8f45_u128},
-        {Sign::POS, -130, 0x84bf1c67'3032495d'243efd93'25954cfe_u128},
-        {Sign::POS, -130, 0x916d6e15'59a4b696'91d79938'e7226384_u128},
-        {Sign::POS, -130, 0x9e37db28'66f2850b'22563c9e'd9462091_u128},
-        {Sign::POS, -130, 0xa4a7c31d'c6f9a5d5'3a53ca11'81015ada_u128},
-        {Sign::POS, -130, 0xb19d45fa'1be70855'3eb8023e'ed65d601_u128},
-        {Sign::POS, -130, 0xb823018e'3cfc25f0'ce5cabbd'2d753d9b_u128},
-        {Sign::POS, -130, 0xc544c055'fde99333'54dbf16f'b0695ee3_u128},
-        {Sign::POS, -130, 0xcbe0e589'e3f6042d'5196a85a'067c6739_u128},
-        {Sign::POS, -130, 0xd930124b'ea9a2c66'f349845e'48955078_u128},
-        {Sign::POS, -130, 0xdfe33d3f'ffa66037'815ef705'cfaef035_u128},
-        {Sign::POS, -130, 0xed61169f'220e97f2'2ba704dc'aa76f41d_u128},
-        {Sign::POS, -130, 0xf42be9e9'b09b3def'2062f36b'c14d0d93_u128},
-        {Sign::POS, -129, 0x80ecdde7'd30ea2ed'13288019'4144b02b_u128},
-        {Sign::POS, -129, 0x845e706c'afd1bf61'54880de6'3812fd49_u128},
-        {Sign::POS, -129, 0x8b4e029b'1f8ac391'a87c02ea'f36e2c29_u128},
-        {Sign::POS, -129, 0x8ecc164e'a93841ae'9804237e'c8d9431d_u128},
-        {Sign::POS, -129, 0x924e6958'9e6b6268'20f81ca9'5d9e7968_u128},
-        {Sign::POS, -129, 0x995ff71b'8773432d'124bc6f1'acf95dc4_u128},
-        {Sign::POS, -129, 0x9cef470a'acfb7bf9'5a5e8e21'bff3336b_u128},
-        {Sign::POS, -129, 0xa08300be'1f651473'4e53fa33'29f65894_u128},
-        {Sign::POS, -129, 0xa7b7dd96'762cc3c7'2742d729'6a39eed6_u128},
-        {Sign::POS, -129, 0xab591735'abc724e4'f359c554'4bc5e134_u128},
-        {Sign::POS, -129, 0xaefee78f'75707221'6b6c874d'd96e1d75_u128},
-        {Sign::POS, -129, 0xb2a95a4c'c313bb59'21006678'c0a5c390_u128},
-        {Sign::POS, -129, 0xb6587b43'2e47501b'6d40900b'25024b32_u128},
-        {Sign::POS, -129, 0xbdc4f816'7955698f'89e2eb55'3b279b3d_u128},
-        {Sign::POS, -129, 0xc1826c86'08fe9951'd58525aa'd392ca50_u128},
-        {Sign::POS, -129, 0xc544c055'fde99333'54dbf16f'b0695ee3_u128},
-        {Sign::POS, -129, 0xc90c0049'26e9dbfb'88d5eae3'326327bb_u128},
-        {Sign::POS, -129, 0xccd83954'b6359379'46dfa05b'ddfded8c_u128},
-        {Sign::POS, -129, 0xd47fcb8c'0852f0c0'bfe9dbeb'f2e8a45e_u128},
-        {Sign::POS, -129, 0xd85b3fa7'a3407fa8'7b11f1c5'160c515c_u128},
-        {Sign::POS, -129, 0xdc3be2bd'8d837f7f'1339e567'7ec44dd0_u128},
-        {Sign::POS, -129, 0xe021c2cf'17ed9bdb'ea2b8c7b'b0ee9c8b_u128},
-        {Sign::POS, -129, 0xe40cee16'a2ff21c4'aec56233'2791fe38_u128},
-        {Sign::POS, -129, 0xe7fd7308'd6895b14'71682eba'cca79cfa_u128},
-        {Sign::POS, -129, 0xebf36055'e1abc61e'a5ad5ce9'fb5a7bb6_u128},
-        {Sign::POS, -129, 0xefeec4ea'c371584e'32251905'31a852c5_u128},
-        {Sign::POS, -129, 0xf3efaff2'9c559a77'da8ad649'da21eab0_u128},
-        {Sign::POS, -129, 0xf7f630d8'08fc2ada'4c3e2ea7'c15c3d1e_u128},
-        {Sign::POS, -129, 0xfc025746'86680cc6'bcb9bfa9'852e0d35_u128},
-        {Sign::POS, -128, 0x800a1995'f0019518'ce032f41'd1e774e8_u128},
-        {Sign::POS, -128, 0x8215ea5c'd3e4c4c7'9b39ffee'bc29372a_u128},
-        {Sign::POS, -128, 0x8424a633'5c777e0b'87f95f1b'efb6f806_u128},
-        {Sign::POS, -128, 0x86365578'62acb7ce'b987b42e'3bb332a1_u128},
-        {Sign::POS, -128, 0x884b00ae'f726cec5'139a7ba8'3bf2d136_u128},
-        {Sign::POS, -128, 0x8a62b07f'3457c407'050799be'aaab2941_u128},
-        {Sign::POS, -128, 0x8c7d6db7'169e0cda'8bd74461'7e9b7d52_u128},
-        {Sign::POS, -128, 0x8e9b414b'5a92a606'046ad444'333ceb10_u128},
-        {Sign::POS, -128, 0x90bc3458'61bf3d52'ef4c737f'ba4f5d66_u128},
-        {Sign::POS, -128, 0x92e05023'1df57d6f'ae441c09'd761c549_u128},
-        {Sign::POS, -128, 0x95079e1a'0382dc79'6e36aa9c'e90a3879_u128},
-        {Sign::POS, -128, 0x973227d6'027ebd8a'0efca1a1'84e93809_u128},
-        {Sign::POS, -128, 0x973227d6'027ebd8a'0efca1a1'84e93809_u128},
-        {Sign::POS, -128, 0x995ff71b'8773432d'124bc6f1'acf95dc4_u128},
-        {Sign::POS, -128, 0x9b9115db'83a3dd2d'352bea51'e58ea9e8_u128},
-        {Sign::POS, -128, 0x9dc58e34'7d37696d'266d6cdc'959153bc_u128},
-        {Sign::POS, -128, 0x9ffd6a73'a78eaf35'4527d82c'8214ddca_u128},
-        {Sign::POS, -128, 0xa238b516'0413106e'404cabb7'6d600e3c_u128},
-        {Sign::POS, -128, 0xa238b516'0413106e'404cabb7'6d600e3c_u128},
-        {Sign::POS, -128, 0xa47778c9'8bcc86a1'cab7d2ec'23f0eef3_u128},
-        {Sign::POS, -128, 0xa6b9c06e'6211646b'761c48dd'859de2d3_u128},
-        {Sign::POS, -128, 0xa8ff9718'10a5e181'7fd3b7d7'e5d148bb_u128},
-        {Sign::POS, -128, 0xab49080e'cda53208'c27c6780'd92b4d11_u128},
-        {Sign::POS, -128, 0xad961ed0'cb91d406'db502402'c94092cd_u128},
-        {Sign::POS, -128, 0xad961ed0'cb91d406'db502402'c94092cd_u128},
-        {Sign::POS, -128, 0xafe6e713'93eeda29'3432ef6b'732b6843_u128},
-        {Sign::POS, -128, 0xb23b6cc5'6cc84c99'bb324da7'e046e792_u128},
-        {Sign::POS, -128, 0xb493bc0e'c9954243'b21709ce'430c8e24_u128},
-        {Sign::POS, -128, 0xb493bc0e'c9954243'b21709ce'430c8e24_u128},
-        {Sign::POS, -128, 0xb6efe153'c7e319f6'e91ad16e'cff10111_u128},
-        {Sign::POS, -128, 0xb94fe935'b83e3eb5'ce31e481'cd797e79_u128},
-        {Sign::POS, -128, 0xbbb3e094'b3d228d3'da3e961a'96c580fa_u128},
-        {Sign::POS, -128, 0xbbb3e094'b3d228d3'da3e961a'96c580fa_u128},
-        {Sign::POS, -128, 0xbe1bd491'3f3fda43'f396598a'ae91499a_u128},
-        {Sign::POS, -128, 0xc087d28d'fb2febb8'ae4cceb0'f621941b_u128},
-        {Sign::POS, -128, 0xc087d28d'fb2febb8'ae4cceb0'f621941b_u128},
-        {Sign::POS, -128, 0xc2f7e831'632b6670'6c1855c4'2078f81b_u128},
-        {Sign::POS, -128, 0xc56c2367'9b4d206e'169535fb'8bf577c8_u128},
-        {Sign::POS, -128, 0xc56c2367'9b4d206e'169535fb'8bf577c8_u128},
-        {Sign::POS, -128, 0xc7e49264'4d64237e'3b24cecc'60217942_u128},
-        {Sign::POS, -128, 0xca6143a4'9626d820'3dc2687f'cf939696_u128},
-        {Sign::POS, -128, 0xca6143a4'9626d820'3dc2687f'cf939696_u128},
-        {Sign::POS, -128, 0xcce245f1'031e41fa'0a62e6ad'd1a901a0_u128},
-        {Sign::POS, -128, 0xcf67a85f'a1f89a04'5bb6e231'38ad51e1_u128},
-        {Sign::POS, -128, 0xcf67a85f'a1f89a04'5bb6e231'38ad51e1_u128},
-        {Sign::POS, -128, 0xd1f17a56'21fb01ac'7fc60a51'03092bae_u128},
-        {Sign::POS, -128, 0xd47fcb8c'0852f0c0'bfe9dbeb'f2e8a45e_u128},
-        {Sign::POS, -128, 0xd47fcb8c'0852f0c0'bfe9dbeb'f2e8a45e_u128},
-        {Sign::POS, -128, 0xd712ac0c'f811659d'8e2d7d37'8127d823_u128},
-        {Sign::POS, -128, 0xd9aa2c3b'0ea3cbc1'5c1a7f14'b168b365_u128},
-        {Sign::POS, -128, 0xd9aa2c3b'0ea3cbc1'5c1a7f14'b168b365_u128},
-        {Sign::POS, -128, 0xdc465cd1'55a90942'b7579f0f'8d3d514b_u128},
-        {Sign::POS, -128, 0xdc465cd1'55a90942'b7579f0f'8d3d514b_u128},
-        {Sign::POS, -128, 0xdee74ee6'4b0c38d3'b087205e'b55aea85_u128},
-        {Sign::POS, -128, 0xe18d13ee'805a4de3'424a2623'd60dfb16_u128},
-        {Sign::POS, -128, 0xe18d13ee'805a4de3'424a2623'd60dfb16_u128},
-        {Sign::POS, -128, 0xe437bdbf'5254459c'4d3a591a'e6854787_u128},
-        {Sign::POS, -128, 0xe437bdbf'5254459c'4d3a591a'e6854787_u128},
-        {Sign::POS, -128, 0xe6e75e91'b9cca551'8dcdb6b2'4c5c5cdf_u128},
-        {Sign::POS, -128, 0xe99c0905'36ece983'33ac7d9e'bba8a53c_u128},
-        {Sign::POS, -128, 0xe99c0905'36ece983'33ac7d9e'bba8a53c_u128},
-        {Sign::POS, -128, 0xec55d022'd80e3d27'fb2eede4'b59d8959_u128},
-        {Sign::POS, -128, 0xec55d022'd80e3d27'fb2eede4'b59d8959_u128},
-        {Sign::POS, -128, 0xef14c760'5d60654c'308b4546'66de8f99_u128},
-        {Sign::POS, -128, 0xef14c760'5d60654c'308b4546'66de8f99_u128},
-        {Sign::POS, -128, 0xf1d902a3'7aaa5085'8383cb0c'e23bebd4_u128},
-        {Sign::POS, -128, 0xf1d902a3'7aaa5085'8383cb0c'e23bebd4_u128},
-        {Sign::POS, -128, 0xf4a29645'38813c67'64fc87b4'a41f7b70_u128},
-        {Sign::POS, -128, 0xf4a29645'38813c67'64fc87b4'a41f7b70_u128},
-        {Sign::POS, -128, 0xf7719715'7665f689'3f5d7d82'b65c5686_u128},
-        {Sign::POS, -128, 0xf7719715'7665f689'3f5d7d82'b65c5686_u128},
-        {Sign::POS, -128, 0xfa461a5e'8f4b759d'6476077b'9fbd41ae_u128},
-        {Sign::POS, -128, 0xfa461a5e'8f4b759d'6476077b'9fbd41ae_u128},
-        {Sign::POS, -128, 0xfd2035e9'221ef5d0'0e3909ff'd0d61778_u128},
-        {Sign::POS, 0, 0_u128},
+        {Sign::POS, 0, MType(0)},
+        {Sign::POS, -134, MType({0xe8c251630adb856a, 0xb963dd107b993ada})},
+        {Sign::POS, -133, MType({0xa41b08fbe05f82d0, 0xba1f7430f9aab1b2})},
+        {Sign::POS, -132, MType({0x1f06c085bc1b865d, 0x8c25c7262b57c149})},
+        {Sign::POS, -132, MType({0x2e1c07f0438ebac0, 0xbb9ca64ecac6aaef})},
+        {Sign::POS, -132, MType({0xaacc0e21d6541224, 0xeb75e8f8ff5ff022})},
+        {Sign::POS, -131, MType({0x31514aef39ce6303, 0x8dd9953002a4e866})},
+        {Sign::POS, -131, MType({0x50799beaaab2940c, 0xa62b07f3457c4070})},
+        {Sign::POS, -131, MType({0xda288fc615a727dc, 0xbeb024b67dda6339})},
+        {Sign::POS, -131, MType({0x22dbbaced44516ce, 0xcb0657cd5dbe4f6f})},
+        {Sign::POS, -131, MType({0xd939dceecdd9ce05, 0xe3da945b878e27d0})},
+        {Sign::POS, -131, MType({0x9596a8e2e84c8f45, 0xfce4aee0e88b2749})},
+        {Sign::POS, -130, MType({0x243efd9325954cfe, 0x84bf1c673032495d})},
+        {Sign::POS, -130, MType({0x91d79938e7226384, 0x916d6e1559a4b696})},
+        {Sign::POS, -130, MType({0x22563c9ed9462091, 0x9e37db2866f2850b})},
+        {Sign::POS, -130, MType({0x3a53ca1181015ada, 0xa4a7c31dc6f9a5d5})},
+        {Sign::POS, -130, MType({0x3eb8023eed65d601, 0xb19d45fa1be70855})},
+        {Sign::POS, -130, MType({0xce5cabbd2d753d9b, 0xb823018e3cfc25f0})},
+        {Sign::POS, -130, MType({0x54dbf16fb0695ee3, 0xc544c055fde99333})},
+        {Sign::POS, -130, MType({0x5196a85a067c6739, 0xcbe0e589e3f6042d})},
+        {Sign::POS, -130, MType({0xf349845e48955078, 0xd930124bea9a2c66})},
+        {Sign::POS, -130, MType({0x815ef705cfaef035, 0xdfe33d3fffa66037})},
+        {Sign::POS, -130, MType({0x2ba704dcaa76f41d, 0xed61169f220e97f2})},
+        {Sign::POS, -130, MType({0x2062f36bc14d0d93, 0xf42be9e9b09b3def})},
+        {Sign::POS, -129, MType({0x132880194144b02b, 0x80ecdde7d30ea2ed})},
+        {Sign::POS, -129, MType({0x54880de63812fd49, 0x845e706cafd1bf61})},
+        {Sign::POS, -129, MType({0xa87c02eaf36e2c29, 0x8b4e029b1f8ac391})},
+        {Sign::POS, -129, MType({0x9804237ec8d9431d, 0x8ecc164ea93841ae})},
+        {Sign::POS, -129, MType({0x20f81ca95d9e7968, 0x924e69589e6b6268})},
+        {Sign::POS, -129, MType({0x124bc6f1acf95dc4, 0x995ff71b8773432d})},
+        {Sign::POS, -129, MType({0x5a5e8e21bff3336b, 0x9cef470aacfb7bf9})},
+        {Sign::POS, -129, MType({0x4e53fa3329f65894, 0xa08300be1f651473})},
+        {Sign::POS, -129, MType({0x2742d7296a39eed6, 0xa7b7dd96762cc3c7})},
+        {Sign::POS, -129, MType({0xf359c5544bc5e134, 0xab591735abc724e4})},
+        {Sign::POS, -129, MType({0x6b6c874dd96e1d75, 0xaefee78f75707221})},
+        {Sign::POS, -129, MType({0x21006678c0a5c390, 0xb2a95a4cc313bb59})},
+        {Sign::POS, -129, MType({0x6d40900b25024b32, 0xb6587b432e47501b})},
+        {Sign::POS, -129, MType({0x89e2eb553b279b3d, 0xbdc4f8167955698f})},
+        {Sign::POS, -129, MType({0xd58525aad392ca50, 0xc1826c8608fe9951})},
+        {Sign::POS, -129, MType({0x54dbf16fb0695ee3, 0xc544c055fde99333})},
+        {Sign::POS, -129, MType({0x88d5eae3326327bb, 0xc90c004926e9dbfb})},
+        {Sign::POS, -129, MType({0x46dfa05bddfded8c, 0xccd83954b6359379})},
+        {Sign::POS, -129, MType({0xbfe9dbebf2e8a45e, 0xd47fcb8c0852f0c0})},
+        {Sign::POS, -129, MType({0x7b11f1c5160c515c, 0xd85b3fa7a3407fa8})},
+        {Sign::POS, -129, MType({0x1339e5677ec44dd0, 0xdc3be2bd8d837f7f})},
+        {Sign::POS, -129, MType({0xea2b8c7bb0ee9c8b, 0xe021c2cf17ed9bdb})},
+        {Sign::POS, -129, MType({0xaec562332791fe38, 0xe40cee16a2ff21c4})},
+        {Sign::POS, -129, MType({0x71682ebacca79cfa, 0xe7fd7308d6895b14})},
+        {Sign::POS, -129, MType({0xa5ad5ce9fb5a7bb6, 0xebf36055e1abc61e})},
+        {Sign::POS, -129, MType({0x3225190531a852c5, 0xefeec4eac371584e})},
+        {Sign::POS, -129, MType({0xda8ad649da21eab0, 0xf3efaff29c559a77})},
+        {Sign::POS, -129, MType({0x4c3e2ea7c15c3d1e, 0xf7f630d808fc2ada})},
+        {Sign::POS, -129, MType({0xbcb9bfa9852e0d35, 0xfc02574686680cc6})},
+        {Sign::POS, -128, MType({0xce032f41d1e774e8, 0x800a1995f0019518})},
+        {Sign::POS, -128, MType({0x9b39ffeebc29372a, 0x8215ea5cd3e4c4c7})},
+        {Sign::POS, -128, MType({0x87f95f1befb6f806, 0x8424a6335c777e0b})},
+        {Sign::POS, -128, MType({0xb987b42e3bb332a1, 0x8636557862acb7ce})},
+        {Sign::POS, -128, MType({0x139a7ba83bf2d136, 0x884b00aef726cec5})},
+        {Sign::POS, -128, MType({0x50799beaaab2941, 0x8a62b07f3457c407})},
+        {Sign::POS, -128, MType({0x8bd744617e9b7d52, 0x8c7d6db7169e0cda})},
+        {Sign::POS, -128, MType({0x46ad444333ceb10, 0x8e9b414b5a92a606})},
+        {Sign::POS, -128, MType({0xef4c737fba4f5d66, 0x90bc345861bf3d52})},
+        {Sign::POS, -128, MType({0xae441c09d761c549, 0x92e050231df57d6f})},
+        {Sign::POS, -128, MType({0x6e36aa9ce90a3879, 0x95079e1a0382dc79})},
+        {Sign::POS, -128, MType({0xefca1a184e93809, 0x973227d6027ebd8a})},
+        {Sign::POS, -128, MType({0xefca1a184e93809, 0x973227d6027ebd8a})},
+        {Sign::POS, -128, MType({0x124bc6f1acf95dc4, 0x995ff71b8773432d})},
+        {Sign::POS, -128, MType({0x352bea51e58ea9e8, 0x9b9115db83a3dd2d})},
+        {Sign::POS, -128, MType({0x266d6cdc959153bc, 0x9dc58e347d37696d})},
+        {Sign::POS, -128, MType({0x4527d82c8214ddca, 0x9ffd6a73a78eaf35})},
+        {Sign::POS, -128, MType({0x404cabb76d600e3c, 0xa238b5160413106e})},
+        {Sign::POS, -128, MType({0x404cabb76d600e3c, 0xa238b5160413106e})},
+        {Sign::POS, -128, MType({0xcab7d2ec23f0eef3, 0xa47778c98bcc86a1})},
+        {Sign::POS, -128, MType({0x761c48dd859de2d3, 0xa6b9c06e6211646b})},
+        {Sign::POS, -128, MType({0x7fd3b7d7e5d148bb, 0xa8ff971810a5e181})},
+        {Sign::POS, -128, MType({0xc27c6780d92b4d11, 0xab49080ecda53208})},
+        {Sign::POS, -128, MType({0xdb502402c94092cd, 0xad961ed0cb91d406})},
+        {Sign::POS, -128, MType({0xdb502402c94092cd, 0xad961ed0cb91d406})},
+        {Sign::POS, -128, MType({0x3432ef6b732b6843, 0xafe6e71393eeda29})},
+        {Sign::POS, -128, MType({0xbb324da7e046e792, 0xb23b6cc56cc84c99})},
+        {Sign::POS, -128, MType({0xb21709ce430c8e24, 0xb493bc0ec9954243})},
+        {Sign::POS, -128, MType({0xb21709ce430c8e24, 0xb493bc0ec9954243})},
+        {Sign::POS, -128, MType({0xe91ad16ecff10111, 0xb6efe153c7e319f6})},
+        {Sign::POS, -128, MType({0xce31e481cd797e79, 0xb94fe935b83e3eb5})},
+        {Sign::POS, -128, MType({0xda3e961a96c580fa, 0xbbb3e094b3d228d3})},
+        {Sign::POS, -128, MType({0xda3e961a96c580fa, 0xbbb3e094b3d228d3})},
+        {Sign::POS, -128, MType({0xf396598aae91499a, 0xbe1bd4913f3fda43})},
+        {Sign::POS, -128, MType({0xae4cceb0f621941b, 0xc087d28dfb2febb8})},
+        {Sign::POS, -128, MType({0xae4cceb0f621941b, 0xc087d28dfb2febb8})},
+        {Sign::POS, -128, MType({0x6c1855c42078f81b, 0xc2f7e831632b6670})},
+        {Sign::POS, -128, MType({0x169535fb8bf577c8, 0xc56c23679b4d206e})},
+        {Sign::POS, -128, MType({0x169535fb8bf577c8, 0xc56c23679b4d206e})},
+        {Sign::POS, -128, MType({0x3b24cecc60217942, 0xc7e492644d64237e})},
+        {Sign::POS, -128, MType({0x3dc2687fcf939696, 0xca6143a49626d820})},
+        {Sign::POS, -128, MType({0x3dc2687fcf939696, 0xca6143a49626d820})},
+        {Sign::POS, -128, MType({0xa62e6add1a901a0, 0xcce245f1031e41fa})},
+        {Sign::POS, -128, MType({0x5bb6e23138ad51e1, 0xcf67a85fa1f89a04})},
+        {Sign::POS, -128, MType({0x5bb6e23138ad51e1, 0xcf67a85fa1f89a04})},
+        {Sign::POS, -128, MType({0x7fc60a5103092bae, 0xd1f17a5621fb01ac})},
+        {Sign::POS, -128, MType({0xbfe9dbebf2e8a45e, 0xd47fcb8c0852f0c0})},
+        {Sign::POS, -128, MType({0xbfe9dbebf2e8a45e, 0xd47fcb8c0852f0c0})},
+        {Sign::POS, -128, MType({0x8e2d7d378127d823, 0xd712ac0cf811659d})},
+        {Sign::POS, -128, MType({0x5c1a7f14b168b365, 0xd9aa2c3b0ea3cbc1})},
+        {Sign::POS, -128, MType({0x5c1a7f14b168b365, 0xd9aa2c3b0ea3cbc1})},
+        {Sign::POS, -128, MType({0xb7579f0f8d3d514b, 0xdc465cd155a90942})},
+        {Sign::POS, -128, MType({0xb7579f0f8d3d514b, 0xdc465cd155a90942})},
+        {Sign::POS, -128, MType({0xb087205eb55aea85, 0xdee74ee64b0c38d3})},
+        {Sign::POS, -128, MType({0x424a2623d60dfb16, 0xe18d13ee805a4de3})},
+        {Sign::POS, -128, MType({0x424a2623d60dfb16, 0xe18d13ee805a4de3})},
+        {Sign::POS, -128, MType({0x4d3a591ae6854787, 0xe437bdbf5254459c})},
+        {Sign::POS, -128, MType({0x4d3a591ae6854787, 0xe437bdbf5254459c})},
+        {Sign::POS, -128, MType({0x8dcdb6b24c5c5cdf, 0xe6e75e91b9cca551})},
+        {Sign::POS, -128, MType({0x33ac7d9ebba8a53c, 0xe99c090536ece983})},
+        {Sign::POS, -128, MType({0x33ac7d9ebba8a53c, 0xe99c090536ece983})},
+        {Sign::POS, -128, MType({0xfb2eede4b59d8959, 0xec55d022d80e3d27})},
+        {Sign::POS, -128, MType({0xfb2eede4b59d8959, 0xec55d022d80e3d27})},
+        {Sign::POS, -128, MType({0x308b454666de8f99, 0xef14c7605d60654c})},
+        {Sign::POS, -128, MType({0x308b454666de8f99, 0xef14c7605d60654c})},
+        {Sign::POS, -128, MType({0x8383cb0ce23bebd4, 0xf1d902a37aaa5085})},
+        {Sign::POS, -128, MType({0x8383cb0ce23bebd4, 0xf1d902a37aaa5085})},
+        {Sign::POS, -128, MType({0x64fc87b4a41f7b70, 0xf4a2964538813c67})},
+        {Sign::POS, -128, MType({0x64fc87b4a41f7b70, 0xf4a2964538813c67})},
+        {Sign::POS, -128, MType({0x3f5d7d82b65c5686, 0xf77197157665f689})},
+        {Sign::POS, -128, MType({0x3f5d7d82b65c5686, 0xf77197157665f689})},
+        {Sign::POS, -128, MType({0x6476077b9fbd41ae, 0xfa461a5e8f4b759d})},
+        {Sign::POS, -128, MType({0x6476077b9fbd41ae, 0xfa461a5e8f4b759d})},
+        {Sign::POS, -128, MType({0xe3909ffd0d61778, 0xfd2035e9221ef5d0})},
+        {Sign::POS, 0, MType(0)},
     },
     // -log2(r) for the second step, generated by SageMath with:
     //
@@ -313,202 +310,202 @@ const LogRR LOG2_TABLE = {
     //   r = 2^-16 * round( 2^16 / (1 + i*2^(-14)) );
     //   s, m, e = RealField(128)(r).log2().sign_mantissa_exponent();
     //   print("{Sign::NEG," if s == 1 else "{Sign::POS,", e, ",
-    //         format_hex(m), "},");
+    //         MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})},");
     /* .step_2 = */
     {
-        {Sign::NEG, -135, 0xb9061559'18954401'b5cfed58'337e848a_u128},
-        {Sign::NEG, -135, 0xb6264958'a3c7fa2b'ffaf2ac1'b1d20910_u128},
-        {Sign::NEG, -135, 0xb34671e4'39aa448e'52521a39'50ea2ed8_u128},
-        {Sign::NEG, -135, 0xb0668efb'7ef48ab7'f87e1abd'ee10fd95_u128},
-        {Sign::NEG, -135, 0xad86a09e'185af0e8'fbd43bbc'c24c5e43_u128},
-        {Sign::NEG, -135, 0xaaa6a6cb'aa8d57ce'2f4f5d48'f9796742_u128},
-        {Sign::NEG, -135, 0xa7c6a183'da375c3d'3477fd67'c1cab6b3_u128},
-        {Sign::NEG, -135, 0xa4e690c6'4c0056f0'7b4d33eb'381fe558_u128},
-        {Sign::NEG, -135, 0xa2067492'a48b5c43'3ce25e48'cb498dea_u128},
-        {Sign::NEG, -135, 0x9f264ce8'88773bed'70b0fcc9'e4330983_u128},
-        {Sign::NEG, -135, 0x9c4619c7'9c5e80bf'bc9e4267'd3189b22_u128},
-        {Sign::NEG, -135, 0x9965db2f'84d7705f'5fb3d896'326615c4_u128},
-        {Sign::NEG, -135, 0x9685911f'e6740b02'178b5831'1e96d323_u128},
-        {Sign::NEG, -135, 0x93a53b98'65c20b2a'006bf8b6'cf73d847_u128},
-        {Sign::NEG, -135, 0x90c4da98'a74ae561'7019f6e6'4a580a02_u128},
-        {Sign::NEG, -135, 0x8de46e20'4f93c7f6'cb5733cf'0eb4191d_u128},
-        {Sign::NEG, -135, 0x8b03f62f'031d9ab8'56148d4f'c5e415b6_u128},
-        {Sign::NEG, -135, 0x882372c4'6664feaf'fe5370f4'25872623_u128},
-        {Sign::NEG, -135, 0x8542e3e0'1de24ddf'21b72a14'57ee70d6_u128},
-        {Sign::NEG, -135, 0x81aa211f'1e332fcf'abff4f89'968bed0b_u128},
-        {Sign::NEG, -136, 0xfd92f0cf'88d75f24'86410a67'6480a5a7_u128},
-        {Sign::NEG, -136, 0xf7d1886b'2a876289'44280889'021970e4_u128},
-        {Sign::NEG, -136, 0xf2100910'6a42bc14'32eb139d'9812090d_u128},
-        {Sign::NEG, -136, 0xec4e72be'90cd2d2d'bef9dd41'e8e42810_u128},
-        {Sign::NEG, -136, 0xe68cc574'e6e1e5d7'689d08ca'6c7c3eb1_u128},
-        {Sign::NEG, -136, 0xe0cb0132'b5338423'01ef259a'7f69821d_u128},
-        {Sign::NEG, -136, 0xdb0925f7'446c13a9'e22cea71'b7bb8467_u128},
-        {Sign::NEG, -136, 0xd54733c1'dd2d0d04'0e5bb273'03f542fe_u128},
-        {Sign::NEG, -136, 0xcf852a91'c80f553f'57453c8d'5dc64ce1_u128},
-        {Sign::NEG, -136, 0xc9c30a66'4da33d56'6cc7add1'fc09ef92_u128},
-        {Sign::NEG, -136, 0xc400d33e'b67081a7'e678d728'0de1c07f_u128},
-        {Sign::NEG, -136, 0xbe3e851a'4af6496d'419bbeb2'239bdc39_u128},
-        {Sign::NEG, -136, 0xb87c1ff8'53ab2631'd4676d1d'81755809_u128},
-        {Sign::NEG, -136, 0xb2b9a3d8'18fd1349'b69dfef7'ac2e2890_u128},
-        {Sign::NEG, -136, 0xacf710b8'e3517548'9f72fa0a'8fccabc0_u128},
-        {Sign::NEG, -136, 0xa7346699'fb051978'b8bfe6a3'addb988e_u128},
-        {Sign::NEG, -136, 0xa171a57a'a86c3551'67862c8e'c9dcd60d_u128},
-        {Sign::NEG, -136, 0x9baecd5a'33d265ee'09bd3370'909e28a6_u128},
-        {Sign::NEG, -136, 0x95ebde37'e57aaf84'a96bc611'b991419b_u128},
-        {Sign::NEG, -136, 0x9028d813'059f7cdc'a50bb80f'203f0d62_u128},
-        {Sign::NEG, -136, 0x8a65baea'dc729ec5'4d36cd47'4f65a317_u128},
-        {Sign::NEG, -136, 0x84a286be'b21d4b8c'779be241'ef4874a3_u128},
-        {Sign::NEG, -137, 0xfdbe771b'9d803cea'0e76a962'fa65ace3_u128},
-        {Sign::NEG, -137, 0xf237b2ae'f4e62e5a'd3d35627'464a5267_u128},
-        {Sign::NEG, -137, 0xe6b0c035'fa8b328c'162ef4b0'e838c363_u128},
-        {Sign::NEG, -137, 0xdb299faf'3e7cd74f'77bb10b9'76b3b9ca_u128},
-        {Sign::NEG, -137, 0xcfa25119'50b77014'209853ce'e70bc58b_u128},
-        {Sign::NEG, -137, 0xc41ad472'c12614d3'63f9b57c'baf2e58d_u128},
-        {Sign::NEG, -137, 0xb89329ba'1fa2a0fd'4fca1c93'1bd6e6d6_u128},
-        {Sign::NEG, -137, 0xad0b50ed'fbf5b265'26d26e43'4a53490a_u128},
-        {Sign::NEG, -137, 0xa1834a0c'e5d6a82d'c55e0790'78dc86a0_u128},
-        {Sign::NEG, -137, 0x95fb1515'6ceba1b5'f05b9d5b'd28f540b_u128},
-        {Sign::NEG, -137, 0x8a72b206'20c97d84'8ef87f1a'11cdb727_u128},
-        {Sign::NEG, -138, 0xfdd441bb'21e7b069'9d687011'4c1183cf_u128},
-        {Sign::NEG, -138, 0xe6c2c334'99ba16c4'63d514ff'f97e86f3_u128},
-        {Sign::NEG, -138, 0xcfb0e875'c7cc5929'11a38190'1eadd883_u128},
-        {Sign::NEG, -138, 0xb89eb17b'cabe1857'a9d69d37'bc0a5bac_u128},
-        {Sign::NEG, -138, 0xa18c1e43'c10c6898'2dc97c9f'fefd2497_u128},
-        {Sign::NEG, -138, 0x8a792eca'c911cf92'0dcdc8af'cb2ac09a_u128},
-        {Sign::NEG, -139, 0xe6cbc61c'020c8446'dd454eb3'a1489470_u128},
-        {Sign::NEG, -139, 0xb8a47615'0dfe4470'87803586'4d84b319_u128},
-        {Sign::NEG, -139, 0x8a7c6d7a'f1de7942'7ce595cc'53b8342c_u128},
-        {Sign::NEG, -140, 0xb8a7588f'd29b1baa'4710b590'49899141_u128},
-        {Sign::NEG, -141, 0xb8a8c9d8'be9ae994'5957f633'309d74e3_u128},
-        {Sign::POS, 0, 0_u128},
-        {Sign::POS, -141, 0xb8abac81'ab576f3b'8268aba0'30b1adf6_u128},
-        {Sign::POS, -140, 0xb8ad1de1'ac9ea6a5'1511cba2'fb213a10_u128},
-        {Sign::POS, -139, 0x8a82eb77'08262500'6379fb9f'd9bc6235_u128},
-        {Sign::POS, -139, 0xb8b000b8'c65957cc'b6fe1bf6'01ee27d5_u128},
-        {Sign::POS, -139, 0xe6ddcebb'd72d3f7f'8c6e6069'3a14e6d0_u128},
-        {Sign::POS, -138, 0x8a862ac3'0095c084'e9bcfd0c'62eaa2ca_u128},
-        {Sign::POS, -138, 0xa19dca8e'85918b6d'73b21420'9a5234a7_u128},
-        {Sign::POS, -138, 0xb8b5c6c3'5e142a9b'347d4ca3'109fe4db_u128},
-        {Sign::POS, -138, 0xcfce1f64'6dca7745'37a62c48'783bb066_u128},
-        {Sign::POS, -138, 0xe6e6d474'9883fbe3'0794b643'7fb56344_u128},
-        {Sign::POS, -138, 0xfdffe5f6'c232f658'1cb9a45e'd90318e6_u128},
-        {Sign::POS, -137, 0x8a8ca9f6'e7762d0f'bc118e5d'bbef7dbc_u128},
-        {Sign::POS, -137, 0x96198f2e'5173e93b'b4c0fb95'35907cf8_u128},
-        {Sign::POS, -137, 0xa1a6a2a3'113fe246'c051d2c5'f00a9bb9_u128},
-        {Sign::POS, -137, 0xad33e456'9918a8d5'55326987'8c1e5110_u128},
-        {Sign::POS, -137, 0xb8c1544a'5b4e2caf'bc906750'b0ce372c_u128},
-        {Sign::POS, -137, 0xc44ef27f'ca41bdd8'4c50eaa6'3be294b6_u128},
-        {Sign::POS, -137, 0xcfdcbef8'58660da1'b6cb28db'8c065b44_u128},
-        {Sign::POS, -137, 0xdb6ab9b5'783f2fc5'70479336'830ceb05_u128},
-        {Sign::POS, -137, 0xe6f8e2b8'9c629b7a'2a458c83'1f6aeb49_u128},
-        {Sign::POS, -137, 0xf2873a03'37772c8a'6489ba5b'd391e206_u128},
-        {Sign::POS, -137, 0xfe15bf96'bc35246b'13f6fda5'10aeec3b_u128},
-        {Sign::POS, -136, 0x84d239ba'4eb315a9'2f9a0ef9'e8250836_u128},
-        {Sign::POS, -136, 0x8a99aacf'26f2a8a7'389019e8'22b70f1e_u128},
-        {Sign::POS, -136, 0x9061330a'a04f87ae'308beeff'a12cf669_u128},
-        {Sign::POS, -136, 0x9628d26d'7448a43f'9886a71b'25a2085d_u128},
-        {Sign::POS, -136, 0x9bf088f8'5c65a56b'70ba9ceb'e0b969c3_u128},
-        {Sign::POS, -136, 0xa1b856ac'1236e85b'cd855dc7'05ea2bea_u128},
-        {Sign::POS, -136, 0xa7803b89'4f5580e0'7736196b'11afb331_u128},
-        {Sign::POS, -136, 0xad483790'cd6339fa'94c99761'b8eab3d8_u128},
-        {Sign::POS, -136, 0xb3104ac3'460a9668'6194b8c0'40814736_u128},
-        {Sign::POS, -136, 0xb8d87521'72fed130'edde8d24'c7a999cc_u128},
-        {Sign::POS, -136, 0xbea0b6ac'0dfbde2f'ea6b01eb'de42f1d0_u128},
-        {Sign::POS, -136, 0xc4690f63'd0c66aa1'7ef732b6'9334cf50_u128},
-        {Sign::POS, -136, 0xca317f49'752bddae'2ba86275'fcfc2d72_u128},
-        {Sign::POS, -136, 0xcffa065d'b50258f6'b56ea44e'185bf99f_u128},
-        {Sign::POS, -136, 0xd5c2a4a1'4a28b920'1d5c3bbe'b6902bfe_u128},
-        {Sign::POS, -136, 0xdb8b5a14'ee86965f'a2f2bb9e'156b0f37_u128},
-        {Sign::POS, -136, 0xe15426b9'5c0c4506'd166eb8d'a06ab5ef_u128},
-        {Sign::POS, -136, 0xe71d0a8f'4cb2d60f'97dc7bae'4219de0f_u128},
-        {Sign::POS, -136, 0xece60597'7a7c17a8'6c9a8e76'98f416c4_u128},
-        {Sign::POS, -136, 0xf2af17d2'9f7295c0'7b3a20aa'5289695e_u128},
-        {Sign::POS, -136, 0xf8784141'75a99a93'ddcf578e'e2c2897b_u128},
-        {Sign::POS, -136, 0xfe4181e4'b73d2f37'e10ebd96'c3ec30ec_u128},
-        {Sign::POS, -135, 0x82056cde'8f290e13'a9b7baec'b34ba577_u128},
-        {Sign::POS, -135, 0x8430f56d'5e1edfd1'2da910dc'61c182da_u128},
-        {Sign::POS, -135, 0x8715b5a8'f27bed90'faca09dc'7e0ba8b5_u128},
-        {Sign::POS, -135, 0x89fa8180'19a2cace'0d723876'173c0947_u128},
-        {Sign::POS, -135, 0x8cdf58f3'30b64515'4e6651df'154e8f8c_u128},
-        {Sign::POS, -135, 0x8fc43c02'94dd8af3'ee54b77d'3bc34b6d_u128},
-        {Sign::POS, -135, 0x92a92aae'a3442c3d'ad07dde9'b5f92cce_u128},
-        {Sign::POS, -135, 0x958e24f7'b91a1a53'261aacf9'44b638f0_u128},
-        {Sign::POS, -135, 0x98732ade'3393a868'232f5d64'a85b219d_u128},
-        {Sign::POS, -135, 0x9b583c62'6fe98bc9'f3a958bb'706093fc_u128},
-        {Sign::POS, -135, 0x9e3d5984'cb58dc25'c9eaa059'e7b0333a_u128},
-        {Sign::POS, -135, 0xa1228245'a32313cf'1e154029'663243c0_u128},
-        {Sign::POS, -135, 0xa407b6a5'548e1006'16515200'e283d006_u128},
-        {Sign::POS, -135, 0xa6ecf6a4'3ce4113d'f498168a'3337ca4f_u128},
-        {Sign::POS, -135, 0xa9d24242'b973bb63'8a04a89f'0548a10f_u128},
-        {Sign::POS, -135, 0xacb79981'27901623'afaad01f'25772805_u128},
-        {Sign::POS, -135, 0xaf9cfc5f'e4908d31'c4f47950'543fe0b8_u128},
-        {Sign::POS, -135, 0xb2826adf'4dd0f08e'338655e6'77d0d3ec_u128},
-        {Sign::POS, -135, 0xb567e4ff'c0b174cc'f8ac2ce1'9d009541_u128},
-        {Sign::POS, -135, 0xb84d6ac1'9a96b35c'344d5e7d'd7b2f465_u128},
-        {Sign::POS, -135, 0xbb32fc25'38e9aaca'bd6a217f'b4598ec7_u128},
-        {Sign::POS, -135, 0xbe18992a'f917bf0e'bc21ff36'8f562b75_u128},
-        {Sign::POS, -135, 0xc0fe41d3'3892b9cc'4944139c'cbf2cb9a_u128},
-        {Sign::POS, -135, 0xc3e3f61e'54d0ca9c'1369970c'8b67e6b5_u128},
-        {Sign::POS, -135, 0xc6c9b60c'ab4c8752'099b370e'2d04a530_u128},
-        {Sign::POS, -135, 0xc9af819e'9984ec44'0b81c3d4'8aff589f_u128},
-        {Sign::POS, -135, 0xcc9558d4'7cfd5c90'9f22b809'93be311b_u128},
-        {Sign::POS, -135, 0xcf7b3bae'b33da265'ac29209c'8d8985ae_u128},
-        {Sign::POS, -135, 0xd2612a2d'99d1ef47'3cbb6a52'0292351d_u128},
-        {Sign::POS, -135, 0xd5472451'8e4adc56'43de9ae4'0507ef24_u128},
-        {Sign::POS, -135, 0xd82d2a1a'ee3d6a97'69677b90'2ea4df3a_u128},
-        {Sign::POS, -135, 0xdb133b8a'17430339'db7a3aff'74967bd5_u128},
-        {Sign::POS, -135, 0xddf9589f'66f977de'25990c82'a0066ac6_u128},
-        {Sign::POS, -135, 0xe0df815b'3b0302dd'0d424aac'f4babf55_u128},
-        {Sign::POS, -135, 0xe30c278d'9936c595'f8e3e7eb'5a7bdebb_u128},
-        {Sign::POS, -135, 0xe5f264ad'b62d5810'5ef8bf5a'df5deebe_u128},
-        {Sign::POS, -135, 0xe8d8ad75'590bdf92'331d1996'5368fc82_u128},
-        {Sign::POS, -135, 0xebbf01e4'df85219e'901c30c4'27e358b8_u128},
-        {Sign::POS, -135, 0xeea561fc'a7504dc1'aeac7e98'57253b06_u128},
-        {Sign::POS, -135, 0xf18bcdbd'0e28fdd7'e2113e58'93ab5b40_u128},
-        {Sign::POS, -135, 0xf4724526'71cf3654'9a4efc80'ae977826_u128},
-        {Sign::POS, -135, 0xf758c839'30076689'6bf3ba83'19332c9f_u128},
-        {Sign::POS, -135, 0xfa3f56f5'a69a68ed'1d732d30'2e75018b_u128},
-        {Sign::POS, -135, 0xfd25f15c'33558362'ba179c5d'bcceec01_u128},
-        {Sign::POS, -134, 0x80064bb6'9a0533c0'5543f53b'8ad85039_u128},
-        {Sign::POS, -134, 0x8179a494'8347996b'e971a556'5b93cb67_u128},
-        {Sign::POS, -134, 0x82ed0348'045f379d'5b399644'ba714691_u128},
-        {Sign::POS, -134, 0x846067d1'4c3b8982'5079f1e0'ec4b8496_u128},
-        {Sign::POS, -134, 0x85d3d230'89ce40b0'6aba4990'a32e8873_u128},
-        {Sign::POS, -134, 0x87474265'ec0b4548'e16770c3'a404291c_u128},
-        {Sign::POS, -134, 0x88bab871'a1e8b61c'1edb7ffb'1d6b3eab_u128},
-        {Sign::POS, -134, 0x8a2e3453'da5ee8cd'603243e1'ba7c7865_u128},
-        {Sign::POS, -134, 0x8ba1b60c'c46869f6'57ea5c03'ea4621dd_u128},
-        {Sign::POS, -134, 0x8d153d9c'8f01fd4a'd3534cbf'43bd7fd8_u128},
-        {Sign::POS, -134, 0x8e88cb03'692a9dbc'62c8c807'5dc91cd5_u128},
-        {Sign::POS, -134, 0x8ffc5e41'81e37d9e'04bb70a5'e3db7b85_u128},
-        {Sign::POS, -134, 0x916ff757'083006c7'd3875ba3'2159547a_u128},
-        {Sign::POS, -134, 0x9286adfc'a91ba28d'5c94c80e'7a8f66b1_u128},
-        {Sign::POS, -134, 0x93fa514b'a0517623'52d313c4'7b4f91db_u128},
-        {Sign::POS, -134, 0x956dfa72'866fc57d'80829e9f'3957a4c3_u128},
-        {Sign::POS, -134, 0x96e1a971'8a824be5'1cd49179'72015ae7_u128},
-        {Sign::POS, -134, 0x98555e48'db96fcd2'1af23c29'ef3032da_u128},
-        {Sign::POS, -134, 0x99c918f8'a8be040e'e7f7bf24'0be67b80_u128},
-        {Sign::POS, -134, 0x9b3cd981'2109c5dc'2bbe3cd4'f7d868fa_u128},
-        {Sign::POS, -134, 0x9cb09fe2'738edf14'8c75d6a4'c5ae460d_u128},
-        {Sign::POS, -134, 0x9e246c1c'cf642550'750fb989'c9a06186_u128},
-        {Sign::POS, -134, 0x9f983e30'63a2a709'de787e24'4901bdf9_u128},
-        {Sign::POS, -134, 0xa10c161d'5f65abc0'1ba3205f'f729efa4_u128},
-        {Sign::POS, -134, 0xa27ff3e3'f1cab41b'a864d2a0'38fb19cd_u128},
-        {Sign::POS, -134, 0xa3f3d784'49f17a11'fb21f083'a5fec56d_u128},
-        {Sign::POS, -134, 0xa567c0fe'96fbf109'594c5552'bcc377f5_u128},
-        {Sign::POS, -134, 0xa6dbb053'080e45fc'aeb35a35'3fc5a503_u128},
-        {Sign::POS, -134, 0xa84fa581'cc4edf9f'67a5c051'30c0f330_u128},
-        {Sign::POS, -134, 0xa9c3a08b'12e65e81'4de5cafd'e1caf46f_u128},
-        {Sign::POS, -134, 0xab37a16f'0aff9d32'686fce3d'160e88fd_u128},
-        {Sign::POS, -134, 0xacaba82d'e3c7b066'de1375b3'af6749a6_u128},
-        {Sign::POS, -134, 0xadc2b114'c632da56'24356904'8ac4affe_u128},
-        {Sign::POS, -134, 0xaf36c213'19b80ea2'd6796227'dcd39551_u128},
-        {Sign::POS, -134, 0xb0aad8ec'cfb38d51'abc92653'86172074_u128},
-        {Sign::POS, -134, 0xb21ef5a2'175ac65e'0caac9f1'7896f2ce_u128},
-        {Sign::POS, -134, 0xb3931833'1fe56492'1c65a3c7'f828972b_u128},
-        {Sign::POS, -134, 0xb50740a0'188d4daa'abdc6644'6a4286d9_u128},
-        {Sign::POS, -134, 0xb67b6ee9'308ea27b'2f3bbe8e'8d72abec_u128},
-        {Sign::POS, -134, 0xb7efa30e'9727bf11'b67dbdd7'f03d168c_u128},
+        {Sign::NEG, -135, MType({0xb5cfed58337e848a, 0xb906155918954401})},
+        {Sign::NEG, -135, MType({0xffaf2ac1b1d20910, 0xb6264958a3c7fa2b})},
+        {Sign::NEG, -135, MType({0x52521a3950ea2ed8, 0xb34671e439aa448e})},
+        {Sign::NEG, -135, MType({0xf87e1abdee10fd95, 0xb0668efb7ef48ab7})},
+        {Sign::NEG, -135, MType({0xfbd43bbcc24c5e43, 0xad86a09e185af0e8})},
+        {Sign::NEG, -135, MType({0x2f4f5d48f9796742, 0xaaa6a6cbaa8d57ce})},
+        {Sign::NEG, -135, MType({0x3477fd67c1cab6b3, 0xa7c6a183da375c3d})},
+        {Sign::NEG, -135, MType({0x7b4d33eb381fe558, 0xa4e690c64c0056f0})},
+        {Sign::NEG, -135, MType({0x3ce25e48cb498dea, 0xa2067492a48b5c43})},
+        {Sign::NEG, -135, MType({0x70b0fcc9e4330983, 0x9f264ce888773bed})},
+        {Sign::NEG, -135, MType({0xbc9e4267d3189b22, 0x9c4619c79c5e80bf})},
+        {Sign::NEG, -135, MType({0x5fb3d896326615c4, 0x9965db2f84d7705f})},
+        {Sign::NEG, -135, MType({0x178b58311e96d323, 0x9685911fe6740b02})},
+        {Sign::NEG, -135, MType({0x6bf8b6cf73d847, 0x93a53b9865c20b2a})},
+        {Sign::NEG, -135, MType({0x7019f6e64a580a02, 0x90c4da98a74ae561})},
+        {Sign::NEG, -135, MType({0xcb5733cf0eb4191d, 0x8de46e204f93c7f6})},
+        {Sign::NEG, -135, MType({0x56148d4fc5e415b6, 0x8b03f62f031d9ab8})},
+        {Sign::NEG, -135, MType({0xfe5370f425872623, 0x882372c46664feaf})},
+        {Sign::NEG, -135, MType({0x21b72a1457ee70d6, 0x8542e3e01de24ddf})},
+        {Sign::NEG, -135, MType({0xabff4f89968bed0b, 0x81aa211f1e332fcf})},
+        {Sign::NEG, -136, MType({0x86410a676480a5a7, 0xfd92f0cf88d75f24})},
+        {Sign::NEG, -136, MType({0x44280889021970e4, 0xf7d1886b2a876289})},
+        {Sign::NEG, -136, MType({0x32eb139d9812090d, 0xf21009106a42bc14})},
+        {Sign::NEG, -136, MType({0xbef9dd41e8e42810, 0xec4e72be90cd2d2d})},
+        {Sign::NEG, -136, MType({0x689d08ca6c7c3eb1, 0xe68cc574e6e1e5d7})},
+        {Sign::NEG, -136, MType({0x1ef259a7f69821d, 0xe0cb0132b5338423})},
+        {Sign::NEG, -136, MType({0xe22cea71b7bb8467, 0xdb0925f7446c13a9})},
+        {Sign::NEG, -136, MType({0xe5bb27303f542fe, 0xd54733c1dd2d0d04})},
+        {Sign::NEG, -136, MType({0x57453c8d5dc64ce1, 0xcf852a91c80f553f})},
+        {Sign::NEG, -136, MType({0x6cc7add1fc09ef92, 0xc9c30a664da33d56})},
+        {Sign::NEG, -136, MType({0xe678d7280de1c07f, 0xc400d33eb67081a7})},
+        {Sign::NEG, -136, MType({0x419bbeb2239bdc39, 0xbe3e851a4af6496d})},
+        {Sign::NEG, -136, MType({0xd4676d1d81755809, 0xb87c1ff853ab2631})},
+        {Sign::NEG, -136, MType({0xb69dfef7ac2e2890, 0xb2b9a3d818fd1349})},
+        {Sign::NEG, -136, MType({0x9f72fa0a8fccabc0, 0xacf710b8e3517548})},
+        {Sign::NEG, -136, MType({0xb8bfe6a3addb988e, 0xa7346699fb051978})},
+        {Sign::NEG, -136, MType({0x67862c8ec9dcd60d, 0xa171a57aa86c3551})},
+        {Sign::NEG, -136, MType({0x9bd3370909e28a6, 0x9baecd5a33d265ee})},
+        {Sign::NEG, -136, MType({0xa96bc611b991419b, 0x95ebde37e57aaf84})},
+        {Sign::NEG, -136, MType({0xa50bb80f203f0d62, 0x9028d813059f7cdc})},
+        {Sign::NEG, -136, MType({0x4d36cd474f65a317, 0x8a65baeadc729ec5})},
+        {Sign::NEG, -136, MType({0x779be241ef4874a3, 0x84a286beb21d4b8c})},
+        {Sign::NEG, -137, MType({0xe76a962fa65ace3, 0xfdbe771b9d803cea})},
+        {Sign::NEG, -137, MType({0xd3d35627464a5267, 0xf237b2aef4e62e5a})},
+        {Sign::NEG, -137, MType({0x162ef4b0e838c363, 0xe6b0c035fa8b328c})},
+        {Sign::NEG, -137, MType({0x77bb10b976b3b9ca, 0xdb299faf3e7cd74f})},
+        {Sign::NEG, -137, MType({0x209853cee70bc58b, 0xcfa2511950b77014})},
+        {Sign::NEG, -137, MType({0x63f9b57cbaf2e58d, 0xc41ad472c12614d3})},
+        {Sign::NEG, -137, MType({0x4fca1c931bd6e6d6, 0xb89329ba1fa2a0fd})},
+        {Sign::NEG, -137, MType({0x26d26e434a53490a, 0xad0b50edfbf5b265})},
+        {Sign::NEG, -137, MType({0xc55e079078dc86a0, 0xa1834a0ce5d6a82d})},
+        {Sign::NEG, -137, MType({0xf05b9d5bd28f540b, 0x95fb15156ceba1b5})},
+        {Sign::NEG, -137, MType({0x8ef87f1a11cdb727, 0x8a72b20620c97d84})},
+        {Sign::NEG, -138, MType({0x9d6870114c1183cf, 0xfdd441bb21e7b069})},
+        {Sign::NEG, -138, MType({0x63d514fff97e86f3, 0xe6c2c33499ba16c4})},
+        {Sign::NEG, -138, MType({0x11a381901eadd883, 0xcfb0e875c7cc5929})},
+        {Sign::NEG, -138, MType({0xa9d69d37bc0a5bac, 0xb89eb17bcabe1857})},
+        {Sign::NEG, -138, MType({0x2dc97c9ffefd2497, 0xa18c1e43c10c6898})},
+        {Sign::NEG, -138, MType({0xdcdc8afcb2ac09a, 0x8a792ecac911cf92})},
+        {Sign::NEG, -139, MType({0xdd454eb3a1489470, 0xe6cbc61c020c8446})},
+        {Sign::NEG, -139, MType({0x878035864d84b319, 0xb8a476150dfe4470})},
+        {Sign::NEG, -139, MType({0x7ce595cc53b8342c, 0x8a7c6d7af1de7942})},
+        {Sign::NEG, -140, MType({0x4710b59049899141, 0xb8a7588fd29b1baa})},
+        {Sign::NEG, -141, MType({0x5957f633309d74e3, 0xb8a8c9d8be9ae994})},
+        {Sign::POS, 0, MType({0x0, 0x0})},
+        {Sign::POS, -141, MType({0x8268aba030b1adf6, 0xb8abac81ab576f3b})},
+        {Sign::POS, -140, MType({0x1511cba2fb213a10, 0xb8ad1de1ac9ea6a5})},
+        {Sign::POS, -139, MType({0x6379fb9fd9bc6235, 0x8a82eb7708262500})},
+        {Sign::POS, -139, MType({0xb6fe1bf601ee27d5, 0xb8b000b8c65957cc})},
+        {Sign::POS, -139, MType({0x8c6e60693a14e6d0, 0xe6ddcebbd72d3f7f})},
+        {Sign::POS, -138, MType({0xe9bcfd0c62eaa2ca, 0x8a862ac30095c084})},
+        {Sign::POS, -138, MType({0x73b214209a5234a7, 0xa19dca8e85918b6d})},
+        {Sign::POS, -138, MType({0x347d4ca3109fe4db, 0xb8b5c6c35e142a9b})},
+        {Sign::POS, -138, MType({0x37a62c48783bb066, 0xcfce1f646dca7745})},
+        {Sign::POS, -138, MType({0x794b6437fb56344, 0xe6e6d4749883fbe3})},
+        {Sign::POS, -138, MType({0x1cb9a45ed90318e6, 0xfdffe5f6c232f658})},
+        {Sign::POS, -137, MType({0xbc118e5dbbef7dbc, 0x8a8ca9f6e7762d0f})},
+        {Sign::POS, -137, MType({0xb4c0fb9535907cf8, 0x96198f2e5173e93b})},
+        {Sign::POS, -137, MType({0xc051d2c5f00a9bb9, 0xa1a6a2a3113fe246})},
+        {Sign::POS, -137, MType({0x553269878c1e5110, 0xad33e4569918a8d5})},
+        {Sign::POS, -137, MType({0xbc906750b0ce372c, 0xb8c1544a5b4e2caf})},
+        {Sign::POS, -137, MType({0x4c50eaa63be294b6, 0xc44ef27fca41bdd8})},
+        {Sign::POS, -137, MType({0xb6cb28db8c065b44, 0xcfdcbef858660da1})},
+        {Sign::POS, -137, MType({0x70479336830ceb05, 0xdb6ab9b5783f2fc5})},
+        {Sign::POS, -137, MType({0x2a458c831f6aeb49, 0xe6f8e2b89c629b7a})},
+        {Sign::POS, -137, MType({0x6489ba5bd391e206, 0xf2873a0337772c8a})},
+        {Sign::POS, -137, MType({0x13f6fda510aeec3b, 0xfe15bf96bc35246b})},
+        {Sign::POS, -136, MType({0x2f9a0ef9e8250836, 0x84d239ba4eb315a9})},
+        {Sign::POS, -136, MType({0x389019e822b70f1e, 0x8a99aacf26f2a8a7})},
+        {Sign::POS, -136, MType({0x308beeffa12cf669, 0x9061330aa04f87ae})},
+        {Sign::POS, -136, MType({0x9886a71b25a2085d, 0x9628d26d7448a43f})},
+        {Sign::POS, -136, MType({0x70ba9cebe0b969c3, 0x9bf088f85c65a56b})},
+        {Sign::POS, -136, MType({0xcd855dc705ea2bea, 0xa1b856ac1236e85b})},
+        {Sign::POS, -136, MType({0x7736196b11afb331, 0xa7803b894f5580e0})},
+        {Sign::POS, -136, MType({0x94c99761b8eab3d8, 0xad483790cd6339fa})},
+        {Sign::POS, -136, MType({0x6194b8c040814736, 0xb3104ac3460a9668})},
+        {Sign::POS, -136, MType({0xedde8d24c7a999cc, 0xb8d8752172fed130})},
+        {Sign::POS, -136, MType({0xea6b01ebde42f1d0, 0xbea0b6ac0dfbde2f})},
+        {Sign::POS, -136, MType({0x7ef732b69334cf50, 0xc4690f63d0c66aa1})},
+        {Sign::POS, -136, MType({0x2ba86275fcfc2d72, 0xca317f49752bddae})},
+        {Sign::POS, -136, MType({0xb56ea44e185bf99f, 0xcffa065db50258f6})},
+        {Sign::POS, -136, MType({0x1d5c3bbeb6902bfe, 0xd5c2a4a14a28b920})},
+        {Sign::POS, -136, MType({0xa2f2bb9e156b0f37, 0xdb8b5a14ee86965f})},
+        {Sign::POS, -136, MType({0xd166eb8da06ab5ef, 0xe15426b95c0c4506})},
+        {Sign::POS, -136, MType({0x97dc7bae4219de0f, 0xe71d0a8f4cb2d60f})},
+        {Sign::POS, -136, MType({0x6c9a8e7698f416c4, 0xece605977a7c17a8})},
+        {Sign::POS, -136, MType({0x7b3a20aa5289695e, 0xf2af17d29f7295c0})},
+        {Sign::POS, -136, MType({0xddcf578ee2c2897b, 0xf878414175a99a93})},
+        {Sign::POS, -136, MType({0xe10ebd96c3ec30ec, 0xfe4181e4b73d2f37})},
+        {Sign::POS, -135, MType({0xa9b7baecb34ba577, 0x82056cde8f290e13})},
+        {Sign::POS, -135, MType({0x2da910dc61c182da, 0x8430f56d5e1edfd1})},
+        {Sign::POS, -135, MType({0xfaca09dc7e0ba8b5, 0x8715b5a8f27bed90})},
+        {Sign::POS, -135, MType({0xd723876173c0947, 0x89fa818019a2cace})},
+        {Sign::POS, -135, MType({0x4e6651df154e8f8c, 0x8cdf58f330b64515})},
+        {Sign::POS, -135, MType({0xee54b77d3bc34b6d, 0x8fc43c0294dd8af3})},
+        {Sign::POS, -135, MType({0xad07dde9b5f92cce, 0x92a92aaea3442c3d})},
+        {Sign::POS, -135, MType({0x261aacf944b638f0, 0x958e24f7b91a1a53})},
+        {Sign::POS, -135, MType({0x232f5d64a85b219d, 0x98732ade3393a868})},
+        {Sign::POS, -135, MType({0xf3a958bb706093fc, 0x9b583c626fe98bc9})},
+        {Sign::POS, -135, MType({0xc9eaa059e7b0333a, 0x9e3d5984cb58dc25})},
+        {Sign::POS, -135, MType({0x1e154029663243c0, 0xa1228245a32313cf})},
+        {Sign::POS, -135, MType({0x16515200e283d006, 0xa407b6a5548e1006})},
+        {Sign::POS, -135, MType({0xf498168a3337ca4f, 0xa6ecf6a43ce4113d})},
+        {Sign::POS, -135, MType({0x8a04a89f0548a10f, 0xa9d24242b973bb63})},
+        {Sign::POS, -135, MType({0xafaad01f25772805, 0xacb7998127901623})},
+        {Sign::POS, -135, MType({0xc4f47950543fe0b8, 0xaf9cfc5fe4908d31})},
+        {Sign::POS, -135, MType({0x338655e677d0d3ec, 0xb2826adf4dd0f08e})},
+        {Sign::POS, -135, MType({0xf8ac2ce19d009541, 0xb567e4ffc0b174cc})},
+        {Sign::POS, -135, MType({0x344d5e7dd7b2f465, 0xb84d6ac19a96b35c})},
+        {Sign::POS, -135, MType({0xbd6a217fb4598ec7, 0xbb32fc2538e9aaca})},
+        {Sign::POS, -135, MType({0xbc21ff368f562b75, 0xbe18992af917bf0e})},
+        {Sign::POS, -135, MType({0x4944139ccbf2cb9a, 0xc0fe41d33892b9cc})},
+        {Sign::POS, -135, MType({0x1369970c8b67e6b5, 0xc3e3f61e54d0ca9c})},
+        {Sign::POS, -135, MType({0x99b370e2d04a530, 0xc6c9b60cab4c8752})},
+        {Sign::POS, -135, MType({0xb81c3d48aff589f, 0xc9af819e9984ec44})},
+        {Sign::POS, -135, MType({0x9f22b80993be311b, 0xcc9558d47cfd5c90})},
+        {Sign::POS, -135, MType({0xac29209c8d8985ae, 0xcf7b3baeb33da265})},
+        {Sign::POS, -135, MType({0x3cbb6a520292351d, 0xd2612a2d99d1ef47})},
+        {Sign::POS, -135, MType({0x43de9ae40507ef24, 0xd54724518e4adc56})},
+        {Sign::POS, -135, MType({0x69677b902ea4df3a, 0xd82d2a1aee3d6a97})},
+        {Sign::POS, -135, MType({0xdb7a3aff74967bd5, 0xdb133b8a17430339})},
+        {Sign::POS, -135, MType({0x25990c82a0066ac6, 0xddf9589f66f977de})},
+        {Sign::POS, -135, MType({0xd424aacf4babf55, 0xe0df815b3b0302dd})},
+        {Sign::POS, -135, MType({0xf8e3e7eb5a7bdebb, 0xe30c278d9936c595})},
+        {Sign::POS, -135, MType({0x5ef8bf5adf5deebe, 0xe5f264adb62d5810})},
+        {Sign::POS, -135, MType({0x331d19965368fc82, 0xe8d8ad75590bdf92})},
+        {Sign::POS, -135, MType({0x901c30c427e358b8, 0xebbf01e4df85219e})},
+        {Sign::POS, -135, MType({0xaeac7e9857253b06, 0xeea561fca7504dc1})},
+        {Sign::POS, -135, MType({0xe2113e5893ab5b40, 0xf18bcdbd0e28fdd7})},
+        {Sign::POS, -135, MType({0x9a4efc80ae977826, 0xf472452671cf3654})},
+        {Sign::POS, -135, MType({0x6bf3ba8319332c9f, 0xf758c83930076689})},
+        {Sign::POS, -135, MType({0x1d732d302e75018b, 0xfa3f56f5a69a68ed})},
+        {Sign::POS, -135, MType({0xba179c5dbcceec01, 0xfd25f15c33558362})},
+        {Sign::POS, -134, MType({0x5543f53b8ad85039, 0x80064bb69a0533c0})},
+        {Sign::POS, -134, MType({0xe971a5565b93cb67, 0x8179a4948347996b})},
+        {Sign::POS, -134, MType({0x5b399644ba714691, 0x82ed0348045f379d})},
+        {Sign::POS, -134, MType({0x5079f1e0ec4b8496, 0x846067d14c3b8982})},
+        {Sign::POS, -134, MType({0x6aba4990a32e8873, 0x85d3d23089ce40b0})},
+        {Sign::POS, -134, MType({0xe16770c3a404291c, 0x87474265ec0b4548})},
+        {Sign::POS, -134, MType({0x1edb7ffb1d6b3eab, 0x88bab871a1e8b61c})},
+        {Sign::POS, -134, MType({0x603243e1ba7c7865, 0x8a2e3453da5ee8cd})},
+        {Sign::POS, -134, MType({0x57ea5c03ea4621dd, 0x8ba1b60cc46869f6})},
+        {Sign::POS, -134, MType({0xd3534cbf43bd7fd8, 0x8d153d9c8f01fd4a})},
+        {Sign::POS, -134, MType({0x62c8c8075dc91cd5, 0x8e88cb03692a9dbc})},
+        {Sign::POS, -134, MType({0x4bb70a5e3db7b85, 0x8ffc5e4181e37d9e})},
+        {Sign::POS, -134, MType({0xd3875ba32159547a, 0x916ff757083006c7})},
+        {Sign::POS, -134, MType({0x5c94c80e7a8f66b1, 0x9286adfca91ba28d})},
+        {Sign::POS, -134, MType({0x52d313c47b4f91db, 0x93fa514ba0517623})},
+        {Sign::POS, -134, MType({0x80829e9f3957a4c3, 0x956dfa72866fc57d})},
+        {Sign::POS, -134, MType({0x1cd4917972015ae7, 0x96e1a9718a824be5})},
+        {Sign::POS, -134, MType({0x1af23c29ef3032da, 0x98555e48db96fcd2})},
+        {Sign::POS, -134, MType({0xe7f7bf240be67b80, 0x99c918f8a8be040e})},
+        {Sign::POS, -134, MType({0x2bbe3cd4f7d868fa, 0x9b3cd9812109c5dc})},
+        {Sign::POS, -134, MType({0x8c75d6a4c5ae460d, 0x9cb09fe2738edf14})},
+        {Sign::POS, -134, MType({0x750fb989c9a06186, 0x9e246c1ccf642550})},
+        {Sign::POS, -134, MType({0xde787e244901bdf9, 0x9f983e3063a2a709})},
+        {Sign::POS, -134, MType({0x1ba3205ff729efa4, 0xa10c161d5f65abc0})},
+        {Sign::POS, -134, MType({0xa864d2a038fb19cd, 0xa27ff3e3f1cab41b})},
+        {Sign::POS, -134, MType({0xfb21f083a5fec56d, 0xa3f3d78449f17a11})},
+        {Sign::POS, -134, MType({0x594c5552bcc377f5, 0xa567c0fe96fbf109})},
+        {Sign::POS, -134, MType({0xaeb35a353fc5a503, 0xa6dbb053080e45fc})},
+        {Sign::POS, -134, MType({0x67a5c05130c0f330, 0xa84fa581cc4edf9f})},
+        {Sign::POS, -134, MType({0x4de5cafde1caf46f, 0xa9c3a08b12e65e81})},
+        {Sign::POS, -134, MType({0x686fce3d160e88fd, 0xab37a16f0aff9d32})},
+        {Sign::POS, -134, MType({0xde1375b3af6749a6, 0xacaba82de3c7b066})},
+        {Sign::POS, -134, MType({0x243569048ac4affe, 0xadc2b114c632da56})},
+        {Sign::POS, -134, MType({0xd6796227dcd39551, 0xaf36c21319b80ea2})},
+        {Sign::POS, -134, MType({0xabc9265386172074, 0xb0aad8eccfb38d51})},
+        {Sign::POS, -134, MType({0xcaac9f17896f2ce, 0xb21ef5a2175ac65e})},
+        {Sign::POS, -134, MType({0x1c65a3c7f828972b, 0xb39318331fe56492})},
+        {Sign::POS, -134, MType({0xabdc66446a4286d9, 0xb50740a0188d4daa})},
+        {Sign::POS, -134, MType({0x2f3bbe8e8d72abec, 0xb67b6ee9308ea27b})},
+        {Sign::POS, -134, MType({0xb67dbdd7f03d168c, 0xb7efa30e9727bf11})},
     },
     // -log2(r) for the third step, generated by SageMath with:
     //
@@ -516,170 +513,170 @@ const LogRR LOG2_TABLE = {
     //   r = 2^-21 * round( 2^21 / (1 + i*2^(-21)) );
     //   s, m, e = RealField(128)(r).log2().sign_mantissa_exponent();
     //   print("{Sign::NEG," if (s == 1) else "{Sign::POS,", e, ",
-    //         format_hex(m), "},");
+    //         MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})},");
     /* .step_3 = */
     {
-        {Sign::NEG, -142, 0xe6d3a96b'978fc16e'26f2c63c'0827ccbb_u128},
-        {Sign::NEG, -142, 0xe3f107a9'fbfc50ca'4b56fe66'7c8ec091_u128},
-        {Sign::NEG, -142, 0xe10e65d1'4b937265'647d7618'1aec10fc_u128},
-        {Sign::NEG, -142, 0xde2bc3e1'8653b4f5'99e8f4d5'379eca79_u128},
-        {Sign::NEG, -142, 0xdb4921da'ac3ba730'f07da899'90c20623_u128},
-        {Sign::NEG, -142, 0xd8667fbc'bd49d7cd'4a812184'8531851a_u128},
-        {Sign::NEG, -142, 0xd583dd87'b97cd580'679a4d85'4ae13619_u128},
-        {Sign::NEG, -142, 0xd2a13b3b'a0d32eff'e4d17407'2487a514_u128},
-        {Sign::NEG, -142, 0xcfbe98d8'734b7301'3c90319d'969b54be_u128},
-        {Sign::NEG, -142, 0xccdbf65e'30e43039'c6a173b0'9ba301e6_u128},
-        {Sign::NEG, -142, 0xc9f953cc'd99bf55e'b8317428'd7d8d06b_u128},
-        {Sign::NEG, -142, 0xc716b124'6d715125'23cdb51b'cc2061cd_u128},
-        {Sign::NEG, -142, 0xc4340e64'ec62d241'f964fc78'084fd515_u128},
-        {Sign::NEG, -142, 0xc1516b8e'566f076a'06474fb1'5ccbb015_u128},
-        {Sign::NEG, -142, 0xbe6ec8a0'ab947f51'f525ef6d'0b75b1c3_u128},
-        {Sign::NEG, -142, 0xbb8c259b'ebd1c8ae'4e13532d'f7ee8da7_u128},
-        {Sign::NEG, -142, 0xb8a98280'17257233'76832500'd72a9027_u128},
-        {Sign::NEG, -142, 0xb5c6df4d'2d8e0a95'b14a3d28'5e592ba0_u128},
-        {Sign::NEG, -142, 0xb2e43c03'2f0a2089'1e9e9dc9'711f6e20_u128},
-        {Sign::NEG, -142, 0xb00198a2'1b9842c1'bc176e97'4f255fac_u128},
-        {Sign::NEG, -142, 0xad1ef529'f336fff3'64acf87f'c0f648e6_u128},
-        {Sign::NEG, -142, 0xaa3c519a'b5e4e6d1'd0b8a157'4433e1f8_u128},
-        {Sign::NEG, -142, 0xa759adf4'63a08610'95f4e785'371c69a9_u128},
-        {Sign::NEG, -142, 0xa4770a36'fc686c63'277d5db0'0363a46f_u128},
-        {Sign::NEG, -142, 0xa1946662'803b287c'd5cea669'485ec36c_u128},
-        {Sign::NEG, -142, 0x9eb1c276'ef174910'cec66fda'04833322_u128},
-        {Sign::NEG, -142, 0x9bcf1e74'48fb5cd2'1da36f6e'be3851db_u128},
-        {Sign::NEG, -142, 0x98ec7a5a'8de5f273'ab055d83'abfc0d82_u128},
-        {Sign::NEG, -142, 0x9609d629'bdd598a8'3cecf110'dbda68e9_u128},
-        {Sign::NEG, -142, 0x932731e1'd8c8de22'76bbdb56'5a37e84b_u128},
-        {Sign::NEG, -142, 0x90448d82'debe5194'd934c388'57eee4f3_u128},
-        {Sign::NEG, -142, 0x8d61e90c'cfb481b1'c27b427b'4fbfc7db_u128},
-        {Sign::NEG, -142, 0x8a7f447f'aba9fd2b'6e13de50'2b142b39_u128},
-        {Sign::NEG, -142, 0x879c9fdb'729d52b3'f4e40620'6614e2ba_u128},
-        {Sign::NEG, -142, 0x84b9fb20'248d10fd'4d320daa'3312ea6c_u128},
-        {Sign::NEG, -142, 0x81d7564d'c177c6b9'4aa528fc'9d433c1a_u128},
-        {Sign::NEG, -143, 0xfde962c8'92b80533'3c8ad047'559b1622_u128},
-        {Sign::NEG, -143, 0xf82418c7'7870a69f'acf765a8'fc5bcc31_u128},
-        {Sign::NEG, -143, 0xf25ece98'34168f1a'be238832'edd27f20_u128},
-        {Sign::NEG, -143, 0xec99843a'c5a6dc07'02644bfc'a329b708_u128},
-        {Sign::NEG, -143, 0xe6d439af'2d1eaac6'c6d05a78'8e614744_u128},
-        {Sign::NEG, -143, 0xe10eeef5'6a7b18bc'133fe9cc'57a8c1d0_u128},
-        {Sign::NEG, -143, 0xdb49a40d'7db94348'aa4cb429'195fb5dd_u128},
-        {Sign::NEG, -143, 0xd58458f7'66d647ce'0951ef23'9abbb959_u128},
-        {Sign::NEG, -143, 0xcfbf0db3'25cf43ad'686c430c'89143d35_u128},
-        {Sign::NEG, -143, 0xc9f9c240'baa15447'ba79c248'afd42c12_u128},
-        {Sign::NEG, -143, 0xc43476a0'254996fd'ad19e0a9'2f115327_u128},
-        {Sign::NEG, -143, 0xbe6f2ad1'65c5292f'a8ad6ac3'b0c99520_u128},
-        {Sign::NEG, -143, 0xb8a9ded4'7c11283d'd0567d4a'9cc5e6a1_u128},
-        {Sign::NEG, -143, 0xb2e492a9'682ab188'01f87c65'4b231443_u128},
-        {Sign::NEG, -143, 0xad1f4650'2a0ee26d'd6380b08'358051bc_u128},
-        {Sign::NEG, -143, 0xa759f9c8'c1bad84e'a07b024d'26d391f6_u128},
-        {Sign::NEG, -143, 0xa194ad13'2f2bb089'6ee868cb'69e3a7d8_u128},
-        {Sign::NEG, -143, 0x9bcf602f'725e887d'0a6869ef'f6682f73_u128},
-        {Sign::NEG, -143, 0x960a131d'8b507d87'f6a44d55'9ccf3f61_u128},
-        {Sign::NEG, -143, 0x9044c5dd'79fead08'72066e1d'30a8e210_u128},
-        {Sign::NEG, -143, 0x8a7f786f'3e66345c'75ba3245'b1b856af_u128},
-        {Sign::NEG, -143, 0x84ba2ad2'd88430e1'b5ac0204'73ab198f_u128},
-        {Sign::NEG, -144, 0xfde9ba10'90ab7feb'41127e3a'88eb6741_u128},
-        {Sign::NEG, -144, 0xf25f1e1f'1baffdea'bf807875'22aca1c4_u128},
-        {Sign::NEG, -144, 0xe6d481d1'5210167b'af00688b'14fa3adc_u128},
-        {Sign::NEG, -144, 0xdb49e527'33c60457'4d72837c'8ab4d1e5_u128},
-        {Sign::NEG, -144, 0xcfbf4820'c0cc0236'4e38ac27'bb252090_u128},
-        {Sign::NEG, -144, 0xc434aabd'f91c4ad0'da3661f9'292f59e8_u128},
-        {Sign::NEG, -144, 0xb8aa0cfe'dcb118de'8fd0af9b'dfd21488_u128},
-        {Sign::NEG, -144, 0xad1f6ee3'6b84a716'82ee19a9'abf0bfa5_u128},
-        {Sign::NEG, -144, 0xa194d06b'a591302f'3cf68d5b'5369a251_u128},
-        {Sign::NEG, -144, 0x960a3197'8ad0eede'bcd34f38'c977647e_u128},
-        {Sign::NEG, -144, 0x8a7f9267'1b3e1dda'76eee9c9'605e2143_u128},
-        {Sign::NEG, -145, 0xfde9e5b4'ada5efae'aa6a3887'f0c803ab_u128},
-        {Sign::NEG, -145, 0xe6d4a5e2'7b136f13'6e25927e'582ac191_u128},
-        {Sign::NEG, -145, 0xcfbf6557'9eb92f4a'e2ebcac2'f3a8e9eb_u128},
-        {Sign::NEG, -145, 0xb8aa2414'188ba5bb'9d9acc22'd5690751_u128},
-        {Sign::NEG, -145, 0xa194e217'e87f47cb'1e12604b'6d4132ef_u128},
-        {Sign::NEG, -145, 0x8a7f9f63'0e888add'cf340d2a'cb9b92a9_u128},
-        {Sign::NEG, -146, 0xe6d4b7eb'1537c8ae'0dc5e49f'bde3c520_u128},
-        {Sign::NEG, -146, 0xb8aa2f9e'b95b9332'0c074c95'57c01188_u128},
-        {Sign::NEG, -146, 0x8a7fa5e1'09656009'f0f82818'ff9b654f_u128},
-        {Sign::NEG, -147, 0xb8aa3564'0a7c33eb'd4cd6120'78bbe9b0_u128},
-        {Sign::NEG, -148, 0xb8aa3846'b33aaecf'f08cf68f'42e09fa0_u128},
-        {Sign::POS, 0, 0_u128},
-        {Sign::POS, -148, 0xb8aa3e0c'0513f9b1'68bd0fac'df0ddaaf_u128},
-        {Sign::POS, -147, 0xb8aa40ee'ae2ec9b3'192af653'dd41575b_u128},
-        {Sign::POS, -146, 0x8a7fb2dd'018e4892'3b5c8984'2e540a51_u128},
-        {Sign::POS, -146, 0xb8aa46b4'00c0bee3'34ad8ebd'd8b2750c_u128},
-        {Sign::POS, -146, 0xe6d4dbfc'54c5dd1b'70b12bd6'98e5be74_u128},
-        {Sign::POS, -145, 0x8a7fb95a'feda5c46'08c7e424'efbd90e1_u128},
-        {Sign::POS, -145, 0xa1950570'7dd23344'31b8eba7'74a1de77_u128},
-        {Sign::POS, -145, 0xb8aa523e'a755fe32'ee400e8c'68838733_u128},
-        {Sign::POS, -145, 0xcfbf9fc5'7b7147be'0e71fa0b'5603bc2f_u128},
-        {Sign::POS, -145, 0xe6d4ee04'fa2f9a92'7763c919'd8ac65f1_u128},
-        {Sign::POS, -145, 0xfdea3cfd'239c815e'232b270b'b6046ec1_u128},
-        {Sign::POS, -144, 0x8a7fc656'fbe1c368'106f3919'7e068972_u128},
-        {Sign::POS, -144, 0x960a6e8b'bb581acc'4a4a6f40'12941bd9_u128},
-        {Sign::POS, -144, 0xa195171c'd0370c34'5bb34c11'20b3e54b_u128},
-        {Sign::POS, -144, 0xad1fc00a'3a845cf9'6bb67313'92a3147a_u128},
-        {Sign::POS, -144, 0xb8aa6953'fa45d275'2be1268d'cee3c8fc_u128},
-        {Sign::POS, -144, 0xc43512fa'0f813201'd84158d5'd50251a9_u128},
-        {Sign::POS, -144, 0xcfbfbcfc'7a3c40fa'3765bda1'5d0ef0fa_u128},
-        {Sign::POS, -144, 0xdb4a675b'3a7cc4b9'9a5ddb55'f9cc27d9_u128},
-        {Sign::POS, -144, 0xe6d51216'5048829b'dcba1c59'3d918775_u128},
-        {Sign::POS, -144, 0xf25fbd2d'bba53ffd'648be060'e1e30a95_u128},
-        {Sign::POS, -144, 0xfdea68a1'7c98c23b'22658dc2'f1bcf6e8_u128},
-        {Sign::POS, -143, 0x84ba8a38'c9946759'48ad5162'fb4a236e_u128},
-        {Sign::POS, -143, 0x8a7fe04e'ffad9560'db7fe378'9405ce3a_u128},
-        {Sign::POS, -143, 0x90453693'609acde3'91b56e2e'4f2e5ed8_u128},
-        {Sign::POS, -143, 0x960a8d05'ec5ef390'f8998880'c3bb4d76_u128},
-        {Sign::POS, -143, 0x9bcfe3a6'a2fce918'e2b87805'2f67efee_u128},
-        {Sign::POS, -143, 0xa1953a75'8477912b'67df3991'93f707c0_u128},
-        {Sign::POS, -143, 0xa75a9172'90d1ce78'e51b89e4'd5d095e1_u128},
-        {Sign::POS, -143, 0xad1fe89d'c80e83b1'fcbbee4e'dbf9f47d_u128},
-        {Sign::POS, -143, 0xb2e53ff7'2a309387'964fbd58'b168371b_u128},
-        {Sign::POS, -143, 0xb8aa977e'b73ae0aa'dea7276c'a7acd135_u128},
-        {Sign::POS, -143, 0xbe6fef34'6f304dcd'47d33f7e'7afc83a6_u128},
-        {Sign::POS, -143, 0xc4354718'5213bda0'892603b3'77909123_u128},
-        {Sign::POS, -143, 0xc9fa9f2a'5fe812d6'9f32660a'a06239fb_u128},
-        {Sign::POS, -143, 0xcfbff76a'98b03021'cbcc5504'd7407f6c_u128},
-        {Sign::POS, -143, 0xd5854fd8'fc6ef834'9608c44d'06402ebe_u128},
-        {Sign::POS, -143, 0xdb4aa875'8b274dc1'ca3db560'4a863477_u128},
-        {Sign::POS, -143, 0xe1100140'44dc137c'7a024036'206c37d6_u128},
-        {Sign::POS, -143, 0xe6d55a39'29902c17'fc2e9be8'90ff7ee3_u128},
-        {Sign::POS, -143, 0xec9ab360'39467a47'ecdc275c'60da1b53_u128},
-        {Sign::POS, -143, 0xf2600cb5'7401e0c0'2d6571e9'4056607f_u128},
-        {Sign::POS, -143, 0xf8256638'd9c54234'e4664401'fd1ca2a7_u128},
-        {Sign::POS, -143, 0xfdeabfea'6a93815a'7dbba7dc'b50b3fd7_u128},
-        {Sign::POS, -142, 0x81d80ce5'1337c072'd541f90d'853c794b_u128},
-        {Sign::POS, -142, 0x84bab9ec'06ae11c5'b08f6539'2ce8b75b_u128},
-        {Sign::POS, -142, 0x879d670a'0fae2600'6e969a29'f8462436_u128},
-        {Sign::POS, -142, 0x8a80143f'2e396e7d'cfc8cbca'a2bf130c_u128},
-        {Sign::POS, -142, 0x8d62c18b'62515c98'b737e48c'19421e68_u128},
-        {Sign::POS, -142, 0x90456eee'abf761ac'2a9689b9'97c50c0b_u128},
-        {Sign::POS, -142, 0x93281c69'0b2cef13'52381fcc'c774d66b_u128},
-        {Sign::POS, -142, 0x960ac9fa'7ff37629'7910cec1'dd92dc10_u128},
-        {Sign::POS, -142, 0x98ed77a3'0a4c684a'0cb5866b'baff34cb_u128},
-        {Sign::POS, -142, 0x9bd02562'aa3936d0'9d5c02c8'0c702d11_u128},
-        {Sign::POS, -142, 0x9eb2d339'5fbb5318'dddad053'6b56e775_u128},
-        {Sign::POS, -142, 0xa1958127'2ad42e7e'a3a9505d'7f71247a_u128},
-        {Sign::POS, -142, 0xa4782f2c'0b853a5d'e6dfbd5d'210830d7_u128},
-        {Sign::POS, -142, 0xa75add48'01cfe812'c2372f44'7bdcfa45_u128},
-        {Sign::POS, -142, 0xaa3d8b7b'0db5a8f9'73099fd5'32c14b05_u128},
-        {Sign::POS, -142, 0xad2039c5'2f37ee6e'5951eef4'83de2c37_u128},
-        {Sign::POS, -142, 0xb002e826'665829cd'f7abe6ff'6da76f1e_u128},
-        {Sign::POS, -142, 0xb2e5969e'b317cc74'f354411e'd47c5d7b_u128},
-        {Sign::POS, -142, 0xb5c8452e'157847c0'1428a99b'a8f5911f_u128},
-        {Sign::POS, -142, 0xb8aaf3d4'8d7b0d0c'44a7c433'0edff2c8_u128},
-        {Sign::POS, -142, 0xbb8da292'1b218db6'91f1306a'84e4e07b_u128},
-        {Sign::POS, -142, 0xbe705166'be6d3b1c'2bc58de4'0cdf7b6a_u128},
-        {Sign::POS, -142, 0xc1530052'775f869a'648680b2'54df1d99_u128},
-        {Sign::POS, -142, 0xc435af55'45f9e18e'b136b5ac'e0d6f74d_u128},
-        {Sign::POS, -142, 0xc7185e6f'2a3dbd56'a979e6c4'34fad480_u128},
-        {Sign::POS, -142, 0xc9fb0da0'242c8b50'0794df56'00c90a5a_u128},
-        {Sign::POS, -142, 0xccddbce8'33c7bcd8'a86d8081'4ac18cf1_u128},
-        {Sign::POS, -142, 0xcfc06c47'5910c34e'8b8ac57a'9cca2d56_u128},
-        {Sign::POS, -142, 0xd2a31bbd'9409100f'd314c7e0'3140001f_u128},
-        {Sign::POS, -142, 0xd585cb4a'e4b2147a'c3d4c40e'20b5ec89_u128},
-        {Sign::POS, -142, 0xd8687aef'4b0d41ed'c5351d72'9060644e_u128},
-        {Sign::POS, -142, 0xdb4b2aaa'c71c09c7'614162e1'e12e445d_u128},
-        {Sign::POS, -142, 0xde2dda7d'58dfdd66'44a652ea'df8ede85_u128},
-        {Sign::POS, -142, 0xe1108a67'005a2e29'3eb1e02a'f3e52c3c_u128},
-        {Sign::POS, -142, 0xe3f33a67'bd8c6d6f'415335a2'53a82aa2_u128},
-        {Sign::POS, -142, 0xe6d5ea7f'90780c97'611abb08'33305fe1_u128},
+        {Sign::NEG, -142, MType({0x26f2c63c0827ccbb, 0xe6d3a96b978fc16e})},
+        {Sign::NEG, -142, MType({0x4b56fe667c8ec091, 0xe3f107a9fbfc50ca})},
+        {Sign::NEG, -142, MType({0x647d76181aec10fc, 0xe10e65d14b937265})},
+        {Sign::NEG, -142, MType({0x99e8f4d5379eca79, 0xde2bc3e18653b4f5})},
+        {Sign::NEG, -142, MType({0xf07da89990c20623, 0xdb4921daac3ba730})},
+        {Sign::NEG, -142, MType({0x4a8121848531851a, 0xd8667fbcbd49d7cd})},
+        {Sign::NEG, -142, MType({0x679a4d854ae13619, 0xd583dd87b97cd580})},
+        {Sign::NEG, -142, MType({0xe4d174072487a514, 0xd2a13b3ba0d32eff})},
+        {Sign::NEG, -142, MType({0x3c90319d969b54be, 0xcfbe98d8734b7301})},
+        {Sign::NEG, -142, MType({0xc6a173b09ba301e6, 0xccdbf65e30e43039})},
+        {Sign::NEG, -142, MType({0xb8317428d7d8d06b, 0xc9f953ccd99bf55e})},
+        {Sign::NEG, -142, MType({0x23cdb51bcc2061cd, 0xc716b1246d715125})},
+        {Sign::NEG, -142, MType({0xf964fc78084fd515, 0xc4340e64ec62d241})},
+        {Sign::NEG, -142, MType({0x6474fb15ccbb015, 0xc1516b8e566f076a})},
+        {Sign::NEG, -142, MType({0xf525ef6d0b75b1c3, 0xbe6ec8a0ab947f51})},
+        {Sign::NEG, -142, MType({0x4e13532df7ee8da7, 0xbb8c259bebd1c8ae})},
+        {Sign::NEG, -142, MType({0x76832500d72a9027, 0xb8a9828017257233})},
+        {Sign::NEG, -142, MType({0xb14a3d285e592ba0, 0xb5c6df4d2d8e0a95})},
+        {Sign::NEG, -142, MType({0x1e9e9dc9711f6e20, 0xb2e43c032f0a2089})},
+        {Sign::NEG, -142, MType({0xbc176e974f255fac, 0xb00198a21b9842c1})},
+        {Sign::NEG, -142, MType({0x64acf87fc0f648e6, 0xad1ef529f336fff3})},
+        {Sign::NEG, -142, MType({0xd0b8a1574433e1f8, 0xaa3c519ab5e4e6d1})},
+        {Sign::NEG, -142, MType({0x95f4e785371c69a9, 0xa759adf463a08610})},
+        {Sign::NEG, -142, MType({0x277d5db00363a46f, 0xa4770a36fc686c63})},
+        {Sign::NEG, -142, MType({0xd5cea669485ec36c, 0xa1946662803b287c})},
+        {Sign::NEG, -142, MType({0xcec66fda04833322, 0x9eb1c276ef174910})},
+        {Sign::NEG, -142, MType({0x1da36f6ebe3851db, 0x9bcf1e7448fb5cd2})},
+        {Sign::NEG, -142, MType({0xab055d83abfc0d82, 0x98ec7a5a8de5f273})},
+        {Sign::NEG, -142, MType({0x3cecf110dbda68e9, 0x9609d629bdd598a8})},
+        {Sign::NEG, -142, MType({0x76bbdb565a37e84b, 0x932731e1d8c8de22})},
+        {Sign::NEG, -142, MType({0xd934c38857eee4f3, 0x90448d82debe5194})},
+        {Sign::NEG, -142, MType({0xc27b427b4fbfc7db, 0x8d61e90ccfb481b1})},
+        {Sign::NEG, -142, MType({0x6e13de502b142b39, 0x8a7f447faba9fd2b})},
+        {Sign::NEG, -142, MType({0xf4e406206614e2ba, 0x879c9fdb729d52b3})},
+        {Sign::NEG, -142, MType({0x4d320daa3312ea6c, 0x84b9fb20248d10fd})},
+        {Sign::NEG, -142, MType({0x4aa528fc9d433c1a, 0x81d7564dc177c6b9})},
+        {Sign::NEG, -143, MType({0x3c8ad047559b1622, 0xfde962c892b80533})},
+        {Sign::NEG, -143, MType({0xacf765a8fc5bcc31, 0xf82418c77870a69f})},
+        {Sign::NEG, -143, MType({0xbe238832edd27f20, 0xf25ece9834168f1a})},
+        {Sign::NEG, -143, MType({0x2644bfca329b708, 0xec99843ac5a6dc07})},
+        {Sign::NEG, -143, MType({0xc6d05a788e614744, 0xe6d439af2d1eaac6})},
+        {Sign::NEG, -143, MType({0x133fe9cc57a8c1d0, 0xe10eeef56a7b18bc})},
+        {Sign::NEG, -143, MType({0xaa4cb429195fb5dd, 0xdb49a40d7db94348})},
+        {Sign::NEG, -143, MType({0x951ef239abbb959, 0xd58458f766d647ce})},
+        {Sign::NEG, -143, MType({0x686c430c89143d35, 0xcfbf0db325cf43ad})},
+        {Sign::NEG, -143, MType({0xba79c248afd42c12, 0xc9f9c240baa15447})},
+        {Sign::NEG, -143, MType({0xad19e0a92f115327, 0xc43476a0254996fd})},
+        {Sign::NEG, -143, MType({0xa8ad6ac3b0c99520, 0xbe6f2ad165c5292f})},
+        {Sign::NEG, -143, MType({0xd0567d4a9cc5e6a1, 0xb8a9ded47c11283d})},
+        {Sign::NEG, -143, MType({0x1f87c654b231443, 0xb2e492a9682ab188})},
+        {Sign::NEG, -143, MType({0xd6380b08358051bc, 0xad1f46502a0ee26d})},
+        {Sign::NEG, -143, MType({0xa07b024d26d391f6, 0xa759f9c8c1bad84e})},
+        {Sign::NEG, -143, MType({0x6ee868cb69e3a7d8, 0xa194ad132f2bb089})},
+        {Sign::NEG, -143, MType({0xa6869eff6682f73, 0x9bcf602f725e887d})},
+        {Sign::NEG, -143, MType({0xf6a44d559ccf3f61, 0x960a131d8b507d87})},
+        {Sign::NEG, -143, MType({0x72066e1d30a8e210, 0x9044c5dd79fead08})},
+        {Sign::NEG, -143, MType({0x75ba3245b1b856af, 0x8a7f786f3e66345c})},
+        {Sign::NEG, -143, MType({0xb5ac020473ab198f, 0x84ba2ad2d88430e1})},
+        {Sign::NEG, -144, MType({0x41127e3a88eb6741, 0xfde9ba1090ab7feb})},
+        {Sign::NEG, -144, MType({0xbf80787522aca1c4, 0xf25f1e1f1baffdea})},
+        {Sign::NEG, -144, MType({0xaf00688b14fa3adc, 0xe6d481d15210167b})},
+        {Sign::NEG, -144, MType({0x4d72837c8ab4d1e5, 0xdb49e52733c60457})},
+        {Sign::NEG, -144, MType({0x4e38ac27bb252090, 0xcfbf4820c0cc0236})},
+        {Sign::NEG, -144, MType({0xda3661f9292f59e8, 0xc434aabdf91c4ad0})},
+        {Sign::NEG, -144, MType({0x8fd0af9bdfd21488, 0xb8aa0cfedcb118de})},
+        {Sign::NEG, -144, MType({0x82ee19a9abf0bfa5, 0xad1f6ee36b84a716})},
+        {Sign::NEG, -144, MType({0x3cf68d5b5369a251, 0xa194d06ba591302f})},
+        {Sign::NEG, -144, MType({0xbcd34f38c977647e, 0x960a31978ad0eede})},
+        {Sign::NEG, -144, MType({0x76eee9c9605e2143, 0x8a7f92671b3e1dda})},
+        {Sign::NEG, -145, MType({0xaa6a3887f0c803ab, 0xfde9e5b4ada5efae})},
+        {Sign::NEG, -145, MType({0x6e25927e582ac191, 0xe6d4a5e27b136f13})},
+        {Sign::NEG, -145, MType({0xe2ebcac2f3a8e9eb, 0xcfbf65579eb92f4a})},
+        {Sign::NEG, -145, MType({0x9d9acc22d5690751, 0xb8aa2414188ba5bb})},
+        {Sign::NEG, -145, MType({0x1e12604b6d4132ef, 0xa194e217e87f47cb})},
+        {Sign::NEG, -145, MType({0xcf340d2acb9b92a9, 0x8a7f9f630e888add})},
+        {Sign::NEG, -146, MType({0xdc5e49fbde3c520, 0xe6d4b7eb1537c8ae})},
+        {Sign::NEG, -146, MType({0xc074c9557c01188, 0xb8aa2f9eb95b9332})},
+        {Sign::NEG, -146, MType({0xf0f82818ff9b654f, 0x8a7fa5e109656009})},
+        {Sign::NEG, -147, MType({0xd4cd612078bbe9b0, 0xb8aa35640a7c33eb})},
+        {Sign::NEG, -148, MType({0xf08cf68f42e09fa0, 0xb8aa3846b33aaecf})},
+        {Sign::POS, 0, MType({0x0, 0x0})},
+        {Sign::POS, -148, MType({0x68bd0facdf0ddaaf, 0xb8aa3e0c0513f9b1})},
+        {Sign::POS, -147, MType({0x192af653dd41575b, 0xb8aa40eeae2ec9b3})},
+        {Sign::POS, -146, MType({0x3b5c89842e540a51, 0x8a7fb2dd018e4892})},
+        {Sign::POS, -146, MType({0x34ad8ebdd8b2750c, 0xb8aa46b400c0bee3})},
+        {Sign::POS, -146, MType({0x70b12bd698e5be74, 0xe6d4dbfc54c5dd1b})},
+        {Sign::POS, -145, MType({0x8c7e424efbd90e1, 0x8a7fb95afeda5c46})},
+        {Sign::POS, -145, MType({0x31b8eba774a1de77, 0xa19505707dd23344})},
+        {Sign::POS, -145, MType({0xee400e8c68838733, 0xb8aa523ea755fe32})},
+        {Sign::POS, -145, MType({0xe71fa0b5603bc2f, 0xcfbf9fc57b7147be})},
+        {Sign::POS, -145, MType({0x7763c919d8ac65f1, 0xe6d4ee04fa2f9a92})},
+        {Sign::POS, -145, MType({0x232b270bb6046ec1, 0xfdea3cfd239c815e})},
+        {Sign::POS, -144, MType({0x106f39197e068972, 0x8a7fc656fbe1c368})},
+        {Sign::POS, -144, MType({0x4a4a6f4012941bd9, 0x960a6e8bbb581acc})},
+        {Sign::POS, -144, MType({0x5bb34c1120b3e54b, 0xa195171cd0370c34})},
+        {Sign::POS, -144, MType({0x6bb6731392a3147a, 0xad1fc00a3a845cf9})},
+        {Sign::POS, -144, MType({0x2be1268dcee3c8fc, 0xb8aa6953fa45d275})},
+        {Sign::POS, -144, MType({0xd84158d5d50251a9, 0xc43512fa0f813201})},
+        {Sign::POS, -144, MType({0x3765bda15d0ef0fa, 0xcfbfbcfc7a3c40fa})},
+        {Sign::POS, -144, MType({0x9a5ddb55f9cc27d9, 0xdb4a675b3a7cc4b9})},
+        {Sign::POS, -144, MType({0xdcba1c593d918775, 0xe6d512165048829b})},
+        {Sign::POS, -144, MType({0x648be060e1e30a95, 0xf25fbd2dbba53ffd})},
+        {Sign::POS, -144, MType({0x22658dc2f1bcf6e8, 0xfdea68a17c98c23b})},
+        {Sign::POS, -143, MType({0x48ad5162fb4a236e, 0x84ba8a38c9946759})},
+        {Sign::POS, -143, MType({0xdb7fe3789405ce3a, 0x8a7fe04effad9560})},
+        {Sign::POS, -143, MType({0x91b56e2e4f2e5ed8, 0x90453693609acde3})},
+        {Sign::POS, -143, MType({0xf8998880c3bb4d76, 0x960a8d05ec5ef390})},
+        {Sign::POS, -143, MType({0xe2b878052f67efee, 0x9bcfe3a6a2fce918})},
+        {Sign::POS, -143, MType({0x67df399193f707c0, 0xa1953a758477912b})},
+        {Sign::POS, -143, MType({0xe51b89e4d5d095e1, 0xa75a917290d1ce78})},
+        {Sign::POS, -143, MType({0xfcbbee4edbf9f47d, 0xad1fe89dc80e83b1})},
+        {Sign::POS, -143, MType({0x964fbd58b168371b, 0xb2e53ff72a309387})},
+        {Sign::POS, -143, MType({0xdea7276ca7acd135, 0xb8aa977eb73ae0aa})},
+        {Sign::POS, -143, MType({0x47d33f7e7afc83a6, 0xbe6fef346f304dcd})},
+        {Sign::POS, -143, MType({0x892603b377909123, 0xc43547185213bda0})},
+        {Sign::POS, -143, MType({0x9f32660aa06239fb, 0xc9fa9f2a5fe812d6})},
+        {Sign::POS, -143, MType({0xcbcc5504d7407f6c, 0xcfbff76a98b03021})},
+        {Sign::POS, -143, MType({0x9608c44d06402ebe, 0xd5854fd8fc6ef834})},
+        {Sign::POS, -143, MType({0xca3db5604a863477, 0xdb4aa8758b274dc1})},
+        {Sign::POS, -143, MType({0x7a024036206c37d6, 0xe110014044dc137c})},
+        {Sign::POS, -143, MType({0xfc2e9be890ff7ee3, 0xe6d55a3929902c17})},
+        {Sign::POS, -143, MType({0xecdc275c60da1b53, 0xec9ab36039467a47})},
+        {Sign::POS, -143, MType({0x2d6571e94056607f, 0xf2600cb57401e0c0})},
+        {Sign::POS, -143, MType({0xe4664401fd1ca2a7, 0xf8256638d9c54234})},
+        {Sign::POS, -143, MType({0x7dbba7dcb50b3fd7, 0xfdeabfea6a93815a})},
+        {Sign::POS, -142, MType({0xd541f90d853c794b, 0x81d80ce51337c072})},
+        {Sign::POS, -142, MType({0xb08f65392ce8b75b, 0x84bab9ec06ae11c5})},
+        {Sign::POS, -142, MType({0x6e969a29f8462436, 0x879d670a0fae2600})},
+        {Sign::POS, -142, MType({0xcfc8cbcaa2bf130c, 0x8a80143f2e396e7d})},
+        {Sign::POS, -142, MType({0xb737e48c19421e68, 0x8d62c18b62515c98})},
+        {Sign::POS, -142, MType({0x2a9689b997c50c0b, 0x90456eeeabf761ac})},
+        {Sign::POS, -142, MType({0x52381fccc774d66b, 0x93281c690b2cef13})},
+        {Sign::POS, -142, MType({0x7910cec1dd92dc10, 0x960ac9fa7ff37629})},
+        {Sign::POS, -142, MType({0xcb5866bbaff34cb, 0x98ed77a30a4c684a})},
+        {Sign::POS, -142, MType({0x9d5c02c80c702d11, 0x9bd02562aa3936d0})},
+        {Sign::POS, -142, MType({0xdddad0536b56e775, 0x9eb2d3395fbb5318})},
+        {Sign::POS, -142, MType({0xa3a9505d7f71247a, 0xa19581272ad42e7e})},
+        {Sign::POS, -142, MType({0xe6dfbd5d210830d7, 0xa4782f2c0b853a5d})},
+        {Sign::POS, -142, MType({0xc2372f447bdcfa45, 0xa75add4801cfe812})},
+        {Sign::POS, -142, MType({0x73099fd532c14b05, 0xaa3d8b7b0db5a8f9})},
+        {Sign::POS, -142, MType({0x5951eef483de2c37, 0xad2039c52f37ee6e})},
+        {Sign::POS, -142, MType({0xf7abe6ff6da76f1e, 0xb002e826665829cd})},
+        {Sign::POS, -142, MType({0xf354411ed47c5d7b, 0xb2e5969eb317cc74})},
+        {Sign::POS, -142, MType({0x1428a99ba8f5911f, 0xb5c8452e157847c0})},
+        {Sign::POS, -142, MType({0x44a7c4330edff2c8, 0xb8aaf3d48d7b0d0c})},
+        {Sign::POS, -142, MType({0x91f1306a84e4e07b, 0xbb8da2921b218db6})},
+        {Sign::POS, -142, MType({0x2bc58de40cdf7b6a, 0xbe705166be6d3b1c})},
+        {Sign::POS, -142, MType({0x648680b254df1d99, 0xc1530052775f869a})},
+        {Sign::POS, -142, MType({0xb136b5ace0d6f74d, 0xc435af5545f9e18e})},
+        {Sign::POS, -142, MType({0xa979e6c434fad480, 0xc7185e6f2a3dbd56})},
+        {Sign::POS, -142, MType({0x794df5600c90a5a, 0xc9fb0da0242c8b50})},
+        {Sign::POS, -142, MType({0xa86d80814ac18cf1, 0xccddbce833c7bcd8})},
+        {Sign::POS, -142, MType({0x8b8ac57a9cca2d56, 0xcfc06c475910c34e})},
+        {Sign::POS, -142, MType({0xd314c7e03140001f, 0xd2a31bbd9409100f})},
+        {Sign::POS, -142, MType({0xc3d4c40e20b5ec89, 0xd585cb4ae4b2147a})},
+        {Sign::POS, -142, MType({0xc5351d729060644e, 0xd8687aef4b0d41ed})},
+        {Sign::POS, -142, MType({0x614162e1e12e445d, 0xdb4b2aaac71c09c7})},
+        {Sign::POS, -142, MType({0x44a652eadf8ede85, 0xde2dda7d58dfdd66})},
+        {Sign::POS, -142, MType({0x3eb1e02af3e52c3c, 0xe1108a67005a2e29})},
+        {Sign::POS, -142, MType({0x415335a253a82aa2, 0xe3f33a67bd8c6d6f})},
+        {Sign::POS, -142, MType({0x611abb0833305fe1, 0xe6d5ea7f90780c97})},
     },
     // -log2(r) for the fourth step, generated by SageMath with:
     //
@@ -687,139 +684,139 @@ const LogRR LOG2_TABLE = {
     //   r = 2^-28 * round( 2^28 / (1 + i*2^(-28)) );
     //   s, m, e = RealField(128)(r).log2().sign_mantissa_exponent();
     //   print("{Sign::NEG," if (s == 1) else "{Sign::POS,", e, ",
-    //         format_hex(m), "},");
+    //         MType({", hex(m % 2^64), ",", hex((m >> 64) % 2^64), "})},");
     /* .step_4 = */
     {
-        {Sign::NEG, -149, 0xbb8ce299'0b5d0b90'ef1bffe5'65ce0a46_u128},
-        {Sign::NEG, -149, 0xb8aa39b8'07a576e4'bea32445'60ca3d99_u128},
-        {Sign::NEG, -149, 0xb5c790d6'd5c354df'8b91f71c'eefa31a2_u128},
-        {Sign::NEG, -149, 0xb2e4e7f5'75b6a57b'9096e3d6'84001c0e_u128},
-        {Sign::NEG, -149, 0xb0023f13'e77f68b3'086054c7'94367f36_u128},
-        {Sign::NEG, -149, 0xad1f9632'2b1d9e80'2d9cb330'94afe4de_u128},
-        {Sign::NEG, -149, 0xaa3ced50'409146dd'3afa673c'fb3698f3_u128},
-        {Sign::NEG, -149, 0xa75a446e'27da61c4'6b27d803'3e4c6450_u128},
-        {Sign::NEG, -149, 0xa4779b8b'e0f8ef2f'f8d36b84'd52a477b_u128},
-        {Sign::NEG, -149, 0xa194f2a9'6becef1a'1eab86ae'37c03565_u128},
-        {Sign::NEG, -149, 0x9eb249c6'c8b6617d'175e8d56'deb4ce2c_u128},
-        {Sign::NEG, -149, 0x9bcfa0e3'f7554653'1d9ae241'436519da_u128},
-        {Sign::NEG, -149, 0x98ecf800'f7c99d96'6c0ee71a'dfe44325_u128},
-        {Sign::NEG, -149, 0x960a4f1d'ca136741'3d68fc7c'2efb522f_u128},
-        {Sign::NEG, -149, 0x9327a63a'6e32a34d'cc5781e8'ac28e749_u128},
-        {Sign::NEG, -149, 0x9044fd56'e42751b6'5388d5ce'd3a0f5af_u128},
-        {Sign::NEG, -149, 0x8d625473'2bf17275'0dab5588'224c7e4a_u128},
-        {Sign::NEG, -149, 0x8a7fab8f'45910584'356d5d59'15c94a70_u128},
-        {Sign::NEG, -149, 0x879d02ab'31060ade'057d4871'2c69a6a7_u128},
-        {Sign::NEG, -149, 0x84ba59c6'ee50827c'b88970ea'e5341d60_u128},
-        {Sign::NEG, -149, 0x81d7b0e2'7d706c5a'89402fcb'bfe331bb_u128},
-        {Sign::NEG, -150, 0xfdea0ffb'bccb90e3'649fba08'79ca348b_u128},
-        {Sign::NEG, -150, 0xf824be32'22612d78'dccd9edf'bab6f777_u128},
-        {Sign::NEG, -150, 0xf25f6c68'2ba1ae69'f066b9aa'4636478e_u128},
-        {Sign::NEG, -150, 0xec9a1a9d'd88d13ab'14c7b3cb'21578781_u128},
-        {Sign::NEG, -150, 0xe6d4c8d3'29235d30'bf4d347b'528f56e1_u128},
-        {Sign::NEG, -150, 0xe10f7708'1d648aef'6553e0c9'e1b70799_u128},
-        {Sign::NEG, -150, 0xdb4a253c'b5509cdb'7c385b9b'd80c1375_u128},
-        {Sign::NEG, -150, 0xd584d370'f0e792e9'795745ac'402f919d_u128},
-        {Sign::NEG, -150, 0xcfbf81a4'd0296d0d'd20d3d8c'2625ac1b_u128},
-        {Sign::NEG, -150, 0xc9fa2fd8'53162b3c'fbb6dfa2'97551554_u128},
-        {Sign::NEG, -150, 0xc434de0b'79adcd6b'6bb0c62c'a2867d91_u128},
-        {Sign::NEG, -150, 0xbe6f8c3e'43f0538d'9757893d'57e40877_u128},
-        {Sign::NEG, -150, 0xb8aa3a70'b1ddbd97'f407bebd'c8f8c28e_u128},
-        {Sign::NEG, -150, 0xb2e4e8a2'c3760b7e'f71dfa6d'08b016be_u128},
-        {Sign::NEG, -150, 0xad1f96d4'78b93d37'15f6cde0'2b5543ce_u128},
-        {Sign::NEG, -150, 0xa75a4505'd1a752b4'c5eec882'4692d1e9_u128},
-        {Sign::NEG, -150, 0xa194f336'ce404bec'7c627794'7172081a_u128},
-        {Sign::NEG, -150, 0x9bcfa167'6e8428d2'aeae662d'c45a61ce_u128},
-        {Sign::NEG, -150, 0x960a4f97'b272e95b'd22f1d3b'59110455_u128},
-        {Sign::NEG, -150, 0x9044fdc7'9a0c8d7c'5c412380'4ab83462_u128},
-        {Sign::NEG, -150, 0x8a7fabf7'25511528'c240fd95'b5cecb89_u128},
-        {Sign::NEG, -150, 0x84ba5a26'54408055'798b2dea'b82fadc4_u128},
-        {Sign::NEG, -151, 0xfdea10aa'4db59ded'eef86988'e2227ddb_u128},
-        {Sign::NEG, -151, 0xf25f6d07'3a400203'62e1207c'0209b090_u128},
-        {Sign::NEG, -151, 0xe6d4c963'6e202cd4'39897891'13ec7bee_u128},
-        {Sign::NEG, -151, 0xdb4a25be'e9561e49'5daa6556'5e562909_u128},
-        {Sign::NEG, -151, 0xcfbf8219'abe1d64b'b9fcd606'2a84acbd_u128},
-        {Sign::NEG, -151, 0xc434de73'b5c354c4'3939b586'c46792b3_u128},
-        {Sign::NEG, -151, 0xb8aa3acd'06fa999b'c619ea6a'7a9ee85e_u128},
-        {Sign::NEG, -151, 0xad1f9725'9f87a4bb'4b5656ef'9e7a27fd_u128},
-        {Sign::NEG, -151, 0xa194f37d'7f6a760b'b3a7d900'83f7239c_u128},
-        {Sign::NEG, -151, 0x960a4fd4'a6a30d75'e9c74a33'81c0f016_u128},
-        {Sign::NEG, -151, 0x8a7fac2b'15316ae2'd86d7fca'f12ed012_u128},
-        {Sign::NEG, -152, 0xfdea1101'962b1c76'd4a6956a'5c863e0f_u128},
-        {Sign::NEG, -152, 0xe6d4c9ab'909eeed1'1462ef19'2f547877_u128},
-        {Sign::NEG, -152, 0xcfbf8254'19be4ca6'45819d2f'1d72eb8b_u128},
-        {Sign::NEG, -152, 0xb8aa3afb'318935c8'3d742790'eedbe719_u128},
-        {Sign::NEG, -152, 0xa194f3a0'd7ffaa08'd1ac0d7b'70d74492_u128},
-        {Sign::NEG, -152, 0x8a7fac45'0d21a939'd79ac583'75f83d0c_u128},
-        {Sign::NEG, -153, 0xe6d4c9cf'a1de665a'49637b2b'ac367e87_u128},
-        {Sign::NEG, -153, 0xb8aa3b12'46d08f69'1cc4b5ee'dcc78b35_u128},
-        {Sign::NEG, -153, 0x8a7fac52'0919cd43'd43bf48a'42745836_u128},
-        {Sign::NEG, -154, 0xb8aa3b1d'd1743f1c'3557bdcf'592619eb_u128},
-        {Sign::NEG, -155, 0xb8aa3b23'96c617ae'6bdc2e83'd3ebb0c4_u128},
-        {Sign::POS, 0, 0_u128},
-        {Sign::POS, -155, 0xb8aa3b2f'2169ca44'2d5b4005'0e44e8ab_u128},
-        {Sign::POS, -154, 0xb8aa3b34'e6bba447'b8560371'b8f04afe_u128},
-        {Sign::POS, -153, 0x8a7fac6c'010a1f14'c79a43cc'c70459cc_u128},
-        {Sign::POS, -153, 0xb8aa3b40'715f59c0'22c25632'f519f77f_u128},
-        {Sign::POS, -153, 0xe6d4ca17'c45d8282'42c10a31'4e35fb9e_u128},
-        {Sign::POS, -152, 0x8a7fac78'fd024cdb'be5a212e'd7b949e4_u128},
-        {Sign::POS, -152, 0xa194f3e7'892a4fde'12dcf94e'f5c5b918_u128},
-        {Sign::POS, -152, 0xb8aa3b57'86a6ca76'49781013'e57110ce_u128},
-        {Sign::POS, -152, 0xcfbf82c8'f577bcd2'8cba70c0'85c12cb3_u128},
-        {Sign::POS, -152, 0xe6d4ca3b'd59d2721'07332f3f'b09328b8_u128},
-        {Sign::POS, -152, 0xfdea11b0'2717098f'e3716824'3a9d8b14_u128},
-        {Sign::POS, -151, 0x8a7fac92'f4f2b226'a6022054'79b93722_u128},
-        {Sign::POS, -151, 0x960a504e'8f041bc3'b5bd7358'52c0d583_u128},
-        {Sign::POS, -151, 0xa194f40a'e1bfc1b6'36324863'0b0d812d_u128},
-        {Sign::POS, -151, 0xad1f97c7'ed25a415'3ca83f0e'02b823c0_u128},
-        {Sign::POS, -151, 0xb8aa3b85'b135c2f7'de66fb46'974bc4fd_u128},
-        {Sign::POS, -151, 0xc434df44'2df01e75'30b6254e'23c69fc2_u128},
-        {Sign::POS, -151, 0xcfbf8303'6354b6a4'48dd69ba'009b370c_u128},
-        {Sign::POS, -151, 0xdb4a26c3'51638b9c'3c247973'83b16af5_u128},
-        {Sign::POS, -151, 0xe6d4ca83'f81c9d74'1fd309b8'00678db7_u128},
-        {Sign::POS, -151, 0xf25f6e45'577fec43'0930d418'c79378a3_u128},
-        {Sign::POS, -151, 0xfdea1207'6f8d7820'0d85967b'2783a12c_u128},
-        {Sign::POS, -150, 0x84ba5ae5'2022a091'210c898c'360016ed_u128},
-        {Sign::POS, -150, 0x8a7facc6'e4d3a3b0'5e19883e'ef2605ab_u128},
-        {Sign::POS, -150, 0x9044fea9'05d9c579'488dacc6'629300ae_u128},
-        {Sign::POS, -150, 0x960a508b'833505f7'6b0cdebd'3264e3e3_u128},
-        {Sign::POS, -150, 0x9bcfa26e'5ce56536'503b07e7'ff788dc2_u128},
-        {Sign::POS, -150, 0xa194f451'92eae341'82bc1435'696a69d1_u128},
-        {Sign::POS, -150, 0xa75a4635'25458024'8d33f1be'0e96fb1f_u128},
-        {Sign::POS, -150, 0xad1f9819'13f53bea'fa4690c4'8c1b66c9_u128},
-        {Sign::POS, -150, 0xb2e4e9fd'5efa16a0'5497e3b5'7dd5fe75_u128},
-        {Sign::POS, -150, 0xb8aa3be2'06541050'26cbdf27'7e66cad5_u128},
-        {Sign::POS, -150, 0xbe6f8dc7'0a032905'fb8679db'27301625_u128},
-        {Sign::POS, -150, 0xc434dfac'6a0760cd'5d6bacbb'1056f6aa_u128},
-        {Sign::POS, -150, 0xc9fa3192'2660b7b1'd71f72db'd0c3d936_u128},
-        {Sign::POS, -150, 0xcfbf8378'3f0f2dbe'f345c97b'fe230ba2_u128},
-        {Sign::POS, -150, 0xd584d55e'b412c300'3c82b004'2ce54751_u128},
-        {Sign::POS, -150, 0xdb4a2745'856b7781'3d7a2806'f0403bae_u128},
-        {Sign::POS, -150, 0xe10f792c'b3194b4d'80d03540'da2f18ae_u128},
-        {Sign::POS, -150, 0xe6d4cb14'3d1c3e70'9128dd98'7b73194f_u128},
-        {Sign::POS, -150, 0xec9a1cfc'237450f5'f928291e'63940e14_u128},
-        {Sign::POS, -150, 0xf25f6ee4'662182e9'4372220d'20e0e78a_u128},
-        {Sign::POS, -150, 0xf824c0cd'0523d455'faaad4c9'407040c7_u128},
-        {Sign::POS, -150, 0xfdea12b6'007b4547'a9764fe1'4e20e9e4_u128},
-        {Sign::POS, -149, 0x81d7b24f'ac13eae4'ed3c5206'ea4d3942_u128},
-        {Sign::POS, -149, 0x84ba5b44'8614c2f4'0c2af218'aea6da27_u128},
-        {Sign::POS, -149, 0x879d0439'8e402ad6'f6d912ac'383aaeba_u128},
-        {Sign::POS, -149, 0x8a7fad2e'c4962293'7298bf5c'ca8b3d95_u128},
-        {Sign::POS, -149, 0x8d625624'2916aa2f'44bc04da'a8808214_u128},
-        {Sign::POS, -149, 0x9044ff19'bbc1c1b0'3294f0eb'14683198_u128},
-        {Sign::POS, -149, 0x9327a80f'7c97691c'01759268'4ff600c3_u128},
-        {Sign::POS, -149, 0x960a5105'6b97a078'76aff941'9c43e8b9_u128},
-        {Sign::POS, -149, 0x98ecf9fb'88c267cb'5796367b'39d26c63_u128},
-        {Sign::POS, -149, 0x9bcfa2f1'd417bf1a'697a5c2e'6888ddaa_u128},
-        {Sign::POS, -149, 0x9eb24be8'4d97a66b'71ae7d89'67b5a2b7_u128},
-        {Sign::POS, -149, 0xa194f4de'f5421dc4'3584aecf'760e7b39_u128},
-        {Sign::POS, -149, 0xa4779dd5'cb17252a'7a4f0558'd1b0c59e_u128},
-        {Sign::POS, -149, 0xa75a46cc'cf16bca4'055f9792'b821c455_u128},
-        {Sign::POS, -149, 0xaa3cefc4'0140e436'9c087cff'664ee311_u128},
-        {Sign::POS, -149, 0xad1f98bb'61959be8'039bce36'188dfc04_u128},
-        {Sign::POS, -149, 0xb00241b2'f014e3be'016ba4e3'0a9d9d21_u128},
-        {Sign::POS, -149, 0xb2e4eaaa'acbebbbe'5aca1bc7'77a54d5e_u128},
-        {Sign::POS, -149, 0xb5c793a2'979323ee'd5094eb9'9a35d1f0_u128},
-        {Sign::POS, -149, 0xb8aa3c9a'b0921c55'357b5aa4'ac49738d_u128},
+        {Sign::NEG, -149, MType({0xef1bffe565ce0a46, 0xbb8ce2990b5d0b90})},
+        {Sign::NEG, -149, MType({0xbea3244560ca3d99, 0xb8aa39b807a576e4})},
+        {Sign::NEG, -149, MType({0x8b91f71ceefa31a2, 0xb5c790d6d5c354df})},
+        {Sign::NEG, -149, MType({0x9096e3d684001c0e, 0xb2e4e7f575b6a57b})},
+        {Sign::NEG, -149, MType({0x86054c794367f36, 0xb0023f13e77f68b3})},
+        {Sign::NEG, -149, MType({0x2d9cb33094afe4de, 0xad1f96322b1d9e80})},
+        {Sign::NEG, -149, MType({0x3afa673cfb3698f3, 0xaa3ced50409146dd})},
+        {Sign::NEG, -149, MType({0x6b27d8033e4c6450, 0xa75a446e27da61c4})},
+        {Sign::NEG, -149, MType({0xf8d36b84d52a477b, 0xa4779b8be0f8ef2f})},
+        {Sign::NEG, -149, MType({0x1eab86ae37c03565, 0xa194f2a96becef1a})},
+        {Sign::NEG, -149, MType({0x175e8d56deb4ce2c, 0x9eb249c6c8b6617d})},
+        {Sign::NEG, -149, MType({0x1d9ae241436519da, 0x9bcfa0e3f7554653})},
+        {Sign::NEG, -149, MType({0x6c0ee71adfe44325, 0x98ecf800f7c99d96})},
+        {Sign::NEG, -149, MType({0x3d68fc7c2efb522f, 0x960a4f1dca136741})},
+        {Sign::NEG, -149, MType({0xcc5781e8ac28e749, 0x9327a63a6e32a34d})},
+        {Sign::NEG, -149, MType({0x5388d5ced3a0f5af, 0x9044fd56e42751b6})},
+        {Sign::NEG, -149, MType({0xdab5588224c7e4a, 0x8d6254732bf17275})},
+        {Sign::NEG, -149, MType({0x356d5d5915c94a70, 0x8a7fab8f45910584})},
+        {Sign::NEG, -149, MType({0x57d48712c69a6a7, 0x879d02ab31060ade})},
+        {Sign::NEG, -149, MType({0xb88970eae5341d60, 0x84ba59c6ee50827c})},
+        {Sign::NEG, -149, MType({0x89402fcbbfe331bb, 0x81d7b0e27d706c5a})},
+        {Sign::NEG, -150, MType({0x649fba0879ca348b, 0xfdea0ffbbccb90e3})},
+        {Sign::NEG, -150, MType({0xdccd9edfbab6f777, 0xf824be3222612d78})},
+        {Sign::NEG, -150, MType({0xf066b9aa4636478e, 0xf25f6c682ba1ae69})},
+        {Sign::NEG, -150, MType({0x14c7b3cb21578781, 0xec9a1a9dd88d13ab})},
+        {Sign::NEG, -150, MType({0xbf4d347b528f56e1, 0xe6d4c8d329235d30})},
+        {Sign::NEG, -150, MType({0x6553e0c9e1b70799, 0xe10f77081d648aef})},
+        {Sign::NEG, -150, MType({0x7c385b9bd80c1375, 0xdb4a253cb5509cdb})},
+        {Sign::NEG, -150, MType({0x795745ac402f919d, 0xd584d370f0e792e9})},
+        {Sign::NEG, -150, MType({0xd20d3d8c2625ac1b, 0xcfbf81a4d0296d0d})},
+        {Sign::NEG, -150, MType({0xfbb6dfa297551554, 0xc9fa2fd853162b3c})},
+        {Sign::NEG, -150, MType({0x6bb0c62ca2867d91, 0xc434de0b79adcd6b})},
+        {Sign::NEG, -150, MType({0x9757893d57e40877, 0xbe6f8c3e43f0538d})},
+        {Sign::NEG, -150, MType({0xf407bebdc8f8c28e, 0xb8aa3a70b1ddbd97})},
+        {Sign::NEG, -150, MType({0xf71dfa6d08b016be, 0xb2e4e8a2c3760b7e})},
+        {Sign::NEG, -150, MType({0x15f6cde02b5543ce, 0xad1f96d478b93d37})},
+        {Sign::NEG, -150, MType({0xc5eec8824692d1e9, 0xa75a4505d1a752b4})},
+        {Sign::NEG, -150, MType({0x7c6277947172081a, 0xa194f336ce404bec})},
+        {Sign::NEG, -150, MType({0xaeae662dc45a61ce, 0x9bcfa1676e8428d2})},
+        {Sign::NEG, -150, MType({0xd22f1d3b59110455, 0x960a4f97b272e95b})},
+        {Sign::NEG, -150, MType({0x5c4123804ab83462, 0x9044fdc79a0c8d7c})},
+        {Sign::NEG, -150, MType({0xc240fd95b5cecb89, 0x8a7fabf725511528})},
+        {Sign::NEG, -150, MType({0x798b2deab82fadc4, 0x84ba5a2654408055})},
+        {Sign::NEG, -151, MType({0xeef86988e2227ddb, 0xfdea10aa4db59ded})},
+        {Sign::NEG, -151, MType({0x62e1207c0209b090, 0xf25f6d073a400203})},
+        {Sign::NEG, -151, MType({0x3989789113ec7bee, 0xe6d4c9636e202cd4})},
+        {Sign::NEG, -151, MType({0x5daa65565e562909, 0xdb4a25bee9561e49})},
+        {Sign::NEG, -151, MType({0xb9fcd6062a84acbd, 0xcfbf8219abe1d64b})},
+        {Sign::NEG, -151, MType({0x3939b586c46792b3, 0xc434de73b5c354c4})},
+        {Sign::NEG, -151, MType({0xc619ea6a7a9ee85e, 0xb8aa3acd06fa999b})},
+        {Sign::NEG, -151, MType({0x4b5656ef9e7a27fd, 0xad1f97259f87a4bb})},
+        {Sign::NEG, -151, MType({0xb3a7d90083f7239c, 0xa194f37d7f6a760b})},
+        {Sign::NEG, -151, MType({0xe9c74a3381c0f016, 0x960a4fd4a6a30d75})},
+        {Sign::NEG, -151, MType({0xd86d7fcaf12ed012, 0x8a7fac2b15316ae2})},
+        {Sign::NEG, -152, MType({0xd4a6956a5c863e0f, 0xfdea1101962b1c76})},
+        {Sign::NEG, -152, MType({0x1462ef192f547877, 0xe6d4c9ab909eeed1})},
+        {Sign::NEG, -152, MType({0x45819d2f1d72eb8b, 0xcfbf825419be4ca6})},
+        {Sign::NEG, -152, MType({0x3d742790eedbe719, 0xb8aa3afb318935c8})},
+        {Sign::NEG, -152, MType({0xd1ac0d7b70d74492, 0xa194f3a0d7ffaa08})},
+        {Sign::NEG, -152, MType({0xd79ac58375f83d0c, 0x8a7fac450d21a939})},
+        {Sign::NEG, -153, MType({0x49637b2bac367e87, 0xe6d4c9cfa1de665a})},
+        {Sign::NEG, -153, MType({0x1cc4b5eedcc78b35, 0xb8aa3b1246d08f69})},
+        {Sign::NEG, -153, MType({0xd43bf48a42745836, 0x8a7fac520919cd43})},
+        {Sign::NEG, -154, MType({0x3557bdcf592619eb, 0xb8aa3b1dd1743f1c})},
+        {Sign::NEG, -155, MType({0x6bdc2e83d3ebb0c4, 0xb8aa3b2396c617ae})},
+        {Sign::POS, 0, MType({0x0, 0x0})},
+        {Sign::POS, -155, MType({0x2d5b40050e44e8ab, 0xb8aa3b2f2169ca44})},
+        {Sign::POS, -154, MType({0xb8560371b8f04afe, 0xb8aa3b34e6bba447})},
+        {Sign::POS, -153, MType({0xc79a43ccc70459cc, 0x8a7fac6c010a1f14})},
+        {Sign::POS, -153, MType({0x22c25632f519f77f, 0xb8aa3b40715f59c0})},
+        {Sign::POS, -153, MType({0x42c10a314e35fb9e, 0xe6d4ca17c45d8282})},
+        {Sign::POS, -152, MType({0xbe5a212ed7b949e4, 0x8a7fac78fd024cdb})},
+        {Sign::POS, -152, MType({0x12dcf94ef5c5b918, 0xa194f3e7892a4fde})},
+        {Sign::POS, -152, MType({0x49781013e57110ce, 0xb8aa3b5786a6ca76})},
+        {Sign::POS, -152, MType({0x8cba70c085c12cb3, 0xcfbf82c8f577bcd2})},
+        {Sign::POS, -152, MType({0x7332f3fb09328b8, 0xe6d4ca3bd59d2721})},
+        {Sign::POS, -152, MType({0xe37168243a9d8b14, 0xfdea11b02717098f})},
+        {Sign::POS, -151, MType({0xa602205479b93722, 0x8a7fac92f4f2b226})},
+        {Sign::POS, -151, MType({0xb5bd735852c0d583, 0x960a504e8f041bc3})},
+        {Sign::POS, -151, MType({0x363248630b0d812d, 0xa194f40ae1bfc1b6})},
+        {Sign::POS, -151, MType({0x3ca83f0e02b823c0, 0xad1f97c7ed25a415})},
+        {Sign::POS, -151, MType({0xde66fb46974bc4fd, 0xb8aa3b85b135c2f7})},
+        {Sign::POS, -151, MType({0x30b6254e23c69fc2, 0xc434df442df01e75})},
+        {Sign::POS, -151, MType({0x48dd69ba009b370c, 0xcfbf83036354b6a4})},
+        {Sign::POS, -151, MType({0x3c24797383b16af5, 0xdb4a26c351638b9c})},
+        {Sign::POS, -151, MType({0x1fd309b800678db7, 0xe6d4ca83f81c9d74})},
+        {Sign::POS, -151, MType({0x930d418c79378a3, 0xf25f6e45577fec43})},
+        {Sign::POS, -151, MType({0xd85967b2783a12c, 0xfdea12076f8d7820})},
+        {Sign::POS, -150, MType({0x210c898c360016ed, 0x84ba5ae52022a091})},
+        {Sign::POS, -150, MType({0x5e19883eef2605ab, 0x8a7facc6e4d3a3b0})},
+        {Sign::POS, -150, MType({0x488dacc6629300ae, 0x9044fea905d9c579})},
+        {Sign::POS, -150, MType({0x6b0cdebd3264e3e3, 0x960a508b833505f7})},
+        {Sign::POS, -150, MType({0x503b07e7ff788dc2, 0x9bcfa26e5ce56536})},
+        {Sign::POS, -150, MType({0x82bc1435696a69d1, 0xa194f45192eae341})},
+        {Sign::POS, -150, MType({0x8d33f1be0e96fb1f, 0xa75a463525458024})},
+        {Sign::POS, -150, MType({0xfa4690c48c1b66c9, 0xad1f981913f53bea})},
+        {Sign::POS, -150, MType({0x5497e3b57dd5fe75, 0xb2e4e9fd5efa16a0})},
+        {Sign::POS, -150, MType({0x26cbdf277e66cad5, 0xb8aa3be206541050})},
+        {Sign::POS, -150, MType({0xfb8679db27301625, 0xbe6f8dc70a032905})},
+        {Sign::POS, -150, MType({0x5d6bacbb1056f6aa, 0xc434dfac6a0760cd})},
+        {Sign::POS, -150, MType({0xd71f72dbd0c3d936, 0xc9fa31922660b7b1})},
+        {Sign::POS, -150, MType({0xf345c97bfe230ba2, 0xcfbf83783f0f2dbe})},
+        {Sign::POS, -150, MType({0x3c82b0042ce54751, 0xd584d55eb412c300})},
+        {Sign::POS, -150, MType({0x3d7a2806f0403bae, 0xdb4a2745856b7781})},
+        {Sign::POS, -150, MType({0x80d03540da2f18ae, 0xe10f792cb3194b4d})},
+        {Sign::POS, -150, MType({0x9128dd987b73194f, 0xe6d4cb143d1c3e70})},
+        {Sign::POS, -150, MType({0xf928291e63940e14, 0xec9a1cfc237450f5})},
+        {Sign::POS, -150, MType({0x4372220d20e0e78a, 0xf25f6ee4662182e9})},
+        {Sign::POS, -150, MType({0xfaaad4c9407040c7, 0xf824c0cd0523d455})},
+        {Sign::POS, -150, MType({0xa9764fe14e20e9e4, 0xfdea12b6007b4547})},
+        {Sign::POS, -149, MType({0xed3c5206ea4d3942, 0x81d7b24fac13eae4})},
+        {Sign::POS, -149, MType({0xc2af218aea6da27, 0x84ba5b448614c2f4})},
+        {Sign::POS, -149, MType({0xf6d912ac383aaeba, 0x879d04398e402ad6})},
+        {Sign::POS, -149, MType({0x7298bf5cca8b3d95, 0x8a7fad2ec4962293})},
+        {Sign::POS, -149, MType({0x44bc04daa8808214, 0x8d6256242916aa2f})},
+        {Sign::POS, -149, MType({0x3294f0eb14683198, 0x9044ff19bbc1c1b0})},
+        {Sign::POS, -149, MType({0x17592684ff600c3, 0x9327a80f7c97691c})},
+        {Sign::POS, -149, MType({0x76aff9419c43e8b9, 0x960a51056b97a078})},
+        {Sign::POS, -149, MType({0x5796367b39d26c63, 0x98ecf9fb88c267cb})},
+        {Sign::POS, -149, MType({0x697a5c2e6888ddaa, 0x9bcfa2f1d417bf1a})},
+        {Sign::POS, -149, MType({0x71ae7d8967b5a2b7, 0x9eb24be84d97a66b})},
+        {Sign::POS, -149, MType({0x3584aecf760e7b39, 0xa194f4def5421dc4})},
+        {Sign::POS, -149, MType({0x7a4f0558d1b0c59e, 0xa4779dd5cb17252a})},
+        {Sign::POS, -149, MType({0x55f9792b821c455, 0xa75a46cccf16bca4})},
+        {Sign::POS, -149, MType({0x9c087cff664ee311, 0xaa3cefc40140e436})},
+        {Sign::POS, -149, MType({0x39bce36188dfc04, 0xad1f98bb61959be8})},
+        {Sign::POS, -149, MType({0x16ba4e30a9d9d21, 0xb00241b2f014e3be})},
+        {Sign::POS, -149, MType({0x5aca1bc777a54d5e, 0xb2e4eaaaacbebbbe})},
+        {Sign::POS, -149, MType({0xd5094eb99a35d1f0, 0xb5c793a2979323ee})},
+        {Sign::POS, -149, MType({0x357b5aa4ac49738d, 0xb8aa3c9ab0921c55})},
     }};
 
 // > P = fpminimax(log2(1 + x)/x, 3, [|128...|], [-0x1.0002143p-29 , 0x1p-29]);
@@ -827,10 +824,10 @@ const LogRR LOG2_TABLE = {
 // > dirtyinfnorm(log2(1 + x)/x - P, [-0x1.0002143p-29 , 0x1p-29]);
 // 0x1.27ad5...p-121
 const Float128 BIG_COEFFS[4]{
-    {Sign::NEG, -129, 0xb8aa3b29'5c2b21e3'3eccf694'0d66bbcc_u128},
-    {Sign::POS, -129, 0xf6384ee1'd01febc9'ee39a6d6'49394bb1_u128},
-    {Sign::NEG, -128, 0xb8aa3b29'5c17f0bb'be87fed0'67ea2ad5_u128},
-    {Sign::POS, -127, 0xb8aa3b29'5c17f0bb'be87fed0'691d3e3f_u128},
+    {Sign::NEG, -129, MType({0x3eccf6940d66bbcc, 0xb8aa3b295c2b21e3})},
+    {Sign::POS, -129, MType({0xee39a6d649394bb1, 0xf6384ee1d01febc9})},
+    {Sign::NEG, -128, MType({0xbe87fed067ea2ad5, 0xb8aa3b295c17f0bb})},
+    {Sign::POS, -127, MType({0xbe87fed0691d3e3f, 0xb8aa3b295c17f0bb})},
 };
 
 // Reuse the output of the fast pass range reduction.

diff  --git a/libc/test/src/__support/CMakeLists.txt b/libc/test/src/__support/CMakeLists.txt
index 6dfd0f196b1088..231b01e0ee50a7 100644
--- a/libc/test/src/__support/CMakeLists.txt
+++ b/libc/test/src/__support/CMakeLists.txt
@@ -55,7 +55,6 @@ add_libc_test(
     str_to_double_test.cpp
     str_to_long_double_test.cpp
   DEPENDS
-    libc.src.__support.integer_literals
     libc.src.__support.str_to_float
     libc.src.__support.uint128
     libc.src.errno.errno
@@ -68,9 +67,8 @@ add_libc_test(
   SRCS
     integer_to_string_test.cpp
   DEPENDS
-    libc.src.__support.CPP.string_view
-    libc.src.__support.integer_literals
     libc.src.__support.integer_to_string
+    libc.src.__support.CPP.string_view
     libc.src.__support.uint
     libc.src.__support.uint128
 )

diff  --git a/libc/test/src/__support/FPUtil/fpbits_test.cpp b/libc/test/src/__support/FPUtil/fpbits_test.cpp
index 46f7d250596873..1c8a1c5b9d4cee 100644
--- a/libc/test/src/__support/FPUtil/fpbits_test.cpp
+++ b/libc/test/src/__support/FPUtil/fpbits_test.cpp
@@ -452,7 +452,7 @@ TEST(LlvmLibcFPBitsTest, X86LongDoubleType) {
   EXPECT_TRUE(negzero.is_neg());
   EXPECT_EQ(negzero.get_biased_exponent(), 0_u16);
   EXPECT_EQ(negzero.get_mantissa(), 0_u128);
-  EXPECT_EQ(negzero.uintval(), 0x8000'00000000'00000000_u128);
+  EXPECT_EQ(negzero.uintval(), 0x80000000000000000000_u128);
   EXPECT_STREQ(
       LIBC_NAMESPACE::str(negzero).c_str(),
       "0x00000000000080000000000000000000 = "
@@ -462,7 +462,7 @@ TEST(LlvmLibcFPBitsTest, X86LongDoubleType) {
   EXPECT_TRUE(one.is_pos());
   EXPECT_EQ(one.get_biased_exponent(), 0x3FFF_u16);
   EXPECT_EQ(one.get_mantissa(), 0_u128);
-  EXPECT_EQ(one.uintval(), 0x3FFF'80000000'00000000_u128);
+  EXPECT_EQ(one.uintval(), 0x3FFF8000000000000000_u128);
   EXPECT_STREQ(
       LIBC_NAMESPACE::str(one).c_str(),
       "0x0000000000003FFF8000000000000000 = "
@@ -472,7 +472,7 @@ TEST(LlvmLibcFPBitsTest, X86LongDoubleType) {
   EXPECT_TRUE(negone.is_neg());
   EXPECT_EQ(negone.get_biased_exponent(), 0x3FFF_u16);
   EXPECT_EQ(negone.get_mantissa(), 0_u128);
-  EXPECT_EQ(negone.uintval(), 0xBFFF'80000000'00000000_u128);
+  EXPECT_EQ(negone.uintval(), 0xBFFF8000000000000000_u128);
   EXPECT_STREQ(
       LIBC_NAMESPACE::str(negone).c_str(),
       "0x000000000000BFFF8000000000000000 = "
@@ -481,8 +481,8 @@ TEST(LlvmLibcFPBitsTest, X86LongDoubleType) {
   LongDoubleBits num(1.125l);
   EXPECT_TRUE(num.is_pos());
   EXPECT_EQ(num.get_biased_exponent(), 0x3FFF_u16);
-  EXPECT_EQ(num.get_mantissa(), 0x10000000'00000000_u128);
-  EXPECT_EQ(num.uintval(), 0x3FFF'90000000'00000000_u128);
+  EXPECT_EQ(num.get_mantissa(), 0x1000000000000000_u128);
+  EXPECT_EQ(num.uintval(), 0x3FFF9000000000000000_u128);
   EXPECT_STREQ(
       LIBC_NAMESPACE::str(num).c_str(),
       "0x0000000000003FFF9000000000000000 = "
@@ -491,8 +491,8 @@ TEST(LlvmLibcFPBitsTest, X86LongDoubleType) {
   LongDoubleBits negnum(-1.125l);
   EXPECT_TRUE(negnum.is_neg());
   EXPECT_EQ(negnum.get_biased_exponent(), 0x3FFF_u16);
-  EXPECT_EQ(negnum.get_mantissa(), 0x10000000'00000000_u128);
-  EXPECT_EQ(negnum.uintval(), 0xBFFF'90000000'00000000_u128);
+  EXPECT_EQ(negnum.get_mantissa(), 0x1000000000000000_u128);
+  EXPECT_EQ(negnum.uintval(), 0xBFFF9000000000000000_u128);
   EXPECT_STREQ(
       LIBC_NAMESPACE::str(negnum).c_str(),
       "0x000000000000BFFF9000000000000000 = "
@@ -528,7 +528,7 @@ TEST(LlvmLibcFPBitsTest, LongDoubleType) {
   EXPECT_TRUE(negzero.is_neg());
   EXPECT_EQ(negzero.get_biased_exponent(), 0_u16);
   EXPECT_EQ(negzero.get_mantissa(), 0_u128);
-  EXPECT_EQ(negzero.uintval(), 0x80000000'00000000'00000000'00000000_u128);
+  EXPECT_EQ(negzero.uintval(), 0x80000000000000000000000000000000_u128);
   EXPECT_STREQ(LIBC_NAMESPACE::str(negzero).c_str(),
                "0x80000000000000000000000000000000 = "
                "(S: 1, E: 0x0000, M: 0x00000000000000000000000000000000)");
@@ -537,7 +537,7 @@ TEST(LlvmLibcFPBitsTest, LongDoubleType) {
   EXPECT_TRUE(one.is_pos());
   EXPECT_EQ(one.get_biased_exponent(), 0x3FFF_u16);
   EXPECT_EQ(one.get_mantissa(), 0_u128);
-  EXPECT_EQ(one.uintval(), 0x3FFF0000'00000000'00000000'00000000_u128);
+  EXPECT_EQ(one.uintval(), 0x3FFF0000000000000000000000000000_u128);
   EXPECT_STREQ(LIBC_NAMESPACE::str(one).c_str(),
                "0x3FFF0000000000000000000000000000 = "
                "(S: 0, E: 0x3FFF, M: 0x00000000000000000000000000000000)");
@@ -546,7 +546,7 @@ TEST(LlvmLibcFPBitsTest, LongDoubleType) {
   EXPECT_TRUE(negone.is_neg());
   EXPECT_EQ(negone.get_biased_exponent(), 0x3FFF_u16);
   EXPECT_EQ(negone.get_mantissa(), 0_u128);
-  EXPECT_EQ(negone.uintval(), 0xBFFF0000'00000000'00000000'00000000_u128);
+  EXPECT_EQ(negone.uintval(), 0xBFFF0000000000000000000000000000_u128);
   EXPECT_STREQ(LIBC_NAMESPACE::str(negone).c_str(),
                "0xBFFF0000000000000000000000000000 = "
                "(S: 1, E: 0x3FFF, M: 0x00000000000000000000000000000000)");
@@ -554,8 +554,8 @@ TEST(LlvmLibcFPBitsTest, LongDoubleType) {
   LongDoubleBits num(1.125l);
   EXPECT_TRUE(num.is_pos());
   EXPECT_EQ(num.get_biased_exponent(), 0x3FFF_u16);
-  EXPECT_EQ(num.get_mantissa(), 0x2000'00000000'00000000'00000000_u128);
-  EXPECT_EQ(num.uintval(), 0x3FFF2000'00000000'00000000'00000000_u128);
+  EXPECT_EQ(num.get_mantissa(), 0x2000000000000000000000000000_u128);
+  EXPECT_EQ(num.uintval(), 0x3FFF2000000000000000000000000000_u128);
   EXPECT_STREQ(LIBC_NAMESPACE::str(num).c_str(),
                "0x3FFF2000000000000000000000000000 = "
                "(S: 0, E: 0x3FFF, M: 0x00002000000000000000000000000000)");
@@ -563,8 +563,8 @@ TEST(LlvmLibcFPBitsTest, LongDoubleType) {
   LongDoubleBits negnum(-1.125l);
   EXPECT_TRUE(negnum.is_neg());
   EXPECT_EQ(negnum.get_biased_exponent(), 0x3FFF_u16);
-  EXPECT_EQ(negnum.get_mantissa(), 0x2000'00000000'00000000'00000000_u128);
-  EXPECT_EQ(negnum.uintval(), 0xBFFF2000'00000000'00000000'00000000_u128);
+  EXPECT_EQ(negnum.get_mantissa(), 0x2000000000000000000000000000_u128);
+  EXPECT_EQ(negnum.uintval(), 0xBFFF2000000000000000000000000000_u128);
   EXPECT_STREQ(LIBC_NAMESPACE::str(negnum).c_str(),
                "0xBFFF2000000000000000000000000000 = "
                "(S: 1, E: 0x3FFF, M: 0x00002000000000000000000000000000)");
@@ -599,7 +599,7 @@ TEST(LlvmLibcFPBitsTest, Float128Type) {
   EXPECT_TRUE(negzero.is_neg());
   EXPECT_EQ(negzero.get_biased_exponent(), 0_u16);
   EXPECT_EQ(negzero.get_mantissa(), 0_u128);
-  EXPECT_EQ(negzero.uintval(), 0x80000000'00000000'00000000'00000000_u128);
+  EXPECT_EQ(negzero.uintval(), 0x80000000000000000000000000000000_u128);
   EXPECT_STREQ(LIBC_NAMESPACE::str(negzero).c_str(),
                "0x80000000000000000000000000000000 = "
                "(S: 1, E: 0x0000, M: 0x00000000000000000000000000000000)");
@@ -608,7 +608,7 @@ TEST(LlvmLibcFPBitsTest, Float128Type) {
   EXPECT_TRUE(one.is_pos());
   EXPECT_EQ(one.get_biased_exponent(), 0x3FFF_u16);
   EXPECT_EQ(one.get_mantissa(), 0_u128);
-  EXPECT_EQ(one.uintval(), 0x3FFF0000'00000000'00000000'00000000_u128);
+  EXPECT_EQ(one.uintval(), 0x3FFF0000000000000000000000000000_u128);
   EXPECT_STREQ(LIBC_NAMESPACE::str(one).c_str(),
                "0x3FFF0000000000000000000000000000 = "
                "(S: 0, E: 0x3FFF, M: 0x00000000000000000000000000000000)");
@@ -617,7 +617,7 @@ TEST(LlvmLibcFPBitsTest, Float128Type) {
   EXPECT_TRUE(negone.is_neg());
   EXPECT_EQ(negone.get_biased_exponent(), 0x3FFF_u16);
   EXPECT_EQ(negone.get_mantissa(), 0_u128);
-  EXPECT_EQ(negone.uintval(), 0xBFFF0000'00000000'00000000'00000000_u128);
+  EXPECT_EQ(negone.uintval(), 0xBFFF0000000000000000000000000000_u128);
   EXPECT_STREQ(LIBC_NAMESPACE::str(negone).c_str(),
                "0xBFFF0000000000000000000000000000 = "
                "(S: 1, E: 0x3FFF, M: 0x00000000000000000000000000000000)");
@@ -625,8 +625,8 @@ TEST(LlvmLibcFPBitsTest, Float128Type) {
   Float128Bits num(float128(1.125));
   EXPECT_TRUE(num.is_pos());
   EXPECT_EQ(num.get_biased_exponent(), 0x3FFF_u16);
-  EXPECT_EQ(num.get_mantissa(), 0x2000'00000000'00000000'00000000_u128);
-  EXPECT_EQ(num.uintval(), 0x3FFF2000'00000000'00000000'00000000_u128);
+  EXPECT_EQ(num.get_mantissa(), 0x2000000000000000000000000000_u128);
+  EXPECT_EQ(num.uintval(), 0x3FFF2000000000000000000000000000_u128);
   EXPECT_STREQ(LIBC_NAMESPACE::str(num).c_str(),
                "0x3FFF2000000000000000000000000000 = "
                "(S: 0, E: 0x3FFF, M: 0x00002000000000000000000000000000)");
@@ -634,8 +634,8 @@ TEST(LlvmLibcFPBitsTest, Float128Type) {
   Float128Bits negnum(float128(-1.125));
   EXPECT_TRUE(negnum.is_neg());
   EXPECT_EQ(negnum.get_biased_exponent(), 0x3FFF_u16);
-  EXPECT_EQ(negnum.get_mantissa(), 0x2000'00000000'00000000'00000000_u128);
-  EXPECT_EQ(negnum.uintval(), 0xBFFF2000'00000000'00000000'00000000_u128);
+  EXPECT_EQ(negnum.get_mantissa(), 0x2000000000000000000000000000_u128);
+  EXPECT_EQ(negnum.uintval(), 0xBFFF2000000000000000000000000000_u128);
   EXPECT_STREQ(LIBC_NAMESPACE::str(negnum).c_str(),
                "0xBFFF2000000000000000000000000000 = "
                "(S: 1, E: 0x3FFF, M: 0x00002000000000000000000000000000)");

diff  --git a/libc/test/src/__support/integer_to_string_test.cpp b/libc/test/src/__support/integer_to_string_test.cpp
index 2a19c5bf7549c6..c8913bf461bb36 100644
--- a/libc/test/src/__support/integer_to_string_test.cpp
+++ b/libc/test/src/__support/integer_to_string_test.cpp
@@ -10,7 +10,6 @@
 #include "src/__support/CPP/string_view.h"
 #include "src/__support/UInt.h"
 #include "src/__support/UInt128.h"
-#include "src/__support/integer_literals.h"
 #include "src/__support/integer_to_string.h"
 
 #include "test/UnitTest/Test.h"
@@ -25,8 +24,6 @@ using LIBC_NAMESPACE::radix::Custom;
 using LIBC_NAMESPACE::radix::Dec;
 using LIBC_NAMESPACE::radix::Hex;
 using LIBC_NAMESPACE::radix::Oct;
-using LIBC_NAMESPACE::operator""_u128;
-using LIBC_NAMESPACE::operator""_u256;
 
 #define EXPECT(type, value, string_value)                                      \
   {                                                                            \
@@ -207,11 +204,11 @@ TEST(LlvmLibcIntegerToStringTest, UINT128_Base_16) {
   using type = IntegerToString<UInt128, Hex::WithWidth<32>>;
   EXPECT(type, 0, "00000000000000000000000000000000");
   EXPECT(type, 0x12345, "00000000000000000000000000012345");
-  EXPECT(type, 0x12340000'00000000'00000000'00000000_u128,
+  EXPECT(type, static_cast<UInt128>(0x1234) << 112,
          "12340000000000000000000000000000");
-  EXPECT(type, 0x00000000'00000000'12340000'00000000_u128,
+  EXPECT(type, static_cast<UInt128>(0x1234) << 48,
          "00000000000000001234000000000000");
-  EXPECT(type, 0x00000000'00000001'23400000'00000000_u128,
+  EXPECT(type, static_cast<UInt128>(0x1234) << 52,
          "00000000000000012340000000000000");
 }
 
@@ -230,26 +227,16 @@ TEST(LlvmLibcIntegerToStringTest, UINT64_Base_36) {
 TEST(LlvmLibcIntegerToStringTest, UINT256_Base_16) {
   using UInt256 = LIBC_NAMESPACE::cpp::UInt<256>;
   using type = IntegerToString<UInt256, Hex::WithWidth<64>>;
-  EXPECT(
-      type,
-      0x0000000000000000000000000000000000000000000000000000000000000000_u256,
-      "0000000000000000000000000000000000000000000000000000000000000000");
-  EXPECT(
-      type,
-      0x0000000000000000000000000000000000000000000000000000000000012345_u256,
-      "0000000000000000000000000000000000000000000000000000000000012345");
-  EXPECT(
-      type,
-      0x0000000000000000000000000000000012340000000000000000000000000000_u256,
-      "0000000000000000000000000000000012340000000000000000000000000000");
-  EXPECT(
-      type,
-      0x0000000000000000000000000000000123400000000000000000000000000000_u256,
-      "0000000000000000000000000000000123400000000000000000000000000000");
-  EXPECT(
-      type,
-      0x1234000000000000000000000000000000000000000000000000000000000000_u256,
-      "1234000000000000000000000000000000000000000000000000000000000000");
+  EXPECT(type, static_cast<UInt256>(0),
+         "0000000000000000000000000000000000000000000000000000000000000000");
+  EXPECT(type, static_cast<UInt256>(0x12345),
+         "0000000000000000000000000000000000000000000000000000000000012345");
+  EXPECT(type, static_cast<UInt256>(0x1234) << 112,
+         "0000000000000000000000000000000012340000000000000000000000000000");
+  EXPECT(type, static_cast<UInt256>(0x1234) << 116,
+         "0000000000000000000000000000000123400000000000000000000000000000");
+  EXPECT(type, static_cast<UInt256>(0x1234) << 240,
+         "1234000000000000000000000000000000000000000000000000000000000000");
 }
 
 TEST(LlvmLibcIntegerToStringTest, NegativeInterpretedAsPositive) {

diff  --git a/libc/test/src/__support/str_to_long_double_test.cpp b/libc/test/src/__support/str_to_long_double_test.cpp
index c4686cfba3317e..6fefc89ac3a945 100644
--- a/libc/test/src/__support/str_to_long_double_test.cpp
+++ b/libc/test/src/__support/str_to_long_double_test.cpp
@@ -1,11 +1,8 @@
 #include "str_to_fp_test.h"
 
-#include "src/__support/integer_literals.h"
-
 namespace LIBC_NAMESPACE {
 
 using LlvmLibcStrToLongDblTest = LlvmLibcStrToFloatTest<long double>;
-using LIBC_NAMESPACE::operator""_u128;
 
 #if defined(LIBC_LONG_DOUBLE_IS_FLOAT64)
 
@@ -21,12 +18,15 @@ TEST_F(LlvmLibcStrToLongDblTest, EiselLemireFloat80Simple) {
 }
 
 TEST_F(LlvmLibcStrToLongDblTest, EiselLemireFloat80LongerMantissa) {
-  eisel_lemire_test(0x12345678'12345678'12345678'12345678_u128, 0,
-                    0x91a2b3c091a2b3c1, 16507);
-  eisel_lemire_test(0x12345678'12345678'12345678'12345678_u128, 300,
-                    0xd97757de56adb65c, 17503);
-  eisel_lemire_test(0x12345678'12345678'12345678'12345678_u128, -300,
-                    0xc30feb9a7618457d, 15510);
+  eisel_lemire_test((UInt128(0x1234567812345678) << 64) +
+                        UInt128(0x1234567812345678),
+                    0, 0x91a2b3c091a2b3c1, 16507);
+  eisel_lemire_test((UInt128(0x1234567812345678) << 64) +
+                        UInt128(0x1234567812345678),
+                    300, 0xd97757de56adb65c, 17503);
+  eisel_lemire_test((UInt128(0x1234567812345678) << 64) +
+                        UInt128(0x1234567812345678),
+                    -300, 0xc30feb9a7618457d, 15510);
 }
 
 // These tests check numbers at the edge of the DETAILED_POWERS_OF_TEN table.
@@ -57,24 +57,30 @@ TEST_F(LlvmLibcStrToLongDblTest, EiselLemireFloat80Fallback) {
 #else // Quad precision long double
 
 TEST_F(LlvmLibcStrToLongDblTest, EiselLemireFloat128Simple) {
-  eisel_lemire_test(123, 0, 0x1ec00'00000000'00000000'00000000_u128, 16389);
-  eisel_lemire_test(12345678901234568192u, 0,
-                    0x156a9'5319d63e'18000000'00000000_u128, 16446);
+  eisel_lemire_test(123, 0, (UInt128(0x1ec0000000000) << 64), 16389);
+  eisel_lemire_test(
+      12345678901234568192u, 0,
+      (UInt128(0x156a95319d63e) << 64) + UInt128(0x1800000000000000), 16446);
 }
 
 TEST_F(LlvmLibcStrToLongDblTest, EiselLemireFloat128LongerMantissa) {
-  eisel_lemire_test(0x12345678'12345678'12345678'12345678_u128, 0,
-                    0x12345'67812345'67812345'67812345_u128, 16507);
-  eisel_lemire_test(0x12345678'12345678'12345678'12345678_u128, 300,
-                    0x1b2ee'afbcad5b'6cb8b445'1dfcde19_u128, 17503);
-  eisel_lemire_test(0x12345678'12345678'12345678'12345678_u128, -300,
-                    0x1861f'd734ec30'8afa7189'f0f7595f_u128, 15510);
+  eisel_lemire_test(
+      (UInt128(0x1234567812345678) << 64) + UInt128(0x1234567812345678), 0,
+      (UInt128(0x1234567812345) << 64) + UInt128(0x6781234567812345), 16507);
+  eisel_lemire_test(
+      (UInt128(0x1234567812345678) << 64) + UInt128(0x1234567812345678), 300,
+      (UInt128(0x1b2eeafbcad5b) << 64) + UInt128(0x6cb8b4451dfcde19), 17503);
+  eisel_lemire_test(
+      (UInt128(0x1234567812345678) << 64) + UInt128(0x1234567812345678), -300,
+      (UInt128(0x1861fd734ec30) << 64) + UInt128(0x8afa7189f0f7595f), 15510);
 }
 
 TEST_F(LlvmLibcStrToLongDblTest, EiselLemireFloat128Fallback) {
-  ASSERT_FALSE(internal::eisel_lemire<long double>(
-                   {0x5ce0e9a5'6015fec5'aadfa328'ae39b333_u128, 1})
-                   .has_value());
+  ASSERT_FALSE(
+      internal::eisel_lemire<long double>(
+          {(UInt128(0x5ce0e9a56015fec5) << 64) + UInt128(0xaadfa328ae39b333),
+           1})
+          .has_value());
 }
 
 #endif

diff  --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index c6f01f435e12c5..fde2bac746f4f8 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -1283,7 +1283,6 @@ libc_math_function(
         ":__support_fputil_polyeval",
         ":__support_fputil_rounding_mode",
         ":__support_fputil_triple_double",
-        ":__support_integer_literals",
         ":__support_macros_optimization",
         ":common_constants",
         ":explogxf",
@@ -1314,7 +1313,6 @@ libc_math_function(
         ":__support_fputil_polyeval",
         ":__support_fputil_rounding_mode",
         ":__support_fputil_triple_double",
-        ":__support_integer_literals",
         ":__support_macros_optimization",
         ":common_constants",
         ":explogxf",
@@ -1344,7 +1342,6 @@ libc_math_function(
         ":__support_fputil_polyeval",
         ":__support_fputil_rounding_mode",
         ":__support_fputil_triple_double",
-        ":__support_integer_literals",
         ":__support_macros_optimization",
         ":common_constants",
         ":explogxf",
@@ -1368,7 +1365,6 @@ libc_math_function(
         ":__support_fputil_polyeval",
         ":__support_fputil_rounding_mode",
         ":__support_fputil_triple_double",
-        ":__support_integer_literals",
         ":__support_macros_optimization",
         ":common_constants",
         ":explogxf",
@@ -1432,12 +1428,11 @@ libc_math_function(
 libc_math_function(
     name = "log",
     additional_deps = [
-        ":__support_fputil_double_double",
-        ":__support_fputil_dyadic_float",
         ":__support_fputil_fma",
         ":__support_fputil_multiply_add",
         ":__support_fputil_polyeval",
-        ":__support_integer_literals",
+        ":__support_fputil_double_double",
+        ":__support_fputil_dyadic_float",
         ":__support_macros_optimization",
         ":__support_macros_properties_cpu_features",
         ":common_constants",
@@ -1448,12 +1443,11 @@ libc_math_function(
 libc_math_function(
     name = "log2",
     additional_deps = [
-        ":__support_fputil_double_double",
-        ":__support_fputil_dyadic_float",
         ":__support_fputil_fma",
         ":__support_fputil_multiply_add",
         ":__support_fputil_polyeval",
-        ":__support_integer_literals",
+        ":__support_fputil_double_double",
+        ":__support_fputil_dyadic_float",
         ":__support_macros_optimization",
         ":__support_macros_properties_cpu_features",
         ":common_constants",
@@ -1464,12 +1458,11 @@ libc_math_function(
 libc_math_function(
     name = "log10",
     additional_deps = [
-        ":__support_fputil_double_double",
-        ":__support_fputil_dyadic_float",
         ":__support_fputil_fma",
         ":__support_fputil_multiply_add",
         ":__support_fputil_polyeval",
-        ":__support_integer_literals",
+        ":__support_fputil_double_double",
+        ":__support_fputil_dyadic_float",
         ":__support_macros_optimization",
         ":__support_macros_properties_cpu_features",
         ":common_constants",
@@ -1480,12 +1473,11 @@ libc_math_function(
 libc_math_function(
     name = "log1p",
     additional_deps = [
-        ":__support_fputil_double_double",
-        ":__support_fputil_dyadic_float",
         ":__support_fputil_fma",
         ":__support_fputil_multiply_add",
         ":__support_fputil_polyeval",
-        ":__support_integer_literals",
+        ":__support_fputil_double_double",
+        ":__support_fputil_dyadic_float",
         ":__support_macros_optimization",
         ":__support_macros_properties_cpu_features",
         ":common_constants",

diff  --git a/utils/bazel/llvm-project-overlay/libc/test/src/__support/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/test/src/__support/BUILD.bazel
index 8e94a84f586f4c..e691d3c3d2ebdd 100644
--- a/utils/bazel/llvm-project-overlay/libc/test/src/__support/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/test/src/__support/BUILD.bazel
@@ -50,7 +50,6 @@ libc_test(
     ],
     deps = [
         "//libc:__support_fputil_fp_bits",
-        "//libc:__support_integer_literals",
         "//libc:__support_str_to_float",
         "//libc:__support_uint128",
     ],
@@ -62,7 +61,6 @@ libc_test(
     deps = [
         "//libc:__support_cpp_span",
         "//libc:__support_cpp_string_view",
-        "//libc:__support_integer_literals",
         "//libc:__support_integer_to_string",
         "//libc:__support_uint",
         "//libc:__support_uint128",


        


More information about the llvm-branch-commits mailing list