May 14, 2007

行列+複素数 (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ではダメなのですね。

23:33 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/566
コメント

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

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

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

Posted by: fenrir : June 16, 2007 02:02 AM
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。