Path: coconuts.jaist!wnoc-tyo-news!etlnews.etl.go.jp!etlinn.etl.go.jp!etl.go.jp!trc.rwcp!rwc-tyo!news.iij.ad.jp!rim.or.jp!news.kddnet.ad.jp!news.dvlp.kddnet.ad.jp!news.cs.ritsumei.ac.jp!kuis-news!s2000!beauty!clair.noc.fujita-hu.ac.jp!fame.fujita-hu.ac.jp!chiba-ns!keknews!keknews.kek.jp!tomita From: tomita@kek.jp (Norikazu TOMITA) Newsgroups: fj.lang.fortran Subject: Re:multi-precision Date: 14 Jun 1996 12:50:12 GMT Organization: KEK , Tsukuba , Japan Lines: 58 Distribution: fj Message-ID: NNTP-Posting-Host: nasuws4.kek.jp 高エネ研の富田です。さっそくの情報有難うございます。少し説明ぶそくだっ たので自己フォローします。 |>>>>> On 14 Jun 1996 05:38:51 GMT, tomita@kek.jp (Norikazu TOMITA) |said: |> この度、ベクトルのノルムと内積を非常に精度良く計算する必要が生じました。 |> もっとも単純な方法は4倍精度を使う事なのですが、これでは当方が使っている |> スパコンが使えません。そこで SLATEC(スペルに自身がありません)に転がって |> いた倍精度の計算を多倍精度で計算し結果を倍精度に戻すルーチンを拾って来た |> のですが、これがすこぶる遅いのです。ただの倍精度と比較してワークステーショ |> ン上で4倍程度(4倍精度の計算よりも倍以上遅い)スパコンでは100倍程度も遅く |> なってしまいます(ベクトル化できていないのが原因だと思われます)。 | |> そこで、 | |> 1、どこかに上で述べたような機能を持ったプログラムでベクトル化まで意識し |> たものがありませんでしょうか? | |> 2、 ノルムや内積くらい(言い遅れましたが実数です)こうやれば精度良く計算 |> できる、と言うアイデアをご存知の方はいらっしゃいませんでしょうか? と言う私の問いに対しまして、牧野@東大駒場様より >えっと、よくわからないのですが、元の数は倍精度以上の精度があるの >ですか?それとも、データは倍精度なんだけれど非常に次元が大きいと >か、キャンセレーションが起きるとか(でも内積ならキャンセレーショ >ンは起きないかな?)で精度がいるのでしょうか。 と言う質問を受けました。説明不足で申し訳ありませんでした。答としまして は後者の方で、もともと倍精度実数なのですが、各成分間でかなりオーダーに差 があるために丸め誤差を生じてしまっているものと思われます。 >x = 0 >xsub = 0 >do i = 1,n > q = x > x = x + (xsub + dx(i)) > r = x - q > xsub = xsub + (dx(i) - r) >enddo > >と、こんな感じかな。(どっか間違っているかもしれません) > >総和演算自体をベクトル化できる方法としては、例えばトーナメント方 >式で隣接2項を足して半分の長さの配列を作るというのを繰り返すという >方法があります。これで十分な精度がでる場合もあるでしょう。 大変参考になります。後で試して見ます。有難うございます。 -- ------------------------------------------------------------------------- 富田憲一 (TOMITA Norikazu) 高エネルギ物理学研究所 放射光測定器研究系 茨城県つくば市大穂1-1 0298-64-5593 tomita@nasuws4.kek.jp