https://github.com/abseil/abseil-cpp/issues/1824 --- abseil-cpp-20250127.1/absl/strings/charconv_test.cc.orig +++ abseil-cpp-20250127.1/absl/strings/charconv_test.cc @@ -180,31 +180,31 @@ // cases will work even on compilers that do not accurately round floating point // literals. TEST(FromChars, NearRoundingCasesExplicit) { - EXPECT_EQ(ToDouble("5.e125"), ldexp(6653062250012735, 365)); - EXPECT_EQ(ToDouble("69.e267"), ldexp(4705683757438170, 841)); - EXPECT_EQ(ToDouble("999.e-026"), ldexp(6798841691080350, -129)); - EXPECT_EQ(ToDouble("7861.e-034"), ldexp(8975675289889240, -153)); - EXPECT_EQ(ToDouble("75569.e-254"), ldexp(6091718967192243, -880)); - EXPECT_EQ(ToDouble("928609.e-261"), ldexp(7849264900213743, -900)); - EXPECT_EQ(ToDouble("9210917.e080"), ldexp(8341110837370930, 236)); - EXPECT_EQ(ToDouble("84863171.e114"), ldexp(4625202867375927, 353)); - EXPECT_EQ(ToDouble("653777767.e273"), ldexp(5068902999763073, 884)); - EXPECT_EQ(ToDouble("5232604057.e-298"), ldexp(5741343011915040, -1010)); - EXPECT_EQ(ToDouble("27235667517.e-109"), ldexp(6707124626673586, -380)); - EXPECT_EQ(ToDouble("653532977297.e-123"), ldexp(7078246407265384, -422)); - EXPECT_EQ(ToDouble("3142213164987.e-294"), ldexp(8219991337640559, -988)); - EXPECT_EQ(ToDouble("46202199371337.e-072"), ldexp(5224462102115359, -246)); - EXPECT_EQ(ToDouble("231010996856685.e-073"), ldexp(5224462102115359, -247)); - EXPECT_EQ(ToDouble("9324754620109615.e212"), ldexp(5539753864394442, 705)); - EXPECT_EQ(ToDouble("78459735791271921.e049"), ldexp(8388176519442766, 166)); - EXPECT_EQ(ToDouble("272104041512242479.e200"), ldexp(5554409530847367, 670)); - EXPECT_EQ(ToDouble("6802601037806061975.e198"), ldexp(5554409530847367, 668)); + EXPECT_EQ(ToDouble("5.e125"), ldexp(6653062250012735.0, 365)); + EXPECT_EQ(ToDouble("69.e267"), ldexp(4705683757438170.0, 841)); + EXPECT_EQ(ToDouble("999.e-026"), ldexp(6798841691080350.0, -129)); + EXPECT_EQ(ToDouble("7861.e-034"), ldexp(8975675289889240.0, -153)); + EXPECT_EQ(ToDouble("75569.e-254"), ldexp(6091718967192243.0, -880)); + EXPECT_EQ(ToDouble("928609.e-261"), ldexp(7849264900213743.0, -900)); + EXPECT_EQ(ToDouble("9210917.e080"), ldexp(8341110837370930.0, 236)); + EXPECT_EQ(ToDouble("84863171.e114"), ldexp(4625202867375927.0, 353)); + EXPECT_EQ(ToDouble("653777767.e273"), ldexp(5068902999763073.0, 884)); + EXPECT_EQ(ToDouble("5232604057.e-298"), ldexp(5741343011915040.0, -1010)); + EXPECT_EQ(ToDouble("27235667517.e-109"), ldexp(6707124626673586.0, -380)); + EXPECT_EQ(ToDouble("653532977297.e-123"), ldexp(7078246407265384.0, -422)); + EXPECT_EQ(ToDouble("3142213164987.e-294"), ldexp(8219991337640559.0, -988)); + EXPECT_EQ(ToDouble("46202199371337.e-072"), ldexp(5224462102115359.0, -246)); + EXPECT_EQ(ToDouble("231010996856685.e-073"), ldexp(5224462102115359.0, -247)); + EXPECT_EQ(ToDouble("9324754620109615.e212"), ldexp(5539753864394442.0, 705)); + EXPECT_EQ(ToDouble("78459735791271921.e049"), ldexp(8388176519442766.0, 166)); + EXPECT_EQ(ToDouble("272104041512242479.e200"), ldexp(5554409530847367.0, 670)); + EXPECT_EQ(ToDouble("6802601037806061975.e198"), ldexp(5554409530847367.0, 668)); EXPECT_EQ(ToDouble("20505426358836677347.e-221"), - ldexp(4524032052079546, -722)); + ldexp(4524032052079546.0, -722)); EXPECT_EQ(ToDouble("836168422905420598437.e-234"), - ldexp(5070963299887562, -760)); + ldexp(5070963299887562.0, -760)); EXPECT_EQ(ToDouble("4891559871276714924261.e222"), - ldexp(6452687840519111, 757)); + ldexp(6452687840519111.0, 757)); EXPECT_EQ(ToFloat("5.e-20"), ldexpf(15474250, -88)); EXPECT_EQ(ToFloat("67.e14"), ldexpf(12479722, 29)); EXPECT_EQ(ToFloat("985.e15"), ldexpf(14333636, 36)); @@ -219,31 +219,31 @@ EXPECT_EQ(ToFloat("596428896559.e20"), ldexpf(12333860, 82)); - EXPECT_EQ(ToDouble("9.e-265"), ldexp(8168427841980010, -930)); - EXPECT_EQ(ToDouble("85.e-037"), ldexp(6360455125664090, -169)); - EXPECT_EQ(ToDouble("623.e100"), ldexp(6263531988747231, 289)); - EXPECT_EQ(ToDouble("3571.e263"), ldexp(6234526311072170, 833)); - EXPECT_EQ(ToDouble("81661.e153"), ldexp(6696636728760206, 472)); - EXPECT_EQ(ToDouble("920657.e-023"), ldexp(5975405561110124, -109)); - EXPECT_EQ(ToDouble("4603285.e-024"), ldexp(5975405561110124, -110)); - EXPECT_EQ(ToDouble("87575437.e-309"), ldexp(8452160731874668, -1053)); - EXPECT_EQ(ToDouble("245540327.e122"), ldexp(4985336549131723, 381)); - EXPECT_EQ(ToDouble("6138508175.e120"), ldexp(4985336549131723, 379)); - EXPECT_EQ(ToDouble("83356057653.e193"), ldexp(5986732817132056, 625)); - EXPECT_EQ(ToDouble("619534293513.e124"), ldexp(4798406992060657, 399)); - EXPECT_EQ(ToDouble("2335141086879.e218"), ldexp(5419088166961646, 713)); - EXPECT_EQ(ToDouble("36167929443327.e-159"), ldexp(8135819834632444, -536)); - EXPECT_EQ(ToDouble("609610927149051.e-255"), ldexp(4576664294594737, -850)); - EXPECT_EQ(ToDouble("3743626360493413.e-165"), ldexp(6898586531774201, -549)); - EXPECT_EQ(ToDouble("94080055902682397.e-242"), ldexp(6273271706052298, -800)); - EXPECT_EQ(ToDouble("899810892172646163.e283"), ldexp(7563892574477827, 947)); - EXPECT_EQ(ToDouble("7120190517612959703.e120"), ldexp(5385467232557565, 409)); + EXPECT_EQ(ToDouble("9.e-265"), ldexp(8168427841980010.0, -930)); + EXPECT_EQ(ToDouble("85.e-037"), ldexp(6360455125664090.0, -169)); + EXPECT_EQ(ToDouble("623.e100"), ldexp(6263531988747231.0, 289)); + EXPECT_EQ(ToDouble("3571.e263"), ldexp(6234526311072170.0, 833)); + EXPECT_EQ(ToDouble("81661.e153"), ldexp(6696636728760206.0, 472)); + EXPECT_EQ(ToDouble("920657.e-023"), ldexp(5975405561110124.0, -109)); + EXPECT_EQ(ToDouble("4603285.e-024"), ldexp(5975405561110124.0, -110)); + EXPECT_EQ(ToDouble("87575437.e-309"), ldexp(8452160731874668.0, -1053)); + EXPECT_EQ(ToDouble("245540327.e122"), ldexp(4985336549131723.0, 381)); + EXPECT_EQ(ToDouble("6138508175.e120"), ldexp(4985336549131723.0, 379)); + EXPECT_EQ(ToDouble("83356057653.e193"), ldexp(5986732817132056.0, 625)); + EXPECT_EQ(ToDouble("619534293513.e124"), ldexp(4798406992060657.0, 399)); + EXPECT_EQ(ToDouble("2335141086879.e218"), ldexp(5419088166961646.0, 713)); + EXPECT_EQ(ToDouble("36167929443327.e-159"), ldexp(8135819834632444.0, -536)); + EXPECT_EQ(ToDouble("609610927149051.e-255"), ldexp(4576664294594737.0, -850)); + EXPECT_EQ(ToDouble("3743626360493413.e-165"), ldexp(6898586531774201.0, -549)); + EXPECT_EQ(ToDouble("94080055902682397.e-242"), ldexp(6273271706052298.0, -800)); + EXPECT_EQ(ToDouble("899810892172646163.e283"), ldexp(7563892574477827.0, 947)); + EXPECT_EQ(ToDouble("7120190517612959703.e120"), ldexp(5385467232557565.0, 409)); EXPECT_EQ(ToDouble("25188282901709339043.e-252"), - ldexp(5635662608542340, -825)); + ldexp(5635662608542340.0, -825)); EXPECT_EQ(ToDouble("308984926168550152811.e-052"), - ldexp(5644774693823803, -157)); + ldexp(5644774693823803.0, -157)); EXPECT_EQ(ToDouble("6372891218502368041059.e064"), - ldexp(4616868614322430, 233)); + ldexp(4616868614322430.0, 233)); EXPECT_EQ(ToFloat("3.e-23"), ldexpf(9507380, -98)); EXPECT_EQ(ToFloat("57.e18"), ldexpf(12960300, 42));