無限精度実数ライブラリRealLib

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
C++用 無限精度実数ライブラリRealLibについて語るスレです。

本家
 The RealLib Project
 ttp://www.brics.dk/~barnie/RealLib/

 [XR] RealLib ソースコード勉強会 (1:終)
 ttp://d.hatena.ne.jp/hzkr/20080915
 [XR] RealLib ではじめる誤差ゼロ実数計算
 ttp://d.hatena.ne.jp/hzkr/20080909
2デフォルトの名無しさん:2009/07/20(月) 16:27:24
イラネ
3デフォルトの名無しさん:2009/07/20(月) 20:40:26
>>2
ま、そう言うな。
4デフォルトの名無しさん:2009/07/21(火) 01:06:13
どのくらい無限なの?
任意の無理数 a と、a と無限小しか違わない数 a' の間にある数を表現できるくらい?
51:2009/07/21(火) 05:15:20
>>4
> a と無限小しか違わない数 a'
無限小infinitesimalという言葉は数学においては厳密に定義されている物で、
勘や憶測の入る物ではありません。
以下、キースラー公理系を前提にする普通の超実数系で話をしましょう。

まず君の言うことは
st(a') = a
ということですね。
>任意の無理数 a と、a と無限小しか違わない数 a' の間にある数
その様な超実数xは
st(x) = a
ですが、
RealLibはC++用無限精度の「実数」ライブラリですので、
x∈Rでないと当然表せません。



6デフォルトの名無しさん:2009/07/21(火) 05:16:41
まあ1/2^(2^31)より小さい値は実装上表せないようですが。
7デフォルトの名無しさん:2009/07/21(火) 23:24:07
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
8デフォルトの名無しさん:2009/07/22(水) 06:43:37
こんなの使わなくたってVW使えばふんがっふんぐっ
9デフォルトの名無しさん:2009/07/22(水) 20:50:13
VWって何や?
10アイ:2009/07/22(水) 20:59:23
私、天才でしょ?
11デフォルトの名無しさん:2009/07/22(水) 21:17:51
お前、人間に騙されてるぞ
http://chimp-sanctuary.org/oursanctuary/hitori.htm
12デフォルトの名無しさん:2009/07/22(水) 22:06:21
無限精度ならカオスの計算もできそうだな
13デフォルトの名無しさん:2009/07/22(水) 22:20:24
任意精度でなく無限精度の実数計算が出来る
フリーのライブラリなんてそうそうないよな。

上限が1/2^(2^31)だったとしても。
14デフォルトの名無しさん:2009/07/22(水) 22:29:37
マニュアルを日本語に翻訳してくれれば
読む気になるんですが
・・・ってのは甘えですかね?
15デフォルトの名無しさん:2009/07/23(木) 00:01:36
マニュアルの翻訳は面倒だけど一文ずつ切り出して機械翻訳に掛けて
おかしい所を辞書で直していくしかないな

俺はいつもそうやってる
それが一番早い
16デフォルトの名無しさん:2009/07/23(木) 00:04:47
無限精度っていうからMathmaticaとかみたいな数学寄りの
ライブラリ想像してたけど違うのかな
17デフォルトの名無しさん:2009/07/23(木) 06:29:04
まあ数学や研究寄りなんじゃない?
あとMathmaticaはライブラリじゃなくね?
18デフォルトの名無しさん:2009/07/23(木) 08:18:52
このライブラリは、1/3は内部的に
どう保持されるの?何バイト?
19デフォルトの名無しさん:2009/07/23(木) 12:45:48
どうやら1/3とかは式の形のままで保持しているようだ。
そして必要に応じた精度で値を返しているらしい。
だから例えば1/3*3は内部的には1なわけではなく、必要に応じて自動的に必要な精度を定めて1.00000000000000000000000…と返ってくる。
20デフォルトの名無しさん:2009/07/23(木) 13:52:52
有理数パッケージなんかと違って、べき乗や三角関数や対数とか、
どうがんばっても計算しきれない関数があるから、そういう方法
(内部で元の形を保持)しかないような気がする。

気がする、とか書くとソース嫁とか言われそうだが。
21デフォルトの名無しさん:2009/07/23(木) 19:02:58
Mathematica みたいなもんだと考えればいいのかな?
22デフォルトの名無しさん:2009/07/24(金) 02:43:34
それって出力時に計算精度が確定するからそれまで評価を遅延してるだけ?
用途がよくわからんな
23デフォルトの名無しさん:2009/07/24(金) 02:54:41
いやどんな計算式でも丸めや桁落ちの誤差がでないで
必ず有効桁いっぱいまで精度保証されるって意味なのか…
やっぱりいらね。
24デフォルトの名無しさん:2009/07/24(金) 04:07:04
演算子オーバーロードのお勉強用かと
25デフォルトの名無しさん:2009/07/24(金) 07:38:01
バカがバカな考えの中で自己完結して意味ないとか笑えるw
26デフォルトの名無しさん:2009/07/24(金) 13:04:17
>>20
こういう物は無限ストリーム(遅延ストリーム)で作れば
必要桁まで出して中断したり、その後も継続できたりするよ
ググればLISPとかHaskellとかのコードが出てくると思う
27デフォルトの名無しさん:2009/07/24(金) 14:16:58
>>21
だからMathmaticaはライブラリじゃなくね?
28デフォルトの名無しさん:2009/07/24(金) 14:18:03
>>22
その通りだと思うよ。
>>23
そうじゃなくね?
29デフォルトの名無しさん:2009/07/24(金) 14:22:21
このRealLibってやつ以外に無限精度ライブラリってある?
経験者とか、比較してみた人とかっていない??
30デフォルトの名無しさん:2009/07/24(金) 19:45:42
>>27
ライブラリかどうかなんて関係ないでしょ
31デフォルトの名無しさん:2009/07/24(金) 20:17:12
>>30
だってライブラリとライブラリじゃないものを
誤って比較しようとしている人がいたら
全然別物だよ?
って注意してあげるべきでは?
32デフォルトの名無しさん:2009/07/24(金) 20:26:15
お前の類似性判断基準はライブラリかそうでないかしかないのかw
33デフォルトの名無しさん:2009/07/24(金) 20:31:08
>>32
別にそれだけとは言わねぇけどさ。
34デフォルトの名無しさん:2009/07/24(金) 23:49:10
けどなんなんだよ
35デフォルトの名無しさん:2009/07/25(土) 00:11:15
まあそう煽るな。

ライブラリでないものはライブラリでないと見抜ける人でないと(C++を使うのは)難しい

ってことを伝えたかっただけだ。
36デフォルトの名無しさん:2009/07/25(土) 00:14:57
シンプレックス法とかの吐き出し法アルゴは
誤差に弱いし、超越関数使ってないし、効果すぐ出そうだよね。
ちょっと試してみようかな。

、、と思ったけど、入力パラメータが実数な時点で
既に誤差ってるんだった。

FPUとSIMD-FPの代わりに、こいつをHWインプリメントとか
出来んもんかね。
37デフォルトの名無しさん:2009/07/25(土) 04:37:56
Real(0.1) → 誤差あり
Real("0.1") → 誤差なし

か。なるほど。
38デフォルトの名無しさん:2009/07/25(土) 09:52:09
「アルゴ」と略すと頭悪そうに見える件
39デフォルトの名無しさん:2009/07/25(土) 10:09:15
>>37
Real(0.1) → 誤差あり
Real("0.1") → 誤差なし
Real(1.5) → 誤差なし
Real("1.5") → 誤差なし
ふーん。なるほど。
40デフォルトの名無しさん:2009/07/25(土) 10:17:40
rとr'が完全に等しい時、
比較演算子==で比較すると無限ループするという仕様は
ちょっと悲しい。
妥協する方法はないのだろうか?
41デフォルトの名無しさん:2009/07/25(土) 10:20:55
アルゴ君ネタはもういいよ
42デフォルトの名無しさん:2009/07/25(土) 10:21:44
>>40
解析的に等しいかどうかのチェックはやっぱ難しいのかね
43デフォルトの名無しさん:2009/07/25(土) 11:32:38
しかし時間は有限なので
結局処理に充てられる時間の都合上有限精度
無限精度であることは唯の一度も無い!
44デフォルトの名無しさん:2009/07/25(土) 11:36:43
>>19 expression templateみたいなものか。
45デフォルトの名無しさん:2009/07/25(土) 12:05:15
>>43
そんな誰もが解り切っていることを言わなくても。
そもそも>>6によれば実装上の限界が定まっているらしいじゃないか。
46デフォルトの名無しさん:2009/07/25(土) 12:22:30
1/2^2147483648 まで表現できれば十分・・・とは言えない場合ってどんなんだろう
47デフォルトの名無しさん:2009/07/25(土) 12:50:14
sqrt(2)とかを求めたらメモリーを使い切ってcoredumpってこと?
48デフォルトの名無しさん:2009/07/25(土) 12:52:33
sqrt(2) を sqrt(2) のまま扱う
有効桁数を指定して表示させることもできる
という Mathematica と同じようなことをしてると思われ
49デフォルトの名無しさん:2009/07/25(土) 12:58:01
じゃあ対数を多用する計算でも誤差伝搬を無くせるの?
50デフォルトの名無しさん:2009/07/25(土) 13:18:34
複素数は無理なのか
51デフォルトの名無しさん:2009/07/25(土) 13:19:27
>>47
お前はこのスレで何を読んできたんだ?w
52デフォルトの名無しさん:2009/07/25(土) 13:22:28
しかし sqrt(2) == sqrt(2) は無限ループ!
53デフォルトの名無しさん:2009/07/25(土) 15:00:40
数桁比較して等しければ
解析的に等しいかどうかチェックした方がいいんだろうけど、
Mathematica でもこのあたり完璧にできるの?
等価な式を引き算して simplify したら 0 になるとか
54デフォルトの名無しさん:2009/07/26(日) 00:26:40
Mathematicaと区別つかないやつ大杉
55デフォルトの名無しさん:2009/07/26(日) 00:40:15
じゃあどこが違うんだよ
ライブラリかどうかとか言ったら嗤うぞw
56デフォルトの名無しさん:2009/07/26(日) 10:04:35
>>55
1. ライブラリかどうかも「当然」違うけど
2. 文字処理なども違うだろ?
3. 制作者も違えば
4. ライセンスも違う。
5. 普及率も違う。

むしろどこが同じなの?
57デフォルトの名無しさん:2009/07/26(日) 10:17:28
つまらん
58デフォルトの名無しさん:2009/07/26(日) 10:55:35
>>57
良いから答えろw
59デフォルトの名無しさん:2009/07/27(月) 17:35:54
「アキレスと亀」をデモしてくれるんなら、使ってみる。
60デフォルトの名無しさん:2009/07/27(月) 19:19:29
アキレスと亀って、要はフラクタルでしょ
マンデルブローの拡大デモにアキレスと亀のスプライトを入れれば完成
61デフォルトの名無しさん:2009/07/27(月) 19:32:07
パラドックスライブラリでも作るか
62デフォルトの名無しさん:2009/07/27(月) 21:48:30
無限精度なんてあるんだ。
面白いな。
いつ使うのか知らないけど。
63デフォルトの名無しさん:2009/07/27(月) 22:32:50
もちろんベンチマークする時に決まってるじゃん
64デフォルトの名無しさん:2009/07/28(火) 07:06:35
アキレスの亀の本質は
負ける前に時間を停めればその時刻までは負けてない
65デフォルトの名無しさん:2009/07/28(火) 10:35:06
そんなくだらない本質を語らなくても。
RealLibについて語るしかなかろう。
66デフォルトの名無しさん:2009/07/28(火) 10:54:25
おれの用途にはこれくらいの精度で十二分だなあ。
速度はどの程度でるんだろうか。

ちなみに「無限」とか言わずに、精度10^x倍ライブラリ、とした方が
関心持つやつが増えると思うよ>開発者
67デフォルトの名無しさん:2009/07/28(火) 11:24:20
.dk で開発されてるライブラリについてここでアドバイスしても
届くわけねーだろ
68デフォルトの名無しさん:2009/07/28(火) 11:29:29
.dkって
デンマーク?
69デフォルトの名無しさん:2009/07/28(火) 11:46:26
ドナルド・クヌース
70デフォルトの名無しさん:2009/07/29(水) 13:30:58
諸君、話題は無いのかね?
71デフォルトの名無しさん:2009/07/31(金) 18:56:38
無いっすねぇ(>_<)
72デフォルトの名無しさん:2009/08/02(日) 23:54:59
誰かタメになる話題をplz
73名無しさん:2009/08/04(火) 04:45:52
「精度保証付き数値計算」でググれ
74デフォルトの名無しさん:2009/08/09(日) 11:08:28
ググってみた。
面白そうだが、

精度保証付き数値計算 C++ライブラリ

でググってもライブラリが見つからん。
75デフォルトの名無しさん:2009/08/09(日) 12:11:36
boostの有理数ライブラリと比べてどうかな?
あっちは除算によるまるめ誤差は出ないんだっけか?
7674:2009/08/09(日) 12:15:56
>>75
有理数ライブラリは有理数演算用で、
小数計算には役立たない。

例えばπとかには完全に無力。
77デフォルトの名無しさん:2009/08/11(火) 16:00:41
保守
78名無しさん:2009/08/12(水) 18:49:46
>>74
特定のライブラリではない汎用の方法がある。

条件は:
(1)IEEE-754をサポートしている
(2)対象とする計算が線形である

アセンブラかC/C++のインラインアセンブリで、丸め方法を捜査する。

(答え) = {(全部切り上げで計算した結果)+(全部切り下げで計算した結果)} / 2
(精度) = ABS{(全部切り上げで計算した結果)ー(全部切り下げで計算した結果)}
79デフォルトの名無しさん:2009/08/12(水) 19:02:39
>>78
ありがとう。
でも線形であるって相当厳しい要求じゃないか?
sinどころか累乗が出てきただけで死ぬっしょ?
80デフォルトの名無しさん:2009/08/12(水) 19:18:28
適当に線形化したら…

やっぱだめか
81名無しさん:2009/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デフォルトの名無しさん:2009/08/15(土) 13:16:19
あげあげ
83デフォルトの名無しさん:2009/08/21(金) 00:31:20
保守
84名無しさん@そうだ選挙に行こう:2009/08/30(日) 07:50:30
保守
85デフォルトの名無しさん:2009/09/13(日) 20:35:53
このスレ落ちそうだな。
86デフォルトの名無しさん:2009/09/17(木) 14:43:39
ひょっとしてエントロピーの計算しまくり
の時キラーケース?
87デフォルトの名無しさん:2009/09/17(木) 14:50:37
ちゃんとガチの多倍長にも対応したら面白いんだろうけどなぁ
むしろそっちだけあればいい俺もいるが
88デフォルトの名無しさん:2009/09/17(木) 20:53:40
>>87
boost::bigintがいるじゃないか。
89デフォルトの名無しさん:2009/09/17(木) 21:33:01
いればいいんだけどなぁ…
90デフォルトの名無しさん:2009/09/19(土) 00:18:04
>>89
ttp://pc12.2ch.net/test/read.cgi/tech/1250396380/
でも紹介されている程度にはboost::bigintは動くらしいぞ。
91デフォルトの名無しさん:2009/10/04(日) 13:52:24
>>53
完璧な(どんな2数に対しても汎用的に行える)等値判定は
アルゴリズムと計算時間が有限である限り不可能であることが証明されている
(チューリング機械の停止判定と同値になる)
92デフォルトの名無しさん:2009/10/04(日) 17:01:54
有理数の式の複合同士として比較すりゃいいんだろうが、手間で死ぬる。
93デフォルトの名無しさん:2009/10/04(日) 21:34:47
>>92
いや、必ずしも有理数とは限らないでしょ。
94デフォルトの名無しさん:2009/10/11(日) 20:13:16
どうしても無限和や無限積の形にしないと表せない数がある(たとえばπ)
そういう数を比較するには一般には無限に小数展開を続けるしかないから
有限の手続きでは等しいことの確認ができない。
特別なケース(有理数同士とか)に限れば等しいことを確認できる場合もあるけど。

ちなみに任意の計算可能実数が有理数かどうかを判定する手続きも一般
には存在しない。仮にそういう手続きが存在すると仮定すると、それを使って
任意の計算可能実数が等しいかどうか判定する手続きを構成できてしまう。
95デフォルトの名無しさん:2009/10/11(日) 20:21:42
πやeとかの超越数は、別個に印つけときゃ良いだろ。

それにこれはもともと無限精度じゃないし。
96デフォルトの名無しさん:2009/10/11(日) 20:39:25
>>95
ルールを追加することで(πと有理数は決して等しくならないとか)
そういう特定の数だけは比較できるようになるけど、
「任意の」二数を比較できるようにするには無限のルールを追加する必要があるので、
結局有限の手続きでは比較できない。

> それにこれはもともと無限精度じゃないし。
どういう意味? 無限精度というのは通常「その気になればどこまでも精度を
上げられる」という意味で定義される。本当に無限の桁数を求めるには無限の
時間と記憶容量が必要だから当たり前だけど。
このライブラリはそういう意味で無限精度。>>6の制限は単に高速化のための
実装上の都合に過ぎない。
97デフォルトの名無しさん:2009/10/11(日) 20:50:23
あと印付けるにはそもそもその数がπやeかどうか判定する必要があるけど、
任意の計算可能実数が有理数かどうかを判定する手続きも(有理数の判定と同様)
存在しない。
98デフォルトの名無しさん:2009/10/11(日) 20:51:17
× 任意の計算可能実数が有理数かどうかを判定する手続きも
○ 任意の計算可能実数がπかどうかを判定する手続きも
99オイラーの定数:2009/10/11(日) 21:27:35
呼んだ?
100デフォルトの名無しさん:2009/11/01(日) 10:25:17
幾つかの演算がπを表すことを覚えさせときゃ、実用上はさほど問題なくないか。
101デフォルトの名無しさん:2009/11/01(日) 20:49:50
>>100
何をおっしゃりたいの?

・・・ってああ、もしかして2*asin(1)とかのこと?

でもasin()の引数に相当する所が
本当に1かどうかを判定する手続きも以下同文
102デフォルトの名無しさん:2009/11/02(月) 02:06:30
あらかじめ答えがわかってる演算は
あらためて計算する必要すらない
103デフォルトの名無しさん:2009/11/02(月) 05:25:03
幾つかの演算が1を表すことを覚えさせときゃ、(ry
104デフォルトの名無しさん:2009/11/02(月) 12:53:50
>>103
そして無限ループへ・・・
さらに幾つかの演算が2を表すことを覚えさせとかなきゃならないこともお忘れ無く。
105デフォルトの名無しさん:2009/11/04(水) 12:43:32
四則演算で畳み込めるだろう。
106デフォルトの名無しさん:2009/11/09(月) 00:14:34
すると今度は四則演算の結果が有理数になるかどうかを覚えさせる必要があるのではないか
107デフォルトの名無しさん:2009/11/10(火) 12:00:22
Maximaとかの数式ソフトとかと同じなんだろ。
あーだのこーだの難癖つけても意味無いよ。
108デフォルトの名無しさん:2009/11/10(火) 12:51:14
>>107
任意の数式ソフトにケチをつける手続きも一般には存在しない。仮にそういう(ry
109デフォルトの名無しさん:2009/11/19(木) 18:20:32
保守
110デフォルトの名無しさん:2010/01/17(日) 20:39:22
 
111デフォルトの名無しさん:2010/02/04(木) 18:50:51
linuxでうまく動かなかった。Windowsだと動いた。
112デフォルトの名無しさん:2010/02/17(水) 22:38:26
linuxでうまく動かなかったのか。
そんなんで良いのか。

でもこれ意外に無償で使える無限精度ライブラリって
ないもんなぁ。
・・・無いよね??
113デフォルトの名無しさん:2010/02/17(水) 23:55:57
無限の精度を必要とする計算なら、たとえこの無限精度ライブラリでも対応出来ず
有限に切り詰めなきゃならないし、そうすると既存の浮動小数点と変わりない。
結局のところ使い道がない。
任意精度ライブラリという観点からも、double精度以上必要なケースがそれほどあるのか疑問。
114デフォルトの名無しさん:2010/02/18(木) 19:49:08
誤差が波及しないというメリットならあるぜ。

でもそれが必要な状況があるかどうかはまた別の話だが。
115デフォルトの名無しさん:2010/04/04(日) 17:43:04
死亡回避sage
116デフォルトの名無しさん:2010/07/21(水) 20:35:06
用途無いよね

5^2010 の最上位の桁の数字は何か?
を解く時くらいしか用途ないよね。
117デフォルトの名無しさん:2010/07/22(木) 16:47:31
>>116
バカかお前は。
このライブラリはその問題を解けない。
上限が実は結構低いんだ。
118デフォルトの名無しさん:2010/07/22(木) 16:49:19
そういう用途はbignumライブラリだね
119デフォルトの名無しさん:2010/07/22(木) 21:45:56
Real変数から小数部を得るにはどうしますか?
120デフォルトの名無しさん:2010/07/22(木) 22:36:06
>>119
そんな実際的なこと聞かないでくだしあ
121デフォルトの名無しさん:2010/07/23(金) 03:58:59
実践的でないライブラリは屑だ!
122デフォルトの名無しさん:2010/07/23(金) 05:20:45
>>116
> 5^2010 の最上位の桁の数字は何か?

8 かな?
123デフォルトの名無しさん:2010/07/23(金) 17:28:07
124デフォルトの名無しさん:2010/07/23(金) 17:54:07
ならば
7^(5^2010)
ではどうだ。今度は計算できまい。
125デフォルトの名無しさん:2010/07/23(金) 18:03:37
7.36171328... * 10^2733 かな?
126123:2010/07/23(金) 20:04:44
計算できねぇww

どうすりゃいいんだ。

って最上位の桁だけ見るって入試問題があったなそういや!
127デフォルトの名無しさん:2010/07/23(金) 20:49:29
>>125
俺の理論によると最上位は2となったのだが
128デフォルトの名無しさん:2010/07/23(金) 20:56:15
A = 10^a = 7^(5^2010)
a = (5^2010) * ln(7)/ln(10) = ----.67182...

よって A = 4.69... × 10^(7.1... × 10^1404)
129デフォルトの名無しさん:2010/07/24(土) 15:46:43
>>128
バカな私にはわかりません!
10^(7.1... × 10^1404)
の部分がかならず10の累乗なの?
つまり(7.1... × 10^1404)が必ず整数なの?
130デフォルトの名無しさん:2010/07/25(日) 06:13:39
そそそ、そうだぞ!
7.1... × 10^1404が自然数である事を証明しないと
4.69... の括りだしなんか意味が無い筈だぞ!だぞ!
131127:2010/07/25(日) 07:23:28
>>128
a = ----.4426...
じゃね?
んで
log 2 < 0.4426 < log 3 (底は10)
だから最上位の数字は2じゃね?
132128:2010/07/25(日) 07:47:59
糞笑えることに有効数字が足りてなかった。
...598.4425764...

>>131が正しい
133デフォルトの名無しさん:2010/07/25(日) 23:51:53
>>131
おーーーーー、なるほど!!
134デフォルトの名無しさん:2010/07/25(日) 23:53:22
誰かもっと分かりやすく説明してくれ。

a = ----.4426...
ってのはどうやって算出したの?
その有効数字が正しいことはどうやって計算したの?
135デフォルトの名無しさん:2010/07/26(月) 00:03:34
bc -l
136デフォルトの名無しさん:2010/07/26(月) 03:38:36
>>124
対数なんぞ受験の時以来でもうすっかり追憶の彼方なんだが、
計算機叩きながらどうにかやってみた。

10^a = 7^(5^2010)
a = (5^2010) * ln(7)
ln(a) = 2010*ln(5) + ln(ln(7))
ln(a) = 1404.85661580987...
a = 10^(10^1404 * 7.1881281294763...)

この一番下の括弧の中の部分について、小数点以下3桁くらいの
数字がわかれば解決だとおもうんだが、桁溢れでオワタ\(^o^)/
137デフォルトの名無しさん:2010/07/26(月) 04:14:54
>>135
bc て計算機なのな。
でかい数字が扱えるみたいだから試してみよう。
常用対数が使えないので、まず自然対数にする。
l(x)はlog(自然対数)、e(x)はexp(指数関数)

ln(a) = 2010*ln(5) + ln(ln(7))
l(a) = 2010*l(5) + l(l(7)) - l(l(10))
a = e(2010*l(5) + l(l(7)) - l(l(10))) = 718812... ..5.1607...
a = ----.1607...

……えー、なんで?
上の桁の数字はちゃんと>>136と一致してるんだけどな。
>>136が既に駄目だったのか、それとも精度の問題か?
ln(2) = l(2)/l(10) = 0.3010.. なので、答えは 1 となりました。
間違いがあったら突っ込みよろしく。
138デフォルトの名無しさん:2010/07/26(月) 06:13:49
scale=2000
139デフォルトの名無しさん:2010/07/26(月) 23:14:40
答えが
2, 4, 1
と割れていますが、こんな時こそRealLibがなんか役立ったりはしないのか?
140デフォルトの名無しさん:2010/07/26(月) 23:48:55
RealLibが活躍できるように対数の対数をとって…と思ったが、

RealLibは1/2^(2^31)より小さい値は
実装上表せないとのことなので、
厳しいかな。


141質問スレ327:2010/07/27(火) 00:45:44
142136:2010/07/27(火) 03:46:59
>>138
scale は小数点以下の有効桁数か。
これを増やしたら = ----.4426... となり、>>127==131 に一致した。

ちなみにscale=1410あれば余裕と思っていたら全然足りてなくて、
scale=1413でぎりぎりといったところだった。
適切な有効精度の見積もりがサッパリわからんので、浮動小数が
必要なシビアな計算は、自分には無理というのがよくわかった。

>>141
それは答えを10^aとおいたときの、aの最上位の桁の数なのでは。
この問題は 10^(7.1881... * 10^1404) の最上位の数を問うている。
143デフォルトの名無しさん:2010/07/27(火) 11:37:13
で問題の a - floor(a) の計算にRealLibは使える?
144デフォルトの名無しさん:2010/07/27(火) 23:55:08
>>143
floor(a)って関数があったっけな?
そもそもRealLibって、
2+1==3
をやろうとすると無限ループになってフリーズする。
145デフォルトの名無しさん:2010/11/29(月) 02:00:50
 結局 Mathematica みたいなもんだと考えればいいのかな?
146デフォルトの名無しさん:2010/11/29(月) 03:25:44
MathematicaをCから呼んだりするより速いんじゃない?たぶん
147デフォルトの名無しさん:2010/12/20(月) 06:12:34
RealLibは死滅しちゃうの?
148デフォルトの名無しさん:2010/12/20(月) 09:44:04
>>144
そんなあぶなかしいもの使えるかよ!
149デフォルトの名無しさん:2010/12/21(火) 01:04:20
チューリング完全ならどんな言語だって停止性の保証なんかできないんだぜ
150デフォルトの名無しさん:2010/12/21(火) 04:14:48
>>149
目の前に大きな穴が空きすぎだよなw
151デフォルトの名無しさん:2010/12/21(火) 04:17:37
>>145
Mathematicaは独立した実行ソフトウェアだから全然別物だろう。
RealLibは静的に組み込むことが出来る。ただしライセンスはGNU Lesser General Public License になる。
動的に結合させるだけなら要件を満たせばライセンスは好きにできる。

あとMathematicaはほぼ何でも計算できる。
RealLibは2+1==3をやろうとすると無限ループになってフリーズする。
152デフォルトの名無しさん:2010/12/21(火) 04:22:52
勿論精度設定して第何位まで一致なら一致とみなして良い
とか設定可能なんだろ?
153デフォルトの名無しさん:2010/12/21(火) 08:01:58
設定可能というか
a==bの代わりに
a-b<0.00000001みたいにやる
浮動小数点と違うのは右辺の精度をいくらでも上げられること

つーかそんなに==で無限ループするのが嫌だったらoperator==をオーバーライドしとけ
154デフォルトの名無しさん:2010/12/21(火) 08:08:34
なんだ、operator==は最初から提供されてないじゃん
155デフォルトの名無しさん:2010/12/21(火) 08:35:59
>>153-154
違う違う。
もしa==bだったらa>bやa<bやa!=bが無限ループになるの。
(違いが見つかるまで小数展開を続けるけど当然いつまでたっても違いは見つからないから)
a-b<0.00000001も、もしa-b==0.00000001だったら無限ループになる。
だから比較演算は絶対に等しくないとわかってるときにしか使えない
156デフォルトの名無しさん:2010/12/21(火) 08:42:15
無限ループは整数型も追加すれば
回避できるケースが出てくるだろうが、それをしないのは
用途的に意味がないから?
157デフォルトの名無しさん:2010/12/21(火) 14:47:12
>>156
是非それやってあげて下さい!
LGPLなんで!
158デフォルトの名無しさん:2010/12/21(火) 15:04:46
ページ見ると高速を謳っているから余計なものつけんのだろうね
159デフォルトの名無しさん:2010/12/21(火) 21:34:29
つまり常人が予想するような用途じゃないのか。
いつ使うのかは分からんけど。
160デフォルトの名無しさん:2010/12/21(火) 21:39:03
(有理数とか)正確数を扱うライブラリは他にあるから、そういうので
用が済む用途はそっち使えってことなんじゃないの?
161デフォルトの名無しさん:2010/12/22(水) 01:12:35
数式処理ライブラリじゃなくて
無限精度実数ライブラリなんだよ!
162デフォルトの名無しさん:2010/12/22(水) 04:27:15
>>161
数式処理ライブラリって世の中に無償じゃ出回ってないよね。

163デフォルトの名無しさん:2010/12/22(水) 04:31:31
Mathematicaと区別つかない(=ライブラリとライブラリじゃないものの区別が付かない)
重症患者様がまだご存命でいらっしゃるのか。

よくプログラミング出来るよなその低能さで。
164デフォルトの名無しさん:2010/12/22(水) 06:33:32
>>155
そんなあぶなかしいもの使えるかよ!
165デフォルトの名無しさん
>>164
既出です!