2015/10/05(月)kv-0.4.24

kvライブラリを0.4.24にアップデートしました。

今回の主な変更点は、
  • ライセンスを明記し、MITライセンスとした。
  • interval.hppのproper_subsetを修正し、proper_subset([0,1],[0,2])が真になるようにした。
  • beta.hppを追加。
  • eig.hppを追加(高安 亮紀氏の提供による)。
などです。

ライセンスは今まで曖昧にしていましたが、某所から問い合わせがあって、MITライセンスと明記することにしました。大雑把に言えば、著作権表示を残しさえすれば自由にしていいよ、責任は取らないよ、というライセンスと理解しています。「煮るなり焼くなり好きにして」という気分だったのですが、やはり明記されていないと使いにくいということはありそうです。

proper_subset(X,Y)は、XがYの真部分集合のとき真、という関数ですが、X=[0,1], Y=[0,2]のようなとき偽を返していたという問題がありました(X=[0.5,1]なら真、すなわち両側に余裕がないと真になっていなかった)。この関数を使っていたのはKrawczyk法の部分だけですが、今まではこのバグによりわずかに性能が低下していた可能性があります。

eig.hppは、非対称実行列の固有値と固有ベクトルを(近似的に)計算するeig関数と、非対称実行列の固有値を精度保証付きで計算するveig関数を含んでいます。高安 亮紀氏に提供していただきました。ありがとうございます。

(2015年10月6日 追記)

kv-0.4.15、シンプルな区間演算ライブラリで公開した簡単な区間演算ライブラリを、0.4.24相当にアップデートしました。

interval-simple-0.4.24.tar.gz

特徴を再掲しておきます。
  • kvライブラリの区間演算の部分を切り出して、簡単な区間演算ライブラリを作ってみました。
  • テンプレートを排除しました。従って内部型はdoubleのみですが、プログラムが読みやすくなっています。
  • テンプレートを排除したおかげでboostに依存しません。単体で使えます。
  • 必要なファイルはinterval.hpp一つです。
  • 内部型のカスタマイズが出来ないこと以外は、kvライブラリに含まれるinterval.hppと機能は同等です。数学関数も多数あります。
  • 丸めの変更は単純にfesetroundを使っています。
  • 文字列との方向丸め付き相互変換機能もあります。従って、文字列からその文字列の表す数値を含むように区間を初期化できるし、表示も真の値を含むように外側に丸めるようになっています。
  • volatileを使った最適化対策はきちんとやってます。
ちょっと区間演算を使うだけならkvライブラリは少し大掛かりなので、気軽に使うならこのくらいでいいかも、と思ってます。また、ライブラリを読んで仕組みを知りたい人には読みやすいと思います。
OK キャンセル 確認 その他