たにちゅーの思惑|谷口忠大Home Page(たにちゅー・どっと・こむ)

HOME > たにちゅーの思惑 >  研究 > memo: cpplapack_plusの導入 ubuntu11.10ですんなり行かなかったよ のメモ

memo: cpplapack_plusの導入 ubuntu11.10ですんなり行かなかったよ のメモ

2012-02-01 (wed)|カテゴリー:

谷口の過去の資産プログラムでつかっている cpplapack

c++でのclapackのラッパーです.

これで,僕が自分の仕事をやりやすいように,付加的な関数とか

ベイズ推定するのに ガウス分布や多項分布,ディリクレ分布など おまけをくっつけて

ラッパしている酷いソースコードが cpplapack_plus << PD時代からのためこみ.今や情報系教員なので酷いソースコードは見ないで 的な状況.

 

まぁ,いいとして,

久しぶりに新環境にいれようとしたら手こずってしまったので.メモまで.

 

cpplapack_plus @ github

https://github.com/tanichu/cpplapack_plus

 

まず, 入ってなかったら

synapticとかapt-get で

lapackとblas のライブラリが入っているか確認.入っていなかったら入れる.

 

次にcpplapackを入れる.

CPPLAPACKの導入法 (ohnaka version)

基本的には上記の内容でいけるかとおもいますがー.

基本的には cpplapackをsourceforgeからとってきてパスが通るところにおいておけばいい.

 

コンパイル時は

-llapack –lblas

を忘れずに.

 

ここで,エラーが出てしまいまして

 

In file included from /usr/include/cpplapack.h:170:0,
                 from test.cpp:1:
/usr/include/_dsymatrix-/_dsymatrix.hpp:9:23: error: reference ‘m’ cannot be declared ‘mutable’ [-fpermissive]
In file included from /usr/include/cpplapack.h:172:0,
                 from test.cpp:1:
/usr/include/_dssmatrix-/_dssmatrix.hpp:9:23: error: reference ‘m’ cannot be declared ‘mutable’ [-fpermissive]
In file included from /usr/include/cpplapack.h:186:0,
                 from test.cpp:1:
/usr/include/_zhematrix-/_zhematrix.hpp:9:23: error: reference ‘m’ cannot be declared ‘mutable’ [-fpermissive]
In file included from /usr/include/cpplapack.h:188:0,
                 from test.cpp:1:
/usr/include/_zhsmatrix-/_zhsmatrix.hpp:9:18: error: reference ‘m’ cannot be declared ‘mutable’ [-fpermissive]

的な事を言われました. mutable は参照 reference の宣言では使えませんよー.とのこと.

いろいろ調べて見ると,mutable は参照では意味がない.とのこと. gccのバージョンで禁じられるようになったりしたのかな?

よくわからんが不要とのことで削除します.

 

それぞれ ファイルに行くと上の方に

mutable つけて &m を宣言しているところがあるので,

機械的に mutable を消していきます.

 

でもって,cpplapackのフォルダの内容を まるごとリンクが通るようにおいてあげます.

また cpplapack.h は includeが通るパスに入れてあげましょう.

 

これで,コンパイルすると通るようになりました.

 

次に,randlibcを入れる必要があります.

乱数演算のためです.

*randlib
http://www.mlab.ice.uec.ac.jp/~ej-sib/numerical/numerical_random.html

 


% cd randlibc
% g++ -O2 -c ./source/randlib.c/src/linpack.c
% g++ -O2 -c ./source/randlib.c/src/com.c
% g++ -O2 -c ./source/randlib.c/src/randlib.c
% ar cr librandlibc.a linpack.o com.o randlib.o
% ranlib librandlibc.a

ということで,準備できて,librandlibc.a はまた,リンクの通るところにおいてあげます.


及び randlib.h もinclude できるパスにおいてあげます.


 


次に便利な c++のライブラリ clxライブラリの導入です.


http://clx.cielquis.net/


こっから持ってきて,これまたinclude パスが通るところにおいてあげてください.


# clxはヘッダファイル群なので,特にコンパイルは不要


 


これで


準備完了です.


githubから  cpplapack_plus を落として来てくださいませ.


https://github.com/tanichu/cpplapack_plus


 


あ,gitからは


//github


//cloneをローカルに取得する.


git clone git://github.com/tanichu/cpplapack_plus.git


でいいのかな.


 


g++ -c cpplapack_plus.cpp -llapack -lblas –lrandlibc


で cpplapack_plus.o を作りましょう.


 


でもって,


 


g++ hogehoge.cpp cpplapack_plus.o -llapack -lblas –lrandlibc


 


とかして使ってください.


基本的には cpplapack_plus.h をincludeすればいけるはず.


 


サンプルソースは git で main.cpp にあります.


 


便利なのは


ウィシャート分布のサンプルとか


ガウス分布,多項分布のクラスなどを用意している点.


あとは,過去の遺物の堆積でしかないです.www (´・ω・`)


 


あくまで自分のメモまで~.

COMMENTS コメント

コメントの投稿




*


下記のタグが使用できます。
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> <pre lang="" line="" escaped="">

インフォメーション



tanichuの著作

copyright © Tadahiro Taniguchi All Right Reserved.