Petitverse
ゲストさん (
ログイン
)
ログイン
コミュニティ内検索
コミュニティ一覧
Petitverse ご利用ガイド
Petitverse からのおしらせ
プチコン 非公式コミュニティ
プレイ日記
あまさとしおん
◆mzDKTVUAtwqE
2020/7/16 14:19
2^53より大きな数値を正確に計算できる『BIG_CALCライブラリ』の開発を始めました。
1024^16も1の位までしっかり計算できます。
(上段:ライブラリによる計算、下段:プチコンによる計算)
この計算では処理時間が10秒ぐらい掛かりました。
コメント
あまさとしおん
2020/7/16 15:12
◆mzDKTVUAtwqE
負数非対応はただ単に数値の文字列の頭にマイナスがついてるかどうかをチェックしていないだけだったり
あまさとしおん
2020/7/16 15:13
◆mzDKTVUAtwqE
なんとなく「累乗 実装」でGoogle検索してみたら結構先人の知恵が見つかるものなんですねw
あまさとしおん
2020/7/16 15:29
◆mzDKTVUAtwqE
うわあああ
先人の知恵でとてつもなく高速化した
指数が偶数ならば、指数を2で割って、仮数部を2乗する(これを再帰処理する)
というアルゴリズムなんだけど、これを掛け算に応用したら1秒未満で計算が終わるようになったw
あまさとしおん
2020/7/16 15:42
◆mzDKTVUAtwqE
1707^20→8.04秒
1299^32→14.01秒
適当な数で試しても気が遠くなる時間はかからなくなった
あまさとしおん
2020/7/16 15:46
◆mzDKTVUAtwqE
1903^20→26.97秒
1727^28→44.55秒
仮数部が2か3で割りにくい数ほど遅くなる(ショートカットが2か3の倍数にのみ適用されるため)
後者の1727に至っては11*157のためショートカットがかなり無力化してる。
あまさとしおん
2020/7/16 15:56
◆mzDKTVUAtwqE
5415^41→108秒
さすがにこれは遅い…
あまさとしおん
2020/7/16 16:01
◆mzDKTVUAtwqE
高速化に威力を発揮するショートカットコードはこちら
あまさとしおん
2020/7/16 16:05
◆mzDKTVUAtwqE
コマンド
BIG_CALC(左項,演算子,右項)…演算
BIG_QS(値,指数)…十進シフト(QuickShiftの略)
あまさとしおん
2020/7/16 16:39
◆mzDKTVUAtwqE
作り掛けだけど放流します(謎のおまけが大量に)
7KA3 YPQS
あまさとしおん
2020/7/16 16:39
◆mzDKTVUAtwqE
そのまま実行すると演算テストモードになります。
ツララ
2020/7/16 16:54
◆ArUdBYOYME1V
扱う数が3桁以上の素数の場合のテーブル処理作ってみたらいいんじゃないんです?
どの辺までテーブルを用意するかは実行させながら要調整でしょうけど。
あまさとしおん
2020/7/16 17:31
◆mzDKTVUAtwqE
テーブルも考えたんですが、「計算したい数がテーブルに該当する確率」に対して、実装する手間が大きすぎるので今のところ没案になっています。
あまさとしおん
2020/7/16 17:33
◆mzDKTVUAtwqE
実行時にテーブル生成した場合→遅い
テーブルを作っておいてDATA等で記述→ファイルサイズが肥大する
テーブルの量を減らす→計算したい数がテーブルに該当する確率が下がるので効果が薄い
って感じですし
こういち
2020/7/16 18:54
◆.Id/aHiU36hu
掛け算。カラツバ法ってのが速いって聞くけど、実装が面倒なんだよな。特に再帰の使えないMkU(挫折した理由それ)
れいさん曰く「プチコン。カラツバ使った方が遅いまである」らしいし…
あまさとしおん
2020/7/16 18:57
◆mzDKTVUAtwqE
ググってみたけど難しそう
プチコンは処理速度の比率が独特なので一般に速い方法を使うと遅くなるのは日常茶飯事だし
今思ったけど1桁ずつ計算じゃなくて何桁ずつかまとめてもいいじゃんと今更気づいてしまった
こういち
2020/7/16 18:58
◆.Id/aHiU36hu
さすがに250桁ぐらいになるとカラツバ法の方が速くなると信じたい。(一応カラツバ法も定数倍軽いらしいんだけどな…)
さすらいの名無し
2020/7/16 19:54 ネタバレ
◆LWMA5UzCJb3e
ELSEIF COM$=="^" THEN
IF V2$=="0" THEN RETURN "1"
IF V1$=="1" THEN RETURN "1"
IF V1$=="10" THEN RETURN "1"+"0"*VAL(V2$)
このコメントはネタバレを含んでいます。
このコメントをひらく
あまさとしおん
2020/7/16 19:59
◆mzDKTVUAtwqE
プチコン自体で計算できる桁数はプチコンに投げつける処理を追加しました。
ちなみに、10の乗数のショートカットはBIG_QS関数として別名で搭載する予定です。
あまさとしおん
2020/7/18 14:57
◆mzDKTVUAtwqE
ちょっとだけ進んだので公開
sbkey=[公開終了]
BIG_QS関数を追加しました。
10の乗数倍はこれをお使いください。
BIG_CALC関数も掛け算のショートカットが2,3,5,7の倍数に適用されるように強化しました。
さすらいの名無し
2020/7/18 17:06
◆LWMA5UzCJb3e
A=POW(2,20)
B=POW(2,10)
にすると1時間位かかったという…()
確認したら4500秒だった
1
2
3
4
コメントを書く
こちらは「プチコン3号」「プチコンBIG」など、
プチコンシリーズ
に関する話題を扱った
コミュニティです
プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
ユーザー登録なしで書き込みができます
秘密の合い言葉は成りすましの防止 (
トリップ機能
)、書き込みの編集時の本人認証に使用します
秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります
normal
happy
like
surprized
frustrated
puzzled
画像
ネタバレ
投稿する
-
WEB PATIO
-