// 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(); }