2023-01-01から1ヶ月間の記事一覧

cat a.out を防ぐ(その2)

また実行形式ファイルをcatしてしまってコンソールが大変なことになったので、対策を強化しました。 今回はa.outという名前ではなかったので、前回(cat a.out を防ぐ - よーる)の対策が働きませんでした。 どういう文字列がコンソールを破壊するのかを調べ…

分岐を増やすと速くなる不思議な現象

マイクロベンチマークを書いていたのですが、表題のようなことが起こったのでメモです。 環境 g++ (GCC) 12.1.0 問題のソースコード a.cpp↓ #include <cmath> #include <bit> #include <tuple> std::tuple<unsigned long, double, double> f(double w) { unsigned long n = std::bit_cast<unsigned long>(w) & 3; double x = st</unsigned></unsigned></tuple></bit></cmath>…

間違ったポラードのロー法の使い方

概要 アルゴ式が公開している素因数分解するアルゴリズム(と称しているもの)は、特定の入力に対して正しく動作しません(無限ループします)。 ポラードのロー法が失敗した場合、疑似乱数生成器のシードのみを変更するのではなく、疑似乱数生成器自体を変…