C++の行列演算ライブラリEigen

http://eigen.tuxfamily.org/index.php?title=Main_Page
C++で一押しの行列演算ライブラリです。
かのGoogleも機械学習分野で採用しているらしいです。

特徴

  • ヘッダオンリ
  • 高速
  • シンプルなAPI

使ってみる

#include <iostream>

#include <Eigen/Core>
#include <Eigen/Geometry>


int main() {
  using namespace Eigen;

  // 二次元ベクトルv1
  Vector2f v1;

  // コンストラクタで初期値指定
  Vector2f v2(2.0f, 1.0f);

  // 内容を表示
  std::cout << v2 << std::endl;

  // 3x3行列
  Matrix3d m;

  // 値の代入
  m << 1.0, 0.0, 0.0,
       0.0, 1.0, 0.0,
       0.0, 0.0, 1.0;

  std::cout << m << std::endl;

  // 加減算
  v2 = v + v1;
  v2 = v - v1;

    // 内積・外積
  float dot = v1.dot(v1);
  Vector3f cross = v1.cross(v1);
}  

特に3×3行列の初期化で使われているカンマオペレータでの初期化は、非常に直感的で良いです。
Pythonを扱うのと大差なく行列演算を行うことが出来ます。