GCC Newspaper
JULY 29, 2026
Date
/
Architectures
Components
Topics
News & Policy
libstdc++

libstdc++: Adjust tests for ibm128 numeric traits.

libstdc++ tests updated to correctly handle `ibm128` type for numeric traits.

The libstdc++ testsuite has been updated to correctly handle the ibm128 numeric type. Previously, ibm128 (a double-double floating-point format) was incorrectly identified as conforming to IEC 559 standards, causing test failures. This change adjusts the tests to accurately reflect ibm128’s properties.

In Details

The libstdc++ testsuite for generate_canonical has been adjusted to account for the ibm128 (double-double) floating-point type. While is_iec559 is true for this type, its mantissa size (106 bits) requires specific handling in the tests to avoid triggering a VERIFY(false) assertion triggered by incorrect assumptions about its standard compliance.

For Context
libstdc++
The C++ standard library implementation used by GCC. It provides classes and functions for I/O, strings, containers, algorithms, and more.
ibm128
A 128-bit floating-point data type sometimes referred to as 'double-double', offering higher precision than standard 64-bit doubles. It is implemented as the sum of two IEEE 754 double-precision numbers.
is_iec559
A numeric type trait indicating whether a floating-point type conforms to the IEC 559 standard (which is equivalent to IEEE 754).
generate_canonical
A process or function within the C++ standard library that generates a canonical representation of a number, often used for comparisons and hashing.
Filed Under: libstdc++testsuitefloating-point