DBL_MAX * 2を含む演算をC++で計算したい – プログラミング – Home

DBL_MAX * 2を含む演算をC+...
 
通知
すべてクリア

[解決済] DBL_MAX * 2を含む演算をC++で計算したい


仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
Topic starter  

ゆえあって DBL_MAX*n、[n=1~1000程度] の値を含む四則演算をしたいのですが、
良い案がありましたら教えてください。
大昔にはlong double(80bit版)があったのですが・・・。

この場合 __m128d など、SIMDで書くのが一般的なんでしょうか。
・・・う~む(vv;)。

with VS2003( 32bit C++ native) on XP(SP3)
or VS2008

宜しくお願いします。


引用
トピックタグ
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

意味がわかんね・・・

double 1000個のベクトル演算がしたい?
64bit double で[精度/指数範囲が]不足な演算がしたい?
いわゆる多倍長演算ではなくて?


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
Topic starter  

>意味がわかんね・・・

すみません。中途半端なレンジ・・・
 -1.0E+312~1.0E+312 (程度の範囲) 
の四則演算をなるべく簡単に実装したい。ですね。
演算の中間の値もこの範囲に収まります。

んで、
1.double範囲に収まるように指数を落として計算する方法を考えれば良い。
2.64bitを超える浮動少数点演算でスッキリ。

の2.か別の案を教えていただきたいわけです。

*すみません。次は連休明けになるかも(vv;)。


返信引用
wclrp ( 'o')
 wclrp ( 'o')
(@wclrp ( 'o'))
ゲスト
結合: 18年前
投稿: 287
 

車輪の再発明的に多倍長ライブラリとかクラスとかあるけど
気になるのがバグないの?メンテナンスしてるの?ってことなんだよね。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

有効桁数としてどの程度が必要なのかによるのでは?
必要な有効桁数がdoubleの範囲に収まるのであれば、
指数部を落として、どっかに別にとっとくとかすれば可能なはず。
有効桁数がdoubleの範囲を超えるならそれこそ多倍長ライブラリとかいるのかも。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
Topic starter  

ご回答下さった皆さん、お礼申し上げます。
PATIOさんの案を参考にして
 1.対象のValueから仮数(double)と指数(long)を分離
 2.仮数同士、指数同士を演算
 3.結果の仮数と指数を結合
てな感じにしました。
今回は有効桁の問題ではなく、単純に演算させると
指数がいっちまうのがいやだっただけだので対策もややおざなり。
結局、簡単にはなりませなんだ(vv;)。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
Topic starter  

またやっちまった


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました