行列+複素数 (C言語)

少し前の記事『mallocは関数の中ですべきか』で、C言語の行列ライブラリの話を出しましたが、ようやく内部的な事情が解消したので公開します。ソース中の『埋めてね』というので、事情を察していただけるかと思います(毎年4月には隠す必要があるのでしょうか、笑)。

ヘッダ(matrix.h)実体(matrix.c)です。複素数も利用するので、そのヘッダ(complex.h)実体(complex.c)もあわせて公開します。
なお、ある程度まじめにメンテをしているC++版もあります。こちらはTemplateで固定小数点化なども対応しています。boost::ublasのようにET化(参考サイト)はしていないので全くもって最速ではありませんが、コピーをできる限り少なくしているので実用的な動作速度はでていると思います。

作成過程において、VC6でinlineがコンパイルエラーになると聞きびっくりしました。最近はVC2005かicc9かgcc3.4系しか使わないので、inlineが普通に通ると思っていたのですが、VC6ではダメなのですね。

May 14, 2007 23:33 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdelicious.comでブックマーク

コメント

C言語って、行列計算のライブラリはデフォルトで用意されてないのですね。これで状態方程式も扱える?
私なんかC#から勉強をはじめたものだから、最初C++を見たとき、ヘッダファイルって何?って思いました。

Posted by: yasuda : June 15, 2007 09:44 AM

>yasudaさん
はじめまして。最近だと色々と便利グッズが入っている言語が多いもので、Matlabなんぞを使っていると特に悲しくなってきます。『LQR(最適レギュレータのゲインを求めるコマンド)一発で課題終わりましたー』なんて言われた日にはどうしようかと(笑) 自分で一からやってみることは勿論重要だとは思うんですが、効率を求める人が多いですからね。

Posted by: fenrir : June 16, 2007 02:02 AM

コメントする