ぺんぎんさんのおうち

日記です。たまに日記じゃないこともあります。

02.01.2020

ミスドで福袋買ってきました。ブランケットやカレンダー、ドーナツ20個の引換券などがついてきて2200円です。1000円や3000円くらいのもあったはずですが、取り扱いはお店によるのかもしれませんね。

 

GMPの乗算ではlimbに応じて利用するアルゴリズムを切り替えてるんですが、しきい値に使ってる値が何を表すのか調べてました。

mpz_sizeは64ビットにつき1を返すので、たとえばしきい値が30だったら1920ビットなのでかなり大きいですよね。limbじゃないのかもしれませんね。

 

#ifndef MUL_TOOM22_THRESHOLD
#define MUL_TOOM22_THRESHOLD 30
#endif

#ifndef MUL_TOOM33_THRESHOLD
#define MUL_TOOM33_THRESHOLD 100
#endif

#ifndef MUL_TOOM44_THRESHOLD
#define MUL_TOOM44_THRESHOLD 300
#endif

#ifndef MUL_TOOM6H_THRESHOLD
#define MUL_TOOM6H_THRESHOLD 350
#endif

#ifndef SQR_TOOM6_THRESHOLD
#define SQR_TOOM6_THRESHOLD MUL_TOOM6H_THRESHOLD
#endif

#ifndef MUL_TOOM8H_THRESHOLD
#define MUL_TOOM8H_THRESHOLD 450

 

64ビット * 450なんていう数字を扱うことはさすがに無いですし、このしきい値はビット数ですかね。でもその場合は30ビット以下のときにKaratsuba法を使うことになってしまうのでビット数でもないのかなぁとなっています。よくわかりませんな。