行列+複素数 (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ではダメなのですね。
コメント
>yasudaさん
はじめまして。最近だと色々と便利グッズが入っている言語が多いもので、Matlabなんぞを使っていると特に悲しくなってきます。『LQR(最適レギュレータのゲインを求めるコマンド)一発で課題終わりましたー』なんて言われた日にはどうしようかと(笑) 自分で一からやってみることは勿論重要だとは思うんですが、効率を求める人が多いですからね。
コメントする
- 匿名でのコメントは受け付けておりません。
- お名前(ハンドル名可)とメールアドレスは必ず入力してください。
- メールアドレスを表示されたくないときはURLも必ず記入してください。
- コメント欄でHTMLタグは使用できません。
- コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
- コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。
- 投稿ボタンを押してエラーがでなければ、投稿は成功しています。反映されるまでには少し時間がかかります。
C言語って、行列計算のライブラリはデフォルトで用意されてないのですね。これで状態方程式も扱える?
Posted by: yasuda : June 15, 2007 09:44 AM私なんかC#から勉強をはじめたものだから、最初C++を見たとき、ヘッダファイルって何?って思いました。