【FPU】 浮動小数点 【SSE】at TECH
【FPU】 浮動小数点 【SSE】 - 暇つぶし2ch175:デフォルトの名無しさん
08/02/19 21:41:38
>>174
1万円かけたところで誤差なんてないじゃん。
そもそも 「何との」 相対誤差を出したいんだ?

176:デフォルトの名無しさん
08/02/19 21:49:36
1.17549435e-34円も-1.17549435e-34円も
四捨五入すれば0円か…その通りだ

真の値と測定値との間の誤差…セ氏度表示で
ってダメ?


177:デフォルトの名無しさん
08/02/20 15:30:24
そんなことより >157 よ、聞いてくれ。(>161、>165 も同類か?)
おでん屋のオーナーもよく聞きなさい。

ベクトルの大小はものの本質ではない。扱うベクトルが小さいからといって天文学者が量子力学者を馬鹿にするような行動は慎まねばならぬ。スケールの大小と精度の長さは区別せねばな。

>161
> 例えば 1 前後のオーダーが普通な時に
> 10^-14 みたいなサイズのベクトルがあったら
> それは多分もの凄い勢いで数値誤差を含んでる。
IEEE754単精度では1~10^-37ぐらいを同じ精度で計算するのは朝飯前じゃがのう。

>165
> もの凄く小さいベクトルは何らかの形で数値誤差が大きいかもしれないから、
量子力学者のベクトル計算は天文学者より数値誤差が大きいとでもいうのかね?

> 数値誤差のせいで別の方向を向いてるなんてことは普通にある。
で、何に困ってるのかね?おでん屋のお姉ちゃんを見習って温度計を買い換えたらどうかの?ベクトル要素の性質と単位ベクトルの用途を聞かんことにはなんとも答えられんのう。

> どこから0ベクトル扱いにしていい物やら悩む。
これこれ、あくまでも目的は単位ベクトルじゃ。そうじゃったよな? >157

という訳で状況を確認させてもらおう。状況が解らない以上、>157 には最大公約数的な答えしか返ってこないじゃろうな。多目的用途のデータマイニング屋さんのように。

・「ほぼ0」ってどれぐらい?0.01ぐらい?
・ベクトル要素の単位は何?質量?気温?無次元数?IPアドレス?
・ベクトル要素のソースは何?計算結果?計測器?物理定数?
・単位ベクトルを得る目的は?
・当然浮動小数点だよな?


178:デフォルトの名無しさん
08/02/20 16:11:41
>IEEE754単精度では1~10^-37ぐらいを同じ精度で計算するのは朝飯前じゃがのう。
よくわからないけど、 1.0 + 1.0 * 10^-37 が正確に計算できるってこと?

179:デフォルトの名無しさん
08/02/20 17:53:25
>>178

うむ、この程度の計算なら0.5ulpのハードルはらくらくクリアだな。

180:デフォルトの名無しさん
08/02/20 18:15:27
その計算は仮数部が128ビット以上必要だろJK

181:デフォルトの名無しさん
08/02/20 18:48:35
ビックリするかもしれないが、0.5ulpさえクリアすればそれが「正確」というものなのだよ…


182:デフォルトの名無しさん
08/02/20 18:56:37
>180
キミは禁断の「真実の値」に迫りたいのかい?
恐ろしいことに、このケースでは仮数部は何桁あっても足りないのだよ…
こうして毎日何人ものプログラマーがBCDの暗黒面に落ちていくのだよ…


183:デフォルトの名無しさん
08/02/20 19:05:00
>181
情報落ちは言い出した人の責任ですかそうですか
>182
1.0 * 10^-37 を「有効数字2桁?」と考えた上での発言だ
…前半の1.0のほうを忘れてたなそういえば

184:デフォルトの名無しさん
08/02/20 19:21:37
10^-1に仮数部が何bit必要か計算してごらん…
おのずと1.0+1.0*10^-37の正体にも気付くさ…

>こうして毎日何人ものプログラマーがBCDの暗黒面に落ちていくのだよ…

やがて彼らは新天地で1÷3に出くわし、挫折の末、戻ってくるのさ…
そして望む/望まざるに関わらず >181 を受け入れて生きていくしかないのだよ…クククッ


185:デフォルトの名無しさん
08/02/20 19:23:56
そこで分数表現が登場

186:デフォルトの名無しさん
08/02/20 19:54:01
ライブラリの中の人が10進2進変換に苦労してることも
知ってるし。だ れ が 1.0+1.0*10^-37の「真実の値」を
知りたいと言ったか。

分数は大小比較が困難だからなー。循環小数について
考えてみようよ。
手始めに0.111...と1.000...をどう正規化するかについて。

187:デフォルトの名無しさん
08/02/20 20:07:36
循環小数は分数化できるよ
0.900900900900.... = 900/999
0.90909090.... = 90/99
0.9999.... = 9/9 = 1/1
大小比較は通分すればいいんじゃない

188:デフォルトの名無しさん
08/02/20 20:45:46
分数を循環小数形式で格納する利点は無いものですかね

189:デフォルトの名無しさん
08/02/20 21:17:59
さあ、πを正確に小数で表現してください。

190:デフォルトの名無しさん
08/02/20 22:27:51
レベル低すぎ
厨房が涌いてるのか?

191:デフォルトの名無しさん
08/02/21 00:54:42
> 10^-1に仮数部が何bit必要か計算してごらん…
> おのずと1.0+1.0*10^-37の正体にも気付くさ…

うーん、待ってくれ。

「n^-a を適当な基数で基数変換して循環小数になったら
 n^-(a+1) の基数変換もまた循環小数である」
…これ、正しいよな?

「整数+循環小数もまた循環小数である」これも確かだよな?


192:デフォルトの名無しさん
08/02/21 01:30:20
>>177
> > もの凄く小さいベクトルは何らかの形で数値誤差が大きいかもしれないから、
> 量子力学者のベクトル計算は天文学者より数値誤差が大きいとでもいうのかね?
全体的にオーダーが小さい場合は問題ないと何度も言ってるのに
何でそう言う事言うかね。

> > 数値誤差のせいで別の方向を向いてるなんてことは普通にある。
> で、何に困ってるのかね?おでん屋のお姉ちゃんを見習って温度計を買い換えたらどうかの?
> ベクトル要素の性質と単位ベクトルの用途を聞かんことにはなんとも答えられんのう。
そもそも温度計の話も意味が分からない。
「ほぼ0の値になるとおかしなことになる状況だ」 という状況説明が何もない。
気温(摂氏)で割ってるような式でもあるのか?
それを華氏に直して意味はあるのか?
元の式を変える事ができないなら、
いくらデータを保持する時の尺度を変えようが、
結局もとの形式に変換しないと元の式には適用できない。
数値誤差が増えるだけの愚行。
それができるのは元の式を変える事ができる場合だけだが、
それなら別にデータをコンバートする必要も無く、式を変えればいいだけ。

> > どこから0ベクトル扱いにしていい物やら悩む。
> これこれ、あくまでも目的は単位ベクトルじゃ。そうじゃったよな? >157
例えば解析的には0ベクトルになるはずのものが
数値誤差で非0ベクトルになった場合もあるだろう。
そういう場合に単位ベクトルを得て何の意味があるのか?
意味がないなら0ベクトルになっても構うまい(場合によっては例外投げても構わん)。

193:デフォルトの名無しさん
08/02/21 01:41:53
>>188
あんま無いよ、どうせやるなら同次型にして取り扱うが吉
速くて誤差なし

194:デフォルトの名無しさん
08/02/21 03:16:49
>>178
おまえw 気をつけろw >>177のいう事信じるなwww
ちょっとでも数値計算したことあれば、言ってることが嘘だと分かる。

確かに単精度で表される最小数値は10^-37程度だが、有効桁は仮数部できまるので
1程度の量と混ぜたら、単精度では10^-7程度の誤差が出る。

小学生的なイメージで言えば、浮動小数点では数直線を対数的にメッシュで切っているので、
0近辺では目が細かくて10^-37程度だが、1の近辺では目が粗くなっていて10^-7程度でメッシュが
切られている。だから、これ以上細かい数値を足し引きしても、近場のメッシュに寄せられてしまうので
(寄せ方は切り上げ切捨て、四捨五入(しかも色々ある)などIEEE745の規格で決まった寄せ方を
フラグで指定してやれる。SSEとかはこの辺をきちんとやってない。)
1近辺では10^-7以下の数値は意味を持たない。

これは、浮動小数点をよく知らぬまま数値計算をやっていても、結果を吟味する段階で必ず出会うことなので、
浮動小数点の仕組みを知らなくても、単精度は10^-7~8、倍精度は10^-14~15などという事は、嫌でも体で覚える。

この点からして、>>177は計算しない素人評論家もしくはアホ。相手にするな。


195:デフォルトの名無しさん
08/02/21 05:12:11
なんかこのスレグダグダすぎてワロタ。

196:デフォルトの名無しさん
08/02/21 13:03:42
>194
>確かに単精度で表される最小数値は10^-37程度だが、有効桁は仮数部できまるので
>1程度の量と混ぜたら、単精度では10^-7程度の誤差が出る。

出ねーよwww
1 に 10^-37 足したら誤差が 0.0000001 ってどこの電卓だよ! ハライテー

>0近辺では目が細かくて10^-37程度だが、

正規数オンリーでも10^-43(≒2^-149)ぐらい楽勝だろうが。
あのさぁ、最小値=最小の刻み幅とか勘違いしてない?

>この点からして、>>177は計算しない素人評論家もしくはアホ。相手にするな。

「1~10^-37ぐらいを同じ精度で計算するのは朝飯前」
被加数:1.000000 (精度7桁)
 加数:1.000000 * 10^-37 (精度7桁)
 合計:1.000000 (精度7桁)

何か問題あるわけ?


197:デフォルトの名無しさん
08/02/21 14:10:37
[悪い例]
float温度[℃]に 3 << 22 を加えた後、3 << 22を引けば整数化される。
1 << 23個の1円玉(約1g)のfloat重さを加算した後で平均をとる。

>>おでんや
x87CWのUM,DMをセットするか例外ハンドラをつけるべき

198:デフォルトの名無しさん
08/02/21 14:31:53
>>196
その加算で精度7ケタに丸められることを
194は10^-7程度の誤差と言っているのでは?

199:デフォルトの名無しさん
08/02/21 15:05:15
>194
そんなレベルの議論は>181>183で終わっているように見える
>196
0.5ulpの意味でベストを尽くすこととそれに意味があるかどうか
ということは別の問題だ
1と1+10^-8を区別できない状況で誤差が10^-37程度だなんて
主張したかったらもっと筋道立てて説明しろ
あと
>「1~10^-37ぐらいを同じ精度で計算するのは朝飯前」
の意味をもう少し具体的に書け
どんな元データからどういう計算をしようとしてるのかを

200:デフォルトの名無しさん
08/02/21 16:25:41
もし次スレが立つ様ならスレタイにくだすれって入れとけよ

201:デフォルトの名無しさん
08/02/21 17:26:37
>>191
10進数で1/3=0.3333333333…は3進数では0.1だ。


202:デフォルトの名無しさん
08/02/21 19:17:18
>>196
誤差を理解してないな。

203:デフォルトの名無しさん
08/02/21 21:28:01
>よくわからないけど、 1.0 + 1.0 * 10^-37 が正確に計算できるってこと?

「よくわからない」ふりして指数域の問題に見せかけつつさりげなく循環小数を忍ばせてIEEE陣営の内ゲバを狙う>>178よ…恐ろしい奴だ。BCD陣営の刺客か?俺も釣られるところだったぜ…

>1 に 10^-37 足したら誤差が 0.0000001 ってどこの電卓だよ! ハライテー

>>196よ、知恵を付けた>>194が「round toward +INFINITYモードだい!」と屁理屈こねて反撃してくる可能性に気をつけろ。0.5ulpの威光も吹っ飛ぶぜ。

>>「1~10^-37ぐらいを同じ精度で計算するのは朝飯前」
>の意味をもう少し具体的に書け
>どんな元データからどういう計算をしようとしてるのかを

じいさんはそれを>>157に確認してる最中なんじゃねぇの?
このスレの迷走っぷりに呆れて157ももう戻ってこないんじゃないかと。

> 例えば 1 前後のオーダーが普通な時に
> 10^-14 みたいなサイズのベクトルがあったら
> それは多分もの凄い勢いで数値誤差を含んでる。

俺もなぜこの程度の指数域で精度不信に陥ったのか事情を知りたい。


204:デフォルトの名無しさん
08/02/21 22:32:18
想像だけど、計測値を補間する場合はそんなことが起きる。
回転しないはずなのに微量の回転とか。

205:デフォルトの名無しさん
08/02/21 22:34:18
もうそろそろネタがつきる頃だな。

206:デフォルトの名無しさん
08/02/21 22:40:47
>>196
馬鹿はすっこんでろw
さらしage

207:デフォルトの名無しさん
08/02/21 22:54:54
>>203
機械εが10^-16前後だから
1 前後の値を数百数千数万数十万といった加減算をやってりゃ
10^-14 程度の数値誤差はあって当然。

208:デフォルトの名無しさん
08/02/21 22:55:19
倍精度での話な。

209:デフォルトの名無しさん
08/02/21 23:17:21
>>196
あのさぁー
あんた誤差とか有効桁の意味分かってないだろ?

>正規数オンリーでも10^-43(≒2^-149)ぐらい楽勝だろうが。
あのさーwww
あんたさー正規数と非正規数の違い分かってないだろ。

あのさぁーwwww
実地で数値計算をしていれば最小値とか誤差ぐらい誰でも知ってることだよ。
あんた、ただ規格ちょっとかじり読んで得意になってるだけのおっちょこちょいのトーシロさん?


>「1~10^-37ぐらいを同じ精度で計算するのは朝飯前」
>被加数:1.000000 (精度7桁)
> 加数:1.000000 * 10^-37 (精度7桁)
> 合計:1.000000 (精度7桁)

>何か問題あるわけ?

あのさぁーwwwwwwwwwwwwwwwww
> 2008/02/21(木) 13:03:42
ひょっとして、あんた昼間っから酒飲んで酔っ払ってない?
まさか素面で真面目に書いてないよね?


>>203
>>196の自演?pupupu




210:デフォルトの名無しさん
08/02/21 23:21:16
自称データマイニング屋のせいで糞スレ化してしまったな。

211:デフォルトの名無しさん
08/02/21 23:36:09
>>210
>>4の呪いだ.


212:デフォルトの名無しさん
08/02/21 23:40:08
的確すぎて泣けた

213:デフォルトの名無しさん
08/02/22 00:23:33
ここまで全部 >>4 による自作自演なんじゃないかと思えるほどぴったりだな。

214:デフォルトの名無しさん
08/02/22 00:26:28
誤差はちゃんと高校で教えるはずなのに
まともに教える学校が少ないのかな。
俺も大学の物理実験ではじめてまともにやったよ。

215:デフォルトの名無しさん
08/02/22 00:44:23
判りやすく仮数部は2進表記な。

最小の単精度正規数
1.00000000000000000000000 × 2^(-126)

次に小さな単精度正規数
1.00000000000000000000001 × 2^(-126)

その差
0.00000000000000000000001 × 2^(-126)

差を正規化して
1.0 × 2^(-149) ≒ 1.4 × 10^(-45)

奇しくもこれって非正規数の最小値と一致するのな。
>>209 はその辺読み違えたのかと。だよな?


さて、>>194 (= >>209 ?) の番だよ。

>0近辺では目が細かくて10^-37程度だが、
>1の近辺では目が粗くなっていて10^-7程度でメッシュが切られている。

10^-37 の算出根拠を示してください。


216:デフォルトの名無しさん
08/02/22 01:35:23
>>207
> 10^-14 程度の数値誤差はあって当然。
「誤差が10^-14」ってどこから出てきた話よ。

> 10^-14 みたいなサイズのベクトル
の要素の誤差が10^-14なのか?もしそうならこれはひどすぎる。


217:デフォルトの名無しさん
08/02/22 02:19:10
>>215
それは評判の悪い漸次的アンダーフローの場合だろwwwww

その2数で差を取ったら非正規数になり結局0.0になる。
実際には10^-45という非正規数は見ることは無いんだよ。

大体これは実際に数値計算をしていれば分かること。
プログラム動かして、IEEE754単精度で1.0e-45だのの数字を見たことあるかよ?



要するに、お前がやってるのは、布団海水浴なんだよ。布団の上で水泳ごっこしてるのと同じなんだよ!
規格だけ見てワーワー言ってるから、頓珍漢なことを言うんだ。
2chで遊んでないで、ちゃんとプログラム組んで計算しろ!


218:デフォルトの名無しさん
08/02/22 02:59:57
おや、これはなんだろう。
--
awk 'END {printf("%c%c%c%c", 1, 0, 0, 0);}'|od -t f4
--
私にはIEE754単精度の約1.4e-45に見えるのだが。

219:デフォルトの名無しさん
08/02/22 07:25:57
>>216
> > 10^-14 程度の数値誤差はあって当然。
> 「誤差が10^-14」ってどこから出てきた話よ。
常に O(1) の値を扱って、
それらが全て循環小数なり無限小数なりなら、
100 回の加減算で誤差は機械εの 100 倍のオーダー、
つまり O(10^-14) になる。
しかし実際には、
常に循環小数なり無限小数なりにならないかもしれないし、
常に O(1) ってことはないかもしれないし、
実践的には O(10^-14) ということはないかもしれない。
もっと早く O(10^-14) に達するかもしれないし、
もっと遅く O(10^-14) に達するかもしれない。

> 10^-14 みたいなサイズのベクトル
そんな感じの計算をそんくらいの回数だけ計算をした場合、
10^-14 は数値誤差と同程度のオーダーのベクトルだから、
1桁目にも数値誤差がてんこもりの恐れがあるってことだ。
実際、そういう感じの計算を行った場合、
O(10^-14) のベクトルの向きは当てにならない。

220:デフォルトの名無しさん
08/02/22 07:27:03
× 10^-14 は数値誤差と同程度のオーダーのベクトルだから、
○ O(10^-14) のベクトルは数値誤差と同程度のオーダーのベクトルだから、

221:デフォルトの名無しさん
08/02/22 11:45:07
で、結局、IEEE754単精度正規数の最小ステップ長は誰が正しいんだよ。

・10^-37程度
・10^-43ぐらい楽勝
・≒1.4*10^-45


222:デフォルトの名無しさん
08/02/22 12:12:59
>>218
ワロタw それは非正規数だしwww 弁当まじりの茶吹いたwwwww
odのf4フォーマットは非正規数をベタで出せてよかったねwww
えらいえらい見えた!見えた!




単精度実数での数値計算の誤差を踏まえた話をしてるんじゃ無かったのかよ。
好きなビット列と好きな浮動小数点フォーマットでへんちくりんな数を出して遊んでるなら、
次はIBMの16進形式で頼むわwwww


”あのさぁー”wwwwww
0.0の次の正規数は約10^-38で、この間隔の方が現実の数値誤差には重要なんですよぉー。
実地であらわれるコンテキスト上の意味も分からないまま、フォーマット規約だけを見て自慰行為に
ふけりまくってるオナニー猿には関係ないだろうがなw




223:デフォルトの名無しさん
08/02/22 13:35:16
>>221
単独で取り出せる正の数の最小値はおおよそ1e-38。
一般的に原点近傍の数値間隔といえばこれを指すと思う。

ただ仮数部の桁が7~8桁あるので、その上近傍で仮数部の一番下の桁を見れば
1e-7~8 * 1e-38 = 1e-45 程度の丸め誤差におさまっている。

224:デフォルトの名無しさん
08/02/22 14:13:39
>222
>0.0の次の正規数は約10^-38で、この間隔の方が現実の数値誤差には重要なんですよぉー。
どういう意味で?どこの現実で?
非正規化数が定義された意味をきちんと勉強しろ。
非正規化数がないとか演算速度が重要な実地ならそう書け。

>223
非正規化数って聞いたことない?
聞いたことのない単語が出てきたらググって調べない?

225:デフォルトの名無しさん
08/02/22 14:35:36
あるのは分かっているし、なくなってしまえばいいとも思わないけど、
実際のところ、あっても嬉しくない。

226:デフォルトの名無しさん
08/02/22 16:03:15
> 0.0の次の正規数は約10^-38で、この間隔の方が現実の数値誤差には重要なんですよぉー。
「実地であらわれるコンテキストw」の提示内容によっては同意してもいいぜw。

だがしかし、>>194の抱く「小学生のイメージ」像に矯正が必要な件はこれとは別だぜwww。


227:デフォルトの名無しさん
08/02/22 18:17:34
>>219
俺にも詳しく。具体例で。

・O(1)のベクトルA:(1.2, 2.3) ※ いずれの要素も有効桁16
・O(10^-14)のベクトルB:(1.1e-14, 4.5e-14) ※ いずれの要素も有効桁16
があったとしよう。この時点でBの単位ベクトルを求めても文句ないよな?

  ↓
ベクトルAでもの凄い計算
  ↓

・ベクトルA':(2.46...1, 3.96...7) ※ 有効桁14に減少
・ベクトルB:(1.1e-14, 4.5e-14) ※ やっぱり有効桁16

ここまではいいんだよな?

さてと、ここから「O(10^-14)で有効桁1のベクトルC」が登場するまでのシナリオが思いうかばねぇ。
> O(10^-14) のベクトルは数値誤差と同程度のオーダーのベクトルだから、
> 1桁目にも数値誤差がてんこもりの恐れがあるってことだ。
てのはそういうことだよな?

あるいは既にベクトルA'の一部に、O(10^-14)で有効桁14な要素が出現してたりするのか?…

とりあえず全ベクトルの全要素は同じ単位の比例尺度で、ベクトル間要素間の加減乗除何でもアリというシナリオルールにしておこう。温度計(間隔尺度シバリ)の話はとりあえず後回しだ。


228:デフォルトの名無しさん
08/02/22 19:06:37
>>227
O(1) の近い値のベクトル同士を減算すれば
おもっくそ桁落ちする。

229:デフォルトの名無しさん
08/02/22 20:09:05
こういうことか。

・O(1)のベクトルA1:(1.2, 2.3) ※ 有効桁16
・O(1)のベクトルA2:(2.6, 3.1) ※ 有効桁16

  ↓
ベクトルA1,A2でもの凄い計算
  ↓

・ベクトルA1':(2.46...1, 3.96...7) ※ 有効桁14
・ベクトルA2':(2.46...2, 3.96...6) ※ 有効桁14

  ↓
ベクトル C=A1'-A2' を計算。
  ↓

・ベクトルC:(-1e-13, 1e-13) ※ 有効桁1

・ベクトルCの単位ベクトル:(-1, 1) ※ 有効桁1以下w


230:デフォルトの名無しさん
08/02/22 20:12:04
実際数値計算やってたらそういう状況は起こる。
たとえば基底関数展開したベクトル関数の
ある点の値を取得しようとすると、
対称性のおかげで0ベクトルになる点やその付近で
そういう状況に陥ることがある。

231:デフォルトの名無しさん
08/02/22 20:17:46
>単位ベクトル:(-1, 1)

1/sqrt(2)の間違いな。


232:デフォルトの名無しさん
08/02/22 23:29:03
>>224
おまえと>>229は別人なのか、同一人物の自演なのか?www二匹も馬鹿が釣れたのか。
非正規化数の定義された意味を勉強するのはお前のほうだ。
Kahanのサイトに行って、70年代からの苦労話を読み直して来い!
非正規化数を正規化数と同じに考えているところからして、お前は根本から間違っているんだよ。

大体ようやくここ10年くらいでIEEE754の数値Formatは普及したが、丸めやら非正規化数の扱いなんかを
完全準拠している処理系はむしろ例外的だろ。
CELL(SPE)とかGPUの類も非正規化数とかまともにやってないだろ。
SunのSPARCも対応していなくてソフトウェアで対応してたろが。
(この辺は、記憶が曖昧だから検証はマニアさんに任せるよw)

さて、数直線のイメージが理解できないようだから、幼稚園児にも分かるようにより程度を下げて
説明してやる。感謝しろ。

浮動小数点の正規数は、おおよそ対数メッシュになっている。これは指数部に拠るものである。
これは定規で長い線で引かれている目盛りのようなものだ。
さらにこの対数目盛りの間に細かい目盛りが等間隔で引かれている。これは仮数部によるものだ。

0近傍を見ると、最小の正規数までの間には正規数の細かい目盛りは無い。空白地帯がある。
IEEE754規格はここに非正規数を置いているが、この部分は処理系に依存するので、
浮動小数点を学び始めた人は正規数のみのイメージを作るほうが適切だ。
それに、そもそも話は正規数の範囲だったしな。

>>229
お前は桁落ちも知らないで浮動小数点に粘着しているのかwwwwww
subnormalなnumberをいじるより、そのsubnormalなお前の知性を何とかしろ。

俗人のくせに神学に興味を示すのは狂気のプレリュードというが、
数値計算もしないのに浮動小数点にこだわるのも同じだな。abnormalだ。
まず味噌汁で顔を洗って、伊理正夫の数値計算の常識を百回読み返すまでROMってろ!


233:デフォルトの名無しさん
08/02/23 00:26:17
wwwまで読んだ

234:デフォルトの名無しさん
08/02/23 01:11:46
>>229
>お前は桁落ちも知らないで浮動小数点に粘着しているのかwwwwww

ん?この桁落ち、間違ってるのか?
>>228か?何か気分害したか?直すぞ。
16桁BCDで説明し直すか?

>subnormalなnumberをいじるより、そのsubnormalなお前の知性を何とかしろ。

1e-13ってsubnormalなのか?あ、これ、倍精度な。


235:228
08/02/23 01:14:16
違うわい。俺はこんな煽りはしない。

桁落ちは合ってるが、桁落ちを今知ったような、
あるいは桁落ち誤差が完全に頭から抜け落ちていたような
雰囲気に対して煽ってるんだろう。

236:デフォルトの名無しさん
08/02/23 01:57:14
>大体ようやくここ10年くらいでIEEE754の数値Formatは普及したが、丸めやら非正規化数の扱いなんかを
>完全準拠している処理系はむしろ例外的だろ。
何いきなり抱き合わせで完全準拠を求めてんですか。
そんなに価値がないのならIEEE754rで削除してもらうか。

>SunのSPARCも対応していなくてソフトウェアで対応してたろが。
プログラマならまずシステムとして対応しているか&使い物に
なるかを気にするべきでハード実装かどうかはそのあとでしょ?

>浮動小数点を学び始めた人は正規数のみのイメージを作るほうが適切だ。
同意

>それに、そもそも話は正規数の範囲だったしな。
そうだっけ?

>subnormal
まで読んだ


237:デフォルトの名無しさん
08/02/23 03:57:16
非正規化数になんか恨みでもあるんだろうか。

238:デフォルトの名無しさん
08/02/23 11:45:05
subnormalってなんだろうと思ってたが、
サブプライムとかけてたのね。

ふーん

239:デフォルトの名無しさん
08/02/23 12:23:18
>>232
>幼稚園児にも分かるようにより程度を下げて
>説明してやる。感謝しろ。

ご協力感謝します。>>194も喜んでおります。

>浮動小数点の正規数は、おおよそ対数メッシュになっている。
>これは指数部に拠るものである。

ふむふむ、すると「対数メッシュ」の間隔は最小値近辺で大体10^-38、1付近で大体10^0ですね。

>さらにこの対数目盛りの間に細かい目盛りが等間隔で引かれている。
>これは仮数部によるものだ。

ふむふむ、すると「細かい目盛り」の間隔は最小値近辺で大体10^-45、1付近で大体10^-7ですね。

さて、>>232さん、ここでご指導を仰ぎたいのですが、

>>194
>0近辺では目が細かくて10^-37程度だが、
>1の近辺では目が粗くなっていて10^-7程度でメッシュが切られている。

の申す「メッシュw」とやらはどちらに分類しましょう。
「対数メッシュ」?「細かい目盛り」?
「これ以上細かい数値を足し引きしても、近場のメッシュに寄せられてしまう」
とか申しておりますので「細かい目盛り」にしましょうか。

ということで>>194君、「10^-37」には修正が必要だよ。

はい、本日の「小学生のイメージ」矯正終了。


240:デフォルトの名無しさん
08/02/23 22:23:13
循環小数に適当な基数変換を施すと有限小数になる場合があるけど、
これって常に可能なんだっけ?
(任意の循環小数には有限小数に変換できるような基数が必ず存在する?)

もしかして有理数 m/n として表されるなら n を基数にすればいいとかそんな感じかな?
n が素数でない場合はもうちょい工夫できそうな?

241:デフォルトの名無しさん
08/02/24 01:09:21
悲しいことに全ての有限小数は循環小数なんだな。
89.999… == 90.0 == 90.000…


242:デフォルトの名無しさん
08/02/24 09:56:03
丸めると 90.0 になるから問題ない

243:デフォルトの名無しさん
08/02/24 09:59:20
>もしかして有理数 m/n として表されるなら n を基数にすればいいとかそんな感じかな?
・有理数 m/n は n**-1 のm倍
・有限桁o進数は o**p の整数倍(pは有限の整数)
・mは整数かつ-1は有限の整数なので、m/n は有限桁n進数で表現可能

>n が素数でない場合はもうちょい工夫できそうな?
・(n*x == o**y)を満たす整数x,yが存在するならoは何でも良い


244:デフォルトの名無しさん
08/02/24 10:59:08
>>240
そこまで言ってたらわかってると思うが、m/n = 0.m (n進数)だろーがw

245:デフォルトの名無しさん
08/02/24 11:02:55
[m/n].(m-n[m/n]) だな。

246:デフォルトの名無しさん
08/02/24 11:05:11
>>244
143/7 は 0.143(7進数)ですかそうですか


247:デフォルトの名無しさん
08/02/24 11:11:07
>>240
n 進数で 0.a...b a...b a...b ... という循環小数があった場合、
0.a...b a...b a...b ... = a...b * 0.0...1 0...1 0...1 ... となる。
0.0...1 0...1 0...1 ... を (n-1)...(n-1) 倍すると 1 になるので、
0.a...b a...b a...b ... = a...b / (n-1)...(n-1)

だな。

248:デフォルトの名無しさん
08/02/24 11:28:09
逆に、整数で割りきれないと必ず循環小数になるんだよな。
余りのパターンには限りがあるから、
少なくとも 0 以外の全ての余りが出現したら
あとは循環するのみだから。

そう考えると、1/素数はかならず循環小数になる以上、
素数 p は必ず何らかの (n-1)...(n-1) の約数になるのか。
なんか面白いな。

249:デフォルトの名無しさん
08/02/24 11:29:18
>>240
すべての循環小数は有理数

すべての有理数はp/qの整数比で表せる

すべての循環小数は基数変換で(ry

250:デフォルトの名無しさん
08/02/24 11:34:10
1/素数はかならず循環小数になる以上

1/2

1/5


251:デフォルトの名無しさん
08/02/24 11:34:30
ああ、>>248 は基数が p の倍数じゃない時限定な。
10 進数だと 10^x は素因数が 2 と 5 しかないから、
2 と 5 以外の素数は全てそうなる。

252:デフォルトの名無しさん
08/02/24 11:40:41
つまり、2^32582657-1 は 9...(何か凄い桁数)...9 の約数になるはずということで。
循環の周期は p - 1 の約数のうち p の桁数以上のものになるから、
最大で 9 が 2^32582657-2 個、最小でも 9808358 個の 9 が並ぶことになるのか。
果てしないな。

253:デフォルトの名無しさん
08/02/24 11:41:38
ああ、2^32582657-2 が 9808358 で割り切れるかどうかは知らない。

254:デフォルトの名無しさん
08/02/24 11:50:38
その循環小数を乱数表にすると問題ありますか?

255:デフォルトの名無しさん
08/02/24 11:52:40
>>247
循環小数の有理化に関するレスだよね。

>0.0...1 0...1 0...1 ... を (n-1)...(n-1) 倍すると 1 になるので、

この時点で、0.(n-1)...が1になる説明をまた>>247の頭から繰り返さなければならないわけで


256:デフォルトの名無しさん
08/02/24 11:57:40
>>255
それは別な形で証明できるから問題ない。

257:デフォルトの名無しさん
08/02/24 14:14:51
さて、無理数はどうしようか。

258:デフォルトの名無しさん
08/02/24 14:33:14
無理数を・・・どうするの?

259:デフォルトの名無しさん
08/02/24 15:38:29
有理数は分数で表現できるから、無理数をあらわす方法がないか・・・ってことでは

260:デフォルトの名無しさん
08/02/24 15:41:44
無理数を誤差なく表現したいなら非正格関数型言語のような事をするしかないだろうな

261:デフォルトの名無しさん
08/02/24 15:46:26
sqrt(2) なら sqrt(2) をそういうオブジェクトとして扱うことはできると思う。
でも、こういうのでは表しづらい無理数もあるかと思う。
解析解がない(数値解しか無い)ことが証明されている
方程式の解とかは、その方程式自体を中に保持したオブジェクトを使えるかもしれないけど、
その値をさらに別の式に組み込むと・・・とか考えていくと
無理がでてきそうな気がする。

262:デフォルトの名無しさん
08/02/24 15:58:15
>>261
無理数の難しいところはそういう問題じゃないんだ、まずはカントールの対角線論法を理解してほしい。
ここで、自然数を列挙する縦方向と、無限小数の桁を列挙する横方向に広がった二次元の表ができ、無限小数に自然数が対応できず
自然数よりも実数の集合の方が個数が多いとなる。
問題は、これが意味するところで、Haskellなどを弄ってみると分るのだが、
この無限につづく少数の列には、後出しジャンケンのような要素を含むことが可能なのだ。
適当な実数を意味する関数 char f(int i) を考える i が桁を示し、戻り値が 0-9 までとする。
引数 i を指定すると、関数 f は常に同じ値を返すとする、この条件だけなら、この関数 f は getc を含む関数が作れることがわかると思う。
一回よんだら以後その値を使い続ければ、関数 f は常に同じ値を返すから。
そして、それは際限なく続けられる、少数は無限にあるので。

263:デフォルトの名無しさん
08/02/24 17:35:14
f()で無理数をダンプして途中に自分のクレジットカードの番号が出てきても、誰も責めてはいけないという話ですか。

言い訳:「どこかで誰かのgetc()がクレジットカード番号を返す可能性がある限り、私共に責任はありませんっ」

ううむ、でこれ、自然数の集合では難しい話なの?


264:デフォルトの名無しさん
08/02/24 19:01:31
メモ

任意の有限個の記号からなる数値定義
(√(12345/678.9)、x^123456789+...+3=0の解、etc.)
は全てひっくるめても加算無限個しかない。
つまりそういう方法では決してあらわせない無理数が
無限に存在する。
任意の無理数をあらわすには常に無限桁の入れ物が必要。
(任意の自然数をあらわすのはそれに応じた十分な
長さの有限桁の入れ物でいい)

265:デフォルトの名無しさん
08/02/24 19:22:02
なるほど。分かりやすいわ。

266:デフォルトの名無しさん
08/02/24 20:33:14
>>264
無限に存在とか考えないほうがいいかもしれない、特に「存在」
これ数学上の定義で自分たちの意識している「存在」の概念とはかけ離れた所があるから。

結局のところ「カントールの対角線論法」では、とりあえず実数の利用者に実数を全部ならべさせておいて
その後から、しめしめとその利用者が列挙しなかった実数を挙げて、ほら並べられなかったダメじゃんという論理になっている。
実際に実数を実装しようと思うと同じ事が起こるというだけ、それ以上でもそれ以下でもない。
これは意識したすべての実数については、表現可能だが利用者が意識していない実数についてまでは実装できないという事。
たとえば、純粋抽象クラスを実装する場合、その中身がかかれてなくてもそれを利用するコードは書ける。
しかし実際には純粋抽象の中身を書いたクラスを使わないと利用できない、具体的なコードは「後からでも書けるよ」というのと似ている。

267:デフォルトの名無しさん
08/02/24 20:57:43
書いていて思ったんだが意識ってなんじゃろね、不思議じゃ

268:デフォルトの名無しさん
08/02/24 21:39:04
「考慮」 と言った方がいいんじゃないかな。

269:デフォルトの名無しさん
08/02/25 01:10:40
任意の実数は不可算無限個あり、バイト列の個数は自然数なので高々可算無限個どまりだから、無限に伸びるバイト列が利用できても任意の実数を表現することは無理

270:デフォルトの名無しさん
08/02/25 06:40:10
>>269
任意の実数と言わずとも任意の有理数が表現できたらうれしいですけど。
「無限に伸びるバイト列」かあ。
多倍長計算のライブラリとかで、循環小数をきれいに扱えたららいいなあと
思うんだけど、どうなんでしたっけ。

271:デフォルトの名無しさん
08/02/25 16:18:51
>>270
数式演算すればいいんじゃね?
Mathematicaと言わず、HP49Gくらいでいいじゃん。

272:デフォルトの名無しさん
08/02/25 18:57:53
URLリンク(rayn.ld.infoseek.co.jp)


273:デフォルトの名無しさん
08/02/25 20:15:51
>269
言い換えてみる。
最初から無限長のバイト列(0で初期化済)があったとしても
サイコロを振るなりしてその中を埋める作業が永遠に終わらない
ので結局実数を表現することは無理。
とはいえ中を埋め続けるアルゴリズム(時間がたつほど精度が
上がる)があるような実数ならその実数はきちんと定義されたと
いえる。でそのような実数は可算無限個しかない。

>270
循環小数だとわかってるならそこまで格納できればいい。
1/3 = 1/(2^2-1) = 0.010101...(2)
1/7 = 1/(2^3-1) = 0.001001...(2)
1/3*1/7 = 1/21 = 3/1/(2^6-1) = 0.000011000011...(2)
周期aの数と周期bの数を掛けたら結果の周期はa*bかその約数
結果の周期の分だけ循環部分を展開して掛ければ
正しい結果を取り出せるのかな?
(結局は分数で扱うのが一番簡単そうに見えるのが)

>272
うーんなんだこりゃ

274:デフォルトの名無しさん
08/02/25 20:20:31
よく考えたら間違ってる
1/3*1/3 = 1/9 = 7/(2^6-1) = 0.000111000111...(2)


275:デフォルトの名無しさん
08/02/25 20:43:36
不可算無限を実現する必要は無いと思う。
実際の問題で扱う値ってある程度限定されてるから、
その実際に扱う値さえ表現できればそれで現実的には十分だと思う。

ただ、それでも無理な事もあるかもしれないけどね。

276:デフォルトの名無しさん
08/02/25 23:22:17
>>273
>周期aの数と周期bの数を掛けたら結果の周期はa*bかその約数

なるほどそんな性質が。

>(結局は分数で扱うのが一番簡単そうに見えるのが)

例えば小数を分数に変換する、みたいなプログラムがたまにありますけど
有限な小数しか入力できないというのは片手落ちかなと思って。
周期が短い循環小数ぐらいはなんとかしたいかなーと。
例えば 1/7 の循環小数を入力したら、ちゃんと 1/7 を答えてくる、みたいな。

277:デフォルトの名無しさん
08/02/25 23:43:37
>例えば 1/7 の循環小数を入力したら、ちゃんと 1/7 を答えてくる、みたいな。

循環小数を入力する書式さえ決めれば、どうにでもなるかと
循環部分を括弧で囲む 0.[142857] とか、循環する桁数を付ける 0.142857, 6 とか
142857/999999 で約分して 1/7

278:デフォルトの名無しさん
08/02/26 00:40:17
>273
どこの分野でも測定機の精度が八桁もあったら高性能といわれる
実数をきちんと表現しても元データの誤差以上にはならないから
現実的には計算が遅くなるだけでなんの意味もなさないでしょ
役に立たたないことそんなに力説しないでもいいんじゃない

>276
循環小数なら整数演算だからスレ違いでしょ

279:デフォルトの名無しさん
08/02/26 00:45:04
KY

280:デフォルトの名無しさん
08/02/26 00:58:12
不可算無限個について、なにやら認識が膨らみすぎてどうにかなっている人がいるので、ちょっと書いとくよ。
可算な集合の特性は適当な集合について、これをコンピュータで言う所の class でいうと
それは隣の要素を知るためのインターフェイスがあるという事だよ。
適当なコンテナオブジェクトがあるとき、その内容を列挙する気がないのなら別に列挙インターフェイスをつけなくてもいいんだよ。
それが不可算無限個を扱うという事、作れないって事はない、それは機能が制限されたライブラリとなっているだけだから。

281:デフォルトの名無しさん
08/02/26 01:55:10
>>277
なるほど。
ちなみに 142857/999999 というのは等比級数の無限和ですかね?

282:デフォルトの名無しさん
08/02/26 05:33:20
>>281
x = 0.[142857]
1000000x = [142857] = 142857.[142857]
1000000x - x = 142857
x = 142857/999999


283:デフォルトの名無しさん
08/02/26 09:22:43
>>282
なるほど。等比級数を持ち出すまでもないですね。ってゆうか確か高校で等比級数の和を
教えるときは同じような変形をするんだったかな。

浮動小数点の数値を整数分数に直してその後は分数として計算したら、精度的には
うれしい場合もあるかな?

284:デフォルトの名無しさん
08/02/26 10:28:18
>循環小数を入力する書式さえ決めれば、どうにでもなるかと
>循環部分を括弧で囲む 0.[142857] とか、循環する桁数を付ける 0.142857, 6 とか

914314.3143...とかどうしよう。9[143]XX.0とかでいいか。

無理数か循環小数かよく解らない数はどう表そう。
オイラーの定数γとか。


285:デフォルトの名無しさん
08/02/26 11:51:53
URLリンク(q.hatena.ne.jp)


286:デフォルトの名無しさん
08/02/27 13:06:33
>>278
ビット表現に×2^nと正規化が出てきたら文字通り
浮動小数点だと言ってみるテスト
(まあ現在普通に浮動小数点といえば
誤差含む数を扱うためのものだが)

>>280
実際のところ実数が不可算無限個あるって性質は
無視していいよね。
数学上は可算無限個の中に含まれない実数を
作り出すこと自体無理だし、
実用上は誤差を考えれば有限桁ですむし。

>>284
表そうも何もどういう循環小数か分からない時点で

287:デフォルトの名無しさん
08/02/27 15:46:50
>>286
有限のメモリーの中に無限を置けないのは、可算・非可算問わず事情は同じで
有限のメモリーの中"無限"という文字列が取り扱えるという事情も可算・非可算問わず事情は同じかと。

288:デフォルトの名無しさん
08/02/27 16:28:26
まあ、この話が出てきたのはBCDなら万全とかいう変な人のレスからだし、
真剣に無限どうこう考えてるわけじゃないでしょ。

289:デフォルトの名無しさん
08/02/27 20:29:04
BCDなら万全とかいう変な人のスレ
スレリンク(db板)


290:デフォルトの名無しさん
08/03/02 01:20:43
非加算な世界を考えれば、もうなんでもありですからね。
アルフ0 の一つ上は実数でしたっけ(連続体仮説?)

291:デフォルトの名無しさん
08/03/02 11:10:14
>現在の数学で用いられる標準的な枠組みのもとでは
>「連続体仮説は証明も反証もできない命題である」ということが明確に証明されている。

292:デフォルトの名無しさん
08/03/26 00:01:38
>>240
>(任意の循環小数には有限小数に変換できるような基数が必ず存在する?)
>もしかして有理数 m/n として表されるなら n を基数にすればいいとかそんな感じかな?
>n が素数でない場合はもうちょい工夫できそうな?

>>243
>・(n*x == o**y)を満たす整数x,yが存在するならoは何でも良い

nからよりコンパクトなoを求めるアルゴリズムが思い浮かばないよぅ。
素直にnを素因数分解するほうが近道か・・・

293:デフォルトの名無しさん
08/03/26 23:33:47
素因数分解はコストが大きいですよ

294:デフォルトの名無しさん
08/04/25 22:58:05
高精度計算サイト
URLリンク(keisan.casio.jp)

公開数日で、はてブ500ブックマーク突破。
有効桁数50桁。これ、BCDかなあ…。オリジナル精度の浮動小数点数かも。
プロの電卓屋が考えた「独自の桁数可変型演算システム」とやらの詳細が知りたいぜ!

君たちの大好きな 1 / 3 * 3 もちゃんと 1 になるぞ!

295:デフォルトの名無しさん
08/04/26 00:10:49
1.4142135623730950488016887242096980785696718753769

確かカイジでは
イヨイヨ ミゴロシ って読んでた気がする。
1414 3564

>>294
CPUは、繰り上がりフラグがあるから、足し算なら無限にできる。
掛け算を因数分解して有効桁の範囲で計算したあと足し合わせればいいわけで。

または文字で計算。まあ速度的にないと思う。


296:デフォルトの名無しさん
08/04/26 12:32:29
宇海零が開平法知らなくてフイタw

297:デフォルトの名無しさん
08/04/26 15:47:06
ひとよひとよにひとみごろ
 1. 4 1 4 2 1 3 5 6

が一般的だろうな。

298:デフォルトの名無しさん
08/09/25 14:29:48
float 使うヤツはドシロートかおぢさん
スレリンク(tech板)

299:デフォルトの名無しさん
09/01/05 07:38:27
299

300:デフォルトの名無しさん
09/01/31 16:44:13
300

301:デフォルトの名無しさん
09/02/15 22:19:06
FPU命令に三角関数があるらしいけどマジで?

ところで、Boostの分数はいずれ多倍長整数をサポートするとか。
精度ってどうなのよ?

302:デフォルトの名無しさん
09/02/15 22:27:45
>>301
8087の頃からある。


303:デフォルトの名無しさん
09/02/15 22:50:46
>>302
ほへぇ~。だったらsinテーブル作って引くよりそっち使った方が早いのかな?

304:デフォルトの名無しさん
09/02/15 22:55:46
>>303
んなわけないだろ
8087系統は愚直にマクローリン展開の公式を実行している
だけだからクロック数はすごいぞ

305:デフォルトの名無しさん
09/02/15 23:06:12
そっか。でもまぁ、SSEなんざ使うよりまし?

306:デフォルトの名無しさん
09/02/15 23:18:07
>>303
そういうことを自分で調べずに、このスレで何をするつもりなの?

307:デフォルトの名無しさん
09/02/16 07:46:44
>>304
乗算器が速くなかった時代では級数展開やってない。
CORDICでぐぐれ。

308:デフォルトの名無しさん
09/02/16 19:05:38
>>306
 実装って複数あるだろうから平均的な動作を知りたくてね。
やろうと思えば、アセンブリ命令レベルで組み込まれてる訳だから
並列化した回路を実装してある物もあるかもしれないじゃん。
でも、そういう情報は古すぎてかあんまりWebにゃ載ってなくてねぇ。

309:デフォルトの名無しさん
09/02/17 00:43:56
>>307
ほう昔はこんな方法使ってたのか
今じゃRadix16だからなー

310:デフォルトの名無しさん
09/02/17 16:44:54
逆数テーブル持ってるんじゃなかったのか。

311:デフォルトの名無しさん
09/02/18 23:04:32
doubleの逆平方根が存在しないのは何故?
floatからニュートン法でやるしかない?

312:デフォルトの名無しさん
09/02/18 23:44:15
>>311
あるところにはあるよ。
URLリンク(docs.hp.com)

313:デフォルトの名無しさん
09/02/19 00:17:31
そうか、SSEスレじゃないのかスマン
HPのWS?の関数じゃあなあ


314:デフォルトの名無しさん
09/02/19 00:22:08
そりゃぁ、このスレはx86での浮動小数点数のスレなんだから、HP-UXだってありだろ。

315:デフォルトの名無しさん
09/02/19 19:55:09
 素朴な疑問。SSE用レジスタっていっぱいあるけど、
なんちゃらオーダー見たいな機能で並列実行とかされないの?
暇そうに遊んでるレジスタが気になって仕方ない。

316:デフォルトの名無しさん
09/02/19 20:18:35
OOOのことか?

>>SSE用レジスタっていっぱい
だからOOOが効くとでも思ってるのか?

317:デフォルトの名無しさん
09/02/19 21:00:28
やっぱりねぇ。
結局多項式でぐらいしか意味は無いのか。
もったいねぇ。

318:デフォルトの名無しさん
09/02/19 21:04:49
>>317
おまえ、全然分かってないな
多項式だって a(b+x(c+x(d+x)))をSSEに置き換えただけでは
全然効果ない

319:デフォルトの名無しさん
09/02/19 22:01:15
>>318
そうなんけ?2~3倍早くなったことはあったけど。
じゃああのレジスタ群は何に使うのよ?

320:デフォルトの名無しさん
09/02/19 22:04:50
そこがテクニックw

321:デフォルトの名無しさん
09/02/19 22:53:03
>>318
単に置き換えただけでも効果あるぞ。
FPUはfxchとか駆使してもOoOし切れないことが多い。

322:デフォルトの名無しさん
09/02/19 23:01:06
SSEの一番の問題は、超越関数を使うにはFPUに切り替えるかiccの内部関数に頼るか自作する必要があることだな。

323:デフォルトの名無しさん
09/02/20 02:56:34
iccではsseで改めてcos/sinとかを(ソフト上で)実装してるってこと?
icc持ってないから分からないんだけど。

324:デフォルトの名無しさん
09/02/20 04:00:23
あるっぽいよ。iccが出力した実行モジュールのプロファイルを見た限りでは。

325:デフォルトの名無しさん
09/02/20 04:13:50
sse精度になっちゃうんじゃないの?
それとも-msse, -O3とは別の意味で、オプションとか組み込みキーワードで精度を選択できるのか?

326:デフォルトの名無しさん
09/02/20 14:15:09
10バイト精度でがんばっていた人たちって、どうするのかね。

327:デフォルトの名無しさん
09/02/20 15:17:11
fp80のことか?もう見捨てられてるっしょ。
ただでさえサポートしてるプロセッサはx86以外ほぼ皆無だし。

実際問題精度よりスループットのほうが重視されてるからな。
スループットがあればFFTによる多倍長演算も容易になる。

328:デフォルトの名無しさん
09/02/20 17:19:20
むぅ、128bitはドリフトか。

329:,,・´∀`・,,)っ-○◎●
09/02/20 22:08:20
80bit精度って今となっては帯に短し襷に長しだからな。
MSコンパイラがlong double = doubleにやっちゃってるし。

330:デフォルトの名無しさん
09/02/20 22:56:00
80ビットはインテルの(変態)独自仕様だと思ってたけどちがうの?
出来るだけ64ビットに演算誤差を伝播しないようにするインテルの親心というか・・・

331:デフォルトの名無しさん
09/02/20 23:02:41
ところで、FFTの多倍長というのは桁数いくつ以上からを考えてるの?
128ビットじゃないけど、金融・財務とか科学の計算でも普通は多く50桁*2程度あれば十分だと思うけど。
暗号とかエンコード用途なら、スループット以前の問題でFFTをハードとしちゃうだろうし。
というか、IEEEは早いところ16ビット小数を定義して実装して欲しい・・

332:,,・´∀`・,,)っ-○◎●
09/02/20 23:14:27
もうAMDのでいいよ

333:,,・´∀`・,,)っ-○◎●
09/02/20 23:26:23
つか、金融・財務で10分の1が正確に表せない浮動小数は非常識かと。
COBOLみたいな10進で扱う言語がわざわざ使われてるわけで。
かつ、Javaへの置き換えとかはBCD専用クラスとか作ってやってるわけで


それにしてもAMD64がBCD演算命令を整理(廃止)する一方で今更POWERが実装とかアフォかとヴァカかと
どうせ高級言語ごしでやるんだから命令ニーモニックレベルでのサポートも原則的には要らない訳なんだが。

334:デフォルトの名無しさん
09/02/21 00:19:22
桁数の実用性の問題だから、当然BCDとか小数とかの比較のことじゃなかったんだけど。
BCDとかの実装の問題だとしても、ソフト上でintでいいんじゃないの?
例えば、高々100桁程度でかつ100桁の固定精度で十分なのに、どこにFFT使うんだ?

廃止かどうかというのは、当時の貧弱なハードや産業界の需要によって機能をつけたわけで・・・

浮動小数は、実際は指数部分が重要なわけであって、仮数部分は低精度でいいってことは分かってるのか?w
仮数の精度は低いが、たとえ8ビットだとしても高精度と比較してもグラフの形状はほぼ同じ形状になる。
高精度が欲しいなら小数なんか使わないでBCDにすればいいんじゃないの?

335:デフォルトの名無しさん
09/02/21 00:37:55
>>322
SSEというのはスカラー演算はおまけで、ストリーム用途(といってもたった16バイトだけど)が本命じゃなかったのか?

インテルはサーバ用CPUの方に目がいっちゃってるから、PC用ではAMDの方がやる気あるよねって言うのは同意するけど。
でもインテルは組み込みやサーバーや携帯市場にもいってみたけど活路は無く、一方でPC市場を放棄したりして一体何やりたいんだろうね。

一番活躍できそうなネットブックは、MSが仕様作ってるからインテルが主導権握ってる市場じゃないみたいだし、インテルには将来の展望というか何やりたいのかさっぱり見えてこない。
小数とは関係ないけど。

336:デフォルトの名無しさん
09/02/21 00:59:08
少し話がずれていくが、「仮数部分は低精度でいい」ってのは語弊があるな
高い精度で高速な浮動小数点演算を必要とする需要ってのもいくらでも存在するぞ
最終段の出力が全てではないわけで

ま、そのために80ビットてのも痛し痒しだって流れには同意するけどね

337:デフォルトの名無しさん
09/02/21 01:22:45
>>336
それも一応考えてみたんだけど、浮動小数を他と比べるとき、仮数(有効精度)で比べると10進上の扱いや演算誤差はBigDecimalの方が分があるから浮動小数は入らないとなるけど、
指数では当然だけど浮動少数の方にメリットがあって、少ないビットで巨大な数2.1 * 2^1022 などを表現できることに利点がある。
これはBCDでは桁数分の配列(上と同じなら1000以上)を用意しないとだめだし、もしBigDecimalだとしても実装が val * 10^exp とするならそれは浮動少数でしかない。

つまり浮動小数は、極端に言えば仮数は指数がゼロか否かの1 0のみでよくて仮数に意味はなく指数が命ってことになる。
すると8ビットでもいいじゃないのって事がわかってくる。深く考えてみれば分かるよ。

それなのに仮数の精度がどうとかこうとか言うのは、よくいるだろ?財務アプリなのにint,longで金額を保持しちゃう奴。アレと同じだろ。
もし精度が欲しかったり演算誤差を気にするなら、プリミティブ型なんか使わずちゃんとBCDつかったりソフト上で多倍長を実装するべきだと思うよ。

338:デフォルトの名無しさん
09/02/21 01:36:23
sigma取る時に桁落ちしなければ何でもいい

339:デフォルトの名無しさん
09/02/21 01:56:44
じゃ80ビットでいいじゃん。64ビットまでを有効桁にするだけ。
関数電卓(手元にあるのはカシオだけど)の説明書では10桁を有効桁にして、内部では15桁でやってるとかいてある。
たぶん実際のこと知らないのに、どっかの三流起者とか○○研究所研究員が書いた記事を鵜呑みにしちゃって、演算誤差が出やすいとか思い込みしてたんじゃないの?w

340:デフォルトの名無しさん
09/02/21 12:19:27
>>339
10^15程度でいいなら倍精度の53ビットあれば十分だろ。
更に言うなら64ビット整数と10^nの固定スケールで表してもいい。
なおさら機種依存のfp80なんて使う必要ねーよ。

むしろ【浮動】小数で扱う必要がない。
ジンバブエドルでも扱うのか?www

341:デフォルトの名無しさん
09/02/21 12:25:43
15桁っていうのは、内部的に倍精度ってだけなんだろ
ところで財務アプリなんか触ったことないがなぜlongで保持しちゃいけないんだ?
_int64で持てってこと?

342:デフォルトの名無しさん
09/02/21 12:59:31
言いたいことが良く分からないんだけど、例えばジンバブエドル100兆ドル札が発行されたとしても、使う人たちはりんご20個で100兆130ドルか100兆140ドルかの違いなど気にすることはない。
君の妄想はこの程度しかできないんだろうけど、もっと現実に即して考えないと後々損することになるかもしれないよ。

80ビット精度は上にもあるように64ビット(IEEE定義のdouble)に演算誤差を伝播しないためにインテルが保障を確保するために必要とする精度であって、ジンバブエドルとはまったく別の話。
英語のウェキの方が詳しいが、IEEEの浮動小数点数の定義も含めて勉強しなおしたほうがいいんじゃないか?

343:デフォルトの名無しさん
09/02/21 13:02:00
>>341
longで持ってもいいけど、プリミティブかオブジェクト(インスタンス)かの違い。
インスタンスで持つとオブジェクト指向の方法論が使えて何かと便利ってこと(他にもあるけど)。

344:デフォルトの名無しさん
09/02/21 14:18:45
>>343
いや、普通に long じゃ桁あふれするだろ。

345:デフォルトの名無しさん
09/02/21 14:29:50
この前ジンバブエドルがデノミを行ったのは、コンピュータで扱いきれなくなる恐れがあったかららしい。

346:デフォルトの名無しさん
09/02/21 15:10:35
>>342
金融演算知らないシッタカは黙ってな。IEEE浮動小数なんて使わねーよ。
整数四則演算より80ビット浮動小数の方が速いような変態CPUなんてどこにあるんだと。
fp80をかろうじて使える当のIntelすら整数(固定小数)のほうが圧倒的に速い。


347:デフォルトの名無しさん
09/02/21 15:15:02
100兆130ドルか100兆140ドルかが大きな意味を持つ世界もあるわけで。
結局適材適所だよね。

348:デフォルトの名無しさん
09/02/21 15:17:40
知ったかといって大きく出た割にはビッグマウスだなw
金融とか財務とかのアプリで、どこに浮動小数を使う場面があるんだ?
整数と浮動小数(IEEE)で全然違うフォーマットなのに比べてみたり、一体いつの時代で比較してみたり速いとか遅いと基準もなく比べたりしてるんだ?
どうせ「IBM」という肩書きの3流記事を読んで頭おかしくなっちゃってるんだろ。知ったかはお前の方だな。カスは黙ってろw

349:デフォルトの名無しさん
09/02/21 15:19:21
Wiki=ウ【ェ】キは新しすぎる


350:デフォルトの名無しさん
09/02/21 15:23:05
新ジャンル「ウェキ」

351:デフォルトの名無しさん
09/02/21 15:23:10
>>346
あのね、ベンチマークなんかいくらでも都合よくプログラム書ける訳よ。
インテルがtmpegエンコ―ダに賄賂(支援)してインテルCPUに都合よくプログラムしてるって話は有名だろw
例えば統計の数値使って官僚とか経営者を騙すとかたまに聞くだろ。つまり、IBMとか東大とか肩がきってのはそういうの同じ(その統計もある意味あってるから別に否定はしないけど)

頭弱いおサルちゃんはどの分野にいっても「コロっと」騙されちゃうんだろうけど(笑)

352:デフォルトの名無しさん
09/02/21 15:26:04
TMPEGはCUDAにすら対応してるわけだが

賄賂?妄想を既成事実にしないで下さい

353:デフォルトの名無しさん
09/02/21 15:35:51
最新のIntelCPUでFP80がクソ遅いのは常識なわけだが。
物理的に32bit×4ないし64bit×2のSIMDに最適化された演算器しか載ってないし。

なにより今時スタックな時点で論外。
他人のベンチがどうとか以前に自分で計測してみろよ、ゆとり

354:デフォルトの名無しさん
09/02/21 15:42:52
>金融とか財務とかのアプリで、どこに浮動小数を使う場面があるんだ?
PBRとかわざわざ固定小数で計算してるとは思えないな。

355:デフォルトの名無しさん
09/02/21 15:47:47
SIMDでBCDを使うと10のべき乗単位の乗除をバイトシフトで表せるという利点がある。

356:デフォルトの名無しさん
09/02/21 15:52:16
BCDクラス内でSIMD用のビットアラインメントって出来るの?

357:デフォルトの名無しさん
09/02/21 15:53:21
どんなに精度が高い演算ができようとも、手計算で小数点以下2桁で切り捨てた低精度演算の結果に合わせなけばならない悲劇


358:デフォルトの名無しさん
09/02/21 17:43:02
>>353
物理的にはFPUユニットとSSEユニットが載っているわけで、間違って覚えたりしてないでインテルのマニュアルをあとでこっそり読み直したほうがいいんじゃね?
鼻高々に知ったかばかりしてると、もっと大きな恥かくことになるからw

359:デフォルトの名無しさん
09/02/21 20:48:14
使わないなら、銀行型四捨五入とかやめてほしかった。

360:デフォルトの名無しさん
09/02/21 20:51:37
>>359
それ何?

361:デフォルトの名無しさん
09/02/21 20:56:53
>>359
銀行で使ってるの見たことないんだけど
使ってる銀行ってあるの?

362:デフォルトの名無しさん
09/02/21 21:13:02
>>360
つ Banker's Rounding

363:デフォルトの名無しさん
09/02/21 21:55:45
ジンバブエで使ってるCPU使えばよい

364: ◆0uxK91AxII
09/02/21 22:05:17
>>353 >>358
ia32_final_i.pdf

今時のCPUは十分に処理能力が高いから、遅くても問題ない。

365:デフォルトの名無しさん
09/02/21 23:45:37
>>364
いや、シミュレーションの世界では早ければ早いほどよい。

366:,,・´∀`・,,)っ-○◎●
09/02/22 00:04:04
>>358
「論理的」だろ。物理的に別ユニットっていつの時代のCPUだよ。

現行のCore MAなんかではx87とSSEは共用だよ。
大別してFADDがSIMD FP Adder, FMULがSIMD FP Multipler。
あとDividerとかFP ROMが同じポートにぶら下がってるかな

まあ、fpスタック経由でしか80bit精度の演算ができない(XMMレジスタは使用できない)時点で
実効スループットは察して下さい。

>>364
英語版にしろよ。それPentium 4までしか載ってなくね?

367:,,・´∀`・,,)っ-○◎●
09/02/22 00:19:58
URLリンク(www.intel.com)

IntelR 64 and IA-32 Architectures Optimization Reference Manual
SKU #248966

ゆっくり読んでいってね!





SIMD FPユニットとx87用ユニットが別なのってIntelだとPentium IIIが最後だと思うんだが。
あんときはSSEは単精度までのサポートだったから共有化の機運がなかったのかな?

368:デフォルトの名無しさん
09/02/22 01:07:42
>>366
結局お前か。お前のウンチクなど聞きたいわけではないわ。
名無しで潜伏してないでちゃんと名を名乗れ。ニートwww

369:デフォルトの名無しさん
09/02/22 01:14:17
>>367
スループット云々よりもメイン・メモリとのレイテンしが改善されないから、もう頭打ちなんじゃないの?
結局fetchに頼るのみなら、80ビットやFPのフォーマットや機構(スタックとか)の問題じゃないし。
SSEは、レイテンシを考えると、ガバッと持ってくるようにするために16バイトとかケチってないで32バイト(double*4)でよかったんじゃないかと思う。

370:,,・´∀`・,,)っ-○◎●
09/02/22 01:24:09
>>368
は?ww
被害妄想いいかげんにして。

ウェキは吹いたwww

371:,,・´∀`・,,)っ-○◎●
09/02/22 01:25:14
>>369
>SSEは、レイテンシを考えると、ガバッと持ってくるようにするために16バイトとかケチってないで32バイト(double*4)でよかったんじゃないかと思う。
それがAVXなんだけど・・・。

372:デフォルトの名無しさん
09/02/22 01:38:55
>>346
> 整数四則演算より80ビット浮動小数の方が速いような変態CPUなんてどこにあるんだと。

Netburstだと、整数の乗除算よりFPの乗除算の方が速い

373:,,・´∀`・,,)っ-○◎●
09/02/22 01:40:14
prefetch*はキャッシュライン単位だぞ。
あと、Core MAやAMD K8以降ではL1キャッシュの1ラインは64byteなんで。
シーケンシャルリードなら同一ラインの後続ブロックもL1から続けて読めるから
>>369の想定する用途では全然問題ないと思うんだが。

シーケンシャルとか定ストライドなどのパターン性のあるアクセスなんかだと
いまのCPUではキャッシュ自体が自動的に先読みしてレイテンシ隠蔽してくれる機会がある。

ベクトル長伸ばしちゃうとそれはそれで厄介だぜ
座標を表すのですら、単精度だとx, y, zであと1要素分余らせたりすることが珍しくない。
現状のSSEの実装ではpermute演算はそこまで強力じゃないので128bitが妥協点だったのでは?

374: ◆0uxK91AxII
09/02/22 01:55:30
>>367
thx

>>369
>メイン・メモリとのレイテンし
そこは、cacheが入り込むし、命令の並び換えで適当に隠せる。

375:デフォルトの名無しさん
09/02/22 02:06:22
>>373
>現状のSSEの実装ではpermute演算はそこまで強力じゃないので128bitが妥協点だったのでは?

だからさ、その時代その時代に合わせたお前のウンチクなんて興味ないのよ。
3年後には全く逆のこといったりするだろ。
主張がコロコロ変わるからいつまでたってもお前は誰からも認められないんじゃないの?ニート君w

376:デフォルトの名無しさん
09/02/22 02:11:16
>>373
なんつーか、お前の浮動小数点の理念とか信念なんか聞きたいわけじゃないわけ。
fp80の精度が必要な人もいれば、高速な方がいいって人もいるわけで、インテルの洗脳されちゃってるお前の信念を押し付けないでくれないか?

それも信念がコロコロ変わるんだろ。お前だって嫌だろ。草かみたい選挙が近くなるたびに草か信者が家に押しよせてきたら・・・

377:デフォルトの名無しさん
09/02/22 02:14:20
prefetchはINTELとAMDで細かいところに互換性がないから、(未知のバグになるから)できればユーザーが明示的にコード書いて使うようなものではない、ってことだったんじゃないの?

378:,,・´∀`・,,)っ-○◎●
09/02/22 02:15:58
> 3年後には全く逆のこといったりするだろ。

言わねーよ池沼
10年前のPentium IIIではSIMD演算ユニットは単精度2並列分のスループットしか得られなかったが
それでも10年前なりの技術水準でできるだけのことはやってた。
それを文句言う奴はいねーよ。

379:,,・´∀`・,,)っ-○◎●
09/02/22 02:18:03
x64でのx87のレガシー化で主に動いたのはMSとAMDなんだが。
IntelはAMD64のコピー実装だし。

Intel信仰がどうとか言ってることがちゃんちゃらおかしい。
ウェキ(笑)

380:デフォルトの名無しさん
09/02/22 02:21:28
>>372
よく分からないんだけど、bitwiseの観点からみれば整数四則もFP四則も同等でしょ。
両者に差が出るようところはどこにあるの?
整数もFPも、10進に直したり結果を出力して視覚化するところに差があるというなら、本質的には君>>346が言うところの四則の計算とは関係ないわけで・・・

381:,,・´∀`・,,)っ-○◎●
09/02/22 02:22:34
>>377
キャッシュのローカリティヒントなんて同じIntelでも、Pentium 4とCore MAでも動作が違う。
たとえばPen4ではprefetcht0を使ってもL1にはデータは置かれないがCore MAでは置かれる
だがキャッシュのヒット率なんて演算結果に直接影響しないだろ?
キャッシュローカリティで演算結果が変わるようなプログラム書いちゃう人はそれはそれで問題だが?

382:,,・´∀`・,,)っ-○◎●
09/02/22 02:30:31
昔のIntel独自実装の8087をマンセーしつつIntel信仰はキモイとかどんだけ~


単精度と倍精度はIEEE754の規格にも入っててPowerPCやARMでも使えるんですが。
FP80(笑)

383:デフォルトの名無しさん
09/02/22 02:31:02
>>378,379
当時の水準でFPUとSSEは分離してたのが最良といいつつ、何でさっきの主張では「FPUはイラン!」とか文句言っちゃうんだ。
どうも当時の技術水準とその互換性「FP80」に文句あるみたいだけど、そんなに演算誤差を気にしなくてもいいプログラムをしてるのか?
お前みたいな奴が「古い技術はイラン!」とか言って互換性を破壊していく元凶なんだよな・・・・そういうの世の中に出てみると分かるけど、即効で嫌われるから。

日本男児の固定観念もいいけど、英語の発音では一応「ウェキ」といってるようだが・・・なんかお気に入りのようだなw


384:デフォルトの名無しさん
09/02/22 02:32:17
なんで団子の周りには馬鹿が集まるんだ?

385:デフォルトの名無しさん
09/02/22 02:36:00
>>379
インテル信仰とは、インテルのx86命令コード体系のことだと思うんだが・・・?
実際今の64ビット向けとかはAMD64の定義をコピーしてインテルが使ってるんだし。
もしかして団子は、会社としてのインテル(INTEL入ってる!)にあこがれてるのか?

よく読んでみると所々に穴があるよね。団子はw

386:,,・´∀`・,,)っ-○◎●
09/02/22 02:38:42
おまえ馬鹿だねぇ
Pentium IIIのSSEはたかだか単精度のSIMDでしかない。
SSE2以降は倍精度も扱えるようになったんで共用化したほうがよくなったんだろ。
倍精度対応の演算ユニットは半導体のコストが大きいからね。

PowerPCのAltiVec(VMX)でも倍精度対応のスカラFPUと、単精度までのVFPUが共存してるが
POWER7のVSXでようやくレジスタセットごと統合の運びになりましたが。

387:,,・´∀`・,,)っ-○◎●
09/02/22 02:39:55
>>384
俺に噛みつく奴は馬鹿ってより

馬鹿だからこそ噛みつくんですよ。

388:デフォルトの名無しさん
09/02/22 02:44:25
というか業界人でもない普通の人(本業でPG含む)は、新作CPUの各ベンチ取るために毎度毎度CPUを買ったりしないから。
だからPen4では・・とかCoreでは・・とか言われても知らんわ。現状では、一般的に議論ができるのはSSE1/SSE2しかないな。

実際PC使いこなしてアプリ作ってるわけでもないくせに、お前の主張など、「ソニーのパソコンは・・・東芝のパソコンは・・・」とか言ってるカスタマーの戯言にしか聞こえんわw



389:,,・´∀`・,,)っ-○◎●
09/02/22 02:45:39
過渡期の実装は一見無駄に見える。近視眼の馬鹿には。

390:,,・´∀`・,,)っ-○◎●
09/02/22 02:46:53
>>388
それで、x87とSSEが分かれてないPentium IIIのパソコンをいまだに使ってるんですね。
零細企業乙

391:デフォルトの名無しさん
09/02/22 02:51:29
というか、団子はブログとかウェキでもやりながら、細々と「執筆募集!」をすればいいだろ。
隅々までマニュアル読んでるようだし、どこかの雑誌とかベンチャーが「ベンチとってくれない?」とかの依頼ぐらいはあるだろから。
少なくともお前の能書きを2chスレに書かなくていいからw

392:,,・´∀`・,,)っ-○◎●
09/02/22 02:52:44
ウェキ(笑)

393:デフォルトの名無しさん
09/02/22 02:56:04
え!団子さんってブログもってなかったの?!
ダサw

394:,,・´∀`・,,)っ-○◎●
09/02/22 02:56:52
[wi]の発音は日本古来の「ヰ(ウィ)」に相当するものであってヱ(ウェ)じゃないんだよね

395:,,・´∀`・,,)っ-○◎●
09/02/22 02:59:28
もしかして: ウィキ









ウェキ(笑)

396:,,・´∀`・,,)っ-基地外-
09/02/22 03:00:33
真夜中ですが基地外警報

397:,,・´∀`・,,)っ-○◎●
09/02/22 03:07:58
ホロン部の人なのかな?

URLリンク(ja.wikipedia.org)

左上のロゴよく読んでね。
これが「ェ」に見えちゃう人は目か頭がおかしいです

398:デフォルトの名無しさん
09/02/22 03:08:36
そんなに発狂するなよ。その情熱をブログにぶつけろwたまに読んでやるからw

一応言っておくと発音のときはスラッシュを使う。
で、wikiの/i/は/e/ではないので口が横に大げさに伸びるわけで、日本人の耳では「い」や「いぇ」ではなく「え」に聞こえるはず。
また、まえの/w/と重なって「い」のようにはっきり聞こえる事はない。
短母音にこだわっちゃう辺りも、団子は生粋の日本男児なのかねぇ。どこ出身?

399:,,・´∀`・,,)っ-○◎●
09/02/22 03:10:07
URLリンク(ja.wikipedia.org)

?????????

400:,,・´∀`・,,)っ-○◎●
09/02/22 03:17:04
URLリンク(ja.wikipedia.org)

項目無いから作ってよwww

401:デフォルトの名無しさん
09/02/22 03:23:22
>>398
大阪民国

団子はPGじゃないだろ?

402:デフォルトの名無しさん
09/02/22 03:31:43
>>399
こういうどうでもいいところに情熱を注ぐ意味が分からん。
ところで団子のINTELウンチクはもういいから、このスレでは小数の話題にしてくれないか?

403:,,・´∀`・,,)っ-○◎●
09/02/22 03:32:55
wiki wiki(ウィキウィキ)は速いと言う意味のハワイ現地語であって英語じゃないからね。
※いわゆるコラボレーションツールのWikiの由来も元々は地元の観光バスが由来です。

ハワイ原住民はムー大陸の末裔なんて言われるくらいガチのウラル・アルタイ語族。
a e i o uの発音はハッキリしてて、イとエを聞き間違えることなんて有りえませんよ。
ハワイ行ったこと有りますか?無いでしょうね。

↓Google先生もお困りです。

URLリンク(www.google.co.jp)
ウェキウェキバス に一致する情報は見つかりませんでした。

404:デフォルトの名無しさん
09/02/22 03:34:27
>>401
層化かと思ったけど、ああ在日なのね。
別に層化も在日は嫌いじゃないんだけど、それならファビョーリやすいのも納得だわw

405:,,・´∀`・,,)っ-○◎●
09/02/22 03:40:10
吠えてますなwww
悪いがミンジョクではない。俺はシオレスト(笑)だぞ。

406:,,・´∀`・,,)っ-○◎●
09/02/22 03:43:39
ウェキ君はみっともないな

407:デフォルトの名無しさん
09/02/22 03:49:10
雑談はよそでやれや

408:デフォルトの名無しさん
09/02/22 03:54:47
>>403
そういうウンチもいらないからw
ウンチするなら他でやってくんない?

409:,,・´∀`・,,)っ-○◎●
09/02/22 03:59:35
ウェキ(笑)がどれだけ恥ずかしいかは知っておかないとね

410:デフォルトの名無しさん
09/02/22 04:09:06
「ムー大陸の末裔」の方が数倍恥ずかしいと思うが…

411:,,・´∀`・,,)っ-○◎●
09/02/22 04:10:15
そりゃ金融システムでFP80だとか非常識きわまりないことも言えるわけだ。

JavaやC#でPL/IやCOBOL同様に10進演算をサポートしてる理由を考えてみてくれ。
ちなみに754rのドラフトにも10進演算の項目入ってるよ。確認しる。
URLリンク(754r.ucbtest.org)





FP80(笑) ウェキ(笑)

412:,,・´∀`・,,)っ-○◎●
09/02/22 04:14:55
>>410
ムー大陸は太平洋の島々の言語の構造や発音の共通性から言語学者が唱えた仮説だよ。
少なくとも母音の発音は同じアルタイ語族の日本と同じだってこと。

413:デフォルトの名無しさん
09/02/22 05:15:00
陸地がないと人間は大規模な移動ができないと思い込んでいる大陸系らしい考え方

414:デフォルトの名無しさん
09/02/22 05:18:46
「実は日本人はムー大陸の末裔だった!」という衝撃の真実を聞いて駆けつけてきました

415:デフォルトの名無しさん
09/02/22 05:23:48
ムー大陸は民族とかの人間に関するカテゴリーに属してないからそれは間違っていないか?

416: ◆0uxK91AxII
09/02/22 08:36:25
>>377
3DNow!のではなく、SSEのprefetchを使えば良い。

>>386
>SSE2以降は倍精度も扱えるようになったんで共用化したほうがよくなったんだろ。
共用を前提として、SSE2を作ったという考えをしてみる。

417: ◆0uxK91AxII
09/02/22 08:38:34
『共用化』っていうのは、『復号化』のように、頭が悪く見えるね:b

418:デフォルトの名無しさん
09/02/22 10:37:02
Pentium(R)III プロセッサの実装条件
URLリンク(download.intel.com)
P.9-10
> x87 加算器とパックドFP 加算器の統合も検討されましたが、こ
> ちらは開発スケジュールの関係で実現には至りませんでした

419:,,・´∀`・,,)っ-○◎●
09/02/22 13:26:34
>>413
海洋民族の航海技術を無視した白人優位思想が根底にあるね。
白人ブルーブラッドが黄色人種を支配してたなんて電波な説だし。
自分たちの古代文明が見つかってないのでどこかにあったと思い込みたい白人に熱狂的に支持された。


※もちろんブルーブラッドなんて比喩であって、実際に人の血を青くしてみた創作は○ーゼ○ォンくらいのものです。

420:デフォルトの名無しさん
09/02/22 13:32:17
アメリカとオーストラリアに大量移民した奴らがよく言うよ

421:デフォルトの名無しさん
09/02/22 13:38:47
>>419
秋葉原のショップでは、こなた(らき☆すた)のフィギアは売ってますか?

422:デフォルトの名無しさん
09/07/11 00:11:19
古い話を掘り返してみると、>359の書く「銀行型」って、ISO丸めのことなのね。
>362にあるように元は英語だろうけど、それを直訳した馬鹿がいるから
>361のような「銀行で使う」と思い込む間抜けが出てくるんじゃないか。
寧ろ鉱工業などで測定結果の集計するのによく使うのに。

423:デフォルトの名無しさん
09/07/11 21:25:48
パイルバンカーの方?

424:デフォルトの名無しさん
09/07/11 22:34:38
銀行は銀行だけど、「銀行家の」と言う意味だね。
まぁ、銀行でも使うケースと使わないケースがあるのだろうし、
「銀行型」って言い方をするよりも「ISO丸め」って言い方でいいんでない?
まぁ、>422は言い過ぎだね。

425:デフォルトの名無しさん
09/07/11 22:49:06
8087作ったときは、ISOじゃなかったのでは。

426:デフォルトの名無しさん
09/07/11 23:04:27
んじゃ、8087について語りたいときはansi丸めでw

427:,,・´∀`・,,)っ-○○○
09/08/16 13:27:05
>>423
エウレカ厨乙

428:デフォルトの名無しさん
09/09/20 13:20:35
団子ってmixiにアカウントは持ってたよな。
嫌いなサイトが2chだとか書いてたろ。

429:,,・´∀`・,,)っ-○○○
09/09/20 19:09:53
それどころかVIPのコテとばっかしつるんでたが

430:デフォルトの名無しさん
10/01/30 07:55:53
貧乳について教えてください

431:デフォルトの名無しさん
10/03/04 04:58:05
「インテル 64 アーキテクチャーおよびIA-32 アーキテクチャー最適化リファレンス・マニュアル」を読んでいて驚いたのだけど、
最近のCPUは除算のレイテンシとスループットが異様に小さいんだね。
FDIVでレイテンシとスループットが6と5って乗算とそんなに差がなくなっているね。
あとx87の表にNehalemがないのはNehalemってx87を積んでないの?

432:デフォルトの名無しさん
10/03/04 10:07:17
トランジスタの物量攻勢で、年々巨大なテーブルを引いて割り算するようになってんじゃないかな?
バグ付きPentiumで有名になったアレ。まだまだ早くなるのかも。解説お願い。

float同士の割り算の全パターンを事前にテーブル化して焼いとくのもそう遠くない未来のような。
(仮数部だけでいいとして46bitのインデックスを引っ張るテーブルがあればいいのか?

433:デフォルトの名無しさん
10/03/04 10:39:40
少なくとも一回計算した組み合わせくらいはキャッシュで持ってても良いよね

434:デフォルトの名無しさん
10/03/18 04:44:33
SSEを使うっているのは一般に、SSE命令を使っていればいいのか?
最近のコンパイラが吐くコードってスカラーでもaddssとかsubssを使っていることが多いので、
それだと何もしなくても”SSE”を使ったコードになってしまう気がする。
それともSIMDを使わないのはSSEを使っているとは言えないとなるのだろうか?


435:デフォルトの名無しさん
10/03/18 07:46:55
単に8087由来FPUの80bitレジスタが嫌なだけじゃね?
とエスパー回答してみる。

436:デフォルトの名無しさん
10/03/19 07:02:17
x86-64向けでなく組み込み関数でもなく、オプションも付けずにSSE命令を使うのはICCだけだろ

437:デフォルトの名無しさん
10/03/19 07:08:33
gccでも使うよ。適切にビルドされていれば

438:デフォルトの名無しさん
10/03/20 05:22:14
gccでも使うんだよ。でもさすがにパックドのコードを吐くことはないけど。

439:デフォルトの名無しさん
10/03/20 17:58:41
インテルコンパイラを使っているのですが、WindowsとLinuxで結果が変わってきてしまいます。
精度を同じにするには、どのオプションを使えばよいのでしょうか?

440:,,・´∀`・,,)っ-○○○
10/03/20 18:07:52
>>432
Pentiumの除算ユニットはRadix-4 SRTっていうアルゴリズムを使っている。
URLリンク(journal.mycom.co.jp)

45nm以降のCoreアーキテクチャはそれより強力なRadix-16 SRTで
4ビットずつ処理出来るから従来の倍程度は速い。

441:デフォルトの名無しさん
10/03/20 18:08:47
>>439

442:デフォルトの名無しさん
10/03/20 18:09:31
>>439
http://homepage1.nifty.com/herumi/prog/prog90.html#PRECISION

443:デフォルトの名無しさん
10/06/25 01:13:02
新しいOpteron(Magny-Cours)で単精度のSSEのコードを走らせたんだけど、異様に遅い。
スカラーのコードの方が遙かに速いんだけど、そんなことってあるのかな?
インテルのCPUなら概ね2倍になるコードなんだけど、2倍どころか1/3にもなりそうな感じだった。
ただ、倍精度になるとスカラーよりも速くなる。
ICCでやったりgccでいろんなオプション試したけど、あんまりかわらないので何が原因かわからずにいる。
これだけで原因がわかるエスパーな人がいると助かるんだが。

444:デフォルトの名無しさん
10/06/25 13:59:28
URLリンク(pc.watch.impress.co.jp)

>4つ目は省電力機能の拡張だ。Opteron 6100にはIstanbul世代で実装されていなかったC1E(CPUがスリープモードにあるときの電
>力を減らす機能)が実装されたほか、「AMD Cool Speed Technology」と呼ばれる省電力機能が実装されており、温度センサーで温
>度が限界を迎えたと判断したとき、プロセッサのPステートをより低い段階へと強制的に移行させる機能だ。これらの機能により、プロセ
>ッサの電力効率を前世代に比べて高めている。


CPU温度が高くてクロックダウンしてるとか?

分からんけどw

445:デフォルトの名無しさん
10/06/25 20:14:14
>>443
ベクトル化が下手かOpteronの単精度がうんこかOpteronが不得意な命令を使っているか、
だと思う。
ICCはインテルCPU用の最適化しかしないという噂だけど、
gccはそんなことないはずだし。

プログラムの一部でもさらす気があるなら
もうちょっと答えられるかも。

C++とIntrinsicライブラリ?
C++とインラインアセンブラ?
C++とアセンブラ?
32bit? 64bit?


446:デフォルトの名無しさん
10/06/25 20:57:24
>>443
スカラーのコード
 x87 or SSEのスカラー命令を使うコード?

SSEのコード
 コンパイラの設定でSSEを使うようにしたスカラーコード or 並列化したコード?

447:デフォルトの名無しさん
10/06/26 01:45:18
>>444
これさ、一度CPUクーラーのファンを止めて、高負荷で動かしてみたことがあるんだけど、
マザーから警告のアラームがなって、ヒートシンクをさわったらさわれなくなる位めちゃくちゃ熱くなっていたけど、
実行しているプログラムが落ちることなく、動き続けていたから、相当熱くなるような環境でないと、
クロックが落ちることは無いと思う。よく負荷テストとかでPrime95とかいうFFTを馬鹿みたいに立ち上げる様な
ことをしない限りは無いんじゃないかな。

448:デフォルトの名無しさん
10/06/26 01:54:08
>>445
レスサンクス。
使っているのはC++とIntrinsic。最初はインラインアセンブリで書いていたんだけど、
WindowsのVCCも考えて、Intrinsicに変更した。

コードをさらしたいのだけど、さすがにそれは出来ないので、
ちょっとシンプルなコードを書いて比較してみるよ。
何かわかったら書き込んでみる。
なんとなく思っているのは単精度だとシャッフルやらシフトを多用しているんだけど、
倍精度ではデータ幅の関係でそんなにやらなくていいので、Opteronはシャッフルとかシフトに弱いのかなあ?
とか思っている。

>>446
64bitで使っているんで、もはやコンパイラがx87のコードを吐いてくれません。
ちょっと表現が悪かったけど、SSEと言っているのはベクトル化したSIMDコードという意味。


449:デフォルトの名無しさん
10/06/26 04:22:39
>>448
シャッフルのレイテンシ
AMD Family 10h: 3 cycle
Intel Penryn以降: 1 cycle

450:デフォルトの名無しさん
10/06/26 10:40:33
「OpteronとIntel(Core2?)とで挙動が違う」のが問題であるなら、
キャッシュ構成を疑ってみるのはいかが。

Opteronの一次キャッシュって今も2-wayなの?

451:443
10/06/29 01:29:17
ちょこっと調べてみたら、クリティカルな部分は
ループの中に
for(;;)
{
//A,B,Cその他諸々のデータを取ってきて下記を実施
SSEの計算群1 -> 結果をxmm0に最終的に放り込む
SSEの計算群2 -> 結果をxmm5に最終的に放り込む
SSEの計算群3 -> 結果をxmm10に最終的に放り込む
// メモリへの書き込み
A[i] = xmm0;
B[i] = xmm5;
C[i] = xmm10;
}
と言うような感じなんだけど、メモリへの書き込みの段階で偉く遅くなっていた。
>>450が言うようにキャッシュの問題なんだろうけど、解決方法は無いのかな?
Opteronはライトスルーなのかな?
A、B、Cの結果は再利用されることはないので_mm_stream_ps()でやってみたけど、そっちはもっと遅くなった。

452:デフォルトの名無しさん
10/06/29 03:11:14
配列A,B,Cのサイズを
32kBの倍数+64*n(n=1,2,...,511)
に変える

453:デフォルトの名無しさん
10/06/29 19:57:17
>>451
A,B,Cのサイズは?


SSEの計算群1 -> 結果をxmm0に最終的に放り込む
A[i] = xmm0;
SSEの計算群2 -> 結果をxmm5に最終的に放り込む
B[i] = xmm5;
SSEの計算群3 -> 結果をxmm10に最終的に放り込む
C[i] = xmm10;
とやってみるとか。

Cだけ_mm_stream_psにしてみるとか。

454:デフォルトの名無しさん
10/06/29 22:57:53
キャッシュスラッシングが原因だとすると
スカラーコードではA,B,Cは独立した
ループで処理してるのかな?

455:443
10/06/30 02:18:30
>>453
レスありがとう。

実はすでにやってみたけど変わらなかった。
ひょっとしてレジスタが足りなくなって、xmm0とかが、メモリに待避させられているのでは?
と思ったんだけど。
A,B,Cのサイズ自体多次元配列で、すごく大きいけど、ループの中では4K以下になるように処理している。
たとえば
AAA[i][j][k]の3次元配列があった場合、
A = AAA[i][j]
と1次元は配列として扱っている。そしてA[max]が4KB以下になるようにしている。

>>454
スカラーのコードもA,B,Cでループ内で処理している。
やっぱり、スラッシングが原因なのかなあ?



456: ◆0uxK91AxII
10/06/30 18:03:29
とりあえず、境界を合わせて128[bit]ずつnon temporalな書込みをする。

457:デフォルトの名無しさん
10/06/30 19:03:04
Cだけ_mm_stream_psにしても変わらないならA,B,Cだけが原因じゃなさそうだ。
計算群1,2,3で参照しているメモリがA,B,Cとスラッシングしてるんじゃないかな。
なので、こうしたらどうだろう?
for () {SSEの計算群1-> 結果をA[i]}
for () {SSEの計算群2-> 結果をB[i]}
for () {SSEの計算群3-> 結果をC[i]}

これでも計算群1で参照しているメモリがA[i]とスラッシングしてたらお手上げなんだけど。


458:443
10/07/01 01:21:40
>>456
>>457

いろいろと調べてみたら、キャッシュの問題ではなくて、
NUMAノードの設定が問題だったようだ。
メモリの確保をmalloc()ではなく、numa_alloc_onnode()でダイレクトにNUMAノードを指定してあげたら、
ほぼスカラーの倍の速度が得られたよ。
numactlをつかって、--preferred=nodes --localallocとかいろいろといろいろとオプションを
つけてやってみたけど、うまく指定したノードでのメモリ割り当てが出来ていなかったみたい。
いずれにしてもSSEの問題ではなかったので、変な質問をして申し訳ない。
レスしてくれた人ありがとう。
ただ、プリフェッチの指定をしていた部分でNehalemではかなり効果があったのが、
Opteronでは全く効果が無いので、プリフェッチの距離とかはOpteron用に考えないといけない様だ。

459:デフォルトの名無しさん
10/07/01 08:56:52
OpteronのNUMAは諸刃の剣だな。ハマればメモリの許す限りスケールするしな。
ていうかSMP Opteron由来の問題とは俺も気付かなかった。

460:デフォルトの名無しさん
10/07/23 11:32:54
(000、000)10
ー10、835

とかいう問題


461:デフォルトの名無しさん
10/07/27 16:59:37
>>458
First touch 問題だね


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch