堀之内です。

>> それに、single と double の演算は double でおこなう
>> というのが本当に普遍のルールか、というのも、
>> 私は知識不足と考慮不足のためよくわかりません。
>> 確かに取ることのできる値の範囲は拡大しますが、
>> singleの数をdoubleに変換した直後は、
>> 精度的にはまだsingleのままですよね。

Fortran90 の本を引っくり返してみましたが、見つけられませんでした。仕様
だと思ってたのですが、探し方が悪かったのか仕様にないのかわかりません。
実際に手元のコンパイラーで試したらシングルとダブルの計算結果はダブルに
なりましたが (print *, 1d0+1f0 をやってみました)。

a + b (aはダブル, bはシングル) で |a| >> |b| の場合、結果の精度はダブ
ル相当のままということはあり得ます。この結果をシングルにしてしまうと、
丸め誤差以上にトランケートすることになります。もちろんダブルとシングル
を混ぜて計算するとシングル相当の結果しか得られないことが多いと思います
が、精度の高い方に合わせる方が安全ではあります。

>> > a + 0.1 の a がsingleの配列だったら結果もシングル、singleのスカラーだっ
>> > たら結果は double というのもちょっと、と思います。
>> 
>> スカラーにsingleの型がなければ... というのはさておき。
>> そうですね。スカラーでも成り立つどうかは考えていませんでした。
>> ただ私はそういう仕様でも不満はありません。というのは、
>> ・singleのスカラーはあまり使いそうにない。
>> ・配列とスカラーのコードは別コンテキストになる場合が多い。
>> からです。
>> もちろんスカラーにsingleの型を導入するのであれば、
>> その影響をもっと考えてから仕様を決める必要はあると思います。

そうですね。

# 答えになってなくてすみません。

堀之内 武                 horinout / kurasc.kyoto-u.ac.jp
京都大学超高層電波研究センター    611-0011 宇治市五ヶ庄