タグ

ブックマーク / qiita.com/kaityo256 (2)

  • 822823回マクロを展開するとGCCが死ぬ - Qiita

    はじめに Rui UeyamaさんのCコンパイラ作成集中講座 (2020) 第14回を聞いて知ったのですが、GCCは「同じマクロ」が定義された時に、マクロの再定義警告をしないんですね。例えばこんなコードです。 #include <cstdio> #define A 1 #define B 1 #define A 1 // No warning #define B 2 // test.cpp:7:0: warning: "B" redefined int main() { printf("%d %d\n", A, B); }

    822823回マクロを展開するとGCCが死ぬ - Qiita
    odan3240
    odan3240 2020/07/30
  • 任意の確率で独立にビットが立っているビット列を高速に生成する方法 - Qiita

    はじめに 「それぞれのビットが、確率$p$で1となっているようなランダムなビット列」が欲しくなる時ってありませんか?例えばスピン系とかのマルチスピンコーディングとかする時に必要だったりします。マルチスピンコーディングというのは、スピンの自由度をビットとしてパックして、同時に複数のスピンの状態を更新する手法で、ビット演算の並列性を使って計算を加速します。 さて、「指定の確率でビットが立っているランダムなビット列」はどうやって作ればよいでしょうか。もっともナイーブには、ビットの数だけ乱数を使えばそんなビット列を作ることができます。32ビットならこんな感じでしょうか。 uint32_t rbs(double p, std::mt19937 &mt){ std::uniform_real_distribution<> ud(0.0,1.0); uint32_t v; for(int i=0;i<3

    任意の確率で独立にビットが立っているビット列を高速に生成する方法 - Qiita
    odan3240
    odan3240 2019/01/30
  • 1