質問編集履歴
3
Python+mpmath+gmpy2でdps = 100の場合の値を掲載
test
CHANGED
File without changes
|
test
CHANGED
@@ -89,3 +89,23 @@
|
|
89
89
|
Python3.10.8(VSCode)やGoogleColabではdecimalでは桁数の桁数が18桁までなので計算できません。
|
90
90
|
mpmath+gmpy2でも計算してみましたが、dpsが100000まで程度では値の先頭の方、桁数ともに誤差が出て、正しい値がはっきりしません。dpsを1000000にしたら結果がコンソールからはみ出て値の先頭の方が確認できませんでした。また桁数の値がPyPy 2の場合と相違しました。
|
91
91
|
|
92
|
+
Python+mpmath+gmpy2でdps = 100の場合
|
93
|
+
```Python+mpmath+gmpy2
|
94
|
+
>>> from mpmath import *
|
95
|
+
>>> mp.dps = 100
|
96
|
+
>>> (mpf(2)**((mpf(2)**(mpf(519)-mpf(1)))-mpf(1)))*(mpf(2)-(mpf(2)**mpf(-10889035741470030830827987437816582766072)))
|
97
|
+
mpf('1.738741545572851906007851776954032208812769161318139539364439351610202064301416872947694837078743209829e+258313751232903212140244172706732768962283773495639777019746650509389263410185892774365178070439343470463409842392677007886631633129570799399839688363235724')
|
98
|
+
|
99
|
+
```
|
100
|
+
|
101
|
+
Python+mpmath+gmpy2でdps = 1000の場合
|
102
|
+
```Python+mpmath+gmpy2
|
103
|
+
>>> from mpmath import *
|
104
|
+
>>> mp.dps = 1000
|
105
|
+
>>> (mpf(2)**((mpf(2)**(mpf(519)-mpf(1)))-mpf(1)))*(mpf(2)-(mpf(2)**mpf(-10889035741470030830827987437816582766072)))
|
106
|
+
mpf('8.693707727864259530039258884770161044063845806590697696822196758051010321507084364738474185393716049143428269592664416299506985821607020224451757384081772736694085185953261476092256949585533792382065398255366123346945632455365114496387996812763405070547543636242943582509351695964148881539829278098776930760208512040241459131050857534909186967359333680690876095696574392978402776982242910476888722508873652625966431429199319419162400479389670802250530127697191701685799046457340098916039874145467184794888167675164383011930352737537848617171247730837116311290657456022018847615163555388577340388773985857825851948069000990304471913408925992764573057043682223975592937342873908916124950471446485565735968453329290029508092694774450347618896698260229705612494938176332564765641437441682011291579724298194210916645951676005349723798753644015878111182523064775510486058470694029884469024542601898715230728898371787332915920789625287283111060329377477628692626381070127590574256433161812199884160657947907722e+258313751232903212140244172706732768962283773495639777019746650509389263410185892774365178070439343470463409842392677007886631633129570799399839688363235723')
|
107
|
+
|
108
|
+
```
|
109
|
+
|
110
|
+
|
111
|
+
|
2
桁数の間違いを訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
(2^((2^(519-1))-1))*(2-(2^-10889035741470030830827987437816582766072))
|
9
9
|
を計算してみましたが、途中で誤差が出て正しい値が出力されているのか分かりません。
|
10
10
|
正しい値を知りたいです。先頭100桁とE+ほにゃららで構いません。
|
11
|
-
ちなみに桁数が10^15
|
11
|
+
ちなみに桁数が10^156ありますので、Python3.10.8やGoogleColabのdecimalでは桁数の桁数が18桁までなので計算できません。
|
12
12
|
ideoneのPyPy 2では桁数が10^10^5程度までは扱えるようです。(が、一部で誤差が出る。そのためにPython3では桁数制限がかかっていると思われる。)
|
13
13
|
よろしくお願いいたします。
|
14
14
|
|
1
mpmathでのソースを追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -76,6 +76,14 @@
|
|
76
76
|
|
77
77
|
```
|
78
78
|
|
79
|
+
```Python+mpmath+gmpy2
|
80
|
+
#2^128倍精度
|
81
|
+
#(2^((2^(519-1))-1))*(2-(2^-10889035741470030830827987437816582766072))
|
82
|
+
from mpmath import *
|
83
|
+
mp.dps = 1000000
|
84
|
+
(mpf(2)**((mpf(2)**(mpf(519)-mpf(1)))-mpf(1)))*(mpf(2)-(mpf(2)**mpf(-10889035741470030830827987437816582766072)))
|
85
|
+
|
86
|
+
```
|
79
87
|
### 試したこと
|
80
88
|
|
81
89
|
Python3.10.8(VSCode)やGoogleColabではdecimalでは桁数の桁数が18桁までなので計算できません。
|