メニエスの名のもとに

プログラミング関係を中心としたぐだぐだブログ

MTToolBox バージョンアップ&インターフェイス変更

人の迷惑顧みず、やってきましたバージョンアップ。というわけで、MTToolBoxの以前から(私の頭の中で)気になっていたところを修正しました。その結果として、以前のバージョンとの互換性がなくなりました。まあ、あれですよ。どっかでやらねばならない修正…

Ziggurat アルゴリズム

この前から、このブログでは、なんとなく特定の分布、特に正規分布の疑似乱数を生成する方法について書いているわけだが、 manieth.hatenablog.com manieth.hatenablog.com Ziggurat アルゴリズム 正規分布作成にZigguratアルゴリズムというのがあるらしい。…

dSFMTを元にした一様分布と正規分布をちょっと修正した

uniformIntFromDoubleクラスのテンプレートから返却値の型タイプを削除して、返却値はint32_t固定にした。いや、だってint64_tとか指定されても対応してないのですよ。それに、int8_t とか指定されても特別速い処理が出来るわけでもないし。 あとは、output…

dSFMTを元にした一様分布と正規分布

なんかね、コンパイルする度に速さが変わるんで、訳がわからない。 とりあえず、他の環境でもコンパイル出来るようにしたので、興味がある人はどれが速いのか試してみて欲しい。 github.com一般的なautotoolsなので ./configure make make check で作成とチ…

-O2 と -O3 は大違い

Oだけに。 いやあ、これまでg++ でコンパイルする時に -O3 を付けてたんだけど、-O2 とはそんなに違わないと思ってたんですよ。で、GitHubにソースを置くようになってからautotoolsを使うようになって、Makefile.am でやはり -O3 と指定して訳です。でも、ち…

メルセンヌ・ツイスターの小ネタ:自動ベクトル化

なんとなく時間が半端に余ったので、1年位前に気づいたような気がするが、今はどうなっているか知らない小ネタをひとつ。MersenneTwister をやや今風(あるいは俺流)に書くとこんな感じなんだけど #define MATA UINT32_C(0x9908b0df) #if defined(NOT_USE_…

一様乱数, それとは別に単精度浮動小数点数乱数

コメントに答えるには、コメント欄が狭いかなと思ったが、書いてみたらそれほど長くもなかったような。 一様乱数 C++ のstd::uniform_int_distributionが遅いという話。ある範囲の数を一様に出力する乱数が欲しい。これは簡単なようでいてそれほど簡単ではな…

SFMTの256,512bit化への道その2

浮動小数点数版については前回の記事を参照してください。 manieth.hatenablog.com 整数版 整数版はすでにAVX2版が存在するけど、AVX512F版は存在しない。なので作ってもいいかもしれない。実は、dSFMTで使用されているようなlungという変数を使った短いルー…

SFMTの256,512bit化への道

結構遠い道のりかも知れない 疑似乱数生成には以下の三つが重要なのである。 周期が最大であること 乱数性が良いこと 速度が速いこと 面倒くさいね。 dSFMTの256, 512bit化 SFMTには整数を生成するいわゆるSFMTと浮動小数点数生成に特化したdSFMTというのが…

ナンプレ:自動生成なのにうっかり綺麗な形になってしまった。

このブログでは、ナンプレ問題の自動生成とかをやっていた訳です。で、自動生成だからパズル雑誌に掲載されるような図柄の美しいパズルではなくて、難しいパズルを作ろうとしていたのでした。そのために、9x9の通常版ナンプレでは対称性をちょっと捨てて1個…

dSFMTdc サンプル

dSMFT のパラメータを生成するプログラム MTToolBox のサンプルにdSFMTのパラメータ生成プログラムを追加しました。 いまのところ、私が作った疑似乱数生成器の中である意味一番出来がいいのがdSFMTである。まあ、IEEE754形式で生成というのも、lungを使うと…

dSFMTの論文にミスがありました。

均等分布次元計算プログラムのバグです。 dSFMTの場合、均等分布次元は初期値によって変動する可能性があり、その変動の中でも最悪でもこれだけはあるという値を論文に掲載していました。しかし、正しい値はそれよりも悪い値になります。なお、論文の結論自…

SFMTの論文にミスがありました。

均等分布次元計算プログラムのバグです。 SFMTの場合、均等分布次元は初期値によって変動する可能性があり、その変動の中でも最悪でもこれだけはあるという値を論文に掲載していました。しかし、正しい値はそれよりも悪い値になります。なお、論文の結論自体…

sfmtdc サンプル

技術的負債 MSaito/MTToolBox · GitHub MTToolBoxにSFMTDCのサンプルを追加した。 昔の自分のプログラムを直すのが、こんなに大変だとは思わなかった。 でも、俺にしか出来ないという程ではなくても、他の人がやったら無駄に時間を使うと思うので、優秀な人…

autotools対応中

これもウソ対応です config.h とか作成されるけど、どこでも見ていません。まだgit pushしてないし。 shared library にしようとして失敗しました OS X ではうまく shared library が作成されたんだけど、ubuntu でやったら作成できなかった。MTToolBox はNT…

autotools 対応しました。

実は対応していない。 MSaito/NumPl · GitHub ./configure でコンパイルできるようにした(つもり)。その意味では、autotools 対応をした。しかし、環境依存をみてコードを変えるとかいうことはしていない。その意味では対応していない。autotoolsを利用し…

reducible ブランチをpushしました。

可約ジェネレータ開発ツール 疑似乱数生成器開発用ツールMTToolBoxの新機能、可約ジェネレータ開発ツールを入れたreducible ブランチをMSaito/MTToolBox · GitHubにpushしました。まだマージしてないけど、sample として Reducible MTを付けたので、使いたい…

重大なバグ

TinyMT と XSadd についての重大なバグが報告されました。 xsadd_float, xsadd_double, tinymt32_generate_float, tinymt64_generate_double 関数は[0, 1)区間の浮動小数点数、つまり0以上1未満の数を返すはずですが、バグにより1.0を返すことがありました。…

何かがおかしい

コピーしてちょっと直すという修正はおかしい しばらく他のことをやっていて、今週頭からまたMTToolBoxの機能拡張に取り組んでいた。そして今日になって思ったのだが、何かがおかしい。コピーしてちょっと直すという修正をしているのだ。いやいや、そういう…

過去とは恥ずかしいもの

昔のソースを見直す MTToolBoxの修正。最初はさっぱりわからんかったが、コメントの入っていないソースにコメントを入れながら読んでいたら、思い出したぁ! このやり方はイケてない。そう、昔のことを思い出した時の正しい反応は赤面することである。昔のア…

疑似乱数生成器

MTToolBox MTToolBox というのは、疑似乱数生成器を開発する際に利用できるツールである。これを公開したら、卒論や修論で疑似乱数生成器を作る人が続出して、様々な疑似乱数生成器が乱立し、どれがよいのやら速いのやらまったく分からなくなって世の中が混…

macports + scons でハマる。

AutoTools が難しすぎて使えないので scons にしたのであった。 ただし、make くらいならなんとか easy mode で使えるので、ふだんは make を使い、環境依存が大きくmake の easy mode ではどうにもならないような場合は scons を使うというように使い分けて…

ナンプレ問題生成のGitHubのWikiを書きました

MSaito/NumPl Home · MSaito/NumPl Wiki · GitHubいやあ、MarkDownって便利ですなぁ。こうやって、テキストで書いてそれがhtmlに編集されるなんて便利すぎますよ。私もRD(Ruby Document Format)や、このはてな記法や、doxygenの記法や、PukiWiki の記法やら…

ナンプレ(数独)問題作成プログラム 生成法解説2

phase3 再帰しながら指定された解法を含むまで全部調べる。 phase3 は再帰アルゴリズム。入力は盤面配列(実は入出力)と検索開始位置と解法指定、出力はあまり言いたくないけど難易度、ただし、マイナスは矛盾があって解けない。ゼロは知っている解法では解…

ナンプレ(数独)問題作成プログラム ドキュメント

ドキュメントは重要、超重要 といいながら、プログラムが出来てからドキュメントを書いているようではいけないわけだが。doxygen ドキュメントを頑張っていれましたよ。まだまだ不足していますが、一気にやる気力はない。ボチボチやるが、ドキュメントなので…

ナンプレ(数独)問題作成プログラム その23 generate

generate の実行形式がmake できるソースをGitHubに上げました。 まあ、例によってバグがあるという可能性は否定できない。というかむしろ高い。 ドキュメントが出来ていない。doxygen を想定してコメントは入れていたけど、実際にはdoxygenをかけていないの…

Application Not Responding 対策

処理が遅くてANRが発生しているのだと思っていたが、実際にはバグだった。 自分のバグじゃないと思ったときは、たいてい自分のバグなんだよね。解いている途中のデータを保存するときに、不正な保存形式になっていて、次回起動時にその不正なデータを読み込…

Application Not Responding 対策

ANR が発生していました。 ANR 対策のためアプリを全面的に書き換えています。その間、ナンプレアプリの公開を停止しています。デバッグ後、再度公開する予定です。 基準がないのが問題ではないか。 重い処理をするときは別タスクと言っても、どこから重いか…

ナンプレ(数独)問題作成プログラム その22 normalize

normalize analyze の最初の版で目指していたのは、convertによって変わらない解法のリストを出力することであった。それとは別に、convertによって替わり得る問題、つまり実質的には同じ問題を違う問題として出力してしまうという危険性を避ける必要がある…

ナンプレ(数独)問題作成プログラム その21 xywing

analyze を単純化 analyze は無駄に複雑で重い割りに、目的を完全には達成していないので単純化することにしました。苦労してデバッグしたのに、機能をほとんど取ってしまいました。「泣いて馬謖を斬る」という感じでしょうか。いや、三国志は全然詳しくない…