// Copyright 2023 Matt Borland // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt #include #include #include #include void test128() { auto r1 = boost::charconv::detail::umul128(1, 1); BOOST_TEST_EQ(r1.high, 0); BOOST_TEST_EQ(r1.low, 1); auto r2 = boost::charconv::detail::umul128(10, std::numeric_limits::max()); BOOST_TEST_EQ(r2.high, 9); BOOST_TEST_EQ(r2.low, UINT64_C(18446744073709551606)); auto r3 = boost::charconv::detail::umul128(std::numeric_limits::max(), std::numeric_limits::max()); BOOST_TEST_EQ(r3.high, UINT64_C(18446744073709551614)); BOOST_TEST_EQ(r3.low, 1); } int main(void) { test128(); return boost::report_errors(); }