- 四元数の初等関数とその逆関数について
- 四元数の初等関数とその逆関数についての試みを以下に掲示します。 * boost C++ ライブラリへのパッチ(upfile:1292610344-boost_1_44_0-quaternion_octonion.patch) * (2011/5/20 追記) 乗除の順序が間違っていた箇所があったので、それを修正する為のパッチ(upfile:1305883331-boost_1_44_0-quaternion_octonion-additional.patch) * (2011/8/1 追記) 乗除の順序が間
- ID=16, cdate=2010/12/18 04:25, mdate=2011/08/26 19:49, owner=taiji, tags=boost, C++, quoternion, octonion, クリフォード代数
- ユニバーサルバイナリ作成のコツ
- ADCのテクニカルノートTN2137(http://developer.apple.com/jp/technotes/tn2005/tn2137.html) には、configure 系ソースコードツリーのユニバーサルバイナリのビルド方法が説明されているが、実際にやってみると、configure はもとよりその他様々な Unix 系ソースコードツリーのユニバーサルバイナリのビルド&インストール方法としてはかなり不十分である。 いくつか代表的な例を用いて、ユニバーサルバイナリのビルド&インストール方法の実際を
- ID=15, cdate=2010/10/14 20:06, mdate=2010/10/15 17:25, owner=taiji, tags=Mac OS X, Universal Binary, configure, cmake, xmkmf
- 再考—クイックソート、イントロソート in C/C++
- [[[ Median-of-3 Killer 系列 ]]] Musser によるイントロソートの原著(http://www3.interscience.wiley.com/journal/7328/abstract)によれば、Median-of-3 Killer 系列により、クイックソート内で3要素の中央値をピボットに選ぶ手続きの弱点を突いて、ソートコストを著しく増大させることができてしまう。 それを防ぐために、イントロソートでは再帰レベルに応じてヒープソートに移行させているわけであるが、一方、クイックソー
- ID=14, cdate=2010/07/23 19:29, mdate=2010/07/23 19:37, owner=taiji, tags=qsort, psort, sort, C, C++
- 再考—並列ソートと検索 in C/C++
- 前回 sort_r-20100723.tar.bz2(upfile:1279875329-sort_r-20100723.tar.bz2) とともに示したように、並列マージソートと並列イントロソートは極めてパフォーマンスが良好である事がわかった。但し、要素数が少ないとスレッド処理のオーバーヘッドが無視できないことから、詳細な調査を行った。 [[[ 並列マージソート、並列イントロソート ]]] * ##pmergesort_r## が C による並列マージソート(自作) * ##parallel_stable
- ID=13, cdate=2010/07/16 22:39, mdate=2010/07/23 17:59, owner=taiji, tags=psort, psort_r, psort_b, C, C++, Blocks, GCD
- 再考—ソートと検索 in C/C++
- 最近、##qsort_r## の有効利用から始まり、##qsort_b## の発見と Apple による C/C++ の Blocks 拡張(http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1370.pdf)など、様々な知見が得られたのでまとめておく。 まずは結論を箇条書きにする。 * ##qsort_r## は Solaris にはない(POSIX 仕様ではない)。 * ##mergesort## (BSD由来の実装) は要素のサイズが ##sizeof(
- ID=12, cdate=2010/06/15 23:06, mdate=2010/07/23 17:58, owner=taiji, tags=qsort_r, qsort_b, C, C++, Blocks
- Cocoa プログラミング概観
- [IMAGE:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjAAAAHOCAYAAACGgTObAAAE22lDQ1BJQ0MgUHJvZmlsZQAAeAHt3XtYU3UYB/B3AwEZlwLyRtipLLUajE0ESg0cZBQgAXmrVBhzDMe2tsmlLBW7aBczK8uwsiIjtbJ72Y3uV7soaoaVmBkgiYiBVqbv75yNizxPPU//9fg9POO85+y3se9n37N/9gdEjhDiTZ1CVGr3uHI
- ID=11, cdate=2010/04/08 01:20, mdate=2010/04/09 22:16, owner=taiji, tags=Cocoa, Mac OS X, Objective-C
- OpenMPI に関する略語
- OpenMPI に関する略語をまとめてみた。 * OMPI: The Open Message Passing Interface * ORTE: The Open Run-Time Environment layer * OPAL: The Open Portable Access Layer * MCA: The Modular Component Architecture * DSO: Dynamic Shared Objects * OTF: The Open Trace Format
- ID=10, cdate=2010/03/10 16:05, mdate=2010/03/10 16:05, owner=taiji, tags=MPI, OpenMPI
- GAP(Groups, Algorithms, Programming)
- 群論とかを扱えるものを探していたら、GAP(http://www.gap-system.org/) という数式処理システムに遭遇。それを、ビルド&インストールしてみたときの備忘録。 * ##`./configure --prefix=/opt/local/gap4 && make`## でのビルドで問題ないけれども、##`make install`## でインストールということではなく、どうもビルドした作業ディレクトリが実行環境らしい。 * なので、インストール時にビルドするという変則的な手続き ##`su
- ID=9, cdate=2010/02/27 02:38, mdate=2010/03/01 13:15, owner=taiji, tags=Unix, GAP, Maxima, Emacs
- OpenMPI + Boost MPI
- Boost MPI から OpenMPI を使うとき、以下のように ##mpic++## でコンパイルすればよい。 $ mpic++ -L/opt/local/lib -lboost_mpi -lboost_serialization -o mpi00 mpi00.cc これは以下のように ##g++## でコンパイルするのと同じである。 $ g++ `mpic++ -showme:compile` -L/opt/local/lib -lboost_mpi -lboost_serialization `mp
- ID=8, cdate=2010/02/26 13:44, mdate=2010/03/10 23:10, owner=taiji, tags=C, C++, MPI, Boost
- Boost Graph の計算量
- Boost にある Graph ライブラリ(BGL) はグラフ理論を扱うテンプレートライブラリです。極めて便利なのですが、STL(Standard Template Library)と同様に、実装されている各アルゴリズムの計算量に配慮して利用することが肝要となります。 ここでは、BGLのドキュメントから時間計算量についてまとめました。 ---- 9. Boost Graph Library Tutorial 9.2. The adjacency_list class 9.2.1. VertexList ##
- ID=7, cdate=2010/02/25 12:58, mdate=2010/02/25 12:58, owner=taiji, tags=C++,BGL,Complexity