Windows用高精度電卓アプリを作ったんだが需要あるか?

1.
ユーザー
Sy9Us
10^1000桁(数値で10^10^1000)まで計算可能。
10^17桁(数値で10^10^17)まで検算可能。
ただし有効桁数は2000桁まで。
小数点以下を含む値を扱うと17桁目から誤差が出るときがある。
+-*/^()0123456789.が使える。
複数の項があっても可。^も複数段使える。
関数は使えない。

10億桁までの高精度演算なら多倍長電卓LMを使えばよいので、
それ以上の桁数の整数の計算の場合に意義が出る。
高精度で計算できる。
計算速度は速い。コンマ何秒。

9^10^1000なんて計算も可能。
こんな桁数の値を扱える電卓は一般化されていない。
70
すべて
|
最新の50件
21.
ユーザー
3SltI
>>1
>+-*/^()0123456789.が使える。

他に関数名と関数で使用する,(カンマ)が使えることになる。
22.
ユーザー
srfJJ
ビルド方法を変えたら有効桁数2000桁でも関数が使えるようになった。
23.
ユーザー
LFICP
そのアプリくれよ
24.
ユーザー
paIxI
>>23
まだ試作品なので公開はしていない。
小数点以下を含めると17桁から誤差も出るときがある。
それ以前にスキャンソフトによってはマルウェアの判定をされてしまうので、これを対処しないといけない。

計算したい計算式を書いてくれたら結果を載せるよ。
25.
ユーザー
paIxI
関数はとりあえず

{}内はオプション

pi
root(x{, Nth})
log(x{, Base})
sin(x)
cos(x)
tan(x)

が使える。
26.
ユーザー
paIxI
他に、

剰余
fmod(x,y)
が使える。

これは例えば
fmod(2^2^2^2^2,10^100)
とすれば2^2^2^2^2の末尾100桁が出る。
27.
ユーザー
qgcHg
整数論に出てくる関数を装備したら面白いのでは?素数判定とか素因数分解とか…は時間がかかりすぎて無理か、でも
「計算中、あと10億年かかる予定」とかメッセージが出れば楽しいかも。
28.
ユーザー
9iNgd
>>27
素数判定isprimeと、素因数分解factorintは小改造で実装できるが、
いかんせん実行時間がかかりすぎるので実装していない。

これをこの計算アプリのコンセプトである1秒以内に実行完了できるようになればいいけどな。
29.
ユーザー
9iNgd
計算時間予測については実装方法が見当もつかない。

ちなみにfactorintがどれくらい遅いかと言うと、
2つの素数からなる309桁の値の素因数分解が数時間たっても終わらないレベル。
30.
ユーザー
9iNgd
25桁の素数2つの49桁の合成数をfactorintで素因数分解したところ、
1分57秒もかかってしまった。
今のままでは使い物にならない。
31.
ユーザー
9iNgd
指摘があったので、素数判定isprime・素因数分解factorintを使えるようにした。
感謝。

ただし処理速度が遅い(
>>29>>30)。
32.
ユーザー
9iNgd
>>31
テスト環境では動いたが、ビルドしたら上手く動かなかったりビルド自体出来なかったりした。
再調整が必要なようだ。
33.
ユーザー
6E9AO
>>32
無事ビルドできて上手く動いた。
相変わらず関数の使用に関して
>>18のように有効桁数の限界が低いという問題があるが。

素数判定も素因数分解も上手くいくようだ。
大きな桁数の素数2つを掛け合わせた合成数とかだとむちゃくちゃ遅いが。

あとは
>>24の問題がまだ残っている。
34.
ユーザー
Un66e
素因数分解は、10^10+1~10^80+1程度まではサクサク一瞬で処理できるが、
10^90+1程度から急に重くなった。

あくまでおまけ機能だと割り切るべきか?
35.
ユーザー
Dnpu6
>>22
はビルドごとに出たり出なかったりしたが、対処法が分かったので全く問題が無くなった。

あとは
>>24の2つの問題と、
sin(pi)が0にならずに有効桁数以降で誤差が出るという問題も。
36.
ユーザー
6tSyx
Full Precision Calculator
https://www.mathsisfun.com/calculator-precision.html

は、数万桁以上の有効桁数と10^10^15程度までの計算可能桁数を持っている。
さらに一瞬で計算処理をする。

俺のアプリは計算可能桁数では勝っているが、計算速度と計算精度で劣っているようだ。
げんなり。
37.
ユーザー
6tSyx
>>36
このサイトでもsin(pi)が0にならない。
できることとできないことがあるな。
38.
ユーザー
6tSyx
>>36
LMでも有効桁数を増やせば計算できる2テトレーション6の先頭からの値の計算式、
10^(((2^65536)*log10(2))-floor((2^65536)*log10(2)))
もNaNになってしまう。
39.
ユーザー
z5CT1
2テトレーション6の計算ができた。
2.12...e+6.03...e+19727
となる。
40.
ユーザー
pcXeq
そこまで高精度ならlogとか三角関数とかあればもっと助かるな
41.
ユーザー
kSKDu
>>25のとおり、log・logNも三角関数もあるよ。
42.
ユーザー
s7Xmm
ぱいおつ
43.
ユーザー
s7Xmm
かいでー
44.
ユーザー
R5f8n
>>39
https://sites.google.com/site/allamsnumbers/home/part-2/hyperoperational-numbers
に先頭と末尾40桁の値が載っているが、
2120038728808211984885164691662274630835...............8862693010305614986891826277507437428736
これをもっと正確にするために100桁ずつ載せる。
2120038728808211984885164691662274630835654230675372483625951752354414565561161040708771008806932213
...
9087575630505718260979581044520267611188489786293085833548068862693010305614986891826277507437428736

ちなみに末尾100桁は
>>1のプログラムでは計算できない。
45.
ユーザー
kP2nP
>>24
とりあえずの対処をして小数点以下を含む計算でも有効桁数の最低桁付近まで誤差が減った。
別のテストプログラムで計算すると小数点以下を含む計算でも誤差が全く出ないので、
あとはマージして対処するだけ。もうちょっと。

マルウェア判定の対処はまだ。
46.
ユーザー
kP2nP
>>24
>>45
対処できた。テストを繰り返してみる必要があるが、
普通の小数点以下を含む数の計算では誤差が出なくなった。

あとは
sin(pi)が0にならない点
と
実行ファイルがvirustotalでマルウェア判定されてしまうという点
が問題として残っている。
47.
ユーザー
kP2nP
virustotalが使えなかったんで、
virusscan.jotti.orgでチェックしたところ問題は発見されなかった。

一般公開可能な状態になったと考えて良いのだろうか?
さて、どうしようか?
48.
ユーザー
kP2nP
時間が経ったらvirustotalが使えた。
4/71でマルウェア判定。
K7GW
McAfee Scanner
SecureAge
Zillya
で引っかかっている。
49.
ユーザー
kP2nP
引き続き計算するネタを募集します。
使える関数は
>>25
>>26
と
>>31
で、
値の最大値は10^10^1000までで。
50.
ユーザー
kP2nP
>>46
も対処できた。(実はすでにできていたが確認が遅くなった。)
2種類の計算で検算する仕様だが、片方は誤差を出すまま残した。

残りは実行ファイル化するとVirustotalで4件引っかかる事象だけ。
51.
ユーザー
kP2nP
>>46の対処をした際に処理速度が遅くなってしまった。
計算処理をすると処理時間が1秒を超える可能性が高い。

この点も懸案事項。
52.
ユーザー
FIi32
剰余計算は
fmod(9^10^5,10^100)
有効桁数100000
程度まで。
有効桁数を1000000にして9^10^6を計算しようとするとフリーズする。
LMに負けている。
53.
ユーザー
483aH
sin(pi*(10^10^7))
くらいから計算時間がかかってしまう上、
sin(pi*(10^10^1000))
ではオーバーフローしてしまうことが発覚。
対処どうしよう?
54.
ユーザー
483aH
HyperCalc
https://mrob.com/pub/comp/hypercalc/hypercalc-javascript.html

は、9^10^10^10程度まで有効桁数5桁ながら実数計算できる。
指数表現であれば(1.79769*(10^308))ˆˆ(300)まで扱えるとのこと。

幸い有効桁数で俺の電卓アプリにはまだ存在意義が残っているが、
これは計算可能桁数で負けているということになる。
これを超えるのは難しいだろうなぁ。
げんなり。
55.
ユーザー
483aH
HyperCalc
https://mrob.com/pub/comp/hypercalc/hypercalc-javascript.html

は、9^10^10^10程度まで有効桁数5桁ながら実数計算できる。
指数表現であれば(1.79769*(10^308))^^(300)まで扱えるとのこと。

幸い有効桁数で俺の電卓アプリにはまだ存在意義が残っているが、
これは計算可能桁数で負けているということになる。
これを超えるのは難しいだろうなぁ。
げんなり。
56.
ユーザー
483aH
実はceil関数も使えるので、円周率の指定の桁数から指定の桁数分を出すこともできる。
その際の式は

例:円周率小数点以下部分100桁目から100桁分
fmod(ceil(pi*(10^(100+100))),10^100)

これで202兆桁を超えられないかと思ったが、
202112290000000桁目から100桁を指定するとプログラムが落ちてしまった。残念。

どこまで計算できるかは調査中。

開示されている202112290000000桁目からの値は
7034341087 5351110672 0525610978 1945263024 9604509887 : 202,112,289,999,950
5683914937 4658179610 2004394122 9823988073 3622511852 : 202,112,290,000,000
https://www.storagereview.com/news/storagereview-lab-breaks-pi-calculation-world-record-with-over-202-trillion-digits

文字データでは載っていなかったのでOCRサイトで文字に変換した。
57.
ユーザー
5ODoS
>>56
問題が発覚。
1000桁までは合っていたが、10000桁で誤差が出ていた。
どう対処しようか?
58.
ユーザー
5ODoS
>>57
と思ったら有効桁数が足りてなかった。
有効桁数を20000桁とかにしたら円周率10000桁でも誤差なくうまくいった。
しかしこの計算式では桁数分有効桁数が必要になるので、
大きな桁数では計算時間がかかるということになる。
59.
ユーザー
5ODoS
>>58
100万桁で計算時間が3秒かかった。この計算方法ではこの程度が限界か?
60.
ユーザー
5ODoS
>>56
実はfloor関数も使えるので、最終桁以降切り捨てした方が見栄えが良いかもしれない。

その際の式は

例:円周率小数点以下部分100桁目から100桁分
fmod(floor(pi*(10^(100+100))),10^100)
61.
ユーザー
FKof9
0.1^10^6などの計算の誤差がすごいことになっているのが発覚
LMではちゃんと出るので致命的。
どう対策しよう?
62.
ユーザー
OEvx3
>>61
まぁ2つの計算式のうち1つは正解を出すのでとりあえず放置
63.
ユーザー
wauSR
>>62
合っていると思った方でも、(1/3)^(10^7)とか計算できないし、
(1/3)^(10^6)でも、有効桁数1000桁で末尾7桁くらいに誤差が出る。

どうしよう?
64.
ユーザー
p2qNa
PEROPERO
65.
ユーザー
GHz17
>>63
末尾6桁に誤差が出ていたのだけ直した。
でも相変わらず(1/3)^(10^7)とか誤差が大きすぎて計算できない。
(1/3)^(10^6)までは対応。
66.
ユーザー
uqlf6
>>34
素因数分解は、84桁の合成数を素因数分解すると数秒かかる。
83桁くらいまでは1秒かからない。

この辺が一般PCでの処理能力の壁かな?
67.
ユーザー
NRUGQ
fmod(7^8^9,10^10)の答えが全然違ってた。
直さなきゃ。
68.
ユーザー
NRUGQ
>>67
と思ったけれども、有効桁数が足りなかっただけだった。
4^5^6 mod 10^100
の時点で9408桁あるが、この式だと有効桁数2000桁で誤差がなかった。
まぁしかし有効桁数が低くても、本来は誤差なく算出しなくてはいけない。

どうしたものか。
内部で有効桁数をあまり大きく持つようにすると計算が遅くなるし。
69.
ユーザー
hmOMs
>>66
20桁の素数と20桁の素数の積の合成数を素因数分解すると4.5秒もかかった。
なんか遅くなったかな?
70.
ユーザー
48OQS
PC変えたら素因数分解がめちゃくちゃ速くなった。
1000桁の素数の素因数分解が0.5秒になった。

別で1000桁までの素数生成プログラムを作ったが、これは35秒くらいかかった。

人気のスレッド

もっと見る
>