IBM Support

【TF】【IBMPower】【AIX】AIX 6.1 TL07 SP0, AIX 7.1 TL01 SP0 以降浮動小数点演算が IEEE 754-2008 準拠に仕様変更

News


Abstract

浮動小数点演算が IEEE 754-2008 に準拠するように変更されたため、OS バージョン・アップ、または TL アップデートにより 128bit long double を使用するアプリケーションで計算結果に差異が生じる可能性があります。
このテクニカルフラッシュは2012年4月17日に公開されたもので、情報はas-isとなっています。

Content

1. 変更の概要
浮動小数点演算が IEEE 754-2008 に準拠するように変更されたため、OS バージョン・アップ、または TL アップデートにより 128bit long double を使用するアプリケーションで計算結果に差異が生じる可能性があります。
2. 対象のシステム
以下の2つの条件を満たすシステム
  • ・128bit long double を使用している
    (cc128、xlc128 などの 128bit long double を指定するコマンドを使用している、もしくは、-qldbl128 -lc128 の 2 オプションを使用してアプリケーションをコンパイルしていること)
  • ・下記のAPARが適用されている
対象のTL/SPレベル
APAR番号
ファイルセット レベル
AIX 6.1 TL07 SP0
IZ99088
bos.rte.libc 6.1.7.0
AIX 7.1 TL01 SP0
IZ85915
bos.rte.libc 7.1.1.0
3. 影響範囲 :
128bit long double を使用するアプリケーションで計算結果が変わる可能性があります。
4. 原因 :
上記ファイルセット・レベル未満の AIX で使用される浮動小数点演算は、IEEE 754-1985 に準拠していました。
IEEE 754-1985 では 128bit long double について標準化されていなかったため、128bit long double は IBM の独自実装でした。
上記 APAR で浮動小数点演算が IEEE 754-2008 に準拠するように変更され、また、それに合わせて /usr/include/float.h 内の DECIMAL_DIG 定数が 17 から 37 に変更されたため、OS バージョン・アップ、または TL アップデートにより 128bit long double を使用するアプリケーションで計算結果に差異が生じる可能性があります。
どちらも IEEE 規格の準拠による仕様変更であるため、障害としての修正はありません。
5. 旧仕様での動作を行いたい場合 :
※ 2013/1/28追記:
以下の情報にある旧仕様での動作を可能にする PTF は、IV16917 がキャンセルされたことにより提供されないことになりました。
テクニカル・フラッシュ発行時点(2012/4/3)の情報
将来のリリースで、ROUND_HALFEVEN=1 環境変数の有無で動作の切り替えが可能になる予定です。
旧仕様での動作が切り替え可能となる Service Pack または暫定修正策 (ifix) を適用し、ROUND_HALFEVEN=1 環境変数を設定することで、以前と同じ計算結果を得ることができます。
(デフォルトでは、IEEE 754-2008 準拠)
※修正が含まれる Service Pack は 2012年5月以降の出荷を予定しています。
対象のTL
APAR番号
変更が含まれるSP
ファイルセット レベル
AIX 6.1 TL07
未定
SP4(予定)
未定
AIX 7.1 TL01
IV16917
SP4(予定)
未定
これらの情報は将来変更になる可能性がありますので、最新情報をご確認ください。
アプリケーションの再コンパイルが可能であれば、旧環境の /usr/ccs/lib/libc.aをスタティックリンクしたモジュールを作成することによって旧仕様の計算結果が期待できます。
・IEEE 754-1985
・IEEE 754-2008
・IEEE 754 Wiki
・IEEE 754 Wiki(日本語ページ)
APAR IV16917 :
https://www-304.ibm.com/support/entdocview.wss?uid=isg1IV16917(リンク切れ)

[{"Type":"MASTER","Line of Business":{"code":"LOB08","label":"Cognitive Systems"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG10","label":"AIX"},"ARM Category":[{"code":"a8m0z000000cw0UAAQ","label":"APARS-\u003EAIX 6.1 environment"}],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
13 February 2023

UID

ibm16851869