1 名前:デフォルトの名無しさん [2008/01/04(金) 14:25:44 ] 主にx86系で浮動小数点を扱う話題
69 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:08:23 ] ありがとうございます cygwinのgcc使ってるんですが -mfpmath=sse -mfpmath=fpu どちらを指定しても最初(なにもしないとき)と結果は同じでした
70 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 04:22:38 ] >>69 まさか、sseのないCPUって落ち? つーか、-msse(or sse2など) つけてないのかな? 一応こんな感じなんだけど。 -- $ gcc --version gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -- $ gcc foo.c -msse2 -mfpmath=sse -- # _DF == float $ ./a|tail -1 23 0.0000001192092895507812 -- # _DF == double $ ./a|tail -1 52 0.0000000000000002220446 -- $ gcc foo.c -- $ ./a|tail -1 63 0.0000000000000000001084
71 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/01/14(月) 07:03:53 ] >>69 sizeof (float) と sizeof (double) だしてみて 古いコンパイラだとfloat=doubleになる希ガス
72 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 09:13:04 ] >>66 アンダースコアを先頭に付けた識別子は 処理系の予約語だから(本当はもうちょっと規則が複雑)、 自分で定義しちゃダメ。
73 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:01:12 ] x87は最大66bit精度な訳だが
74 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:14:45 ] >>73 だからなに?
75 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 11:35:56 ] 愚:だからなに? 平:勉強になりました。 賢:常識じゃね。
76 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 11:40:58 ] >>75 それで?
77 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 13:30:57 ] 66bitってどこから出てきたんだ
78 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 15:04:15 ] 三角関数の引数が範囲内にあれば、自動的に2πの倍数(66ビット精度)に縮小される πの16進内部値は次の通りである 4 * 0.C90FDAA22168C234C
79 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:18:47 ] なんちゃ、それ。
80 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 20:11:24 ] そういえば牌の任意の桁が16進表記で判るらしいけど どんな計算してるんでしょう?
81 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:49:45 ] x87 は仮数部 64 ビットじゃなかったっけ? しかも暗黙の 1 なしで。
82 名前:デフォルトの名無しさん [2008/01/16(水) 00:10:51 ] ダンゴさんが連投するスレは活気があるな
83 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:32:04 ] あとx87も普通にIEEE754準拠してる件について
84 名前:デフォルトの名無しさん [2008/01/18(金) 17:54:10 ] つーか、8087がIEEE754の元になったんじゃなかったっけ?
85 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:00:35 ] だね。
86 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:15:52 ] しかしなんで指数部のゲタが1024じゃなくて1023なんだろ(倍精度) 指数部の最初のビットを見れば1以上か否かわかる、ように した方が美しいと思うんだが
87 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:27:30 ] 奇数じゃないと指数の上限と下限の絶対値が等しくならない
88 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:29:39 ] Infinity/NaN 用のフラグが必要だから
89 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:38:59 ] そもそも浮動小数点というのが分からない
90 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:43:23 ] >>87 ばか?
91 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:10:51 ] 0x400の方が綺麗だよね、1以上の総数と1未満の正数の総数が等しいし。 最小の正数の逆数が飛んでしまうとかそんな理由か。
92 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:41:46 ] ∧∧ ミ _ ドスッ ( ,,)┌─┴┴──┐ / つ ここでBCD.│ 〜′ /´ └─┬┬――┘ ∪ ∪ ││ _ε3
93 名前:デフォルトの名無しさん [2008/01/27(日) 00:03:52 ] 453 名前: デフォルトの名無しさん 投稿日: 04/08/09 23:53 こんなのでいいか?テンプレ。 >451 Q1. BCDだと誤差出ないよね? A1. ではBCDで1÷3を計算してみよ。 Q2. IEEE754 が 1÷10 を正確に表せないのはけしからん。 A2. 1÷3 を有限桁で表せない10進数もけしからんよね。 Q.3 とにかく浮動小数は誤差が出るって聞いたんだい! A.3 だからといってBCDに誤差が出ないわけではない。 Q.4 キー!でも浮動小数の誤差の出方はわかりづらいだろ! A.4 BCDの誤差の出方よりわかりやすいという職業の人もいる。 Q.5 BCDをバカにするな!金融をバカにするかぁ技術者さんよぉ! A.5 あなたの被害妄想。 続く… 460 名前: デフォルトの名無しさん [sage] 投稿日: 04/08/10 11:53 Q6. バーカバーカ!誤差の許されない分野にBCDが使われてるよ! A6. 本当なの?じゃあBCDを正しく理解できている優秀なSEに感謝しましょう。 Q7. でもでも誤差の許されない分野にBCDが使われてるよ! A7. しつこいね。BCDを使うと誤差を許さなくなるわけではないよ。 Q8. オーゥワタシ、メソポタミアジンデース。ニポンジン10進スキネー。ナゼ? A8. 祖先から伝えられてきた日本の美しい伝統だからです。
94 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 00:06:24 ] 誤差が嫌なら有理数クラスでも使えばいい。
95 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 00:39:27 ] BCDで全桁計算すればよいと結論が出尽くしている。
96 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 00:43:50 ] 1/3
97 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 02:18:05 ] >>83 IEEE754に準拠したのは80387以降。(80287XLというのも一時期あったらしいが) それまで負の無限大は無かった。 tan91°とかどうしてたのかねぇ。
98 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 02:53:44 ] ばかだなBCDで扱えない数字はそもそも人間にも扱えない
99 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:02:07 ] 分数で良いじゃん
100 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:08:41 ] SSE4のベンチマークまだー?
101 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 10:16:03 ] プログラマに数学は必要かという問いに対して別にいらないんじゃね?と思っていたんだが・・・
102 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:46:35 ] >>97 馬鹿が居る。
103 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:50:25 ] >>97 制御ワードの12bit(INFINITY CONTROL)は8087では有効でございます
104 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 12:15:40 ] >>99 無理数
105 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 12:48:41 ] 80287と80287XLはパフォーマンスの向上以外には具体的にはどのような非互換性があるんだろう
106 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 12:55:52 ] 多倍長計算とBCD計算の違いについて教えてください
107 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 13:07:37 ] BCD は 1 桁を 0〜9 で扱う。 多倍長計算はそういう制限がない。
108 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 13:47:36 ] BCDの多倍長は?
109 名前:日本語に不自由する人はこれだから困る mailto:sage [2008/01/27(日) 15:24:05 ] >>108 BCDという制限がついた多倍長。
110 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:49:23 ] BCD は BCD 用の命令が CPU に備わってることがある。
111 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:47:35 ] >>86 整数命令で大小判定できるからじゃん? バイアスでなくて2の補数とかにしたい気持ちはよく解るが。
112 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 10:23:49 ] >>92 MSX-BASICをお使いください
113 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 10:24:53 ] DAAとかx86_64では無くなってるんでしょ?
114 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 14:31:31 ] MSX-BASICの浮動小数点 符号部 ibit 指数部 7bit 0x40のげた付き10のべき 仮数部 短精度 24bit 倍精度 56bit 正規化されたBCD(6桁/14桁)
115 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 20:05:49 ] >>111 > >>86 > 整数命令で大小判定できるからじゃん? それはゲタが1024だとできないの?
116 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 02:55:27 ] >>111 2の補数用の比較命令使いたかったらまず仮数部をだな
117 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 13:13:46 ] windowsの電卓オススメ
118 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 01:23:30 ] >>117 >windowsの電卓オススメ ヘルプによると一部有理数を使えるようだな。感心感心。 がしかし、関数電卓にすると平方根ボタンが消えるのはなぜだ? どうやら平方根は関数ではないらしい。 [x^2]の逆関数で何とかしのげるが。
119 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 01:32:16 ] 1/2乗って知ってる
120 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 01:33:01 ] x^2 の逆関数でいけるからボタンが無いんだよ
121 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 01:53:26 ] x^yの意味がわかってないな
122 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 01:57:21 ] XOR だよね!
123 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/01/30(水) 02:07:00 ] そうだね累乗はx**yだね
124 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 03:09:32 ] もれは1/2計算するの面倒だから .5乗している
125 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/01/30(水) 03:17:50 ] ActiveScriptRubyについてるirbが便利。
126 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 15:06:54 ] [3][x^y][1][.][5][=] [3][Inv][x^2]
127 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:54:58 ] 普通の電卓に平方根がついてる意味がわからん。標準偏差に使うのか? 簡単なループで計算できるからつけてみたら、その後ほぼ標準装備になったとか?
128 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:19:02 ] >>117 浮動小数点は文字列を使えという主張ですか
129 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:25:49 ] 0.1が正確に表現できるって意味じゃないか
130 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:38:36 ] BCD最強説
131 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 19:07:27 ] BCDは固定長です。
132 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:02:59 ] COBOLのパック形式をBCDと呼ぶのが正しいのだろうけど、 仮数部 X 10の指数部乗 の形式や 小数点以上32bit+小数点以下32bitといった10進数の表現も多い。
133 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:11:32 ] BCD で可変長は可能だろ。
134 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 07:01:47 ] >>117 Windowsの電卓をコマンドラインから実行して計算結果をもらうにはどうすればよいのでしょう?
135 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 08:14:24 ] >>127 ttp://www.njg.co.jp/d/3594.html ttp://www.t-ueda.jp/edu-momo/chi_faq/2/route.htm
136 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:55:33 ] ∧∧ ミ _ ドスッ ( ,,)┌─┴┴─────────┐ / つ ここでユークリッドの互除法. │ 〜′ /´ └─┬┬―───────―┘ ∪ ∪ ││ _ε3
137 名前:デフォルトの名無しさん [2008/02/10(日) 11:54:35 ] >>103 8087 デフォルトの射影的無限大ってよく解らないんだけど。 Projective モードで tan(90.000・・・°) を計算すると、 無限大の符号はどっち向くの?
138 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:05:48 ] (90.000・・・°のラジアンは表現できない 8087FPTANのパラメータは[0, π/4)の範囲 8087デフォルトでは-∞と+∞の相違は意味が無い(+0,-0と同様) 実際には、80bit-->64bitの変換で色々起こると思う
139 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 02:09:12 ] BCD信者に 89.999… == 90.000… が真であることを証明してもらおうか。
140 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 12:29:46 ] IEEE754信者も
141 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 14:14:23 ] IEEE754に循環小数は存在しませんっ。 先生そんなの認めませんっ。 無限桁BCDは世界最強なんだろ? 手始めに等号判定を実装してもらおうじゃないのさ。 アルゴリズムだけでもいいから示してくれ。 等号すら満足に行えない数値表記なんて何の役に立つ?
142 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:16:56 ] 有限桁演算だと結局等号の意味が薄い件
143 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:37:48 ] マシンイプシロンくらい気にしろと
144 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:24:03 ] じっすうのひかくにとうごうをつかっちゃいけないって おかあさんがゆってた
145 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 21:28:35 ] >>144 ではどうしろと? A-Bが0だからといってA==Bとは限らない。 ママにそういってこい。
146 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 21:50:29 ] >>145 どうもこうも、不等号を使うしかないだろ。
147 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 21:56:15 ] 差が何らかの閾値以下かどうかチェックするのが常套手段
148 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 00:13:46 ] >>147 そうそう、マシンイプシロンあたりで。宿題スレでよくみます。
149 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 00:45:06 ] >>143 >>148 マシンイプシロンと等号になんの関係が? まさか、まさかとは思うが、君達は A==B を判定するのに A÷B させて1.0に迫るのを眺めているわけではないよな?
150 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 09:12:37 ] マシンイプシロンの精度で数値解析できれば苦労しないw
151 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 13:52:32 ] まさにA==Bを判定する必要がある場面を例示せよ。 行列ならほとんど積和算だし ソートは大小比較であり等号なんて使わない。 もしかして実数データをstable sortでもしたいのかい?
152 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 15:24:07 ] Aさんが直線上を時速2キロで歩いています。 Aさんの5キロ後方のBさんが時速3キロでAさんを追いかけ始めました。 おっと、A,B間を往復する時速5キロの犬が同時にBさんのもとを出発しました。 さて、ここで問題です。 (続く)
153 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 18:09:27 ] 私が博士論文で作った無限桁BCDライブラリによるとだな。 永遠にアキレスは亀に追いつけないと結論が出ておる。 よって常にA≠B。犬は老衰で死ぬ。
154 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 18:35:48 ] IEEE754 と微分方程式によるとだな、そもそもNot a Number(数ではない)と結論が出ておる。 もしかして犬は虚数なんじゃね?
155 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 19:36:53 ] ……AとBが出会った瞬間犬はどっちを向いているでしょうか?
156 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 20:03:48 ] >>151 ほぼ 0 を 0 に切り捨てる処理を書く事はたまにある。
157 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 20:16:35 ] ほぼ0なベクトルが与えられる可能性のあるときにを単位ベクトルに正規化するとき悩むな。 分岐を使わないいいい方法ってないかな?
158 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 20:18:15 ] どうせ長さ取得する必要があるんだし 分岐したんでいいんじゃないかな。
159 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:02:42 ] >>155 そりゃあ「尻尾の反対側」だろうな。 なんたって虚数犬だからな。 BがAを追い越した10分後にどっち向いてるかも興味があるな。
160 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:57:57 ] >>157 まずベクトルの要素の中から一番デカい数値を探すんだ。 そしたらそいつが1.0になるように他の全要素をスケーリングする。 ここまでは簡単だろ?n次元ベクトルならn-1回の比較とn回の割り算をすれば済む話だ。 できたか?できたら後はフツーに単位ベクトルを得るがよろし。二乗や平方根が出てくるだろうが、もはや二乗によるオーバーフローや平方根によるアンダーフローの危険性はぐっと減るはず。 まあようするにアレだ。単位球を得る前に、外接する立方体(一辺の長さは2.0な)を一度求めてみましょうという話だ。 …という仕事を昔データマイニングでしたなあ。
161 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:06:02 ] 小さい数値が出てきてる時点で、 そのベクトルを求める際に 数値誤差がたんまり入ってる恐れがあるじゃん。 全体的なオーダーが小さい場合はそういう手法は役に立つと思うけど、 例えば 1 前後のオーダーが普通な時に 10^-14 みたいなサイズのベクトルがあったら それは多分もの凄い勢いで数値誤差を含んでる。 困るのは多分こういう時。
162 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:21:16 ] >>161 > 例えば 1 前後のオーダーが普通な時に > 10^-14 みたいなサイズのベクトルがあったら > それは多分もの凄い勢いで数値誤差を含んでる。 うーん、そういうものなの?誤差?物理とか計測の話だったの? データマイニングで言うとこんなケースかな。(単精度正規数の場合ね) あるとこにおでん屋さんがいました。 店長はベクトル(気温,売上高)を使ったデータマイニングで仕入れ管理を始めました。 「まあ大変。昨日まで1℃だった気温が突然1.17549435e-38℃よ!氷点下はまぬがれたけどシステムがSIGFPEを吐いて止まってしまったわ!」 さあどうしよう。そうだ!気温をセ氏からカ氏に変えたらいいのでは? 過去のデータは全て変換して、今日の気温32°Fっと…うまくいったようです! ということで、物理屋の諸君も単位を柔軟に変えてみることをお薦めしたい。 特に零点変更は効果的だ。
163 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:07:35 ] 興味深い話だ。 いま >>4 の第二フェーズあたりだな。このスレはここからがおもしろい。
164 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 02:04:43 ] 摂氏0℃付近になる事で問題が発生する状況が想像できないなあ。
165 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 02:22:08 ] もの凄く小さいベクトルは何らかの形で数値誤差が大きいかもしれないから、 それを正規化して果たしてどれだけの意味があるのか分からない、 ってのがあるんだよな。 演算でオーバーフローとか現れなかったとしても、 そうやって得たベクトルに意味はあるの? ってところ。 解析的に解くと、(もの凄く小さいながらも)とある方向を向いているはずなのに、 数値誤差のせいで別の方向を向いてるなんてことは普通にある。 そういうのはばさっと0ベクトル扱いにするのもありだと思うが、 全体のオーダーが小さい場合もあるかもしれないから、 どこから0ベクトル扱いにしていい物やら悩む。
166 名前:絶対零度付近ではいろいろ起きそうだがw mailto:sage [2008/02/19(火) 02:28:13 ] 摂氏-1度の氷に摂氏-1度の水を掛けると……
167 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:21:54 ] 温度なんて相対値か絶対温度の形でしか 式に現れないはずだからなあ。 原点が問題になることは無いはず。
168 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:35:27 ] 「ただ1回計算をしただけでは結果の正しさについてほとんど何もわからない」 (伊理,藤野:"数値計算の常識")
169 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 14:18:06 ] ただ1個の標本だけでは母集団の分散について何も言うことができない
170 名前:おでん屋のお姉さん mailto:sage [2008/02/19(火) 18:50:49 ] おでんやの店長(>162)です。 あたしはねぇ、気温を入力して売り上げが予想できればそれでいいの。 工学科卒のオーナーったらひどいのよ。 こないだの大晦日とか、気温も売り上げも0に近かったんだけど、 「何らかの形で数値誤差が大きいかもしれない」とか言い出すのよ!もー! 「それを正規化して果たしてどれだけの」やかましいわ、キー! あたしは一生懸命打ち込んでるの!気温が低いのも売り上げが伸びないのもれっきとした「事実」なの!暖かろうが寒かろうが「事実」に貴賎はないの! >168 >「ただ1回計算をしただけでは結果の正しさについてほとんど何もわからない」 何回計算させれば気が済むのよ!あたしはデートなの。もう後がないのよ! もういいわ。ム板に相談した私がバカだった。 ケルビン温度計買ってくるわ。そうすればあたしは幸せになれるのよね? どこで売ってるの?Amazon?楽天? …もし気温が0°Kになったらどうするかですって? そしたらまたセ氏に戻すわ。
171 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:09:53 ] >170 あなたが観測した気温が1.17549435e-38℃だったとして、 実際には温度計の目盛り線がちょっと曲がっていて 本当の気温はマイナス1.17549435e-38℃だったかも しれない。でここに出てくる数字だけから判断すると 相対誤差200%なんていう話になってしまう。 売り上げ予想は「事実」ではないでしょ? 入力する気温が氷点下かどうかで 「今月は赤字に転落する恐れがあります」なんて オーナーに報告しに行かなければならなくなる瀬戸際 にあなたは立っているかもしれない。 真冬日の定義に従って 「今シーズンの暖冬傾向は云々」という文章を 書くのを仕事としている気象庁の中の人は リアルでそういう状況なんじゃないかな。
172 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:17:09 ] >しれない。でここに出てくる数字だけから判断すると >相対誤差200%なんていう話になってしまう。 ならねーよ (273.15 - 1.17549435e-38) 〜 (273.15 + 1.17549435e-38) だから誤差は0でいいよ
173 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:22:59 ] >>171 誤差の出し方全く分かってないな。
174 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:39:11 ] >172 だからー、170の使ってる予測式が 気温(セ氏度)×1万円 だったらどうすんの?て話。 物理だけが数学じゃねーぞ。 水と氷だって大違いだぞ。 >173 ここでは相対誤差でなく絶対誤差を使うのが大人のたしなみ。 こうですか分かりません!
175 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:41:38 ] >>174 1万円かけたところで誤差なんてないじゃん。 そもそも 「何との」 相対誤差を出したいんだ?
176 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:49:36 ] 1.17549435e-34円も-1.17549435e-34円も 四捨五入すれば0円か…その通りだ 真の値と測定値との間の誤差…セ氏度表示で ってダメ?
177 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:11:41 ] >IEEE754単精度では1〜10^-37ぐらいを同じ精度で計算するのは朝飯前じゃがのう。 よくわからないけど、 1.0 + 1.0 * 10^-37 が正確に計算できるってこと?
179 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 17:53:25 ] >>178 うむ、この程度の計算なら0.5ulpのハードルはらくらくクリアだな。
180 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:15:27 ] その計算は仮数部が128ビット以上必要だろJK
181 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:48:35 ] ビックリするかもしれないが、0.5ulpさえクリアすればそれが「正確」というものなのだよ…
182 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:56:37 ] >180 キミは禁断の「真実の値」に迫りたいのかい? 恐ろしいことに、このケースでは仮数部は何桁あっても足りないのだよ… こうして毎日何人ものプログラマーがBCDの暗黒面に落ちていくのだよ…
183 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 19:05:00 ] >181 情報落ちは言い出した人の責任ですかそうですか >182 1.0 * 10^-37 を「有効数字2桁?」と考えた上での発言だ …前半の1.0のほうを忘れてたなそういえば
184 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 19:21:37 ] 10^-1に仮数部が何bit必要か計算してごらん… おのずと1.0+1.0*10^-37の正体にも気付くさ… >こうして毎日何人ものプログラマーがBCDの暗黒面に落ちていくのだよ… やがて彼らは新天地で1÷3に出くわし、挫折の末、戻ってくるのさ… そして望む/望まざるに関わらず >181 を受け入れて生きていくしかないのだよ…クククッ
185 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 19:23:56 ] そこで分数表現が登場
186 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 19:54:01 ] ライブラリの中の人が10進2進変換に苦労してることも 知ってるし。だ れ が 1.0+1.0*10^-37の「真実の値」を 知りたいと言ったか。 分数は大小比較が困難だからなー。循環小数について 考えてみようよ。 手始めに0.111...と1.000...をどう正規化するかについて。
187 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:07:36 ] 循環小数は分数化できるよ 0.900900900900.... = 900/999 0.90909090.... = 90/99 0.9999.... = 9/9 = 1/1 大小比較は通分すればいいんじゃない
188 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:45:46 ] 分数を循環小数形式で格納する利点は無いものですかね
189 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 21:17:59 ] さあ、πを正確に小数で表現してください。
190 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:27:51 ] レベル低すぎ 厨房が涌いてるのか?
191 名前:デフォルトの名無しさん [2008/02/21(木) 00:54:42 ] > 10^-1に仮数部が何bit必要か計算してごらん… > おのずと1.0+1.0*10^-37の正体にも気付くさ… うーん、待ってくれ。 「n^-a を適当な基数で基数変換して循環小数になったら n^-(a+1) の基数変換もまた循環小数である」 …これ、正しいよな? 「整数+循環小数もまた循環小数である」これも確かだよな?
192 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:30:20 ] >>177 > > もの凄く小さいベクトルは何らかの形で数値誤差が大きいかもしれないから、 > 量子力学者のベクトル計算は天文学者より数値誤差が大きいとでもいうのかね? 全体的にオーダーが小さい場合は問題ないと何度も言ってるのに 何でそう言う事言うかね。 > > 数値誤差のせいで別の方向を向いてるなんてことは普通にある。 > で、何に困ってるのかね?おでん屋のお姉ちゃんを見習って温度計を買い換えたらどうかの? > ベクトル要素の性質と単位ベクトルの用途を聞かんことにはなんとも答えられんのう。 そもそも温度計の話も意味が分からない。 「ほぼ0の値になるとおかしなことになる状況だ」 という状況説明が何もない。 気温(摂氏)で割ってるような式でもあるのか? それを華氏に直して意味はあるのか? 元の式を変える事ができないなら、 いくらデータを保持する時の尺度を変えようが、 結局もとの形式に変換しないと元の式には適用できない。 数値誤差が増えるだけの愚行。 それができるのは元の式を変える事ができる場合だけだが、 それなら別にデータをコンバートする必要も無く、式を変えればいいだけ。 > > どこから0ベクトル扱いにしていい物やら悩む。 > これこれ、あくまでも目的は単位ベクトルじゃ。そうじゃったよな? >157 例えば解析的には0ベクトルになるはずのものが 数値誤差で非0ベクトルになった場合もあるだろう。 そういう場合に単位ベクトルを得て何の意味があるのか? 意味がないなら0ベクトルになっても構うまい(場合によっては例外投げても構わん)。
193 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:41:53 ] >>188 あんま無いよ、どうせやるなら同次型にして取り扱うが吉 速くて誤差なし
194 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 05:12:11 ] なんかこのスレグダグダすぎてワロタ。
196 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:10:37 ] [悪い例] float温度[℃]に 3 << 22 を加えた後、3 << 22を引けば整数化される。 1 << 23個の1円玉(約1g)のfloat重さを加算した後で平均をとる。 >>おでんや x87CWのUM,DMをセットするか例外ハンドラをつけるべき
198 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:31:53 ] >>196 その加算で精度7ケタに丸められることを 194は10^-7程度の誤差と言っているのでは?
199 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 15:05:15 ] >194 そんなレベルの議論は>181>183で終わっているように見える >196 0.5ulpの意味でベストを尽くすこととそれに意味があるかどうか ということは別の問題だ 1と1+10^-8を区別できない状況で誤差が10^-37程度だなんて 主張したかったらもっと筋道立てて説明しろ あと >「1〜10^-37ぐらいを同じ精度で計算するのは朝飯前」 の意味をもう少し具体的に書け どんな元データからどういう計算をしようとしてるのかを
200 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:25:41 ] もし次スレが立つ様ならスレタイにくだすれって入れとけよ
201 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:26:37 ] >>191 10進数で1/3=0.3333333333…は3進数では0.1だ。
202 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:17:18 ] >>196 誤差を理解してないな。
203 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:32:18 ] 想像だけど、計測値を補間する場合はそんなことが起きる。 回転しないはずなのに微量の回転とか。
205 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:34:18 ] もうそろそろネタがつきる頃だな。
206 名前:デフォルトの名無しさん [2008/02/21(木) 22:40:47 ] >>196 馬鹿はすっこんでろw さらしage
207 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:54:54 ] >>203 機械εが10^-16前後だから 1 前後の値を数百数千数万数十万といった加減算をやってりゃ 10^-14 程度の数値誤差はあって当然。
208 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:55:19 ] 倍精度での話な。
209 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:21:16 ] 自称データマイニング屋のせいで糞スレ化してしまったな。
211 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:36:09 ] >>210 >>4 の呪いだ.
212 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:40:08 ] 的確すぎて泣けた
213 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:23:33 ] ここまで全部 >>4 による自作自演なんじゃないかと思えるほどぴったりだな。
214 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:26:28 ] 誤差はちゃんと高校で教えるはずなのに まともに教える学校が少ないのかな。 俺も大学の物理実験ではじめてまともにやったよ。
215 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:35:23 ] >>207 > 10^-14 程度の数値誤差はあって当然。 「誤差が10^-14」ってどこから出てきた話よ。 > 10^-14 みたいなサイズのベクトル の要素の誤差が10^-14なのか?もしそうならこれはひどすぎる。
217 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 02:19:10 ] >>215 それは評判の悪い漸次的アンダーフローの場合だろwwwww その2数で差を取ったら非正規数になり結局0.0になる。 実際には10^-45という非正規数は見ることは無いんだよ。 大体これは実際に数値計算をしていれば分かること。 プログラム動かして、IEEE754単精度で1.0e-45だのの数字を見たことあるかよ? 要するに、お前がやってるのは、布団海水浴なんだよ。布団の上で水泳ごっこしてるのと同じなんだよ! 規格だけ見てワーワー言ってるから、頓珍漢なことを言うんだ。 2chで遊んでないで、ちゃんとプログラム組んで計算しろ!
218 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 02:59:57 ] おや、これはなんだろう。 -- awk 'END {printf("%c%c%c%c", 1, 0, 0, 0);}'|od -t f4 -- 私にはIEE754単精度の約1.4e-45に見えるのだが。
219 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 07:27:03 ] × 10^-14 は数値誤差と同程度のオーダーのベクトルだから、 ○ O(10^-14) のベクトルは数値誤差と同程度のオーダーのベクトルだから、
221 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 11:45:07 ] で、結局、IEEE754単精度正規数の最小ステップ長は誰が正しいんだよ。 ・10^-37程度 ・10^-43ぐらい楽勝 ・≒1.4*10^-45
222 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:12:59 ] >>218 ワロタw それは非正規数だしwww 弁当まじりの茶吹いたwwwww odのf4フォーマットは非正規数をベタで出せてよかったねwww えらいえらい見えた!見えた! 単精度実数での数値計算の誤差を踏まえた話をしてるんじゃ無かったのかよ。 好きなビット列と好きな浮動小数点フォーマットでへんちくりんな数を出して遊んでるなら、 次はIBMの16進形式で頼むわwwww ”あのさぁー”wwwwww 0.0の次の正規数は約10^-38で、この間隔の方が現実の数値誤差には重要なんですよぉー。 実地であらわれるコンテキスト上の意味も分からないまま、フォーマット規約だけを見て自慰行為に ふけりまくってるオナニー猿には関係ないだろうがなw
223 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:35:16 ] >>221 単独で取り出せる正の数の最小値はおおよそ1e-38。 一般的に原点近傍の数値間隔といえばこれを指すと思う。 ただ仮数部の桁が7~8桁あるので、その上近傍で仮数部の一番下の桁を見れば 1e-7~8 * 1e-38 = 1e-45 程度の丸め誤差におさまっている。
224 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:13:39 ] >222 >0.0の次の正規数は約10^-38で、この間隔の方が現実の数値誤差には重要なんですよぉー。 どういう意味で?どこの現実で? 非正規化数が定義された意味をきちんと勉強しろ。 非正規化数がないとか演算速度が重要な実地ならそう書け。 >223 非正規化数って聞いたことない? 聞いたことのない単語が出てきたらググって調べない?
225 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:35:36 ] あるのは分かっているし、なくなってしまえばいいとも思わないけど、 実際のところ、あっても嬉しくない。
226 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 16:03:15 ] > 0.0の次の正規数は約10^-38で、この間隔の方が現実の数値誤差には重要なんですよぉー。 「実地であらわれるコンテキストw」の提示内容によっては同意してもいいぜw。 だがしかし、>>194 の抱く「小学生のイメージ」像に矯正が必要な件はこれとは別だぜwww。
227 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:06:37 ] >>227 O(1) の近い値のベクトル同士を減算すれば おもっくそ桁落ちする。
229 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 20:12:04 ] 実際数値計算やってたらそういう状況は起こる。 たとえば基底関数展開したベクトル関数の ある点の値を取得しようとすると、 対称性のおかげで0ベクトルになる点やその付近で そういう状況に陥ることがある。
231 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 20:17:46 ] >単位ベクトル:(-1, 1) 1/sqrt(2)の間違いな。
232 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 00:26:17 ] wwwまで読んだ
234 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 01:11:46 ] >>229 >お前は桁落ちも知らないで浮動小数点に粘着しているのかwwwwww ん?この桁落ち、間違ってるのか? 君>>228 か?何か気分害したか?直すぞ。 16桁BCDで説明し直すか? >subnormalなnumberをいじるより、そのsubnormalなお前の知性を何とかしろ。 1e-13ってsubnormalなのか?あ、これ、倍精度な。
235 名前:228 mailto:sage [2008/02/23(土) 01:14:16 ] 違うわい。俺はこんな煽りはしない。 桁落ちは合ってるが、桁落ちを今知ったような、 あるいは桁落ち誤差が完全に頭から抜け落ちていたような 雰囲気に対して煽ってるんだろう。
236 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 01:57:14 ] >大体ようやくここ10年くらいでIEEE754の数値Formatは普及したが、丸めやら非正規化数の扱いなんかを >完全準拠している処理系はむしろ例外的だろ。 何いきなり抱き合わせで完全準拠を求めてんですか。 そんなに価値がないのならIEEE754rで削除してもらうか。 >SunのSPARCも対応していなくてソフトウェアで対応してたろが。 プログラマならまずシステムとして対応しているか&使い物に なるかを気にするべきでハード実装かどうかはそのあとでしょ? >浮動小数点を学び始めた人は正規数のみのイメージを作るほうが適切だ。 同意 >それに、そもそも話は正規数の範囲だったしな。 そうだっけ? >subnormal まで読んだ
237 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 03:57:16 ] 非正規化数になんか恨みでもあるんだろうか。
238 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:45:05 ] subnormalってなんだろうと思ってたが、 サブプライムとかけてたのね。 ふーん
239 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:23:13 ] 循環小数に適当な基数変換を施すと有限小数になる場合があるけど、 これって常に可能なんだっけ? (任意の循環小数には有限小数に変換できるような基数が必ず存在する?) もしかして有理数 m/n として表されるなら n を基数にすればいいとかそんな感じかな? n が素数でない場合はもうちょい工夫できそうな?
241 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:09:21 ] 悲しいことに全ての有限小数は循環小数なんだな。 89.999… == 90.0 == 90.000…
242 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:56:03 ] 丸めると 90.0 になるから問題ない
243 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん [2008/02/24(日) 10:59:08 ] >>240 そこまで言ってたらわかってると思うが、m/n = 0.m (n進数)だろーがw
245 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:02:55 ] [m/n].(m-n[m/n]) だな。
246 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:05:11 ] >>244 143/7 は 0.143(7進数)ですかそうですか
247 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:28:09 ] 逆に、整数で割りきれないと必ず循環小数になるんだよな。 余りのパターンには限りがあるから、 少なくとも 0 以外の全ての余りが出現したら あとは循環するのみだから。 そう考えると、1/素数はかならず循環小数になる以上、 素数 p は必ず何らかの (n-1)...(n-1) の約数になるのか。 なんか面白いな。
249 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:29:18 ] >>240 すべての循環小数は有理数 すべての有理数はp/qの整数比で表せる すべての循環小数は基数変換で(ry
250 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:34:10 ] 1/素数はかならず循環小数になる以上 1/2 1/5
251 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:34:30 ] ああ、>>248 は基数が p の倍数じゃない時限定な。 10 進数だと 10^x は素因数が 2 と 5 しかないから、 2 と 5 以外の素数は全てそうなる。
252 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:40:41 ] つまり、2^32582657-1 は 9...(何か凄い桁数)...9 の約数になるはずということで。 循環の周期は p - 1 の約数のうち p の桁数以上のものになるから、 最大で 9 が 2^32582657-2 個、最小でも 9808358 個の 9 が並ぶことになるのか。 果てしないな。
253 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:41:38 ] ああ、2^32582657-2 が 9808358 で割り切れるかどうかは知らない。
254 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:50:38 ] その循環小数を乱数表にすると問題ありますか?
255 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:52:40 ] >>247 循環小数の有理化に関するレスだよね。 >0.0...1 0...1 0...1 ... を (n-1)...(n-1) 倍すると 1 になるので、 この時点で、0.(n-1)...が1になる説明をまた>>247 の頭から繰り返さなければならないわけで
256 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:57:40 ] >>255 それは別な形で証明できるから問題ない。
257 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:14:51 ] さて、無理数はどうしようか。
258 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:33:14 ] 無理数を・・・どうするの?
259 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:38:29 ] 有理数は分数で表現できるから、無理数をあらわす方法がないか・・・ってことでは
260 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:41:44 ] 無理数を誤差なく表現したいなら非正格関数型言語のような事をするしかないだろうな
261 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:46:26 ] sqrt(2) なら sqrt(2) をそういうオブジェクトとして扱うことはできると思う。 でも、こういうのでは表しづらい無理数もあるかと思う。 解析解がない(数値解しか無い)ことが証明されている 方程式の解とかは、その方程式自体を中に保持したオブジェクトを使えるかもしれないけど、 その値をさらに別の式に組み込むと・・・とか考えていくと 無理がでてきそうな気がする。
262 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:58:15 ] >>261 無理数の難しいところはそういう問題じゃないんだ、まずはカントールの対角線論法を理解してほしい。 ここで、自然数を列挙する縦方向と、無限小数の桁を列挙する横方向に広がった二次元の表ができ、無限小数に自然数が対応できず 自然数よりも実数の集合の方が個数が多いとなる。 問題は、これが意味するところで、Haskellなどを弄ってみると分るのだが、 この無限につづく少数の列には、後出しジャンケンのような要素を含むことが可能なのだ。 適当な実数を意味する関数 char f(int i) を考える i が桁を示し、戻り値が 0-9 までとする。 引数 i を指定すると、関数 f は常に同じ値を返すとする、この条件だけなら、この関数 f は getc を含む関数が作れることがわかると思う。 一回よんだら以後その値を使い続ければ、関数 f は常に同じ値を返すから。 そして、それは際限なく続けられる、少数は無限にあるので。
263 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:35:14 ] f()で無理数をダンプして途中に自分のクレジットカードの番号が出てきても、誰も責めてはいけないという話ですか。 言い訳:「どこかで誰かのgetc()がクレジットカード番号を返す可能性がある限り、私共に責任はありませんっ」 ううむ、でこれ、自然数の集合では難しい話なの?
264 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:01:31 ] メモ 任意の有限個の記号からなる数値定義 (√(12345/678.9)、x^123456789+...+3=0の解、etc.) は全てひっくるめても加算無限個しかない。 つまりそういう方法では決してあらわせない無理数が 無限に存在する。 任意の無理数をあらわすには常に無限桁の入れ物が必要。 (任意の自然数をあらわすのはそれに応じた十分な 長さの有限桁の入れ物でいい)
265 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:22:02 ] なるほど。分かりやすいわ。
266 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:33:14 ] >>264 無限に存在とか考えないほうがいいかもしれない、特に「存在」 これ数学上の定義で自分たちの意識している「存在」の概念とはかけ離れた所があるから。 結局のところ「カントールの対角線論法」では、とりあえず実数の利用者に実数を全部ならべさせておいて その後から、しめしめとその利用者が列挙しなかった実数を挙げて、ほら並べられなかったダメじゃんという論理になっている。 実際に実数を実装しようと思うと同じ事が起こるというだけ、それ以上でもそれ以下でもない。 これは意識したすべての実数については、表現可能だが利用者が意識していない実数についてまでは実装できないという事。 たとえば、純粋抽象クラスを実装する場合、その中身がかかれてなくてもそれを利用するコードは書ける。 しかし実際には純粋抽象の中身を書いたクラスを使わないと利用できない、具体的なコードは「後からでも書けるよ」というのと似ている。
267 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:57:43 ] 書いていて思ったんだが意識ってなんじゃろね、不思議じゃ
268 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:39:04 ] 「考慮」 と言った方がいいんじゃないかな。
269 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:10:40 ] 任意の実数は不可算無限個あり、バイト列の個数は自然数なので高々可算無限個どまりだから、無限に伸びるバイト列が利用できても任意の実数を表現することは無理
270 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 06:40:10 ] >>269 任意の実数と言わずとも任意の有理数が表現できたらうれしいですけど。 「無限に伸びるバイト列」かあ。 多倍長計算のライブラリとかで、循環小数をきれいに扱えたららいいなあと 思うんだけど、どうなんでしたっけ。
271 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 16:18:51 ] >>270 数式演算すればいいんじゃね? Mathematicaと言わず、HP49Gくらいでいいじゃん。
272 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 18:57:53 ] ttp://rayn.ld.infoseek.co.jp/news/01_1/infinity.html
273 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 20:20:31 ] よく考えたら間違ってる 1/3*1/3 = 1/9 = 7/(2^6-1) = 0.000111000111...(2)
275 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 20:43:36 ] 不可算無限を実現する必要は無いと思う。 実際の問題で扱う値ってある程度限定されてるから、 その実際に扱う値さえ表現できればそれで現実的には十分だと思う。 ただ、それでも無理な事もあるかもしれないけどね。
276 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:22:17 ] >>273 >周期aの数と周期bの数を掛けたら結果の周期はa*bかその約数 なるほどそんな性質が。 >(結局は分数で扱うのが一番簡単そうに見えるのが) 例えば小数を分数に変換する、みたいなプログラムがたまにありますけど 有限な小数しか入力できないというのは片手落ちかなと思って。 周期が短い循環小数ぐらいはなんとかしたいかなーと。 例えば 1/7 の循環小数を入力したら、ちゃんと 1/7 を答えてくる、みたいな。
277 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:43:37 ] >例えば 1/7 の循環小数を入力したら、ちゃんと 1/7 を答えてくる、みたいな。 循環小数を入力する書式さえ決めれば、どうにでもなるかと 循環部分を括弧で囲む 0.[142857] とか、循環する桁数を付ける 0.142857, 6 とか 142857/999999 で約分して 1/7
278 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 00:40:17 ] >273 どこの分野でも測定機の精度が八桁もあったら高性能といわれる 実数をきちんと表現しても元データの誤差以上にはならないから 現実的には計算が遅くなるだけでなんの意味もなさないでしょ 役に立たたないことそんなに力説しないでもいいんじゃない >276 循環小数なら整数演算だからスレ違いでしょ
279 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 00:45:04 ] KY
280 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 00:58:12 ] 不可算無限個について、なにやら認識が膨らみすぎてどうにかなっている人がいるので、ちょっと書いとくよ。 可算な集合の特性は適当な集合について、これをコンピュータで言う所の class でいうと それは隣の要素を知るためのインターフェイスがあるという事だよ。 適当なコンテナオブジェクトがあるとき、その内容を列挙する気がないのなら別に列挙インターフェイスをつけなくてもいいんだよ。 それが不可算無限個を扱うという事、作れないって事はない、それは機能が制限されたライブラリとなっているだけだから。
281 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 01:55:10 ] >>277 なるほど。 ちなみに 142857/999999 というのは等比級数の無限和ですかね?
282 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 05:33:20 ] >>281 x = 0.[142857] 1000000x = [142857] = 142857.[142857] 1000000x - x = 142857 x = 142857/999999
283 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 09:22:43 ] >>282 なるほど。等比級数を持ち出すまでもないですね。ってゆうか確か高校で等比級数の和を 教えるときは同じような変形をするんだったかな。 浮動小数点の数値を整数分数に直してその後は分数として計算したら、精度的には うれしい場合もあるかな?
284 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 10:28:18 ] >循環小数を入力する書式さえ決めれば、どうにでもなるかと >循環部分を括弧で囲む 0.[142857] とか、循環する桁数を付ける 0.142857, 6 とか 914314.3143...とかどうしよう。9[143]XX.0とかでいいか。 無理数か循環小数かよく解らない数はどう表そう。 オイラーの定数γとか。
285 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 11:51:53 ] ttp://q.hatena.ne.jp/1130932358
286 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 13:06:33 ] >>278 ビット表現に×2^nと正規化が出てきたら文字通り 浮動小数点だと言ってみるテスト (まあ現在普通に浮動小数点といえば 誤差含む数を扱うためのものだが) >>280 実際のところ実数が不可算無限個あるって性質は 無視していいよね。 数学上は可算無限個の中に含まれない実数を 作り出すこと自体無理だし、 実用上は誤差を考えれば有限桁ですむし。 >>284 表そうも何もどういう循環小数か分からない時点で
287 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 15:46:50 ] >>286 有限のメモリーの中に無限を置けないのは、可算・非可算問わず事情は同じで 有限のメモリーの中"無限"という文字列が取り扱えるという事情も可算・非可算問わず事情は同じかと。
288 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 16:28:26 ] まあ、この話が出てきたのはBCDなら万全とかいう変な人のレスからだし、 真剣に無限どうこう考えてるわけじゃないでしょ。
289 名前:デフォルトの名無しさん [2008/02/27(水) 20:29:04 ] BCDなら万全とかいう変な人のスレ pc11.2ch.net/test/read.cgi/db/1175091880/
290 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 01:20:43 ] 非加算な世界を考えれば、もうなんでもありですからね。 アルフ0 の一つ上は実数でしたっけ(連続体仮説?)
291 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 11:10:14 ] >現在の数学で用いられる標準的な枠組みのもとでは >「連続体仮説は証明も反証もできない命題である」ということが明確に証明されている。
292 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 00:01:38 ] >>240 >(任意の循環小数には有限小数に変換できるような基数が必ず存在する?) >もしかして有理数 m/n として表されるなら n を基数にすればいいとかそんな感じかな? >n が素数でない場合はもうちょい工夫できそうな? >>243 >・(n*x == o**y)を満たす整数x,yが存在するならoは何でも良い nからよりコンパクトなoを求めるアルゴリズムが思い浮かばないよぅ。 素直にnを素因数分解するほうが近道か・・・
293 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:33:47 ] 素因数分解はコストが大きいですよ
294 名前:デフォルトの名無しさん [2008/04/25(金) 22:58:05 ] 高精度計算サイト ttp://keisan.casio.jp/has10/Menu.cgi 公開数日で、はてブ500ブックマーク突破。 有効桁数50桁。これ、BCDかなあ…。オリジナル精度の浮動小数点数かも。 プロの電卓屋が考えた「独自の桁数可変型演算システム」とやらの詳細が知りたいぜ! 君たちの大好きな 1 / 3 * 3 もちゃんと 1 になるぞ!
295 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 00:10:49 ] 1.4142135623730950488016887242096980785696718753769 確かカイジでは イヨイヨ ミゴロシ って読んでた気がする。 1414 3564 >>294 CPUは、繰り上がりフラグがあるから、足し算なら無限にできる。 掛け算を因数分解して有効桁の範囲で計算したあと足し合わせればいいわけで。 または文字で計算。まあ速度的にないと思う。
296 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 12:32:29 ] 宇海零が開平法知らなくてフイタw
297 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 15:47:06 ] ひとよひとよにひとみごろ 1. 4 1 4 2 1 3 5 6 が一般的だろうな。
298 名前:デフォルトの名無しさん [2008/09/25(木) 14:29:48 ] float 使うヤツはドシロートかおぢさん pc11.2ch.net/test/read.cgi/tech/1222048909/
299 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 07:38:27 ] 299
300 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:44:13 ] 300
301 名前:デフォルトの名無しさん [2009/02/15(日) 22:19:06 ] FPU命令に三角関数があるらしいけどマジで? ところで、Boostの分数はいずれ多倍長整数をサポートするとか。 精度ってどうなのよ?
302 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 22:27:45 ] >>301 8087の頃からある。
303 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 22:50:46 ] >>302 ほへぇ〜。だったらsinテーブル作って引くよりそっち使った方が早いのかな?
304 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 22:55:46 ] >>303 んなわけないだろ 8087系統は愚直にマクローリン展開の公式を実行している だけだからクロック数はすごいぞ
305 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 23:06:12 ] そっか。でもまぁ、SSEなんざ使うよりまし?
306 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 23:18:07 ] >>303 そういうことを自分で調べずに、このスレで何をするつもりなの?
307 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 07:46:44 ] >>304 乗算器が速くなかった時代では級数展開やってない。 CORDICでぐぐれ。
308 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 19:05:38 ] >>306 実装って複数あるだろうから平均的な動作を知りたくてね。 やろうと思えば、アセンブリ命令レベルで組み込まれてる訳だから 並列化した回路を実装してある物もあるかもしれないじゃん。 でも、そういう情報は古すぎてかあんまりWebにゃ載ってなくてねぇ。
309 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 00:43:56 ] >>307 ほう昔はこんな方法使ってたのか 今じゃRadix16だからなー
310 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 16:44:54 ] 逆数テーブル持ってるんじゃなかったのか。
311 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:04:32 ] doubleの逆平方根が存在しないのは何故? floatからニュートン法でやるしかない?
312 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:44:15 ] >>311 あるところにはあるよ。 ttp://docs.hp.com/en/B3921-90010/rsqrt.3M.html
313 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:17:31 ] そうか、SSEスレじゃないのかスマン HPのWS?の関数じゃあなあ
314 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:22:08 ] そりゃぁ、このスレはx86での浮動小数点数のスレなんだから、HP-UXだってありだろ。
315 名前:デフォルトの名無しさん [2009/02/19(木) 19:55:09 ] 素朴な疑問。SSE用レジスタっていっぱいあるけど、 なんちゃらオーダー見たいな機能で並列実行とかされないの? 暇そうに遊んでるレジスタが気になって仕方ない。
316 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 20:18:35 ] OOOのことか? >>SSE用レジスタっていっぱい だからOOOが効くとでも思ってるのか?
317 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 21:00:28 ] やっぱりねぇ。 結局多項式でぐらいしか意味は無いのか。 もったいねぇ。
318 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 21:04:49 ] >>317 おまえ、全然分かってないな 多項式だって a(b+x(c+x(d+x)))をSSEに置き換えただけでは 全然効果ない
319 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:01:15 ] >>318 そうなんけ?2〜3倍早くなったことはあったけど。 じゃああのレジスタ群は何に使うのよ?
320 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:04:50 ] そこがテクニックw
321 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:53:03 ] >>318 単に置き換えただけでも効果あるぞ。 FPUはfxchとか駆使してもOoOし切れないことが多い。
322 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 23:01:06 ] SSEの一番の問題は、超越関数を使うにはFPUに切り替えるかiccの内部関数に頼るか自作する必要があることだな。
323 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 02:56:34 ] iccではsseで改めてcos/sinとかを(ソフト上で)実装してるってこと? icc持ってないから分からないんだけど。
324 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 04:00:23 ] あるっぽいよ。iccが出力した実行モジュールのプロファイルを見た限りでは。
325 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 04:13:50 ] sse精度になっちゃうんじゃないの? それとも-msse, -O3とは別の意味で、オプションとか組み込みキーワードで精度を選択できるのか?
326 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 14:15:09 ] 10バイト精度でがんばっていた人たちって、どうするのかね。
327 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 15:17:11 ] fp80のことか?もう見捨てられてるっしょ。 ただでさえサポートしてるプロセッサはx86以外ほぼ皆無だし。 実際問題精度よりスループットのほうが重視されてるからな。 スループットがあればFFTによる多倍長演算も容易になる。
328 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 17:19:20 ] むぅ、128bitはドリフトか。
329 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/20(金) 22:08:20 ] 80bit精度って今となっては帯に短し襷に長しだからな。 MSコンパイラがlong double = doubleにやっちゃってるし。
330 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 22:56:00 ] 80ビットはインテルの(変態)独自仕様だと思ってたけどちがうの? 出来るだけ64ビットに演算誤差を伝播しないようにするインテルの親心というか・・・
331 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 23:02:41 ] ところで、FFTの多倍長というのは桁数いくつ以上からを考えてるの? 128ビットじゃないけど、金融・財務とか科学の計算でも普通は多く50桁*2程度あれば十分だと思うけど。 暗号とかエンコード用途なら、スループット以前の問題でFFTをハードとしちゃうだろうし。 というか、IEEEは早いところ16ビット小数を定義して実装して欲しい・・
332 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/20(金) 23:14:27 ] もうAMDのでいいよ
333 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/20(金) 23:26:23 ] つか、金融・財務で10分の1が正確に表せない浮動小数は非常識かと。 COBOLみたいな10進で扱う言語がわざわざ使われてるわけで。 かつ、Javaへの置き換えとかはBCD専用クラスとか作ってやってるわけで それにしてもAMD64がBCD演算命令を整理(廃止)する一方で今更POWERが実装とかアフォかとヴァカかと どうせ高級言語ごしでやるんだから命令ニーモニックレベルでのサポートも原則的には要らない訳なんだが。
334 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 00:19:22 ] 桁数の実用性の問題だから、当然BCDとか小数とかの比較のことじゃなかったんだけど。 BCDとかの実装の問題だとしても、ソフト上でintでいいんじゃないの? 例えば、高々100桁程度でかつ100桁の固定精度で十分なのに、どこにFFT使うんだ? 廃止かどうかというのは、当時の貧弱なハードや産業界の需要によって機能をつけたわけで・・・ 浮動小数は、実際は指数部分が重要なわけであって、仮数部分は低精度でいいってことは分かってるのか?w 仮数の精度は低いが、たとえ8ビットだとしても高精度と比較してもグラフの形状はほぼ同じ形状になる。 高精度が欲しいなら小数なんか使わないでBCDにすればいいんじゃないの?
335 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 00:37:55 ] >>322 SSEというのはスカラー演算はおまけで、ストリーム用途(といってもたった16バイトだけど)が本命じゃなかったのか? インテルはサーバ用CPUの方に目がいっちゃってるから、PC用ではAMDの方がやる気あるよねって言うのは同意するけど。 でもインテルは組み込みやサーバーや携帯市場にもいってみたけど活路は無く、一方でPC市場を放棄したりして一体何やりたいんだろうね。 一番活躍できそうなネットブックは、MSが仕様作ってるからインテルが主導権握ってる市場じゃないみたいだし、インテルには将来の展望というか何やりたいのかさっぱり見えてこない。 小数とは関係ないけど。
336 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 00:59:08 ] 少し話がずれていくが、「仮数部分は低精度でいい」ってのは語弊があるな 高い精度で高速な浮動小数点演算を必要とする需要ってのもいくらでも存在するぞ 最終段の出力が全てではないわけで ま、そのために80ビットてのも痛し痒しだって流れには同意するけどね
337 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 01:36:23 ] sigma取る時に桁落ちしなければ何でもいい
339 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 01:56:44 ] じゃ80ビットでいいじゃん。64ビットまでを有効桁にするだけ。 関数電卓(手元にあるのはカシオだけど)の説明書では10桁を有効桁にして、内部では15桁でやってるとかいてある。 たぶん実際のこと知らないのに、どっかの三流起者とか○○研究所研究員が書いた記事を鵜呑みにしちゃって、演算誤差が出やすいとか思い込みしてたんじゃないの?w
340 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 12:19:27 ] >>339 10^15程度でいいなら倍精度の53ビットあれば十分だろ。 更に言うなら64ビット整数と10^nの固定スケールで表してもいい。 なおさら機種依存のfp80なんて使う必要ねーよ。 むしろ【浮動】小数で扱う必要がない。 ジンバブエドルでも扱うのか?www
341 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 12:25:43 ] 15桁っていうのは、内部的に倍精度ってだけなんだろ ところで財務アプリなんか触ったことないがなぜlongで保持しちゃいけないんだ? _int64で持てってこと?
342 名前:デフォルトの名無しさん [2009/02/21(土) 12:59:31 ] 言いたいことが良く分からないんだけど、例えばジンバブエドル100兆ドル札が発行されたとしても、使う人たちはりんご20個で100兆130ドルか100兆140ドルかの違いなど気にすることはない。 君の妄想はこの程度しかできないんだろうけど、もっと現実に即して考えないと後々損することになるかもしれないよ。 80ビット精度は上にもあるように64ビット(IEEE定義のdouble)に演算誤差を伝播しないためにインテルが保障を確保するために必要とする精度であって、ジンバブエドルとはまったく別の話。 英語のウェキの方が詳しいが、IEEEの浮動小数点数の定義も含めて勉強しなおしたほうがいいんじゃないか?
343 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 13:02:00 ] >>341 longで持ってもいいけど、プリミティブかオブジェクト(インスタンス)かの違い。 インスタンスで持つとオブジェクト指向の方法論が使えて何かと便利ってこと(他にもあるけど)。
344 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 14:18:45 ] >>343 いや、普通に long じゃ桁あふれするだろ。
345 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 14:29:50 ] この前ジンバブエドルがデノミを行ったのは、コンピュータで扱いきれなくなる恐れがあったかららしい。
346 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:10:35 ] >>342 金融演算知らないシッタカは黙ってな。IEEE浮動小数なんて使わねーよ。 整数四則演算より80ビット浮動小数の方が速いような変態CPUなんてどこにあるんだと。 fp80をかろうじて使える当のIntelすら整数(固定小数)のほうが圧倒的に速い。
347 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:15:02 ] 100兆130ドルか100兆140ドルかが大きな意味を持つ世界もあるわけで。 結局適材適所だよね。
348 名前:デフォルトの名無しさん [2009/02/21(土) 15:17:40 ] 知ったかといって大きく出た割にはビッグマウスだなw 金融とか財務とかのアプリで、どこに浮動小数を使う場面があるんだ? 整数と浮動小数(IEEE)で全然違うフォーマットなのに比べてみたり、一体いつの時代で比較してみたり速いとか遅いと基準もなく比べたりしてるんだ? どうせ「IBM」という肩書きの3流記事を読んで頭おかしくなっちゃってるんだろ。知ったかはお前の方だな。カスは黙ってろw
349 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:19:21 ] Wiki=ウ【ェ】キは新しすぎる
350 名前:デフォルトの名無しさん [2009/02/21(土) 15:23:05 ] 新ジャンル「ウェキ」
351 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:23:10 ] >>346 あのね、ベンチマークなんかいくらでも都合よくプログラム書ける訳よ。 インテルがtmpegエンコ―ダに賄賂(支援)してインテルCPUに都合よくプログラムしてるって話は有名だろw 例えば統計の数値使って官僚とか経営者を騙すとかたまに聞くだろ。つまり、IBMとか東大とか肩がきってのはそういうの同じ(その統計もある意味あってるから別に否定はしないけど) 頭弱いおサルちゃんはどの分野にいっても「コロっと」騙されちゃうんだろうけど(笑)
352 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:26:04 ] TMPEGはCUDAにすら対応してるわけだが 賄賂?妄想を既成事実にしないで下さい
353 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:35:51 ] 最新のIntelCPUでFP80がクソ遅いのは常識なわけだが。 物理的に32bit×4ないし64bit×2のSIMDに最適化された演算器しか載ってないし。 なにより今時スタックな時点で論外。 他人のベンチがどうとか以前に自分で計測してみろよ、ゆとり
354 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:42:52 ] >金融とか財務とかのアプリで、どこに浮動小数を使う場面があるんだ? PBRとかわざわざ固定小数で計算してるとは思えないな。
355 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:47:47 ] SIMDでBCDを使うと10のべき乗単位の乗除をバイトシフトで表せるという利点がある。
356 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:52:16 ] BCDクラス内でSIMD用のビットアラインメントって出来るの?
357 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:53:21 ] どんなに精度が高い演算ができようとも、手計算で小数点以下2桁で切り捨てた低精度演算の結果に合わせなけばならない悲劇
358 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:43:02 ] >>353 物理的にはFPUユニットとSSEユニットが載っているわけで、間違って覚えたりしてないでインテルのマニュアルをあとでこっそり読み直したほうがいいんじゃね? 鼻高々に知ったかばかりしてると、もっと大きな恥かくことになるからw
359 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 20:48:14 ] 使わないなら、銀行型四捨五入とかやめてほしかった。
360 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 20:51:37 ] >>359 それ何?
361 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 20:56:53 ] >>359 銀行で使ってるの見たことないんだけど 使ってる銀行ってあるの?
362 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 21:13:02 ] >>360 つ Banker's Rounding
363 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 21:55:45 ] ジンバブエで使ってるCPU使えばよい
364 名前: ◆0uxK91AxII mailto:sage [2009/02/21(土) 22:05:17 ] >>353 >>358 ia32_final_i.pdf 今時のCPUは十分に処理能力が高いから、遅くても問題ない。
365 名前:デフォルトの名無しさん [2009/02/21(土) 23:45:37 ] >>364 いや、シミュレーションの世界では早ければ早いほどよい。
366 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/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 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 00:19:58 ] www.intel.com/products/processor/manuals/ IntelR 64 and IA-32 Architectures Optimization Reference Manual SKU #248966 ゆっくり読んでいってね! SIMD FPユニットとx87用ユニットが別なのってIntelだとPentium IIIが最後だと思うんだが。 あんときはSSEは単精度までのサポートだったから共有化の機運がなかったのかな?
368 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 01:07:42 ] >>366 結局お前か。お前のウンチクなど聞きたいわけではないわ。 名無しで潜伏してないでちゃんと名を名乗れ。ニートwww
369 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 01:14:17 ] >>367 スループット云々よりもメイン・メモリとのレイテンしが改善されないから、もう頭打ちなんじゃないの? 結局fetchに頼るのみなら、80ビットやFPのフォーマットや機構(スタックとか)の問題じゃないし。 SSEは、レイテンシを考えると、ガバッと持ってくるようにするために16バイトとかケチってないで32バイト(double*4)でよかったんじゃないかと思う。
370 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 01:24:09 ] >>368 は?ww 被害妄想いいかげんにして。 ウェキは吹いたwww
371 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 01:25:14 ] >>369 >SSEは、レイテンシを考えると、ガバッと持ってくるようにするために16バイトとかケチってないで32バイト(double*4)でよかったんじゃないかと思う。 それがAVXなんだけど・・・。
372 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 01:38:55 ] >>346 > 整数四則演算より80ビット浮動小数の方が速いような変態CPUなんてどこにあるんだと。 Netburstだと、整数の乗除算よりFPの乗除算の方が速い
373 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/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 mailto:sage [2009/02/22(日) 01:55:30 ] >>367 thx >>369 >メイン・メモリとのレイテンし そこは、cacheが入り込むし、命令の並び換えで適当に隠せる。
375 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:06:22 ] >>373 >現状のSSEの実装ではpermute演算はそこまで強力じゃないので128bitが妥協点だったのでは? だからさ、その時代その時代に合わせたお前のウンチクなんて興味ないのよ。 3年後には全く逆のこといったりするだろ。 主張がコロコロ変わるからいつまでたってもお前は誰からも認められないんじゃないの?ニート君w
376 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:11:16 ] >>373 なんつーか、お前の浮動小数点の理念とか信念なんか聞きたいわけじゃないわけ。 fp80の精度が必要な人もいれば、高速な方がいいって人もいるわけで、インテルの洗脳されちゃってるお前の信念を押し付けないでくれないか? それも信念がコロコロ変わるんだろ。お前だって嫌だろ。草かみたい選挙が近くなるたびに草か信者が家に押しよせてきたら・・・
377 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:14:20 ] prefetchはINTELとAMDで細かいところに互換性がないから、(未知のバグになるから)できればユーザーが明示的にコード書いて使うようなものではない、ってことだったんじゃないの?
378 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 02:15:58 ] > 3年後には全く逆のこといったりするだろ。 言わねーよ池沼 10年前のPentium IIIではSIMD演算ユニットは単精度2並列分のスループットしか得られなかったが それでも10年前なりの技術水準でできるだけのことはやってた。 それを文句言う奴はいねーよ。
379 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 02:18:03 ] x64でのx87のレガシー化で主に動いたのはMSとAMDなんだが。 IntelはAMD64のコピー実装だし。 Intel信仰がどうとか言ってることがちゃんちゃらおかしい。 ウェキ(笑)
380 名前:デフォルトの名無しさん [2009/02/22(日) 02:21:28 ] >>372 よく分からないんだけど、bitwiseの観点からみれば整数四則もFP四則も同等でしょ。 両者に差が出るようところはどこにあるの? 整数もFPも、10進に直したり結果を出力して視覚化するところに差があるというなら、本質的には君>>346 が言うところの四則の計算とは関係ないわけで・・・
381 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 02:22:34 ] >>377 キャッシュのローカリティヒントなんて同じIntelでも、Pentium 4とCore MAでも動作が違う。 たとえばPen4ではprefetcht0を使ってもL1にはデータは置かれないがCore MAでは置かれる だがキャッシュのヒット率なんて演算結果に直接影響しないだろ? キャッシュローカリティで演算結果が変わるようなプログラム書いちゃう人はそれはそれで問題だが?
382 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 02:30:31 ] 昔のIntel独自実装の8087をマンセーしつつIntel信仰はキモイとかどんだけ〜 単精度と倍精度はIEEE754の規格にも入っててPowerPCやARMでも使えるんですが。 FP80(笑)
383 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:31:02 ] >>378 ,379 当時の水準でFPUとSSEは分離してたのが最良といいつつ、何でさっきの主張では「FPUはイラン!」とか文句言っちゃうんだ。 どうも当時の技術水準とその互換性「FP80」に文句あるみたいだけど、そんなに演算誤差を気にしなくてもいいプログラムをしてるのか? お前みたいな奴が「古い技術はイラン!」とか言って互換性を破壊していく元凶なんだよな・・・・そういうの世の中に出てみると分かるけど、即効で嫌われるから。 日本男児の固定観念もいいけど、英語の発音では一応「ウェキ」といってるようだが・・・なんかお気に入りのようだなw
384 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:32:17 ] なんで団子の周りには馬鹿が集まるんだ?
385 名前:デフォルトの名無しさん [2009/02/22(日) 02:36:00 ] >>379 インテル信仰とは、インテルのx86命令コード体系のことだと思うんだが・・・? 実際今の64ビット向けとかはAMD64の定義をコピーしてインテルが使ってるんだし。 もしかして団子は、会社としてのインテル(INTEL入ってる!)にあこがれてるのか? よく読んでみると所々に穴があるよね。団子はw
386 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 02:38:42 ] おまえ馬鹿だねぇ Pentium IIIのSSEはたかだか単精度のSIMDでしかない。 SSE2以降は倍精度も扱えるようになったんで共用化したほうがよくなったんだろ。 倍精度対応の演算ユニットは半導体のコストが大きいからね。 PowerPCのAltiVec(VMX)でも倍精度対応のスカラFPUと、単精度までのVFPUが共存してるが POWER7のVSXでようやくレジスタセットごと統合の運びになりましたが。
387 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 02:39:55 ] >>384 俺に噛みつく奴は馬鹿ってより 馬鹿だからこそ噛みつくんですよ。
388 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:44:25 ] というか業界人でもない普通の人(本業でPG含む)は、新作CPUの各ベンチ取るために毎度毎度CPUを買ったりしないから。 だからPen4では・・とかCoreでは・・とか言われても知らんわ。現状では、一般的に議論ができるのはSSE1/SSE2しかないな。 実際PC使いこなしてアプリ作ってるわけでもないくせに、お前の主張など、「ソニーのパソコンは・・・東芝のパソコンは・・・」とか言ってるカスタマーの戯言にしか聞こえんわw
389 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 02:45:39 ] 過渡期の実装は一見無駄に見える。近視眼の馬鹿には。
390 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 02:46:53 ] >>388 それで、x87とSSEが分かれてないPentium IIIのパソコンをいまだに使ってるんですね。 零細企業乙
391 名前:デフォルトの名無しさん [2009/02/22(日) 02:51:29 ] というか、団子はブログとかウェキでもやりながら、細々と「執筆募集!」をすればいいだろ。 隅々までマニュアル読んでるようだし、どこかの雑誌とかベンチャーが「ベンチとってくれない?」とかの依頼ぐらいはあるだろから。 少なくともお前の能書きを2chスレに書かなくていいからw
392 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 02:52:44 ] ウェキ(笑)
393 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 02:56:04 ] え!団子さんってブログもってなかったの?! ダサw
394 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 02:56:52 ] [wi]の発音は日本古来の「ヰ(ウィ)」に相当するものであってヱ(ウェ)じゃないんだよね
395 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 02:59:28 ] もしかして: ウィキ ウェキ(笑)
396 名前:,,・´∀`・,,)っ-基地外- mailto:sage [2009/02/22(日) 03:00:33 ] 真夜中ですが基地外警報
397 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 03:07:58 ] ホロン部の人なのかな? ja.wikipedia.org/wiki/ 左上のロゴよく読んでね。 これが「ェ」に見えちゃう人は目か頭がおかしいです
398 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:08:36 ] そんなに発狂するなよ。その情熱をブログにぶつけろwたまに読んでやるからw 一応言っておくと発音のときはスラッシュを使う。 で、wikiの/i/は/e/ではないので口が横に大げさに伸びるわけで、日本人の耳では「い」や「いぇ」ではなく「え」に聞こえるはず。 また、まえの/w/と重なって「い」のようにはっきり聞こえる事はない。 短母音にこだわっちゃう辺りも、団子は生粋の日本男児なのかねぇ。どこ出身?
399 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 03:10:07 ] ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2 ?????????
400 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 03:17:04 ] ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%82%AD 項目無いから作ってよwww
401 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:23:22 ] >>398 大阪民国 団子はPGじゃないだろ?
402 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:31:43 ] >>399 こういうどうでもいいところに情熱を注ぐ意味が分からん。 ところで団子のINTELウンチクはもういいから、このスレでは小数の話題にしてくれないか?
403 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 03:32:55 ] wiki wiki(ウィキウィキ)は速いと言う意味のハワイ現地語であって英語じゃないからね。 ※いわゆるコラボレーションツールのWikiの由来も元々は地元の観光バスが由来です。 ハワイ原住民はムー大陸の末裔なんて言われるくらいガチのウラル・アルタイ語族。 a e i o uの発音はハッキリしてて、イとエを聞き間違えることなんて有りえませんよ。 ハワイ行ったこと有りますか?無いでしょうね。 ↓Google先生もお困りです。 www.google.co.jp/search?q=%E3%82%A6%E3%82%A7%E3%82%AD%E3%82%A6%E3%82%A7%E3%82%AD%E3%83%90%E3%82%B9 ウェキウェキバス に一致する情報は見つかりませんでした。
404 名前:デフォルトの名無しさん [2009/02/22(日) 03:34:27 ] >>401 層化かと思ったけど、ああ在日なのね。 別に層化も在日は嫌いじゃないんだけど、それならファビョーリやすいのも納得だわw
405 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 03:40:10 ] 吠えてますなwww 悪いがミンジョクではない。俺はシオレスト(笑)だぞ。
406 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 03:43:39 ] ウェキ君はみっともないな
407 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:49:10 ] 雑談はよそでやれや
408 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:54:47 ] >>403 そういうウンチもいらないからw ウンチするなら他でやってくんない?
409 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 03:59:35 ] ウェキ(笑)がどれだけ恥ずかしいかは知っておかないとね
410 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 04:09:06 ] 「ムー大陸の末裔」の方が数倍恥ずかしいと思うが…
411 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 04:10:15 ] そりゃ金融システムでFP80だとか非常識きわまりないことも言えるわけだ。 JavaやC#でPL/IやCOBOL同様に10進演算をサポートしてる理由を考えてみてくれ。 ちなみに754rのドラフトにも10進演算の項目入ってるよ。確認しる。 754r.ucbtest.org/ FP80(笑) ウェキ(笑)
412 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 04:14:55 ] >>410 ムー大陸は太平洋の島々の言語の構造や発音の共通性から言語学者が唱えた仮説だよ。 少なくとも母音の発音は同じアルタイ語族の日本と同じだってこと。
413 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 05:15:00 ] 陸地がないと人間は大規模な移動ができないと思い込んでいる大陸系らしい考え方
414 名前:デフォルトの名無しさん [2009/02/22(日) 05:18:46 ] 「実は日本人はムー大陸の末裔だった!」という衝撃の真実を聞いて駆けつけてきました
415 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 05:23:48 ] ムー大陸は民族とかの人間に関するカテゴリーに属してないからそれは間違っていないか?
416 名前: ◆0uxK91AxII mailto:sage [2009/02/22(日) 08:36:25 ] >>377 3DNow!のではなく、SSEのprefetchを使えば良い。 >>386 >SSE2以降は倍精度も扱えるようになったんで共用化したほうがよくなったんだろ。 共用を前提として、SSE2を作ったという考えをしてみる。
417 名前: ◆0uxK91AxII mailto:sage [2009/02/22(日) 08:38:34 ] 『共用化』っていうのは、『復号化』のように、頭が悪く見えるね:b
418 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 10:37:02 ] Pentium(R)III プロセッサの実装条件 download.intel.com/jp/developer/jpdoc/impliment_j.pdf P.9-10 > x87 加算器とパックドFP 加算器の統合も検討されましたが、こ > ちらは開発スケジュールの関係で実現には至りませんでした
419 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/02/22(日) 13:26:34 ] >>413 海洋民族の航海技術を無視した白人優位思想が根底にあるね。 白人ブルーブラッドが黄色人種を支配してたなんて電波な説だし。 自分たちの古代文明が見つかってないのでどこかにあったと思い込みたい白人に熱狂的に支持された。 ※もちろんブルーブラッドなんて比喩であって、実際に人の血を青くしてみた創作は○ーゼ○ォンくらいのものです。
420 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 13:32:17 ] アメリカとオーストラリアに大量移民した奴らがよく言うよ
421 名前:デフォルトの名無しさん [2009/02/22(日) 13:38:47 ] >>419 秋葉原のショップでは、こなた(らき☆すた)のフィギアは売ってますか?
422 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 00:11:19 ] 古い話を掘り返してみると、>359の書く「銀行型」って、ISO丸めのことなのね。 >362にあるように元は英語だろうけど、それを直訳した馬鹿がいるから >361のような「銀行で使う」と思い込む間抜けが出てくるんじゃないか。 寧ろ鉱工業などで測定結果の集計するのによく使うのに。
423 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 21:25:48 ] パイルバンカーの方?
424 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:34:38 ] 銀行は銀行だけど、「銀行家の」と言う意味だね。 まぁ、銀行でも使うケースと使わないケースがあるのだろうし、 「銀行型」って言い方をするよりも「ISO丸め」って言い方でいいんでない? まぁ、>422は言い過ぎだね。
425 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:49:06 ] 8087作ったときは、ISOじゃなかったのでは。
426 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:04:27 ] んじゃ、8087について語りたいときはansi丸めでw
427 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2009/08/16(日) 13:27:05 ] >>423 エウレカ厨乙
428 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 13:20:35 ] 団子ってmixiにアカウントは持ってたよな。 嫌いなサイトが2chだとか書いてたろ。
429 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2009/09/20(日) 19:09:53 ] それどころかVIPのコテとばっかしつるんでたが
430 名前:デフォルトの名無しさん [2010/01/30(土) 07:55:53 ] 貧乳について教えてください
431 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:58:05 ] 「インテル 64 アーキテクチャーおよびIA-32 アーキテクチャー最適化リファレンス・マニュアル」を読んでいて驚いたのだけど、 最近のCPUは除算のレイテンシとスループットが異様に小さいんだね。 FDIVでレイテンシとスループットが6と5って乗算とそんなに差がなくなっているね。 あとx87の表にNehalemがないのはNehalemってx87を積んでないの?
432 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 10:07:17 ] トランジスタの物量攻勢で、年々巨大なテーブルを引いて割り算するようになってんじゃないかな? バグ付きPentiumで有名になったアレ。まだまだ早くなるのかも。解説お願い。 float同士の割り算の全パターンを事前にテーブル化して焼いとくのもそう遠くない未来のような。 (仮数部だけでいいとして46bitのインデックスを引っ張るテーブルがあればいいのか?
433 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 10:39:40 ] 少なくとも一回計算した組み合わせくらいはキャッシュで持ってても良いよね
434 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 04:44:33 ] SSEを使うっているのは一般に、SSE命令を使っていればいいのか? 最近のコンパイラが吐くコードってスカラーでもaddssとかsubssを使っていることが多いので、 それだと何もしなくても”SSE”を使ったコードになってしまう気がする。 それともSIMDを使わないのはSSEを使っているとは言えないとなるのだろうか?
435 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 07:46:55 ] 単に8087由来FPUの80bitレジスタが嫌なだけじゃね? とエスパー回答してみる。
436 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 07:02:17 ] x86-64向けでなく組み込み関数でもなく、オプションも付けずにSSE命令を使うのはICCだけだろ
437 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 07:08:33 ] gccでも使うよ。適切にビルドされていれば
438 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 05:22:14 ] gccでも使うんだよ。でもさすがにパックドのコードを吐くことはないけど。
439 名前:デフォルトの名無しさん [2010/03/20(土) 17:58:41 ] インテルコンパイラを使っているのですが、WindowsとLinuxで結果が変わってきてしまいます。 精度を同じにするには、どのオプションを使えばよいのでしょうか?
440 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2010/03/20(土) 18:07:52 ] >>432 Pentiumの除算ユニットはRadix-4 SRTっていうアルゴリズムを使っている。 journal.mycom.co.jp/column/architecture/090/index.html 45nm以降のCoreアーキテクチャはそれより強力なRadix-16 SRTで 4ビットずつ処理出来るから従来の倍程度は速い。
441 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:08:47 ] >>439
442 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:09:31 ] >>439 http://homepage1.nifty.com/herumi/prog/prog90.html#PRECISION
443 名前:デフォルトの名無しさん mailto:sage [2010/06/25(金) 01:13:02 ] 新しいOpteron(Magny-Cours)で単精度のSSEのコードを走らせたんだけど、異様に遅い。 スカラーのコードの方が遙かに速いんだけど、そんなことってあるのかな? インテルのCPUなら概ね2倍になるコードなんだけど、2倍どころか1/3にもなりそうな感じだった。 ただ、倍精度になるとスカラーよりも速くなる。 ICCでやったりgccでいろんなオプション試したけど、あんまりかわらないので何が原因かわからずにいる。 これだけで原因がわかるエスパーな人がいると助かるんだが。
444 名前:デフォルトの名無しさん mailto:sage [2010/06/25(金) 13:59:28 ] ttp://pc.watch.impress.co.jp/docs/news/20100329_357660.html >4つ目は省電力機能の拡張だ。Opteron 6100にはIstanbul世代で実装されていなかったC1E(CPUがスリープモードにあるときの電 >力を減らす機能)が実装されたほか、「AMD Cool Speed Technology」と呼ばれる省電力機能が実装されており、温度センサーで温 >度が限界を迎えたと判断したとき、プロセッサのPステートをより低い段階へと強制的に移行させる機能だ。これらの機能により、プロセ >ッサの電力効率を前世代に比べて高めている。 CPU温度が高くてクロックダウンしてるとか? 分からんけどw
445 名前:デフォルトの名無しさん mailto:sage [2010/06/25(金) 20:14:14 ] >>443 ベクトル化が下手かOpteronの単精度がうんこかOpteronが不得意な命令を使っているか、 だと思う。 ICCはインテルCPU用の最適化しかしないという噂だけど、 gccはそんなことないはずだし。 プログラムの一部でもさらす気があるなら もうちょっと答えられるかも。 C++とIntrinsicライブラリ? C++とインラインアセンブラ? C++とアセンブラ? 32bit? 64bit?
446 名前:デフォルトの名無しさん mailto:sage [2010/06/25(金) 20:57:24 ] >>443 スカラーのコード x87 or SSEのスカラー命令を使うコード? SSEのコード コンパイラの設定でSSEを使うようにしたスカラーコード or 並列化したコード?
447 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 01:45:18 ] >>444 これさ、一度CPUクーラーのファンを止めて、高負荷で動かしてみたことがあるんだけど、 マザーから警告のアラームがなって、ヒートシンクをさわったらさわれなくなる位めちゃくちゃ熱くなっていたけど、 実行しているプログラムが落ちることなく、動き続けていたから、相当熱くなるような環境でないと、 クロックが落ちることは無いと思う。よく負荷テストとかでPrime95とかいうFFTを馬鹿みたいに立ち上げる様な ことをしない限りは無いんじゃないかな。
448 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 01:54:08 ] >>445 レスサンクス。 使っているのはC++とIntrinsic。最初はインラインアセンブリで書いていたんだけど、 WindowsのVCCも考えて、Intrinsicに変更した。 コードをさらしたいのだけど、さすがにそれは出来ないので、 ちょっとシンプルなコードを書いて比較してみるよ。 何かわかったら書き込んでみる。 なんとなく思っているのは単精度だとシャッフルやらシフトを多用しているんだけど、 倍精度ではデータ幅の関係でそんなにやらなくていいので、Opteronはシャッフルとかシフトに弱いのかなあ? とか思っている。 >>446 64bitで使っているんで、もはやコンパイラがx87のコードを吐いてくれません。 ちょっと表現が悪かったけど、SSEと言っているのはベクトル化したSIMDコードという意味。
449 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 04:22:39 ] >>448 シャッフルのレイテンシ AMD Family 10h: 3 cycle Intel Penryn以降: 1 cycle
450 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 10:40:33 ] 「OpteronとIntel(Core2?)とで挙動が違う」のが問題であるなら、 キャッシュ構成を疑ってみるのはいかが。 Opteronの一次キャッシュって今も2-wayなの?
451 名前:443 mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 03:11:14 ] 配列A,B,Cのサイズを 32kBの倍数+64*n(n=1,2,...,511) に変える
453 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 22:57:53 ] キャッシュスラッシングが原因だとすると スカラーコードではA,B,Cは独立した ループで処理してるのかな?
455 名前:443 mailto:sage [2010/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 mailto:sage [2010/06/30(水) 18:03:29 ] とりあえず、境界を合わせて128[bit]ずつnon temporalな書込みをする。
457 名前:デフォルトの名無しさん mailto:sage [2010/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 mailto:sage [2010/07/01(木) 01:21:40 ] >>456 >>457 いろいろと調べてみたら、キャッシュの問題ではなくて、 NUMAノードの設定が問題だったようだ。 メモリの確保をmalloc()ではなく、numa_alloc_onnode()でダイレクトにNUMAノードを指定してあげたら、 ほぼスカラーの倍の速度が得られたよ。 numactlをつかって、--preferred=nodes --localallocとかいろいろといろいろとオプションを つけてやってみたけど、うまく指定したノードでのメモリ割り当てが出来ていなかったみたい。 いずれにしてもSSEの問題ではなかったので、変な質問をして申し訳ない。 レスしてくれた人ありがとう。 ただ、プリフェッチの指定をしていた部分でNehalemではかなり効果があったのが、 Opteronでは全く効果が無いので、プリフェッチの距離とかはOpteron用に考えないといけない様だ。
459 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 08:56:52 ] OpteronのNUMAは諸刃の剣だな。ハマればメモリの許す限りスケールするしな。 ていうかSMP Opteron由来の問題とは俺も気付かなかった。
460 名前:デフォルトの名無しさん [2010/07/23(金) 11:32:54 ] (000、000)10 ー10、835 とかいう問題
461 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 16:59:37 ] >>458 First touch 問題だね