09/07/20 12:36:39
C++用 無限精度実数ライブラリRealLibについて語るスレです。
本家
The RealLib Project
URLリンク(www.brics.dk)
[XR] RealLib ソースコード勉強会 (1:終)
URLリンク(d.hatena.ne.jp)
[XR] RealLib ではじめる誤差ゼロ実数計算
URLリンク(d.hatena.ne.jp)
2:デフォルトの名無しさん
09/07/20 16:27:24
イラネ
3:デフォルトの名無しさん
09/07/20 20:40:26
>>2
ま、そう言うな。
4:デフォルトの名無しさん
09/07/21 01:06:13
どのくらい無限なの?
任意の無理数 a と、a と無限小しか違わない数 a' の間にある数を表現できるくらい?
5:1
09/07/21 05:15:20
>>4
> a と無限小しか違わない数 a'
無限小infinitesimalという言葉は数学においては厳密に定義されている物で、
勘や憶測の入る物ではありません。
以下、キースラー公理系を前提にする普通の超実数系で話をしましょう。
まず君の言うことは
st(a') = a
ということですね。
>任意の無理数 a と、a と無限小しか違わない数 a' の間にある数
その様な超実数xは
st(x) = a
ですが、
RealLibはC++用無限精度の「実数」ライブラリですので、
x∈Rでないと当然表せません。
6:デフォルトの名無しさん
09/07/21 05:16:41
まあ1/2^(2^31)より小さい値は実装上表せないようですが。
7:デフォルトの名無しさん
09/07/21 23:24:07
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
8:デフォルトの名無しさん
09/07/22 06:43:37
こんなの使わなくたってVW使えばふんがっふんぐっ
9:デフォルトの名無しさん
09/07/22 20:50:13
VWって何や?
10:アイ
09/07/22 20:59:23
私、天才でしょ?
11:デフォルトの名無しさん
09/07/22 21:17:51
お前、人間に騙されてるぞ
URLリンク(chimp-sanctuary.org)
12:デフォルトの名無しさん
09/07/22 22:06:21
無限精度ならカオスの計算もできそうだな
13:デフォルトの名無しさん
09/07/22 22:20:24
任意精度でなく無限精度の実数計算が出来る
フリーのライブラリなんてそうそうないよな。
上限が1/2^(2^31)だったとしても。
14:デフォルトの名無しさん
09/07/22 22:29:37
マニュアルを日本語に翻訳してくれれば
読む気になるんですが
・・・ってのは甘えですかね?
15:デフォルトの名無しさん
09/07/23 00:01:36
マニュアルの翻訳は面倒だけど一文ずつ切り出して機械翻訳に掛けて
おかしい所を辞書で直していくしかないな
俺はいつもそうやってる
それが一番早い
16:デフォルトの名無しさん
09/07/23 00:04:47
無限精度っていうからMathmaticaとかみたいな数学寄りの
ライブラリ想像してたけど違うのかな
17:デフォルトの名無しさん
09/07/23 06:29:04
まあ数学や研究寄りなんじゃない?
あとMathmaticaはライブラリじゃなくね?
18:デフォルトの名無しさん
09/07/23 08:18:52
このライブラリは、1/3は内部的に
どう保持されるの?何バイト?
19:デフォルトの名無しさん
09/07/23 12:45:48
どうやら1/3とかは式の形のままで保持しているようだ。
そして必要に応じた精度で値を返しているらしい。
だから例えば1/3*3は内部的には1なわけではなく、必要に応じて自動的に必要な精度を定めて1.00000000000000000000000…と返ってくる。
20:デフォルトの名無しさん
09/07/23 13:52:52
有理数パッケージなんかと違って、べき乗や三角関数や対数とか、
どうがんばっても計算しきれない関数があるから、そういう方法
(内部で元の形を保持)しかないような気がする。
気がする、とか書くとソース嫁とか言われそうだが。
21:デフォルトの名無しさん
09/07/23 19:02:58
Mathematica みたいなもんだと考えればいいのかな?
22:デフォルトの名無しさん
09/07/24 02:43:34
それって出力時に計算精度が確定するからそれまで評価を遅延してるだけ?
用途がよくわからんな
23:デフォルトの名無しさん
09/07/24 02:54:41
いやどんな計算式でも丸めや桁落ちの誤差がでないで
必ず有効桁いっぱいまで精度保証されるって意味なのか…
やっぱりいらね。
24:デフォルトの名無しさん
09/07/24 04:07:04
演算子オーバーロードのお勉強用かと
25:デフォルトの名無しさん
09/07/24 07:38:01
バカがバカな考えの中で自己完結して意味ないとか笑えるw
26:デフォルトの名無しさん
09/07/24 13:04:17
>>20
こういう物は無限ストリーム(遅延ストリーム)で作れば
必要桁まで出して中断したり、その後も継続できたりするよ
ググればLISPとかHaskellとかのコードが出てくると思う
27:デフォルトの名無しさん
09/07/24 14:16:58
>>21
だからMathmaticaはライブラリじゃなくね?
28:デフォルトの名無しさん
09/07/24 14:18:03
>>22
その通りだと思うよ。
>>23
そうじゃなくね?
29:デフォルトの名無しさん
09/07/24 14:22:21
このRealLibってやつ以外に無限精度ライブラリってある?
経験者とか、比較してみた人とかっていない??
30:デフォルトの名無しさん
09/07/24 19:45:42
>>27
ライブラリかどうかなんて関係ないでしょ
31:デフォルトの名無しさん
09/07/24 20:17:12
>>30
だってライブラリとライブラリじゃないものを
誤って比較しようとしている人がいたら
全然別物だよ?
って注意してあげるべきでは?
32:デフォルトの名無しさん
09/07/24 20:26:15
お前の類似性判断基準はライブラリかそうでないかしかないのかw
33:デフォルトの名無しさん
09/07/24 20:31:08
>>32
別にそれだけとは言わねぇけどさ。
34:デフォルトの名無しさん
09/07/24 23:49:10
けどなんなんだよ
35:デフォルトの名無しさん
09/07/25 00:11:15
まあそう煽るな。
ライブラリでないものはライブラリでないと見抜ける人でないと(C++を使うのは)難しい
ってことを伝えたかっただけだ。
36:デフォルトの名無しさん
09/07/25 00:14:57
シンプレックス法とかの吐き出し法アルゴは
誤差に弱いし、超越関数使ってないし、効果すぐ出そうだよね。
ちょっと試してみようかな。
、、と思ったけど、入力パラメータが実数な時点で
既に誤差ってるんだった。
FPUとSIMD-FPの代わりに、こいつをHWインプリメントとか
出来んもんかね。
37:デフォルトの名無しさん
09/07/25 04:37:56
Real(0.1) → 誤差あり
Real("0.1") → 誤差なし
か。なるほど。
38:デフォルトの名無しさん
09/07/25 09:52:09
「アルゴ」と略すと頭悪そうに見える件
39:デフォルトの名無しさん
09/07/25 10:09:15
>>37
Real(0.1) → 誤差あり
Real("0.1") → 誤差なし
Real(1.5) → 誤差なし
Real("1.5") → 誤差なし
ふーん。なるほど。
40:デフォルトの名無しさん
09/07/25 10:17:40
rとr'が完全に等しい時、
比較演算子==で比較すると無限ループするという仕様は
ちょっと悲しい。
妥協する方法はないのだろうか?
41:デフォルトの名無しさん
09/07/25 10:20:55
アルゴ君ネタはもういいよ
42:デフォルトの名無しさん
09/07/25 10:21:44
>>40
解析的に等しいかどうかのチェックはやっぱ難しいのかね
43:デフォルトの名無しさん
09/07/25 11:32:38
しかし時間は有限なので
結局処理に充てられる時間の都合上有限精度
無限精度であることは唯の一度も無い!
44:デフォルトの名無しさん
09/07/25 11:36:43
>>19 expression templateみたいなものか。
45:デフォルトの名無しさん
09/07/25 12:05:15
>>43
そんな誰もが解り切っていることを言わなくても。
そもそも>>6によれば実装上の限界が定まっているらしいじゃないか。
46:デフォルトの名無しさん
09/07/25 12:22:30
1/2^2147483648 まで表現できれば十分・・・とは言えない場合ってどんなんだろう
47:デフォルトの名無しさん
09/07/25 12:50:14
sqrt(2)とかを求めたらメモリーを使い切ってcoredumpってこと?
48:デフォルトの名無しさん
09/07/25 12:52:33
sqrt(2) を sqrt(2) のまま扱う
有効桁数を指定して表示させることもできる
という Mathematica と同じようなことをしてると思われ
49:デフォルトの名無しさん
09/07/25 12:58:01
じゃあ対数を多用する計算でも誤差伝搬を無くせるの?
50:デフォルトの名無しさん
09/07/25 13:18:34
複素数は無理なのか
51:デフォルトの名無しさん
09/07/25 13:19:27
>>47
お前はこのスレで何を読んできたんだ?w
52:デフォルトの名無しさん
09/07/25 13:22:28
しかし sqrt(2) == sqrt(2) は無限ループ!
53:デフォルトの名無しさん
09/07/25 15:00:40
数桁比較して等しければ
解析的に等しいかどうかチェックした方がいいんだろうけど、
Mathematica でもこのあたり完璧にできるの?
等価な式を引き算して simplify したら 0 になるとか
54:デフォルトの名無しさん
09/07/26 00:26:40
Mathematicaと区別つかないやつ大杉
55:デフォルトの名無しさん
09/07/26 00:40:15
じゃあどこが違うんだよ
ライブラリかどうかとか言ったら嗤うぞw
56:デフォルトの名無しさん
09/07/26 10:04:35
>>55
1. ライブラリかどうかも「当然」違うけど
2. 文字処理なども違うだろ?
3. 制作者も違えば
4. ライセンスも違う。
5. 普及率も違う。
むしろどこが同じなの?
57:デフォルトの名無しさん
09/07/26 10:17:28
つまらん
58:デフォルトの名無しさん
09/07/26 10:55:35
>>57
良いから答えろw
59:デフォルトの名無しさん
09/07/27 17:35:54
「アキレスと亀」をデモしてくれるんなら、使ってみる。
60:デフォルトの名無しさん
09/07/27 19:19:29
アキレスと亀って、要はフラクタルでしょ
マンデルブローの拡大デモにアキレスと亀のスプライトを入れれば完成
61:デフォルトの名無しさん
09/07/27 19:32:07
パラドックスライブラリでも作るか
62:デフォルトの名無しさん
09/07/27 21:48:30
無限精度なんてあるんだ。
面白いな。
いつ使うのか知らないけど。
63:デフォルトの名無しさん
09/07/27 22:32:50
もちろんベンチマークする時に決まってるじゃん
64:デフォルトの名無しさん
09/07/28 07:06:35
アキレスの亀の本質は
負ける前に時間を停めればその時刻までは負けてない
65:デフォルトの名無しさん
09/07/28 10:35:06
そんなくだらない本質を語らなくても。
RealLibについて語るしかなかろう。
66:デフォルトの名無しさん
09/07/28 10:54:25
おれの用途にはこれくらいの精度で十二分だなあ。
速度はどの程度でるんだろうか。
ちなみに「無限」とか言わずに、精度10^x倍ライブラリ、とした方が
関心持つやつが増えると思うよ>開発者
67:デフォルトの名無しさん
09/07/28 11:24:20
.dk で開発されてるライブラリについてここでアドバイスしても
届くわけねーだろ
68:デフォルトの名無しさん
09/07/28 11:29:29
.dkって
デンマーク?
69:デフォルトの名無しさん
09/07/28 11:46:26
ドナルド・クヌース
70:デフォルトの名無しさん
09/07/29 13:30:58
諸君、話題は無いのかね?
71:デフォルトの名無しさん
09/07/31 18:56:38
無いっすねぇ(>_<)
72:デフォルトの名無しさん
09/08/02 23:54:59
誰かタメになる話題をplz
73:名無しさん
09/08/04 04:45:52
「精度保証付き数値計算」でググれ
74:デフォルトの名無しさん
09/08/09 11:08:28
ググってみた。
面白そうだが、
精度保証付き数値計算 C++ライブラリ
でググってもライブラリが見つからん。
75:デフォルトの名無しさん
09/08/09 12:11:36
boostの有理数ライブラリと比べてどうかな?
あっちは除算によるまるめ誤差は出ないんだっけか?
76:74
09/08/09 12:15:56
>>75
有理数ライブラリは有理数演算用で、
小数計算には役立たない。
例えばπとかには完全に無力。
77:デフォルトの名無しさん
09/08/11 16:00:41
保守
78:名無しさん
09/08/12 18:49:46
>>74
特定のライブラリではない汎用の方法がある。
条件は:
(1)IEEE-754をサポートしている
(2)対象とする計算が線形である
アセンブラかC/C++のインラインアセンブリで、丸め方法を捜査する。
(答え) = {(全部切り上げで計算した結果)+(全部切り下げで計算した結果)} / 2
(精度) = ABS{(全部切り上げで計算した結果)ー(全部切り下げで計算した結果)}
79:デフォルトの名無しさん
09/08/12 19:02:39
>>78
ありがとう。
でも線形であるって相当厳しい要求じゃないか?
sinどころか累乗が出てきただけで死ぬっしょ?
80:デフォルトの名無しさん
09/08/12 19:18:28
適当に線形化したら…
やっぱだめか
81:名無しさん
09/08/12 21:29:30
CORDICとかはあかんね
でも、累乗は何とかなるかも
Matlabは使ったことないが、Octave風に書くと
X = [1, 2, 3, ..., N]'
X2 = X .* X;
X3 = X2 .* X;
(ダッシュ’は転置。 .* 内席ではなく要素同士の掛け算)
とすると
X3 == [1^3, 2^3, 3^3, 4^3, 5^3, 6^3, ... , N^2]'
82:デフォルトの名無しさん
09/08/15 13:16:19
あげあげ
83:デフォルトの名無しさん
09/08/21 00:31:20
保守
84:名無しさん@そうだ選挙に行こう
09/08/30 07:50:30
保守