[H8-ML(5808)] Re: C言語の基本でしょうが
From: Toyo <toyo-azuma@xxxxxxxxx>
Date: 2006年01月29日(日)12時30分23秒
 Toyoです

 長いスレッドになったなあ・・・。(^^;

>float x, y ;
>double x,y ;
>こんな感じで、単精度実数、倍精度実数が宣言できます。
>今回、ワテもこのMLで習ったのですが、
>これにlong を付加すると倍倍制度になるANSI規格が出来てたようです。

 これですが、K&Rの頃からCを学んでいる人はご存じかと思いますが、確か
「"float の計算はいったん double に変換してから行われるので、処理速度は 
double の方が早い"」と云うような意味の記述がされていたように思います。
 古い石はともかく、最近の CPU なら実数計算 FPU で行われていると思いますし、
5789 のスレッドで澤口 @ 一升金さんが言われているように、

 float<=double<=long double

 ・・・ついでに short <= int <= long

 の関係しか規定されていないので、実際に使用する際は sizeof とか使って実際
のサイズを確認しておかないと無駄にもなりかねません。
 例えば、x87 のアセンブラでは精度を指定する命令は無かったように思います。H8
や SH は知りませんが、普通 FPU で倍精度とか倍々精度とかを区別して使えるよう
なアーキテクチャにわざわざしているだろうか?なんて疑問は抱きます。

 この辺、小数点演算の精度・スピードにこだわるなら、一応使用する石のアーキ
テクチャを当たっといた方が好いかも知れません。
 コンパイラが生成する FPU コードなんてしれたものですから、スピードだけにつ
いて言えば、小数点演算の部分だけアセンブラで書くなんて方法もあり得ますが、
通常はそんな事をしている開発時間なんてないだろうなあ。

 では、私もロートルの一人として(ベテランと言うほどの技術はない)。

                                                       2006/01/29 12:27:34

====================================

<<< Toyo : toyo-azuma@xxxxxxxxx  >>>

====================================

スレッド概略
[5806(R)](起点)
 └[表示中]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]