Windows用高精度電卓アプリを作ったんだが需要あるか?最終更新 2025/07/15 22:061.132人目の素数さんSy9Us10^1000桁(数値で10^10^1000)まで計算可能。10^17桁(数値で10^10^17)まで検算可能。ただし有効桁数は2000桁まで。小数点以下を含む値を扱うと17桁目から誤差が出るときがある。+-*/^()0123456789.が使える。複数の項があっても可。^も複数段使える。関数は使えない。10億桁までの高精度演算なら多倍長電卓LMを使えばよいので、それ以上の桁数の整数の計算の場合に意義が出る。高精度で計算できる。計算速度は速い。コンマ何秒。9^10^1000なんて計算も可能。こんな桁数の値を扱える電卓は一般化されていない。2024/03/03 16:53:0164コメント欄へ移動すべて|最新の50件15.132人目の素数さんwhxncMATLAB無料版でもsin(pi)は1.2246e-16と出るのでまだマシ。2024/03/20 22:03:3716.132人目の素数さんwhxncsin(pi)+1が1となるのでとりあえずいいかな?2024/03/20 22:14:4317.132人目の素数さんlwQ0k>>1テストしたところ有効桁数が1700桁までなら実行環境でも関数も使用可能に。これで100種類ほどの関数が使えるようになった。計算可能桁数は10^10^1000まで、自動検算可能な桁数も10^10^17までのまま。2024/03/21 09:48:5218.132人目の素数さんlwQ0k>>17関数によって有効桁数に指定可能な桁数が変わるようだ。sinは有効桁数700桁程度までしか利用できなかった。piは1700桁程度。2024/03/21 09:55:0819.132人目の素数さんlwQ0k>>17logも有効桁数700桁程度まで。2024/03/21 12:01:3220.132人目の素数さんlwQ0k>>17訂正。計算可能桁数は10^1000まで、値では10^10^1000まで、検算可能な桁数は10^17まで、値では10^10^17まで。2024/03/21 22:45:1621.132人目の素数さん3SltI>>1>+-*/^()0123456789.が使える。他に関数名と関数で使用する,(カンマ)が使えることになる。2024/03/22 01:06:4222.132人目の素数さんsrfJJビルド方法を変えたら有効桁数2000桁でも関数が使えるようになった。2024/05/18 12:19:5323.132人目の素数さんLFICPそのアプリくれよ2024/06/10 02:14:0424.132人目の素数さんpaIxI>>23まだ試作品なので公開はしていない。小数点以下を含めると17桁から誤差も出るときがある。それ以前にスキャンソフトによってはマルウェアの判定をされてしまうので、これを対処しないといけない。計算したい計算式を書いてくれたら結果を載せるよ。2024/06/11 22:58:5525.132人目の素数さんpaIxI関数はとりあえず{}内はオプションpiroot(x{, Nth})log(x{, Base})sin(x)cos(x)tan(x)が使える。2024/06/11 23:20:5226.132人目の素数さんpaIxI他に、剰余fmod(x,y)が使える。これは例えばfmod(2^2^2^2^2,10^100)とすれば2^2^2^2^2の末尾100桁が出る。2024/06/11 23:35:3927.132人目の素数さんqgcHg整数論に出てくる関数を装備したら面白いのでは?素数判定とか素因数分解とか…は時間がかかりすぎて無理か、でも「計算中、あと10億年かかる予定」とかメッセージが出れば楽しいかも。2024/08/12 16:24:3428.132人目の素数さん9iNgd>>27素数判定isprimeと、素因数分解factorintは小改造で実装できるが、いかんせん実行時間がかかりすぎるので実装していない。これをこの計算アプリのコンセプトである1秒以内に実行完了できるようになればいいけどな。2024/08/12 17:07:5429.132人目の素数さん9iNgd計算時間予測については実装方法が見当もつかない。ちなみにfactorintがどれくらい遅いかと言うと、2つの素数からなる309桁の値の素因数分解が数時間たっても終わらないレベル。2024/08/12 17:19:4330.132人目の素数さん9iNgd25桁の素数2つの49桁の合成数をfactorintで素因数分解したところ、1分57秒もかかってしまった。今のままでは使い物にならない。2024/08/12 18:17:0731.132人目の素数さん9iNgd指摘があったので、素数判定isprime・素因数分解factorintを使えるようにした。感謝。ただし処理速度が遅い(>>29>>30)。2024/08/12 19:05:5732.132人目の素数さん9iNgd>>31テスト環境では動いたが、ビルドしたら上手く動かなかったりビルド自体出来なかったりした。再調整が必要なようだ。2024/08/12 20:26:2333.132人目の素数さん6E9AO>>32無事ビルドできて上手く動いた。相変わらず関数の使用に関して>>18のように有効桁数の限界が低いという問題があるが。素数判定も素因数分解も上手くいくようだ。大きな桁数の素数2つを掛け合わせた合成数とかだとむちゃくちゃ遅いが。あとは>>24の問題がまだ残っている。2024/09/21 23:32:4734.132人目の素数さんUn66e素因数分解は、10^10+1~10^80+1程度まではサクサク一瞬で処理できるが、10^90+1程度から急に重くなった。あくまでおまけ機能だと割り切るべきか?2024/09/22 16:33:2435.132人目の素数さんDnpu6>>22はビルドごとに出たり出なかったりしたが、対処法が分かったので全く問題が無くなった。あとは>>24の2つの問題と、sin(pi)が0にならずに有効桁数以降で誤差が出るという問題も。2024/09/24 20:40:4736.132人目の素数さん6tSyxFull Precision Calculatorhttps://www.mathsisfun.com/calculator-precision.htmlは、数万桁以上の有効桁数と10^10^15程度までの計算可能桁数を持っている。さらに一瞬で計算処理をする。俺のアプリは計算可能桁数では勝っているが、計算速度と計算精度で劣っているようだ。げんなり。2024/10/09 18:25:4237.132人目の素数さん6tSyx>>36このサイトでもsin(pi)が0にならない。できることとできないことがあるな。2024/10/09 19:36:3438.132人目の素数さん6tSyx>>36LMでも有効桁数を増やせば計算できる2テトレーション6の先頭からの値の計算式、10^(((2^65536)*log10(2))-floor((2^65536)*log10(2)))もNaNになってしまう。2024/10/09 19:40:4639.132人目の素数さんz5CT12テトレーション6の計算ができた。2.12...e+6.03...e+19727となる。2024/12/01 00:33:0540.132人目の素数さんpcXeqそこまで高精度ならlogとか三角関数とかあればもっと助かるな2024/12/23 19:07:2141.132人目の素数さんkSKDu>>25のとおり、log・logNも三角関数もあるよ。2024/12/23 21:59:5442.132人目の素数さんs7Xmmぱいおつ2025/01/17 22:58:3443.132人目の素数さんs7Xmmかいでー2025/01/17 22:58:4944.132人目の素数さんR5f8n>>39https://sites.google.com/site/allamsnumbers/home/part-2/hyperoperational-numbersに先頭と末尾40桁の値が載っているが、2120038728808211984885164691662274630835...............8862693010305614986891826277507437428736これをもっと正確にするために100桁ずつ載せる。2120038728808211984885164691662274630835654230675372483625951752354414565561161040708771008806932213...9087575630505718260979581044520267611188489786293085833548068862693010305614986891826277507437428736ちなみに末尾100桁は>>1のプログラムでは計算できない。2025/02/01 00:08:5145.132人目の素数さんkP2nP>>24とりあえずの対処をして小数点以下を含む計算でも有効桁数の最低桁付近まで誤差が減った。別のテストプログラムで計算すると小数点以下を含む計算でも誤差が全く出ないので、あとはマージして対処するだけ。もうちょっと。マルウェア判定の対処はまだ。2025/02/13 10:33:2146.132人目の素数さんkP2nP>>24>>45対処できた。テストを繰り返してみる必要があるが、普通の小数点以下を含む数の計算では誤差が出なくなった。あとはsin(pi)が0にならない点と実行ファイルがvirustotalでマルウェア判定されてしまうという点が問題として残っている。2025/02/13 12:01:3147.132人目の素数さんkP2nPvirustotalが使えなかったんで、virusscan.jotti.orgでチェックしたところ問題は発見されなかった。一般公開可能な状態になったと考えて良いのだろうか?さて、どうしようか?2025/02/13 13:00:5348.132人目の素数さんkP2nP時間が経ったらvirustotalが使えた。4/71でマルウェア判定。K7GWMcAfee ScannerSecureAgeZillyaで引っかかっている。2025/02/13 13:28:5849.132人目の素数さんkP2nP引き続き計算するネタを募集します。使える関数は>>25>>26と>>31で、値の最大値は10^10^1000までで。2025/02/13 13:47:1550.132人目の素数さんkP2nP>>46も対処できた。(実はすでにできていたが確認が遅くなった。)2種類の計算で検算する仕様だが、片方は誤差を出すまま残した。残りは実行ファイル化するとVirustotalで4件引っかかる事象だけ。2025/02/13 17:20:0651.132人目の素数さんkP2nP>>46の対処をした際に処理速度が遅くなってしまった。計算処理をすると処理時間が1秒を超える可能性が高い。この点も懸案事項。2025/02/13 17:59:5952.132人目の素数さんFIi32剰余計算はfmod(9^10^5,10^100)有効桁数100000程度まで。有効桁数を1000000にして9^10^6を計算しようとするとフリーズする。LMに負けている。2025/02/21 20:16:1353.132人目の素数さん483aHsin(pi*(10^10^7))くらいから計算時間がかかってしまう上、sin(pi*(10^10^1000))ではオーバーフローしてしまうことが発覚。対処どうしよう?2025/03/02 22:00:4254.132人目の素数さん483aHHyperCalchttps://mrob.com/pub/comp/hypercalc/hypercalc-javascript.htmlは、9^10^10^10程度まで有効桁数5桁ながら実数計算できる。指数表現であれば(1.79769*(10^308))ˆˆ(300)まで扱えるとのこと。幸い有効桁数で俺の電卓アプリにはまだ存在意義が残っているが、これは計算可能桁数で負けているということになる。これを超えるのは難しいだろうなぁ。げんなり。2025/03/02 22:07:4955.132人目の素数さん483aHHyperCalchttps://mrob.com/pub/comp/hypercalc/hypercalc-javascript.htmlは、9^10^10^10程度まで有効桁数5桁ながら実数計算できる。指数表現であれば(1.79769*(10^308))^^(300)まで扱えるとのこと。幸い有効桁数で俺の電卓アプリにはまだ存在意義が残っているが、これは計算可能桁数で負けているということになる。これを超えるのは難しいだろうなぁ。げんなり。2025/03/02 22:08:5556.132人目の素数さん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,9505683914937 4658179610 2004394122 9823988073 3622511852 : 202,112,290,000,000https://www.storagereview.com/news/storagereview-lab-breaks-pi-calculation-world-record-with-over-202-trillion-digits文字データでは載っていなかったのでOCRサイトで文字に変換した。2025/03/02 23:57:0757.132人目の素数さん5ODoS>>56問題が発覚。1000桁までは合っていたが、10000桁で誤差が出ていた。どう対処しようか?2025/03/03 00:07:1958.132人目の素数さん5ODoS>>57と思ったら有効桁数が足りてなかった。有効桁数を20000桁とかにしたら円周率10000桁でも誤差なくうまくいった。しかしこの計算式では桁数分有効桁数が必要になるので、大きな桁数では計算時間がかかるということになる。2025/03/03 00:10:1259.132人目の素数さん5ODoS>>58100万桁で計算時間が3秒かかった。この計算方法ではこの程度が限界か?2025/03/03 00:16:3560.132人目の素数さん5ODoS>>56実はfloor関数も使えるので、最終桁以降切り捨てした方が見栄えが良いかもしれない。その際の式は例:円周率小数点以下部分100桁目から100桁分fmod(floor(pi*(10^(100+100))),10^100)2025/03/03 00:50:1061.132人目の素数さんFKof90.1^10^6などの計算の誤差がすごいことになっているのが発覚LMではちゃんと出るので致命的。どう対策しよう?2025/03/05 22:39:4062.132人目の素数さんOEvx3>>61まぁ2つの計算式のうち1つは正解を出すのでとりあえず放置2025/03/13 00:10:0163.132人目の素数さんwauSR>>62合っていると思った方でも、(1/3)^(10^7)とか計算できないし、(1/3)^(10^6)でも、有効桁数1000桁で末尾7桁くらいに誤差が出る。どうしよう?2025/04/09 19:04:0864.132人目の素数さんp2qNaPEROPERO2025/07/15 22:06:43
日本各地で不審者が発生 (「ティッシュ持ってる?」「お嬢ちゃんオナニーする?」「ティッシュ持ってる?」中学生に声をかける年配男性 ほか)slipニュー速(嫌儲)561297.92025/08/05 15:50:14
【北朝鮮が日本に警告】「日本の長距離ミサイル配備、防衛目的ではなく、大東亜共栄圏の野望を実現するためだ、朝鮮再侵略の日は、復活できない地獄に足を踏み入れる日になるだろう」ニュース速報+601050.52025/08/05 16:34:00
10^17桁(数値で10^10^17)まで検算可能。
ただし有効桁数は2000桁まで。
小数点以下を含む値を扱うと17桁目から誤差が出るときがある。
+-*/^()0123456789.が使える。
複数の項があっても可。^も複数段使える。
関数は使えない。
10億桁までの高精度演算なら多倍長電卓LMを使えばよいので、
それ以上の桁数の整数の計算の場合に意義が出る。
高精度で計算できる。
計算速度は速い。コンマ何秒。
9^10^1000なんて計算も可能。
こんな桁数の値を扱える電卓は一般化されていない。
1.2246e-16
と出るのでまだマシ。
が
1
となるのでとりあえずいいかな?
テストしたところ有効桁数が1700桁までなら実行環境でも関数も使用可能に。
これで100種類ほどの関数が使えるようになった。
計算可能桁数は10^10^1000まで、自動検算可能な桁数も10^10^17までのまま。
関数によって有効桁数に指定可能な桁数が変わるようだ。
sinは有効桁数700桁程度までしか利用できなかった。
piは1700桁程度。
logも有効桁数700桁程度まで。
訂正。
計算可能桁数は10^1000まで、値では10^10^1000まで、
検算可能な桁数は10^17まで、値では10^10^17まで。
>+-*/^()0123456789.が使える。
他に関数名と関数で使用する,(カンマ)が使えることになる。
まだ試作品なので公開はしていない。
小数点以下を含めると17桁から誤差も出るときがある。
それ以前にスキャンソフトによってはマルウェアの判定をされてしまうので、これを対処しないといけない。
計算したい計算式を書いてくれたら結果を載せるよ。
{}内はオプション
pi
root(x{, Nth})
log(x{, Base})
sin(x)
cos(x)
tan(x)
が使える。
剰余
fmod(x,y)
が使える。
これは例えば
fmod(2^2^2^2^2,10^100)
とすれば2^2^2^2^2の末尾100桁が出る。
「計算中、あと10億年かかる予定」とかメッセージが出れば楽しいかも。
素数判定isprimeと、素因数分解factorintは小改造で実装できるが、
いかんせん実行時間がかかりすぎるので実装していない。
これをこの計算アプリのコンセプトである1秒以内に実行完了できるようになればいいけどな。
ちなみにfactorintがどれくらい遅いかと言うと、
2つの素数からなる309桁の値の素因数分解が数時間たっても終わらないレベル。
1分57秒もかかってしまった。
今のままでは使い物にならない。
感謝。
ただし処理速度が遅い(>>29>>30)。
テスト環境では動いたが、ビルドしたら上手く動かなかったりビルド自体出来なかったりした。
再調整が必要なようだ。
無事ビルドできて上手く動いた。
相変わらず関数の使用に関して>>18のように有効桁数の限界が低いという問題があるが。
素数判定も素因数分解も上手くいくようだ。
大きな桁数の素数2つを掛け合わせた合成数とかだとむちゃくちゃ遅いが。
あとは>>24の問題がまだ残っている。
10^90+1程度から急に重くなった。
あくまでおまけ機能だと割り切るべきか?
はビルドごとに出たり出なかったりしたが、対処法が分かったので全く問題が無くなった。
あとは>>24の2つの問題と、
sin(pi)が0にならずに有効桁数以降で誤差が出るという問題も。
https://www.mathsisfun.com/calculator-precision.html
は、数万桁以上の有効桁数と10^10^15程度までの計算可能桁数を持っている。
さらに一瞬で計算処理をする。
俺のアプリは計算可能桁数では勝っているが、計算速度と計算精度で劣っているようだ。
げんなり。
このサイトでもsin(pi)が0にならない。
できることとできないことがあるな。
LMでも有効桁数を増やせば計算できる2テトレーション6の先頭からの値の計算式、
10^(((2^65536)*log10(2))-floor((2^65536)*log10(2)))
もNaNになってしまう。
2.12...e+6.03...e+19727
となる。
https://sites.google.com/site/allamsnumbers/home/part-2/hyperoperational-numbers
に先頭と末尾40桁の値が載っているが、
2120038728808211984885164691662274630835...............8862693010305614986891826277507437428736
これをもっと正確にするために100桁ずつ載せる。
2120038728808211984885164691662274630835654230675372483625951752354414565561161040708771008806932213
...
9087575630505718260979581044520267611188489786293085833548068862693010305614986891826277507437428736
ちなみに末尾100桁は>>1のプログラムでは計算できない。
とりあえずの対処をして小数点以下を含む計算でも有効桁数の最低桁付近まで誤差が減った。
別のテストプログラムで計算すると小数点以下を含む計算でも誤差が全く出ないので、
あとはマージして対処するだけ。もうちょっと。
マルウェア判定の対処はまだ。
>>45
対処できた。テストを繰り返してみる必要があるが、
普通の小数点以下を含む数の計算では誤差が出なくなった。
あとは
sin(pi)が0にならない点
と
実行ファイルがvirustotalでマルウェア判定されてしまうという点
が問題として残っている。
virusscan.jotti.orgでチェックしたところ問題は発見されなかった。
一般公開可能な状態になったと考えて良いのだろうか?
さて、どうしようか?
4/71でマルウェア判定。
K7GW
McAfee Scanner
SecureAge
Zillya
で引っかかっている。
使える関数は
>>25
>>26
と
>>31
で、
値の最大値は10^10^1000までで。
も対処できた。(実はすでにできていたが確認が遅くなった。)
2種類の計算で検算する仕様だが、片方は誤差を出すまま残した。
残りは実行ファイル化するとVirustotalで4件引っかかる事象だけ。
計算処理をすると処理時間が1秒を超える可能性が高い。
この点も懸案事項。
fmod(9^10^5,10^100)
有効桁数100000
程度まで。
有効桁数を1000000にして9^10^6を計算しようとするとフリーズする。
LMに負けている。
くらいから計算時間がかかってしまう上、
sin(pi*(10^10^1000))
ではオーバーフローしてしまうことが発覚。
対処どうしよう?
https://mrob.com/pub/comp/hypercalc/hypercalc-javascript.html
は、9^10^10^10程度まで有効桁数5桁ながら実数計算できる。
指数表現であれば(1.79769*(10^308))ˆˆ(300)まで扱えるとのこと。
幸い有効桁数で俺の電卓アプリにはまだ存在意義が残っているが、
これは計算可能桁数で負けているということになる。
これを超えるのは難しいだろうなぁ。
げんなり。
https://mrob.com/pub/comp/hypercalc/hypercalc-javascript.html
は、9^10^10^10程度まで有効桁数5桁ながら実数計算できる。
指数表現であれば(1.79769*(10^308))^^(300)まで扱えるとのこと。
幸い有効桁数で俺の電卓アプリにはまだ存在意義が残っているが、
これは計算可能桁数で負けているということになる。
これを超えるのは難しいだろうなぁ。
げんなり。
その際の式は
例:円周率小数点以下部分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サイトで文字に変換した。
問題が発覚。
1000桁までは合っていたが、10000桁で誤差が出ていた。
どう対処しようか?
と思ったら有効桁数が足りてなかった。
有効桁数を20000桁とかにしたら円周率10000桁でも誤差なくうまくいった。
しかしこの計算式では桁数分有効桁数が必要になるので、
大きな桁数では計算時間がかかるということになる。
100万桁で計算時間が3秒かかった。この計算方法ではこの程度が限界か?
実はfloor関数も使えるので、最終桁以降切り捨てした方が見栄えが良いかもしれない。
その際の式は
例:円周率小数点以下部分100桁目から100桁分
fmod(floor(pi*(10^(100+100))),10^100)
LMではちゃんと出るので致命的。
どう対策しよう?
まぁ2つの計算式のうち1つは正解を出すのでとりあえず放置
合っていると思った方でも、(1/3)^(10^7)とか計算できないし、
(1/3)^(10^6)でも、有効桁数1000桁で末尾7桁くらいに誤差が出る。
どうしよう?