Hexadecimal Format
J.Reid の The New Features of Fortran 2018 中の Hexadecimal input/output を intel fortran 19.1 の beta 版で試してみます。出力は文中の possible output と少し違って、桁がずれて出力されました。
N2145 wg5-fortran.org
16 進数浮動小数点用フォーマットといえば、昔の IBM360 のものが有名ですが、なぜ今頃これが導入されるのかよく分かりません。
ソース・プログラム
とりあえず二進表記にして、4桁づつまとめて 16 進数にすれば対応がつかめます。
program Console3 implicit none print *, 1.375, '= 1.0 + 0.25 + 0.125 = 1+1/4+1/8 = 1.0110 = 0X1.6' print *, int(b'10110')/16.0 print '(a, ex0.1)', ' 1.375 = ', 1.375 print * ! print *, -15.625, '= -(15.0 + 0.5 + 0.125 = 15+1/2+1/8) = -1111.1010 = -0XF.A' print *, -int(b'11111010000000000')/16.0**3/2 print '(a, ex14.4e3)', ' -15.625 = ', -15.625 print * ! print *, 1048580.0, '= 16^4 + 4 = 1 0000 0000 0000 0000 0100 = 1000.0000 0000 0000 0010*2^17 = 8.0002P17' print *, b'100000000000000000100' print '(a, ex0.0)', ' 1048580.0 = ', 1048580.0 end program Console3
出力結果
Reid の与えた possible output は小数点位置を常に 1.xxx の形に位取りしていますが、intel fortran は 4 ビット分の 15 以下の数で位取りしているようです。
1.375000 = 1.0 + 0.25 + 0.125 = 1+1/4+1/8 = 1.0110 = 0X1.6 1.375000 1.375 = 0XB.0P-3 -15.62500 = -(15.0 + 0.5 + 0.125 = 15+1/2+1/8) = -1111.1010 = -0XF.A -15.62500 -15.625 = -0XF.A000P+000 1048580. = 16^4 + 4 = 1 0000 0000 0000 0000 0100 = 1000.0000 0000 0000 0010*2^17 = 8.0002P17 1048580 1048580.0 = 0X8.0002P+17
- 作者: Michael Metcalf,John Reid,Malcolm Cohen
- 出版社/メーカー: Oxford Univ Pr
- 発売日: 2018/11/06
- メディア: ハードカバー
- この商品を含むブログを見る