JPH01237822A - 浮動小数点データの十進数変換装置 - Google Patents

浮動小数点データの十進数変換装置

Info

Publication number
JPH01237822A
JPH01237822A JP63063491A JP6349188A JPH01237822A JP H01237822 A JPH01237822 A JP H01237822A JP 63063491 A JP63063491 A JP 63063491A JP 6349188 A JP6349188 A JP 6349188A JP H01237822 A JPH01237822 A JP H01237822A
Authority
JP
Japan
Prior art keywords
decimal
conversion
digits
floating point
decimal number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP63063491A
Other languages
English (en)
Inventor
Junichi Kobayashi
純一 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP63063491A priority Critical patent/JPH01237822A/ja
Publication of JPH01237822A publication Critical patent/JPH01237822A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明は、浮動小数点データを十進数データの表現に変
換1−る装置に関するものである。
(従来の技術) 計算機による数値計算は、はとんどの場合浮動小数点演
算によりなされるが、数値が人力されるとき、計算結果
が出力されるときは10進数の文字列で!yえられる。
そのための変換においては、精度を落とすことなく、処
理速度を向1させる1Sが必要である。
従来、このような分野の技術としては「アルゴリズム子
データ祷造=プログラムJ N、1firLh著「1本
コンピュータ協会(p49〜54)に記載されるものが
あった。
浮動小数点データの取り扱いでは、常に粒度と処理速度
が問題とされる。十進数変換においても、処理速度を上
げるために、浮動小数点演算ハードウェア命令を多用す
れば、精度の低下はまぬかれず、逆に完全な精度を保証
するためには、5晴の作業用メモリと処理時間を必要と
することが分かっている。
この変換に関しては、上記文献にパスカル言語(Pas
cal)による完全なプログラムと共に挙げられている
他、いくつかの文献に見られるが、そのいずれも十進数
列を取り出す部分の処理は第2図のアルゴリズムに従っ
ている。そしてこのアルゴリズムか使えるための条件0
≦x<1を満たすための正規化に、それそわ工夫かなさ
れている。例えば、上記文献中のパスカル(Pasca
l)プログラムでは、まず始めに X=±X、*toE  (o≦x、<1)の正規化を−
lチえる。ここで、Eは指数計算によってあらかじめ計
算しておくので、1回の除算でXlを11?ることかで
きる。
いずれにしても、このアルゴリズムに従う限り、イ?動
小数点演算ハードウェア命令による精度の低下か生じる
ので、C言語やパスカル言語ならばともかく、フォート
ラン言語のような高績度を要求される科学技術計算用言
語では、商品価値はなくなる。
そこで、現存のフォートラン(FORTRAN)処理系
はそれぞれ独自の方式を採用している。これらに関する
文献は無いが、これらの多くは以下の特徴を有している
: (1)浮動小数点演算に替って、固定小数点演算のみで
実現する。
(2)十進数変換結果は、作業域トに十進数の加算、乗
算をくり返すことで、作りトげられてゆく。
このような方式であれば、作業域を多くとることによっ
て、いくらでも精度を上げることができ、やや複雑には
なるが誤差の厳密な評価も可能である。
(発明が解決しようとする課題) しかし、当然これらの方式は、浮動小数点演算を使用す
る方式より、はるかに処理時間を要する。工夫によって
比例定数を小さくすることは出来ても、原理的に精度の
2乗に比例する処理か必要になる。このことは、いくつ
かの計算機に見られる128ビット拡張精度浮動小数点
データの変換においては決定的で、このような方式では
正常な処理速度のものは作ねないという問題点があった
この発明は、粒度の低下の原因となる浮動小数点演算ハ
ードウェア命令を使用せず、替って多くの汎用計算機に
実装されている十進数演算ハードウェア命令を有効に使
用することにより、はぼ完全な精度に近く、しかも処理
速度をそれほど落とさない変換アルゴリズムを有する装
置を提供するものである。
(課題を解決するための手段) 本発明は、浮動小数点データの取り扱いにおいて、仮数
部を7桁の16進数に分割する手段と、分割された前記
仮数部を別々に10進数に変換する手段と、10進数へ
変換する定数を内蔵する手段と、10進数演算を実行す
る10進数演算手段と、演算結果を累算する10進数レ
ジスタ手段とからなることを特徴とする。
(作用) 本発明によれば以上のように浮動小数点データの十進数
変換装置を構成したので、仮数部の旧記分割手段は16
進数仮数部を小数点の前後に7桁ずつに分割し、前記1
0進数変換手段は分割された仮数部をそれぞれ9桁の1
0進数に変換し、10進数へ変換する定数を内蔵する手
段は、11η記変換手段に必要な精度の定数テーブルを
任し10進数θi算手段は十進数演算ハードウェア命令
に基づく演算を実行し、10進数レジスタ手段にその演
算結果が累算される。
したがって前記問題点を除去でき、精度も高くしかも処
理速度をそわばと落とさない変換アルゴリズムを有する
装置を提供できる。
(実施例) 第1図は本発明の実施例を示すブロック図であり、1は
仮数部の分割部、2は10進数への変換部、3は10進
数への変換定数内蔵部、4は10進数θ1算部、5は1
0進数レジスタ部を示す。
ここでは、簡単のため第3図のような128ビット拡張
粒度浮動小数点データ型の10進数変換について述へる
。この他の浮動小数点データ型に対して、この方式を適
用することは容易である。
第4図は本変換方式の概要を示したものである。本方式
は以下の3段階からなっている。
ステップ1; 仮数部の分割部1では16進数仮数部(Hl。
H2、H:+ 、H4、Hl)を小数点の前後に7桁ず
つ区切り、10進数への変換部2では、それらをそれぞ
れ9桁の10進数(D+ 、D2 、D3 。
D4.D5)に変換する。
ステップ2; 10進数への変換定数内蔵部3では、16’(E=0.
±7.±14−)を9桁区切りの10進数に変換した定
数(Cij)として必要な粒度たけテーブルに持ってい
る。10進数演算部4ではこれら(Cij)とステップ
1で4:?られた値(DK ’)とを、たすきがけの要
領で同じ位になるものどうし、10進数演算命令でかけ
合わせ、10進数レジスタ部5ではそれぞれの作業域(
Ro 、R+ 。
R2、R3、R4、Rs )である9桁パック形式10
進数レジスタに累加算する。
ステップ3; ステップ2で得られた値を加算し、必要な桁数でまるめ
る。
以下に、本方式による変換の実例(1)、本方式で必要
な粒度が得られること(TI ) 、及び、本方式の処
理速度が、第2図による方式と比べてそれほど劣らない
こと(III)を述へる。
(I)変換の実例 ここでは(I)で述べた変換の過程を、其体的な数値で
例示する。
第3図のデータ型で実数1,5を表現すると、第5図の
ようになる。第0ビツトの0は符号が正であることを意
味し、第1〜第7ビツトの1、及び第8ビツト以下の1
6進数1800・・・は、1.5の16進数展開 のそれぞれ指数1と展開係数1.8を意味している。
ステップ1では、まず第5図下のように、このI6進数
仮数部を小数点位置の両側に7桁ずつ区切り、そのそれ
ぞれをIO逆進9桁バック形に変換する。第6図は、こ
の変換後の表現を示したものである。ここでは、ハード
ウェアによるビット操作命令と、10進数2進数変換命
令か効率よく使用される。
ステップ2では、第7図の10進数レジスタ(最初はす
べて0になっている)の上に、第6図の10進数データ
と第8図の定数テーブル中の値とを、第9図の累算ルー
チンを使用して累算して行く。
累算ルーチンは、2つ(A、B)の9桁のIO進数デー
タを受は取りその積を18桁の10進数データに計算し
、それを2つの引き続(10進数レジスタ(Rn、Ro
、1 )に加算する。ここでもハードウェアによる10
進数演算命令が効果的に使用される。
第10図は、第6図の表現が累算ルーチンによって10
進数レジスタに計算されて行く様子を示している。第1
0図の最後の形は、R1とR2との間を小数点と見て、
実数1.5が誤差なしで10進数表現されている。
ステップ3では、これを必要な精度で丸め、パック形式
から文字形式に変換し、必要な符号や小数点を補って出
力形式とする。
この例では、変換前の浮動小数点データが表現する実数
と、ステップ2で得られた10進数レジスタの表現する
実数が等しくなっているが、−般には誤差が生じる。次
節では、その誤差が浮動小数点データの精度に見合うも
のであることを示す。
(II)精度の評価 このデータ型では、表現できる1より大なる最小の値が 1 + 2−Ill勾1−+、]、85X 10−”で
あるから、変換後の10進数での有効数字は34桁ある
ことになる。従フて変換においては、35桁までの精度
を保証しなければならない。
以後、Xをこのデータ型で表現された任意の値とし、X
を本方式によるXの10進数変換結果の値とする。我々
の目標は、 + (x−X) /x l < 10−35(A)であ
る。
0の変換、及び符号の識別は客易なので、以後x>0と
仮定し、Xのステップ1での変換結果を、 x =Do x 1 67に+−+D4 X 1 6”
””(n) (0≦D、<16’  、D。 ≠0)とおく。このデ
ータ型で表現し得る正の値の範囲は 0、lX  l  6−”  ≦X≦ 0.Ix  1
 663であるから、(B)において、 =10≦に≦8(C) である。
(C)よりステップ2で使われる定数としては(−10
≦に≦8,0≦CKJ〈109゜を持てばよい。(C)
の範囲のKに対しては(D)の表現か可能であることに
注意したい。16進数の7桁を10進数の9桁に変換す
る理由は、この表現が可能であることにある。
そこで第4図のステップ2のように (i=に、  K−1,・・・K−4゜0≦6.<10
9(に−6)) と表わせば、(B)より であって、 0〈ε<5x 167X 10”K−61となる。一方
、ステップ3の結果、(E)の第1項がIO進数変換結
果Xとなり、(B)よりX > 167にであるから、 +  (x−X)/x + =ε/x < 5 x 167x f O””’x 16−7に=
 1101o、o5+71og、016−54十に(9
−71og+ole)<10−” となり、必要な粒度は得られている。
(III)処理速度の評価 本方式では10進数乗算を21回、10進数加算を20
回の固定量の処理を必要とする。一般にハードウェアに
よる10進数演算命令と、第3図のような拡張精度デー
タの演算命令とでは、モ均的な処理速度において、それ
ほどの差は現われない。
一方、第2図のアルゴリズムによって35桁のlθ進数
を取り出すためには、35回の拡張粒度乗算を必要とす
る。
従って、本方式の処理速度は、第2図のアルゴリズムに
よる方法と比較しても、それほど劣らないことか分かる
以上16進数を10進数に変換する場合について詳細に
説明したが、この逆である10進数を16進数に変換す
る場合も同様に可能であるので、本発明の範囲に含まわ
る。
(発明の効果) 以上詳細に説明したように、本発明によれば、まず最初
に10進数の部分和表現に展開してしまい、浮動小数点
データでの演算は一切使用しないので、必要な精度を最
後まで保持でき、その評価の正当性の証明も明瞭である
また、効果的に10進数演算ハードウエア命令を用いる
こと、及び、あらかじめ計算された変換データの表を保
持しておくことにより、同様な精度を保証する他の方式
に比べ、著しく処理速度を向」ニさせることができるの
である。
【図面の簡単な説明】
第1図は浮動小数点データの十進数変換装置のブロック
図、第2図は実数0≦x<1の十進数展開フローチャー
ト、第3図は128ビット拡張精度浮動小数点データ型
図、第4図は変換の概要図、第5図は実数1.5の表現
図、第6図はステップ1、終了後の表現図、第7図は1
0進数レジスタ構成図、第8図は定数テーブル(10進
数9桁)、第9図は累算ルーチン図、第10図は10進
数レジスタへの累算図である。 1:仮数部の分割部、 2:10進数への変換部、 3:10進数への変換定数内蔵部、 4:■0進数演算部、  5:10進数レジスタ部。

Claims (1)

  1. 【特許請求の範囲】 浮動小数点データの取り扱いにおいて、 仮数部を7桁の16進数に分割する手段と、分割された
    前記仮数部を別々に10進数に変換する手段と、 10進数へ変換する定数を内蔵する手段と、10進数演
    算を実行する10進数演算手段と、演算結果を累算する
    10進数レジスタ部とからなることを特徴とする浮動小
    数点の十進数変換装置。
JP63063491A 1988-03-18 1988-03-18 浮動小数点データの十進数変換装置 Pending JPH01237822A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63063491A JPH01237822A (ja) 1988-03-18 1988-03-18 浮動小数点データの十進数変換装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63063491A JPH01237822A (ja) 1988-03-18 1988-03-18 浮動小数点データの十進数変換装置

Publications (1)

Publication Number Publication Date
JPH01237822A true JPH01237822A (ja) 1989-09-22

Family

ID=13230770

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63063491A Pending JPH01237822A (ja) 1988-03-18 1988-03-18 浮動小数点データの十進数変換装置

Country Status (1)

Country Link
JP (1) JPH01237822A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5687106A (en) * 1995-03-31 1997-11-11 International Business Machines Corporation Implementation of binary floating point using hexadecimal floating point unit
US11360769B1 (en) 2021-02-26 2022-06-14 International Business Machines Corporation Decimal scale and convert and split to hexadecimal floating point instruction
US11663004B2 (en) 2021-02-26 2023-05-30 International Business Machines Corporation Vector convert hexadecimal floating point to scaled decimal instruction

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5687106A (en) * 1995-03-31 1997-11-11 International Business Machines Corporation Implementation of binary floating point using hexadecimal floating point unit
US11360769B1 (en) 2021-02-26 2022-06-14 International Business Machines Corporation Decimal scale and convert and split to hexadecimal floating point instruction
US11663004B2 (en) 2021-02-26 2023-05-30 International Business Machines Corporation Vector convert hexadecimal floating point to scaled decimal instruction

Similar Documents

Publication Publication Date Title
US5631859A (en) Floating point arithmetic unit having logic for quad precision arithmetic
JP3529828B2 (ja) ポピュレーション・カウントの計算装置
JP2557190B2 (ja) 引き数簡約の最適化システム
Werner Some improvements of classical iterative methods for the solution of nonlinear equations
JPH01237822A (ja) 浮動小数点データの十進数変換装置
Bailey MPFUN: A portable high performance multiprecision package
Buell et al. A multiprecise integer arithmetic package
Schulte et al. Performance evaluation of decimal floating-point arithmetic
Koç A Tutorial on p-adic Arithmetic
JP2579321B2 (ja) バイナリ処理装置
JPH11296346A (ja) 浮動小数点2進4倍長語フォ―マット乗算命令装置
US5181186A (en) TPC computers
JPH0831024B2 (ja) 演算プロセッサ
Rickert Efficient reduction of quadratic forms
RU2148270C1 (ru) Устройство умножения
Feucht Logarithmic number representations in Forth
JPH05274116A (ja) 浮動小数点演算装置
JP3055558B2 (ja) nビット演算装置
JPH0234037A (ja) 数値データ変換方式
SU1315970A1 (ru) Устройство дл умножени
SU1388853A1 (ru) Устройство дл делени чисел с фиксированной зап той
JPH02165225A (ja) 精度つき浮動小数点数演算処理装置
SU1562906A1 (ru) Множительно-делительное арифметическое устройство
SU553614A1 (ru) Множительно-делительное устройство
RU2267806C1 (ru) Устройство для коррекции порядка результата сложения чисел с плавающей запятой