IBM Support

IV37692: INCORRECT OUTPUT WITH _DECIMAL128 TYPE

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Consider the following testcase:
    
    $cat test.cpp
    /************************************************************/
    #define __STDC_WANT_DEC_FP
    #include <iostream>
    #include <stdio.h>
    
    class Decimal128 {
        _Decimal128 d_value;
      public:
        Decimal128(_Decimal128 x);
        _Decimal128 value() const;
    };
    
    Decimal128::Decimal128(_Decimal128 x) { d_value = x; }
    _Decimal128 Decimal128::value() const { return d_value; }
    
    std::ostream &operator<<(std::ostream &o, _Decimal128 d)
    {
        char b[48];
        snprintf(b, sizeof(b), "%DDe", d);
        return o << b;
    }
    
    int main()
    {
        Decimal128 dec(0.0dl);
        std::cout << dec.value() << std::endl;
    }
    /************************************************************/
    
    Compile the testcase as:
    
    xlC -qdfp  test.cpp
    
    Execute the final executale a.out and observe the output. The
    executable incorrectly issues the output as "2.101740e-6158"
    instead of expected (correct) output "0.000000e+00":
    
    ./a.out
    <output>
    2.101740e-6158
    

Local fix

  • Use no optimization and -qinline, or turn on optimization at
    compile time
    

Problem summary

  • Invalid output when using 128-bit DFP variables.
    

Problem conclusion

  • We need to identify a certain opcode as a float point and
    extended floating point value.
    

Temporary fix

Comments

APAR Information

  • APAR number

    IV37692

  • Reported component name

    XL C/C++ AIX

  • Reported component ID

    5724X1300

  • Reported release

    B10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2013-03-07

  • Closed date

    2013-04-19

  • Last modified date

    2013-04-23

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    LI77413 IV44282 LI77653

Fix information

  • Fixed component name

    XL C FOR AIX

  • Fixed component ID

    5724X1200

Applicable component levels

[{"Line of Business":{"code":"LOB57","label":"Power"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSGH2K","label":"XL C for AIX"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"11.1"}]

Document Information

Modified date:
03 October 2021