OSDN Git Service

fix performance matrix
authoro_ggy <o_ggy@users.sourceforge.jp>
Tue, 17 Aug 2010 22:05:23 +0000 (15:05 -0700)
committertomohiro yasutomo <o_ggy@users.sourceforge.jp>
Tue, 17 Aug 2010 22:05:23 +0000 (15:05 -0700)
78 files changed:
TODO.txt
bin/numeric
include/mof/math/basic_matrix.hpp [new file with mode: 0644]
include/mof/math/basic_vector.hpp
include/mof/math/matrix.hpp [new file with mode: 0644]
include/mof/math/matrix2.hpp [new file with mode: 0644]
include/mof/math/matrix3.hpp [new file with mode: 0644]
include/mof/math/vector2.hpp
include/mof/math/vector3.hpp
lib/libmofutil.a
sample/CMakeLists.txt
sample/build_unix/numeric/CMakeFiles/numeric.dir/CXX.includecache
sample/build_unix/numeric/CMakeFiles/numeric.dir/depend.internal
sample/build_unix/numeric/CMakeFiles/numeric.dir/depend.make
sample/build_unix/numeric/CMakeFiles/numeric.dir/flags.make
sample/build_unix/numeric/CMakeFiles/numeric.dir/link.txt
sample/numeric/main.cpp
src/build_unix/CMakeFiles/Makefile.cmake
src/build_unix/CMakeFiles/Makefile2
src/build_unix/CMakeFiles/TargetDirectories.txt
src/build_unix/CMakeFiles/progress.marks
src/build_unix/Makefile
src/build_unix/Testing/Temporary/CTestCostData.txt [new file with mode: 0644]
src/build_unix/Testing/Temporary/LastTest.log [new file with mode: 0644]
src/build_unix/Testing/Temporary/LastTestsFailed.log [new file with mode: 0644]
src/build_unix/install_manifest.txt
src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/CXX.includecache [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/DependInfo.cmake [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/build.make [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/cmake_clean.cmake [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/depend.internal [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/depend.make [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/flags.make [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/link.txt [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/progress.make [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/CXX.includecache [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/DependInfo.cmake [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/build.make [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/cmake_clean.cmake [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/depend.internal [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/depend.make [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/flags.make [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/link.txt [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/progress.make [new file with mode: 0644]
src/build_unix/mof/math/CMakeFiles/mofmath.dir/progress.make
src/build_unix/mof/math/CMakeFiles/progress.marks
src/build_unix/mof/math/CMakeFiles/vector2_test.dir/progress.make
src/build_unix/mof/math/CMakeFiles/vector3_test.dir/progress.make
src/build_unix/mof/math/CTestTestfile.cmake
src/build_unix/mof/math/Makefile
src/build_unix/mof/math/cmake_install.cmake
src/build_unix/mof/util/CMakeFiles/mofutil.dir/CXX.includecache
src/build_unix/mof/util/CMakeFiles/mofutil.dir/DependInfo.cmake
src/build_unix/mof/util/CMakeFiles/mofutil.dir/build.make
src/build_unix/mof/util/CMakeFiles/mofutil.dir/cmake_clean.cmake
src/build_unix/mof/util/CMakeFiles/mofutil.dir/depend.internal
src/build_unix/mof/util/CMakeFiles/mofutil.dir/depend.make
src/build_unix/mof/util/CMakeFiles/mofutil.dir/link.txt
src/build_unix/mof/util/CMakeFiles/mofutil.dir/progress.make
src/build_unix/mof/util/Makefile
src/mof/math/CMakeLists.txt
src/mof/math/basic_matrix.hpp [new file with mode: 0644]
src/mof/math/basic_vector.hpp
src/mof/math/matrix.hpp [new file with mode: 0644]
src/mof/math/matrix2.hpp [new file with mode: 0644]
src/mof/math/matrix3.hpp [new file with mode: 0644]
src/mof/math/test/matrix2_test.cpp [new file with mode: 0644]
src/mof/math/test/matrix3_test.cpp [new file with mode: 0644]
src/mof/math/test/testbin/matrix2_test [new file with mode: 0755]
src/mof/math/test/testbin/matrix3_test [new file with mode: 0755]
src/mof/math/test/testbin/vector2_test
src/mof/math/test/testbin/vector3_test
src/mof/math/test/vector2_test.cpp
src/mof/math/test/vector3_test.cpp
src/mof/math/vector2.hpp
src/mof/math/vector3.hpp
src/mof/util/CMakeLists.txt
src/mof/util/linux/multimedia_timer.cpp [moved from src/mof/util/multimedia_timer.cpp with 100% similarity]

index 42135ea..30a310b 100644 (file)
--- a/TODO.txt
+++ b/TODO.txt
@@ -1 +1,8 @@
-performance test
+matrix multipla test
+matrix devide test
+debug print test
+make_rotation make_scaling ***
+test for above
+sample for matrix
+doxygen
+delete matrix array
index 1766fb7..e96bc09 100755 (executable)
Binary files a/bin/numeric and b/bin/numeric differ
diff --git a/include/mof/math/basic_matrix.hpp b/include/mof/math/basic_matrix.hpp
new file mode 100644 (file)
index 0000000..e378261
--- /dev/null
@@ -0,0 +1,247 @@
+#pragma once
+#include <mof/base/mofdef.hpp>
+#include <boost/operators.hpp>
+#include <ostream>
+
+namespace mof
+{
+namespace math
+{
+
+       template <size_t Dim> struct row_of_matrix;
+       
+       /**
+        * @brief 同次座標変換行列テンプレートクラス
+        * @note  このテンプレートから直接特殊化することは想定していない.
+        * あくまでmatrixxを実装するための補助テンプレートである.
+        * このクラスは不変クラスである.
+        * @tparam Dim        行列の次元(要素数はこの数値の2乗)
+        * @tparam Derived    特殊化されたテンプレートの派生クラス(matrixx)の型
+        * @tparam Coordinate 対応するベクトルクラス(vectorx)の型
+        */
+       template <size_t Dim, typename Derived, typename Coordinate>
+       class basic_matrix
+               : boost::addable< Derived 
+               , boost::addable2< Derived, float
+               , boost::subtractable< Derived 
+               , boost::subtractable2< Derived, float
+               , boost::multipliable< Derived
+               , boost::multipliable2< Derived, float
+               , boost::equality_comparable< Derived
+               > > > > > > >
+       {
+       protected:
+//{{{ last_index
+               /**
+                * @brief elements_の最後の添字を得る
+                */
+               size_t last_index() const
+               {
+                       return (Dim + 1) * (Dim + 1);
+               }
+//}}}
+               float elements_[(Dim + 1) * (Dim + 1)];///< 要素の配列
+       public:
+//{{{ array
+/*
+               struct array
+               {
+                       float arr_[(Dim + 1) * (Dim + 1) - 1];
+
+                       float& operator[](size_t index)
+                       {
+                               return arr_[index];
+                       }
+
+               };
+*/
+//}}}
+               // コンストラクタ,デストラクタはデフォルトのものを使う
+               // 代入演算子,コピーコンストラクタはデフォルトのものを使う
+//{{{ operator +=
+               Derived& operator+=(const Derived& rhs)
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               elements_[i] += rhs.elements_[i];
+                       }
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+               
+               Derived& operator+=(float rhs)
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               elements_[i] += rhs;
+                       }
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+               
+               friend Derived operator+(float rhs1, Derived& rhs2) 
+               {
+                       Derived retval;
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               retval.elements_[i] = rhs1 + rhs2.elements_[i];
+                       }
+                       return retval;
+               }
+//}}}
+//{{{ operator -=
+               Derived& operator-=(const Derived& rhs)
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               elements_[i] -= rhs.elements_[i];
+                       }
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+               
+               Derived& operator-=(float rhs)
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               elements_[i] -= rhs;
+                       }
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+               
+               friend Derived operator-(float rhs1, Derived& rhs2) 
+               {
+                       Derived retval;
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               retval.elements_[i] = rhs1 - rhs2.elements_[i];
+                       }
+                       return retval;
+               }
+//}}}
+//{{{ operator *=      
+               Derived& operator*=(const Derived& rhs)
+               {
+                       Derived retval;
+                       for (size_t a = 0; a < last_index(); ++a) {
+                               int b = a / Dim * Dim;
+                               int c = a % Dim;
+                               float sum = 0;
+                               for (size_t i = 0; i < Dim; ++i) {
+                                       sum += elements_[b + i] * rhs.elements_[c + i * Dim];
+                               }
+                               retval.elements_[a] = sum;
+                       }
+                       *this = retval;
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+
+               Derived& operator*=(float rhs)
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               elements_[i] *= rhs;
+                       }
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+       
+               Coordinate& operator*(const Coordinate& rhs)
+               {
+                       Coordinate retval;
+                       for (size_t a = 0; a < Dim; ++a) {
+                               int b = a / Dim * Dim;
+                               int c = a % Dim;
+                               float sum = 0;
+                               for (size_t i = 0; i < Dim; ++i) {
+                                       sum += elements_[b + i] * rhs[c + i];
+                               }
+                               retval.components_[a] = sum;
+                       }
+                       return retval;
+               }
+
+               friend Derived operator*(float rhs1, Derived& rhs2) 
+               {
+                       Derived retval;
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               retval.elements_[i] = rhs1 * rhs2.elements_[i];
+                       }
+                       return retval;
+               }
+//}}}
+//{{{ operator /=
+               Derived& operator/=(float rhs)
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               elements_[i] /= rhs;
+                       }
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+//}}}
+//{{{ operator ==
+               bool operator==(const Derived& rhs) const
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               if (elements_[i] != rhs.elements_[i]) return false;
+                       }
+                       return true;
+               }
+//}}}
+//{{{ operator []
+               /**
+                * @note 補助クラスによってM[i][j]のように参照可能
+                * @note この方法による複数の要素への参照は非効率
+                */
+               row_of_matrix<Dim> operator [](size_t i) const
+               {
+                       return row_of_matrix<Dim>(elements_, i);
+               }
+//}}}
+//{{{ operator <<
+               /**
+                * @brief デバッグ出力用ストリーム演算子
+                * @param [in] stream 出力ストリーム
+                * @param [in] rhs    出力対象となる行列オブジェクト
+                * @return 引数で与えられた出力ストリーム
+                */
+               friend std::ostream& operator<<
+               (
+                       std::ostream& stream,
+                       const Derived& rhs
+               )
+               {
+                       for (size_t i = 0; i < Dim + 1; ++i) {
+                               for (size_t j = 0; j < Dim + 1; ++j) {
+                                       if (j != 0) stream << ", ";
+                                       else if (j != Dim) stream << "\n";
+                                       stream << rhs.elements_[i * (Dim + 1) + j];
+                               }
+                       }
+                       return stream;
+               }
+//}}}
+       };
+//{{{ row_of_matrix
+       /**
+        * @brief M[i][j]のように行列の要素を参照できるようにするための補助クラス
+        */
+       template <size_t Dim>
+       struct row_of_matrix
+       {
+               const float* elements_;
+               size_t row_index_;
+
+               row_of_matrix(const float* elements, size_t row_index) 
+                       : elements_(elements), row_index_(row_index)
+               {
+               }
+               
+               float operator [](size_t index)
+               {
+                       return elements_[row_index_ * (Dim + 1) + index];
+               }
+       };
+//}}}
+
+}// namespace math
+}// namespace mof
index d90a55a..b2e3bac 100644 (file)
@@ -8,7 +8,7 @@ namespace mof
 namespace math
 {
        /**
-        * @brief å\9fºåº\95ベクトルテンプレートクラス
+        * @brief å\90\8c次å\88\97ベクトルテンプレートクラス
         * @note  このテンプレートから直接特殊化することは想定していない.
         * あくまでvectorxを実装するための補助テンプレートである.
         * このクラスは不変クラスである.
@@ -29,6 +29,18 @@ namespace math
        protected:
                float components_[Dim];///< 要素の配列
        public:
+//{{{ array
+               struct array
+               {
+                       float arr_[Dim];
+
+                       float& operator[](size_t index)
+                       {
+                               return arr_[index];
+                       }
+
+               };
+//}}}
                // コンストラクタ,デストラクタはデフォルトのものを使う
                // 代入演算子,コピーコンストラクタはデフォルトのものを使う
 //{{{ operator +=
@@ -92,28 +104,34 @@ namespace math
                        return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
                }
                
-               friend Derived operator/(float rhs1, Derived& rhs2) 
-               {
-                       Derived retval;
-                       for (size_t i = 0; i < Dim; ++i) retval.components_[i] = rhs1 / rhs2.components_[i];
-                       return retval;
-               }
 //}}}
 //{{{ operator ==
                bool operator==(const Derived& rhs) const
                {
-                       for (size_t i = 0; i < Dim; ++i)
-                       {
+                       for (size_t i = 0; i < Dim; ++i) {
                                if (components_[i] != rhs.components_[i]) return false;
                        }
                        return true;
                }
 //}}}
+//{{{ operator []
+               /**
+                * @note Dim+1番目の要素は常に1
+                * @param[in] index 添字
+                */
+               float operator[](size_t index) const
+               {
+                       if (index < Dim) return components_[index];
+                       else if (index == Dim) return 1;
+                       // TODO exception
+                       return 0;
+               }
+//}}}
 //{{{ operator <<
                /**
                 * @brief デバッグ出力用ストリーム演算子
-                * @param [in] stream 出力ストリーム
-                * @param [in] rhs    出力対象となるベクトルオブジェクト
+                * @param[in] stream 出力ストリーム
+                * @param[in] rhs    出力対象となるベクトルオブジェクト
                 * @return 引数で与えられた出力ストリーム
                 */
                friend std::ostream& operator<<
diff --git a/include/mof/math/matrix.hpp b/include/mof/math/matrix.hpp
new file mode 100644 (file)
index 0000000..2fcce2a
--- /dev/null
@@ -0,0 +1,6 @@
+/**
+ * @file 各次元の行列をまとめてインクルードするためのヘッダ
+ */
+#pragma once
+#include <mof/math/matrix2.hpp>
+#include <mof/math/matrix3.hpp>
diff --git a/include/mof/math/matrix2.hpp b/include/mof/math/matrix2.hpp
new file mode 100644 (file)
index 0000000..c05bbb1
--- /dev/null
@@ -0,0 +1,85 @@
+#pragma once
+#include <mof/math/basic_matrix.hpp>
+
+namespace mof
+{
+namespace math
+{
+       class vector2;
+
+       /**
+        * @brief 2次元同次座標変換行列クラス
+        */
+       class matrix2 : public basic_matrix<2, matrix2, vector2>
+       {
+       public:
+//{{{ constructor
+               /**
+                * @brief デフォルトコンストラクタ.最後の要素以外を0で初期化する.
+                */
+               matrix2()
+               {
+                       for (size_t i = 0; i < last_index() - 1; ++i) {
+                               elements_[i] = 0;
+                       }
+                       elements_[last_index() - 1] = 1;
+               }
+
+               /**
+                * @brief 指定した値で初期化する.
+                * @param[in] arr 初期化用配列
+                */
+/*
+               matrix2(const matrix2::array& arr)
+               {
+                       for (size_t i = 0; i < last_index() - 1; ++i) {
+                               elements_[i] = arr[i];
+                       }
+                       elements_[last_index() - 1] = 1;
+               }
+*/
+               
+               /**
+                * @brief 指定した値で初期化する.
+                */
+               matrix2
+               (
+                       float m11, float m12, float m13,
+                       float m21, float m22, float m23,
+                       float m31, float m32
+               )
+               {
+                       const float* table[] =
+                               {
+                                       &m11, &m12, &m13,
+                                       &m21, &m22, &m23,
+                                       &m31, &m32
+                               };
+                       for (size_t i = 0; i < last_index() - 1; ++i) {
+                               elements_[i] = *table[i];
+                       }
+                       elements_[last_index() - 1] = 1;
+               }
+
+//}}}
+//{{{ copy constructor
+       matrix2(const matrix2& rhs)
+       {
+               for (size_t i = 0; i < last_index(); ++i) {
+                       elements_[i] = rhs.elements_[i];
+               }
+       }
+//}}}
+//{{{ operator =
+       matrix2& operator = (const matrix2& rhs)
+       {
+               for (size_t i = 0; i < last_index(); ++i) {
+                       elements_[i] = rhs.elements_[i];
+               }
+               return *this;
+       }
+//}}}
+       };
+
+}// namespace math
+}// namespace mof
diff --git a/include/mof/math/matrix3.hpp b/include/mof/math/matrix3.hpp
new file mode 100644 (file)
index 0000000..3be9730
--- /dev/null
@@ -0,0 +1,90 @@
+#pragma once
+#include <mof/math/basic_matrix.hpp>
+
+namespace mof
+{
+namespace math
+{
+       class vector3;
+
+       /**
+        * @brief 3次元同次座標変換行列クラス
+        */
+       class matrix3 : public basic_matrix<3, matrix3, vector3>
+       {
+       public:
+//{{{ constructor
+               /**
+                * @brief デフォルトコンストラクタ.最後の要素以外を0で初期化する.
+                */
+               matrix3()
+               {
+                       for (size_t i = 0; i < last_index() - 1; ++i) {
+                               elements_[i] = 0;
+                       }
+                       elements_[last_index() - 1] = 1;
+               }
+
+               /**
+                * @brief 指定した値で初期化する.
+                * @param[in] arr 初期化用配列
+                */
+/*
+               matrix3(const matrix3::array& arr)
+               {
+                       for (size_t i = 0; i < last_index() - 1; ++i) {
+                               elements_[i] = arr[i];
+                       }
+                       elements_[last_index() - 1] = 1;
+               }
+*/
+               
+               /**
+                * @brief 指定した値で初期化する.
+                */
+               matrix3
+               (
+                       float m11, float m12, float m13, float m14,
+                       float m21, float m22, float m23, float m24,
+                       float m31, float m32, float m33, float m34,
+                       float m41, float m42, float m43
+               )
+               {
+                       const float* table[] =
+                               {
+                                       &m11, &m12, &m13, &m14,
+                                       &m21, &m22, &m23, &m24,
+                                       &m31, &m32, &m33, &m34,
+                                       &m41, &m42, &m43
+                               };
+                       for (size_t i = 0; i < last_index() - 1; ++i) {
+                               elements_[i] = *table[i];
+                       }
+                       elements_[last_index() - 1] = 1;
+               }
+
+//}}}
+//{{{ copy constructor
+       matrix3(const matrix3& rhs)
+       {
+               for (size_t i = 0; i < last_index(); ++i) {
+                       elements_[i] = rhs.elements_[i];
+               }
+       }
+//}}}
+//{{{ operator =
+       /**
+        * @note コピーのパフォーマンスのためにこの関数の定義は重要
+        */
+       matrix3& operator = (const matrix3& rhs)
+       {
+               for (size_t i = 0; i < last_index(); ++i) {
+                       elements_[i] = rhs.elements_[i];
+               }
+               return *this;
+       }
+//}}}
+       };
+
+}// namespace math
+}// namespace mof
index 739e672..3d25998 100644 (file)
@@ -6,7 +6,7 @@ namespace mof
 namespace math
 {
        /**
-        * @brief 2次元同次ベクトルクラス
+        * @brief 2次元同次ベクトルクラス
         */
        class vector2 : public basic_vector<2, vector2>
        {
@@ -31,6 +31,18 @@ namespace math
                        components_[0] = x;
                        components_[1] = y;
                }
+               
+               /**
+                * @brief 指定した値で初期化する.
+                * @param[in] arr 初期化用配列
+                */
+/*
+               vector2(const vector2::array& arr)
+               {
+                       components_[0] = arr[0];
+                       components_[1] = arr[1];
+               }
+*/
 //}}}
 //{{{ accessers
                float x() const { return components_[0]; }
index 43d8cdb..aaa6a44 100644 (file)
@@ -7,7 +7,7 @@ namespace mof
 namespace math
 {
        /**
-        * @brief 3次元同次ベクトルクラス
+        * @brief 3次元同次ベクトルクラス
         */
        class vector3 : public basic_vector<3, vector3>
        {
@@ -35,6 +35,20 @@ namespace math
                        components_[1] = y; 
                        components_[2] = z;
                }
+
+               /**
+                * @brief 指定した値で初期化する.
+                * @param[in] arr 初期化用配列
+                */
+/*
+               vector3(const vector3::array& arr)
+               {
+                       components_[0] = arr[0];
+                       components_[1] = arr[1];
+                       components_[2] = arr[2];
+               }
+*/
+
 //}}}
 //{{{ accesser
                float x() const { return components_[0]; }
index 84dc4a9..59b1d33 100644 (file)
Binary files a/lib/libmofutil.a and b/lib/libmofutil.a differ
index 057867d..00142d1 100644 (file)
@@ -14,7 +14,7 @@ link_directories("${PROJECT_SOURCE_DIR}/../lib")
 if (MSVC)
        set(CMAKE_CXX_FLAGS "/EHsc /nologo /W4 /WX")
 elseif (CMAKE_COMPILER_IS_GNUCC)
-       set(CMAKE_CXX_FLAGS "-Wall -Werror -O1 -DPSTSDK_VALIDATION_LEVEL_FULL -std=c++0x")
+       set(CMAKE_CXX_FLAGS " -Wall -O3 -DNDEBUG -std=c++0x")
        #set(CMAKE_CXX_FLAGS "-Wall -Werror -g -DPSTSDK_VALIDATION_LEVEL_FULL -std=c++0x")
 endif()
 
index df35872..929f624 100644 (file)
@@ -18,6 +18,14 @@ string
 tchar.h
 -
 
+../../include/mof/math/basic_matrix.hpp
+mof/base/mofdef.hpp
+-
+boost/operators.hpp
+-
+ostream
+-
+
 ../../include/mof/math/basic_vector.hpp
 mof/base/mofdef.hpp
 -
@@ -26,6 +34,24 @@ boost/operators.hpp
 ostream
 -
 
+../../include/mof/math/matrix.hpp
+mof/math/matrix2.hpp
+-
+mof/math/matrix3.hpp
+-
+
+../../include/mof/math/matrix2.hpp
+mof/math/basic_matrix.hpp
+-
+
+../../include/mof/math/matrix3.hpp
+mof/math/basic_matrix.hpp
+-
+
+../../include/mof/math/matrix_tmp.hpp
+mof/math/basic_matrix.hpp
+-
+
 ../../include/mof/math/vector.hpp
 mof/math/vector2.hpp
 -
@@ -51,6 +77,10 @@ boost/utility.hpp
 /home/yasutomo/devel/moflib/sample/numeric/main.cpp
 mof/math/vector.hpp
 -
+mof/math/matrix.hpp
+-
+mof/math/matrix_tmp.hpp
+-
 mof/util/multimedia_timer.hpp
 -
 iostream
index 7362227..10fa0ef 100644 (file)
@@ -4,7 +4,12 @@
 numeric/CMakeFiles/numeric.dir/main.cpp.o
  ../../include/mof/base/mofdef.hpp
  ../../include/mof/base/tstring.hpp
+ ../../include/mof/math/basic_matrix.hpp
  ../../include/mof/math/basic_vector.hpp
+ ../../include/mof/math/matrix.hpp
+ ../../include/mof/math/matrix2.hpp
+ ../../include/mof/math/matrix3.hpp
+ ../../include/mof/math/matrix_tmp.hpp
  ../../include/mof/math/vector.hpp
  ../../include/mof/math/vector2.hpp
  ../../include/mof/math/vector3.hpp
index 2e450ce..1ef0a47 100644 (file)
@@ -3,7 +3,12 @@
 
 numeric/CMakeFiles/numeric.dir/main.cpp.o: ../../include/mof/base/mofdef.hpp
 numeric/CMakeFiles/numeric.dir/main.cpp.o: ../../include/mof/base/tstring.hpp
+numeric/CMakeFiles/numeric.dir/main.cpp.o: ../../include/mof/math/basic_matrix.hpp
 numeric/CMakeFiles/numeric.dir/main.cpp.o: ../../include/mof/math/basic_vector.hpp
+numeric/CMakeFiles/numeric.dir/main.cpp.o: ../../include/mof/math/matrix.hpp
+numeric/CMakeFiles/numeric.dir/main.cpp.o: ../../include/mof/math/matrix2.hpp
+numeric/CMakeFiles/numeric.dir/main.cpp.o: ../../include/mof/math/matrix3.hpp
+numeric/CMakeFiles/numeric.dir/main.cpp.o: ../../include/mof/math/matrix_tmp.hpp
 numeric/CMakeFiles/numeric.dir/main.cpp.o: ../../include/mof/math/vector.hpp
 numeric/CMakeFiles/numeric.dir/main.cpp.o: ../../include/mof/math/vector2.hpp
 numeric/CMakeFiles/numeric.dir/main.cpp.o: ../../include/mof/math/vector3.hpp
index 4805b66..96fffea 100644 (file)
@@ -2,7 +2,7 @@
 # Generated by "Unix Makefiles" Generator, CMake Version 2.8
 
 # compile CXX with /usr/bin/c++
-CXX_FLAGS = -Wall -Werror -O1 -DPSTSDK_VALIDATION_LEVEL_FULL -std=c++0x -I/home/yasutomo/devel/moflib/sample/../include -I/home/yasutomo/devel/moflib/sample/BOOST_INCLUDE_DIR  
+CXX_FLAGS =  -Wall -O3 -DNDEBUG -std=c++0x -I/home/yasutomo/devel/moflib/sample/../include -I/home/yasutomo/devel/moflib/sample/BOOST_INCLUDE_DIR  
 
 CXX_DEFINES = 
 
index b5d2fca..f8cd4eb 100644 (file)
@@ -1 +1 @@
-/usr/bin/c++   -Wall -Werror -O1 -DPSTSDK_VALIDATION_LEVEL_FULL -std=c++0x   CMakeFiles/numeric.dir/main.cpp.o  -o /home/yasutomo/devel/moflib/bin/numeric -rdynamic -L/home/yasutomo/devel/moflib/sample/../lib -lrt -lmofutil -lmofmath -Wl,-rpath,/home/yasutomo/devel/moflib/sample/../lib 
+/usr/bin/c++    -Wall -O3 -DNDEBUG -std=c++0x   CMakeFiles/numeric.dir/main.cpp.o  -o /home/yasutomo/devel/moflib/bin/numeric -rdynamic -L/home/yasutomo/devel/moflib/sample/../lib -lrt -lmofutil -lmofmath -Wl,-rpath,/home/yasutomo/devel/moflib/sample/../lib 
index ca2a4a7..aaa1378 100644 (file)
@@ -1,9 +1,11 @@
 #include <mof/math/vector.hpp>
+#include <mof/math/matrix.hpp>
+#include <mof/math/matrix_tmp.hpp>
 #include <mof/util/multimedia_timer.hpp>
 #include <iostream>
 #include <memory>
 
-const int REPEAT_COUNT = 5000000;
+const int REPEAT_COUNT = 100000000;
 
 namespace 
 {
@@ -19,44 +21,66 @@ namespace
                }
        };
 //}}}
+//{{{ raw_type16
+       class raw_type16
+       {
+               float data[16];
+       };
+//}}}
+//{{{ raw_type3
+       class raw_type3
+       {
+               float data[3];
+       };
+//}}}
+       mof::math::vector2 unused1;// block compile optimation
+       mof::math::vector3 unused2;// block compile optimation
+       mof::math::matrix2 unused3;// block compile optimation
+       mof::math::matrix3 unused4;// block compile optimation
+       raw_type3 unused6;
+       raw_type16 unused7;
+       shared_type unused5;       // block compile optimation
+//{{{ copy_test
+       template <typename T>
+       int copy_test(T& unused) {
+               using namespace mof::util;
+               T v;
+               multimedia_timer timer;
+               for (int i = 0; i < REPEAT_COUNT; i++) unused = v;
+               return timer.get_time_in_micro_sec();
+       }
+//}}}
 }
 
 int main()
 {
        using namespace std;
        using namespace mof::math;
-       using namespace mof::util;
 
        cout << "***copy performance test***" << endl;
-       {
-               cout << "vector2 --- " ;
-               vector2 v, w;
-               multimedia_timer timer;
-               for (int i = 0; i < REPEAT_COUNT; i++) {
-                       v = w;
-               }
-               cout  <<  timer.get_time_in_micro_sec() << endl;
-       }
+       cout << REPEAT_COUNT << " times repeating" << endl;
+       
+       cout << "vector2 --- " ;
+       cout << copy_test<vector2>(unused1) << "[micro sec]" << endl;
+       
+       cout << "vector3 --- " ;
+       cout << copy_test<vector3>(unused2) << "[micro sec]" << endl;
+       
+       cout << "matrix2 --- " ;
+       cout << copy_test<matrix2>(unused3) << "[micro sec]" << endl;
 
-       {
-               cout << "vector3 --- " ;
-               vector3 v, w;
-               multimedia_timer timer;
-               for (int i = 0; i < REPEAT_COUNT; i++) {
-                       v = w;
-               }
-               cout  <<  timer.get_time_in_micro_sec() << endl;
-       }
+       cout << "matrix3 --- " ;
+       cout << copy_test<matrix3>(unused4) << "[micro sec]" << endl;
+
+       cout << "raw type3 --- " ;
+       cout << copy_test<raw_type3>(unused6) << "[micro sec]" << endl;
+       
+       cout << "raw type16 --- " ;
+       cout << copy_test<raw_type16>(unused7) << "[micro sec]" << endl;
+
+       cout << "shared type --- " ;
+       cout << copy_test<shared_type>(unused5) << "[micro sec]" << endl;
        
-       {
-               cout << "shared_ptr object --- " ;
-               shared_type v, w;
-               multimedia_timer timer;
-               for (int i = 0; i < REPEAT_COUNT; i++) {
-                       v = w;
-               }
-               cout  <<  timer.get_time_in_micro_sec() << endl;
-       }
 
 
        return 0;
index 8206480..39c5004 100644 (file)
@@ -44,6 +44,8 @@ SET(CMAKE_MAKEFILE_PRODUCTS
 # Dependency information for all targets:
 SET(CMAKE_DEPEND_INFO_FILES
   "mof/util/CMakeFiles/mofutil.dir/DependInfo.cmake"
+  "mof/math/CMakeFiles/matrix2_test.dir/DependInfo.cmake"
+  "mof/math/CMakeFiles/matrix3_test.dir/DependInfo.cmake"
   "mof/math/CMakeFiles/mofmath.dir/DependInfo.cmake"
   "mof/math/CMakeFiles/vector2_test.dir/DependInfo.cmake"
   "mof/math/CMakeFiles/vector3_test.dir/DependInfo.cmake"
index 7d5e1c1..d8c8f18 100644 (file)
@@ -86,7 +86,7 @@ mof/util/preinstall:
 mof/util/CMakeFiles/mofutil.dir/all:
        $(MAKE) -f mof/util/CMakeFiles/mofutil.dir/build.make mof/util/CMakeFiles/mofutil.dir/depend
        $(MAKE) -f mof/util/CMakeFiles/mofutil.dir/build.make mof/util/CMakeFiles/mofutil.dir/build
-       $(CMAKE_COMMAND) -E cmake_progress_report /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles  2
+       $(CMAKE_COMMAND) -E cmake_progress_report /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles  4
        @echo "Built target mofutil"
 .PHONY : mof/util/CMakeFiles/mofutil.dir/all
 
@@ -118,12 +118,16 @@ clean: mof/util/CMakeFiles/mofutil.dir/clean
 # Directory level rules for directory mof/math
 
 # Convenience name for "all" pass in the directory.
+mof/math/all: mof/math/CMakeFiles/matrix2_test.dir/all
+mof/math/all: mof/math/CMakeFiles/matrix3_test.dir/all
 mof/math/all: mof/math/CMakeFiles/mofmath.dir/all
 mof/math/all: mof/math/CMakeFiles/vector2_test.dir/all
 mof/math/all: mof/math/CMakeFiles/vector3_test.dir/all
 .PHONY : mof/math/all
 
 # Convenience name for "clean" pass in the directory.
+mof/math/clean: mof/math/CMakeFiles/matrix2_test.dir/clean
+mof/math/clean: mof/math/CMakeFiles/matrix3_test.dir/clean
 mof/math/clean: mof/math/CMakeFiles/mofmath.dir/clean
 mof/math/clean: mof/math/CMakeFiles/vector2_test.dir/clean
 mof/math/clean: mof/math/CMakeFiles/vector3_test.dir/clean
@@ -134,13 +138,83 @@ mof/math/preinstall:
 .PHONY : mof/math/preinstall
 
 #=============================================================================
+# Target rules for target mof/math/CMakeFiles/matrix2_test.dir
+
+# All Build rule for target.
+mof/math/CMakeFiles/matrix2_test.dir/all: mof/math/CMakeFiles/mofmath.dir/all
+       $(MAKE) -f mof/math/CMakeFiles/matrix2_test.dir/build.make mof/math/CMakeFiles/matrix2_test.dir/depend
+       $(MAKE) -f mof/math/CMakeFiles/matrix2_test.dir/build.make mof/math/CMakeFiles/matrix2_test.dir/build
+       $(CMAKE_COMMAND) -E cmake_progress_report /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles  1
+       @echo "Built target matrix2_test"
+.PHONY : mof/math/CMakeFiles/matrix2_test.dir/all
+
+# Include target in all.
+all: mof/math/CMakeFiles/matrix2_test.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+mof/math/CMakeFiles/matrix2_test.dir/rule: cmake_check_build_system
+       $(CMAKE_COMMAND) -E cmake_progress_start /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles 2
+       $(MAKE) -f CMakeFiles/Makefile2 mof/math/CMakeFiles/matrix2_test.dir/all
+       $(CMAKE_COMMAND) -E cmake_progress_start /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles 0
+.PHONY : mof/math/CMakeFiles/matrix2_test.dir/rule
+
+# Convenience name for target.
+matrix2_test: mof/math/CMakeFiles/matrix2_test.dir/rule
+.PHONY : matrix2_test
+
+# clean rule for target.
+mof/math/CMakeFiles/matrix2_test.dir/clean:
+       $(MAKE) -f mof/math/CMakeFiles/matrix2_test.dir/build.make mof/math/CMakeFiles/matrix2_test.dir/clean
+.PHONY : mof/math/CMakeFiles/matrix2_test.dir/clean
+
+# clean rule for target.
+clean: mof/math/CMakeFiles/matrix2_test.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Target rules for target mof/math/CMakeFiles/matrix3_test.dir
+
+# All Build rule for target.
+mof/math/CMakeFiles/matrix3_test.dir/all: mof/math/CMakeFiles/mofmath.dir/all
+       $(MAKE) -f mof/math/CMakeFiles/matrix3_test.dir/build.make mof/math/CMakeFiles/matrix3_test.dir/depend
+       $(MAKE) -f mof/math/CMakeFiles/matrix3_test.dir/build.make mof/math/CMakeFiles/matrix3_test.dir/build
+       $(CMAKE_COMMAND) -E cmake_progress_report /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles  2
+       @echo "Built target matrix3_test"
+.PHONY : mof/math/CMakeFiles/matrix3_test.dir/all
+
+# Include target in all.
+all: mof/math/CMakeFiles/matrix3_test.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+mof/math/CMakeFiles/matrix3_test.dir/rule: cmake_check_build_system
+       $(CMAKE_COMMAND) -E cmake_progress_start /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles 2
+       $(MAKE) -f CMakeFiles/Makefile2 mof/math/CMakeFiles/matrix3_test.dir/all
+       $(CMAKE_COMMAND) -E cmake_progress_start /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles 0
+.PHONY : mof/math/CMakeFiles/matrix3_test.dir/rule
+
+# Convenience name for target.
+matrix3_test: mof/math/CMakeFiles/matrix3_test.dir/rule
+.PHONY : matrix3_test
+
+# clean rule for target.
+mof/math/CMakeFiles/matrix3_test.dir/clean:
+       $(MAKE) -f mof/math/CMakeFiles/matrix3_test.dir/build.make mof/math/CMakeFiles/matrix3_test.dir/clean
+.PHONY : mof/math/CMakeFiles/matrix3_test.dir/clean
+
+# clean rule for target.
+clean: mof/math/CMakeFiles/matrix3_test.dir/clean
+.PHONY : clean
+
+#=============================================================================
 # Target rules for target mof/math/CMakeFiles/mofmath.dir
 
 # All Build rule for target.
 mof/math/CMakeFiles/mofmath.dir/all:
        $(MAKE) -f mof/math/CMakeFiles/mofmath.dir/build.make mof/math/CMakeFiles/mofmath.dir/depend
        $(MAKE) -f mof/math/CMakeFiles/mofmath.dir/build.make mof/math/CMakeFiles/mofmath.dir/build
-       $(CMAKE_COMMAND) -E cmake_progress_report /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles  1
+       $(CMAKE_COMMAND) -E cmake_progress_report /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles  3
        @echo "Built target mofmath"
 .PHONY : mof/math/CMakeFiles/mofmath.dir/all
 
@@ -175,7 +249,7 @@ clean: mof/math/CMakeFiles/mofmath.dir/clean
 mof/math/CMakeFiles/vector2_test.dir/all: mof/math/CMakeFiles/mofmath.dir/all
        $(MAKE) -f mof/math/CMakeFiles/vector2_test.dir/build.make mof/math/CMakeFiles/vector2_test.dir/depend
        $(MAKE) -f mof/math/CMakeFiles/vector2_test.dir/build.make mof/math/CMakeFiles/vector2_test.dir/build
-       $(CMAKE_COMMAND) -E cmake_progress_report /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles  3
+       $(CMAKE_COMMAND) -E cmake_progress_report /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles  5
        @echo "Built target vector2_test"
 .PHONY : mof/math/CMakeFiles/vector2_test.dir/all
 
@@ -210,7 +284,7 @@ clean: mof/math/CMakeFiles/vector2_test.dir/clean
 mof/math/CMakeFiles/vector3_test.dir/all: mof/math/CMakeFiles/mofmath.dir/all
        $(MAKE) -f mof/math/CMakeFiles/vector3_test.dir/build.make mof/math/CMakeFiles/vector3_test.dir/depend
        $(MAKE) -f mof/math/CMakeFiles/vector3_test.dir/build.make mof/math/CMakeFiles/vector3_test.dir/build
-       $(CMAKE_COMMAND) -E cmake_progress_report /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles  4
+       $(CMAKE_COMMAND) -E cmake_progress_report /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles  6
        @echo "Built target vector3_test"
 .PHONY : mof/math/CMakeFiles/vector3_test.dir/all
 
index 115dd90..e9cb501 100644 (file)
@@ -1,3 +1,5 @@
+/home/yasutomo/devel/moflib/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir
+/home/yasutomo/devel/moflib/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir
 /home/yasutomo/devel/moflib/src/build_unix/mof/math/CMakeFiles/mofmath.dir
 /home/yasutomo/devel/moflib/src/build_unix/mof/util/CMakeFiles/mofutil.dir
 /home/yasutomo/devel/moflib/src/build_unix/mof/math/CMakeFiles/vector2_test.dir
index c761308..13f51b3 100644 (file)
@@ -160,6 +160,32 @@ mofutil/fast:
 .PHONY : mofutil/fast
 
 #=============================================================================
+# Target rules for targets named matrix2_test
+
+# Build rule for target.
+matrix2_test: cmake_check_build_system
+       $(MAKE) -f CMakeFiles/Makefile2 matrix2_test
+.PHONY : matrix2_test
+
+# fast build rule for target.
+matrix2_test/fast:
+       $(MAKE) -f mof/math/CMakeFiles/matrix2_test.dir/build.make mof/math/CMakeFiles/matrix2_test.dir/build
+.PHONY : matrix2_test/fast
+
+#=============================================================================
+# Target rules for targets named matrix3_test
+
+# Build rule for target.
+matrix3_test: cmake_check_build_system
+       $(MAKE) -f CMakeFiles/Makefile2 matrix3_test
+.PHONY : matrix3_test
+
+# fast build rule for target.
+matrix3_test/fast:
+       $(MAKE) -f mof/math/CMakeFiles/matrix3_test.dir/build.make mof/math/CMakeFiles/matrix3_test.dir/build
+.PHONY : matrix3_test/fast
+
+#=============================================================================
 # Target rules for targets named mofmath
 
 # Build rule for target.
@@ -212,6 +238,8 @@ help:
        @echo "... rebuild_cache"
        @echo "... test"
        @echo "... mofutil"
+       @echo "... matrix2_test"
+       @echo "... matrix3_test"
        @echo "... mofmath"
        @echo "... vector2_test"
        @echo "... vector3_test"
diff --git a/src/build_unix/Testing/Temporary/CTestCostData.txt b/src/build_unix/Testing/Temporary/CTestCostData.txt
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/build_unix/Testing/Temporary/LastTest.log b/src/build_unix/Testing/Temporary/LastTest.log
new file mode 100644 (file)
index 0000000..cb862a8
--- /dev/null
@@ -0,0 +1,73 @@
+Start testing: Aug 17 13:29 PDT
+----------------------------------------------------------
+1/4 Testing: vector2_test
+1/4 Test: vector2_test
+Command: "/home/yasutomo/devel/moflib/src/mof/math/test/testbin/vector2_test"
+Directory: /home/yasutomo/devel/moflib/src/build_unix/mof/math
+"vector2_test" start time: Aug 17 13:29 PDT
+Output:
+----------------------------------------------------------
+<end of output>
+Test time =   0.00 sec
+----------------------------------------------------------
+Test Passed.
+"vector2_test" end time: Aug 17 13:29 PDT
+"vector2_test" time elapsed: 00:00:00
+----------------------------------------------------------
+
+2/4 Testing: vector3_test
+2/4 Test: vector3_test
+Command: "/home/yasutomo/devel/moflib/src/mof/math/test/testbin/vector3_test"
+Directory: /home/yasutomo/devel/moflib/src/build_unix/mof/math
+"vector3_test" start time: Aug 17 13:29 PDT
+Output:
+----------------------------------------------------------
+<end of output>
+Test time =   0.00 sec
+----------------------------------------------------------
+Test Passed.
+"vector3_test" end time: Aug 17 13:29 PDT
+"vector3_test" time elapsed: 00:00:00
+----------------------------------------------------------
+
+3/4 Testing: matrix2_test
+3/4 Test: matrix2_test
+Command: "/home/yasutomo/devel/moflib/src/mof/math/test/testbin/matrix2_test"
+Directory: /home/yasutomo/devel/moflib/src/build_unix/mof/math
+"matrix2_test" start time: Aug 17 13:29 PDT
+Output:
+----------------------------------------------------------
+1
+
+1, 2, 3
+4, 5, 6
+7, 8, 1
+<end of output>
+Test time =   0.00 sec
+----------------------------------------------------------
+Test Passed.
+"matrix2_test" end time: Aug 17 13:29 PDT
+"matrix2_test" time elapsed: 00:00:00
+----------------------------------------------------------
+
+4/4 Testing: matrix3_test
+4/4 Test: matrix3_test
+Command: "/home/yasutomo/devel/moflib/src/mof/math/test/testbin/matrix3_test"
+Directory: /home/yasutomo/devel/moflib/src/build_unix/mof/math
+"matrix3_test" start time: Aug 17 13:29 PDT
+Output:
+----------------------------------------------------------
+
+1, 2, 3, 4
+5, 6, 7, 8
+9, 10, 11, 12
+13, 14, 15, 1
+<end of output>
+Test time =   0.00 sec
+----------------------------------------------------------
+Test Passed.
+"matrix3_test" end time: Aug 17 13:29 PDT
+"matrix3_test" time elapsed: 00:00:00
+----------------------------------------------------------
+
+End testing: Aug 17 13:29 PDT
diff --git a/src/build_unix/Testing/Temporary/LastTestsFailed.log b/src/build_unix/Testing/Temporary/LastTestsFailed.log
new file mode 100644 (file)
index 0000000..dfe0e8c
--- /dev/null
@@ -0,0 +1 @@
+4:matrix3_test
index 6322ee4..cf67d73 100644 (file)
@@ -2,7 +2,11 @@
 /home/yasutomo/devel/moflib/src/../include/mof/base/tstring.hpp
 /home/yasutomo/devel/moflib/src/../include/mof/util/multimedia_timer.hpp
 /home/yasutomo/devel/moflib/src/../include/mof/util/foreach.hpp
+/home/yasutomo/devel/moflib/src/../include/mof/math/matrix3.hpp
+/home/yasutomo/devel/moflib/src/../include/mof/math/matrix.hpp
 /home/yasutomo/devel/moflib/src/../include/mof/math/basic_vector.hpp
 /home/yasutomo/devel/moflib/src/../include/mof/math/vector3.hpp
+/home/yasutomo/devel/moflib/src/../include/mof/math/basic_matrix.hpp
+/home/yasutomo/devel/moflib/src/../include/mof/math/matrix2.hpp
 /home/yasutomo/devel/moflib/src/../include/mof/math/vector.hpp
 /home/yasutomo/devel/moflib/src/../include/mof/math/vector2.hpp
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/CXX.includecache b/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/CXX.includecache
new file mode 100644 (file)
index 0000000..a19543f
--- /dev/null
@@ -0,0 +1,40 @@
+#IncludeRegexLine: ^[  ]*#[    ]*(include|import)[     ]*[<"]([^">]+)([">])
+
+#IncludeRegexScan: ^.*$
+
+#IncludeRegexComplain: ^$
+
+#IncludeRegexTransform: 
+
+../mof/base/mofdef.hpp
+cstddef
+-
+mof/base/tstring.hpp
+-
+
+../mof/base/tstring.hpp
+string
+-
+tchar.h
+-
+
+../mof/math/basic_matrix.hpp
+mof/base/mofdef.hpp
+-
+boost/operators.hpp
+-
+ostream
+-
+
+../mof/math/matrix2.hpp
+mof/math/basic_matrix.hpp
+-
+
+/home/yasutomo/devel/moflib/src/mof/math/test/matrix2_test.cpp
+mof/math/matrix2.hpp
+-
+iostream
+-
+sstream
+-
+
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/DependInfo.cmake b/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/DependInfo.cmake
new file mode 100644 (file)
index 0000000..0739194
--- /dev/null
@@ -0,0 +1,14 @@
+# The set of languages for which implicit dependencies are needed:
+SET(CMAKE_DEPENDS_LANGUAGES
+  "CXX"
+  )
+# The set of files for implicit dependencies of each language:
+SET(CMAKE_DEPENDS_CHECK_CXX
+  "/home/yasutomo/devel/moflib/src/mof/math/test/matrix2_test.cpp" "/home/yasutomo/devel/moflib/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o"
+  )
+SET(CMAKE_CXX_COMPILER_ID "GNU")
+
+# Targets to which this target links.
+SET(CMAKE_TARGET_LINKED_INFO_FILES
+  "/home/yasutomo/devel/moflib/src/build_unix/mof/math/CMakeFiles/mofmath.dir/DependInfo.cmake"
+  )
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/build.make b/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/build.make
new file mode 100644 (file)
index 0000000..b4b8ee5
--- /dev/null
@@ -0,0 +1,101 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canoncical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/yasutomo/devel/moflib/src
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/yasutomo/devel/moflib/src/build_unix
+
+# Include any dependencies generated for this target.
+include mof/math/CMakeFiles/matrix2_test.dir/depend.make
+
+# Include the progress variables for this target.
+include mof/math/CMakeFiles/matrix2_test.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include mof/math/CMakeFiles/matrix2_test.dir/flags.make
+
+mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o: mof/math/CMakeFiles/matrix2_test.dir/flags.make
+mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o: ../mof/math/test/matrix2_test.cpp
+       $(CMAKE_COMMAND) -E cmake_progress_report /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles $(CMAKE_PROGRESS_1)
+       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o"
+       cd /home/yasutomo/devel/moflib/src/build_unix/mof/math && /usr/bin/c++   $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o -c /home/yasutomo/devel/moflib/src/mof/math/test/matrix2_test.cpp
+
+mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.i: cmake_force
+       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.i"
+       cd /home/yasutomo/devel/moflib/src/build_unix/mof/math && /usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -E /home/yasutomo/devel/moflib/src/mof/math/test/matrix2_test.cpp > CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.i
+
+mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.s: cmake_force
+       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.s"
+       cd /home/yasutomo/devel/moflib/src/build_unix/mof/math && /usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -S /home/yasutomo/devel/moflib/src/mof/math/test/matrix2_test.cpp -o CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.s
+
+mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o.requires:
+.PHONY : mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o.requires
+
+mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o.provides: mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o.requires
+       $(MAKE) -f mof/math/CMakeFiles/matrix2_test.dir/build.make mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o.provides.build
+.PHONY : mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o.provides
+
+mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o.provides.build: mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o
+.PHONY : mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o.provides.build
+
+# Object files for target matrix2_test
+matrix2_test_OBJECTS = \
+"CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o"
+
+# External object files for target matrix2_test
+matrix2_test_EXTERNAL_OBJECTS =
+
+../mof/math/test/testbin/matrix2_test: mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o
+../mof/math/test/testbin/matrix2_test: /home/yasutomo/devel/moflib/lib/libmofmath.a
+../mof/math/test/testbin/matrix2_test: mof/math/CMakeFiles/matrix2_test.dir/build.make
+../mof/math/test/testbin/matrix2_test: mof/math/CMakeFiles/matrix2_test.dir/link.txt
+       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX executable ../../../mof/math/test/testbin/matrix2_test"
+       cd /home/yasutomo/devel/moflib/src/build_unix/mof/math && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/matrix2_test.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+mof/math/CMakeFiles/matrix2_test.dir/build: ../mof/math/test/testbin/matrix2_test
+.PHONY : mof/math/CMakeFiles/matrix2_test.dir/build
+
+mof/math/CMakeFiles/matrix2_test.dir/requires: mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o.requires
+.PHONY : mof/math/CMakeFiles/matrix2_test.dir/requires
+
+mof/math/CMakeFiles/matrix2_test.dir/clean:
+       cd /home/yasutomo/devel/moflib/src/build_unix/mof/math && $(CMAKE_COMMAND) -P CMakeFiles/matrix2_test.dir/cmake_clean.cmake
+.PHONY : mof/math/CMakeFiles/matrix2_test.dir/clean
+
+mof/math/CMakeFiles/matrix2_test.dir/depend:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/yasutomo/devel/moflib/src /home/yasutomo/devel/moflib/src/mof/math /home/yasutomo/devel/moflib/src/build_unix /home/yasutomo/devel/moflib/src/build_unix/mof/math /home/yasutomo/devel/moflib/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/DependInfo.cmake --color=$(COLOR)
+.PHONY : mof/math/CMakeFiles/matrix2_test.dir/depend
+
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/cmake_clean.cmake b/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/cmake_clean.cmake
new file mode 100644 (file)
index 0000000..858fec8
--- /dev/null
@@ -0,0 +1,10 @@
+FILE(REMOVE_RECURSE
+  "CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o"
+  "../../../mof/math/test/testbin/matrix2_test.pdb"
+  "../../../mof/math/test/testbin/matrix2_test"
+)
+
+# Per-language clean rules from dependency scanning.
+FOREACH(lang CXX)
+  INCLUDE(CMakeFiles/matrix2_test.dir/cmake_clean_${lang}.cmake OPTIONAL)
+ENDFOREACH(lang)
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/depend.internal b/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/depend.internal
new file mode 100644 (file)
index 0000000..3ec6236
--- /dev/null
@@ -0,0 +1,9 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o
+ ../mof/base/mofdef.hpp
+ ../mof/base/tstring.hpp
+ ../mof/math/basic_matrix.hpp
+ ../mof/math/matrix2.hpp
+ /home/yasutomo/devel/moflib/src/mof/math/test/matrix2_test.cpp
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/depend.make b/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/depend.make
new file mode 100644 (file)
index 0000000..bed728c
--- /dev/null
@@ -0,0 +1,9 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o: ../mof/base/mofdef.hpp
+mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o: ../mof/base/tstring.hpp
+mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o: ../mof/math/basic_matrix.hpp
+mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o: ../mof/math/matrix2.hpp
+mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o: ../mof/math/test/matrix2_test.cpp
+
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/flags.make b/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/flags.make
new file mode 100644 (file)
index 0000000..4644440
--- /dev/null
@@ -0,0 +1,8 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# compile CXX with /usr/bin/c++
+CXX_FLAGS = -Wall -Werror -g -DPSTSDK_VALIDATION_LEVEL_FULL -std=c++0x -I/home/yasutomo/devel/moflib/src -I/home/yasutomo/devel/moflib/src/mof/math/BOOST_INCLUDE_DIR  
+
+CXX_DEFINES = 
+
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/link.txt b/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/link.txt
new file mode 100644 (file)
index 0000000..7a76b85
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/c++   -Wall -Werror -g -DPSTSDK_VALIDATION_LEVEL_FULL -std=c++0x   CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o  -o ../../../mof/math/test/testbin/matrix2_test -rdynamic -L/home/yasutomo/devel/moflib/src/../lib /home/yasutomo/devel/moflib/lib/libmofmath.a -Wl,-rpath,/home/yasutomo/devel/moflib/src/../lib 
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/progress.make b/src/build_unix/mof/math/CMakeFiles/matrix2_test.dir/progress.make
new file mode 100644 (file)
index 0000000..781c7de
--- /dev/null
@@ -0,0 +1,2 @@
+CMAKE_PROGRESS_1 = 1
+
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/CXX.includecache b/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/CXX.includecache
new file mode 100644 (file)
index 0000000..6f9fa24
--- /dev/null
@@ -0,0 +1,40 @@
+#IncludeRegexLine: ^[  ]*#[    ]*(include|import)[     ]*[<"]([^">]+)([">])
+
+#IncludeRegexScan: ^.*$
+
+#IncludeRegexComplain: ^$
+
+#IncludeRegexTransform: 
+
+../mof/base/mofdef.hpp
+cstddef
+-
+mof/base/tstring.hpp
+-
+
+../mof/base/tstring.hpp
+string
+-
+tchar.h
+-
+
+../mof/math/basic_matrix.hpp
+mof/base/mofdef.hpp
+-
+boost/operators.hpp
+-
+ostream
+-
+
+../mof/math/matrix3.hpp
+mof/math/basic_matrix.hpp
+-
+
+/home/yasutomo/devel/moflib/src/mof/math/test/matrix3_test.cpp
+mof/math/matrix3.hpp
+-
+iostream
+-
+sstream
+-
+
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/DependInfo.cmake b/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/DependInfo.cmake
new file mode 100644 (file)
index 0000000..0249fa8
--- /dev/null
@@ -0,0 +1,14 @@
+# The set of languages for which implicit dependencies are needed:
+SET(CMAKE_DEPENDS_LANGUAGES
+  "CXX"
+  )
+# The set of files for implicit dependencies of each language:
+SET(CMAKE_DEPENDS_CHECK_CXX
+  "/home/yasutomo/devel/moflib/src/mof/math/test/matrix3_test.cpp" "/home/yasutomo/devel/moflib/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o"
+  )
+SET(CMAKE_CXX_COMPILER_ID "GNU")
+
+# Targets to which this target links.
+SET(CMAKE_TARGET_LINKED_INFO_FILES
+  "/home/yasutomo/devel/moflib/src/build_unix/mof/math/CMakeFiles/mofmath.dir/DependInfo.cmake"
+  )
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/build.make b/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/build.make
new file mode 100644 (file)
index 0000000..0bf4236
--- /dev/null
@@ -0,0 +1,101 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canoncical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/yasutomo/devel/moflib/src
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/yasutomo/devel/moflib/src/build_unix
+
+# Include any dependencies generated for this target.
+include mof/math/CMakeFiles/matrix3_test.dir/depend.make
+
+# Include the progress variables for this target.
+include mof/math/CMakeFiles/matrix3_test.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include mof/math/CMakeFiles/matrix3_test.dir/flags.make
+
+mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o: mof/math/CMakeFiles/matrix3_test.dir/flags.make
+mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o: ../mof/math/test/matrix3_test.cpp
+       $(CMAKE_COMMAND) -E cmake_progress_report /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles $(CMAKE_PROGRESS_1)
+       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o"
+       cd /home/yasutomo/devel/moflib/src/build_unix/mof/math && /usr/bin/c++   $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o -c /home/yasutomo/devel/moflib/src/mof/math/test/matrix3_test.cpp
+
+mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.i: cmake_force
+       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.i"
+       cd /home/yasutomo/devel/moflib/src/build_unix/mof/math && /usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -E /home/yasutomo/devel/moflib/src/mof/math/test/matrix3_test.cpp > CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.i
+
+mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.s: cmake_force
+       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.s"
+       cd /home/yasutomo/devel/moflib/src/build_unix/mof/math && /usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -S /home/yasutomo/devel/moflib/src/mof/math/test/matrix3_test.cpp -o CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.s
+
+mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o.requires:
+.PHONY : mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o.requires
+
+mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o.provides: mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o.requires
+       $(MAKE) -f mof/math/CMakeFiles/matrix3_test.dir/build.make mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o.provides.build
+.PHONY : mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o.provides
+
+mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o.provides.build: mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o
+.PHONY : mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o.provides.build
+
+# Object files for target matrix3_test
+matrix3_test_OBJECTS = \
+"CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o"
+
+# External object files for target matrix3_test
+matrix3_test_EXTERNAL_OBJECTS =
+
+../mof/math/test/testbin/matrix3_test: mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o
+../mof/math/test/testbin/matrix3_test: /home/yasutomo/devel/moflib/lib/libmofmath.a
+../mof/math/test/testbin/matrix3_test: mof/math/CMakeFiles/matrix3_test.dir/build.make
+../mof/math/test/testbin/matrix3_test: mof/math/CMakeFiles/matrix3_test.dir/link.txt
+       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX executable ../../../mof/math/test/testbin/matrix3_test"
+       cd /home/yasutomo/devel/moflib/src/build_unix/mof/math && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/matrix3_test.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+mof/math/CMakeFiles/matrix3_test.dir/build: ../mof/math/test/testbin/matrix3_test
+.PHONY : mof/math/CMakeFiles/matrix3_test.dir/build
+
+mof/math/CMakeFiles/matrix3_test.dir/requires: mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o.requires
+.PHONY : mof/math/CMakeFiles/matrix3_test.dir/requires
+
+mof/math/CMakeFiles/matrix3_test.dir/clean:
+       cd /home/yasutomo/devel/moflib/src/build_unix/mof/math && $(CMAKE_COMMAND) -P CMakeFiles/matrix3_test.dir/cmake_clean.cmake
+.PHONY : mof/math/CMakeFiles/matrix3_test.dir/clean
+
+mof/math/CMakeFiles/matrix3_test.dir/depend:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/yasutomo/devel/moflib/src /home/yasutomo/devel/moflib/src/mof/math /home/yasutomo/devel/moflib/src/build_unix /home/yasutomo/devel/moflib/src/build_unix/mof/math /home/yasutomo/devel/moflib/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/DependInfo.cmake --color=$(COLOR)
+.PHONY : mof/math/CMakeFiles/matrix3_test.dir/depend
+
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/cmake_clean.cmake b/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/cmake_clean.cmake
new file mode 100644 (file)
index 0000000..b276253
--- /dev/null
@@ -0,0 +1,10 @@
+FILE(REMOVE_RECURSE
+  "CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o"
+  "../../../mof/math/test/testbin/matrix3_test.pdb"
+  "../../../mof/math/test/testbin/matrix3_test"
+)
+
+# Per-language clean rules from dependency scanning.
+FOREACH(lang CXX)
+  INCLUDE(CMakeFiles/matrix3_test.dir/cmake_clean_${lang}.cmake OPTIONAL)
+ENDFOREACH(lang)
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/depend.internal b/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/depend.internal
new file mode 100644 (file)
index 0000000..8fb24ac
--- /dev/null
@@ -0,0 +1,9 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o
+ ../mof/base/mofdef.hpp
+ ../mof/base/tstring.hpp
+ ../mof/math/basic_matrix.hpp
+ ../mof/math/matrix3.hpp
+ /home/yasutomo/devel/moflib/src/mof/math/test/matrix3_test.cpp
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/depend.make b/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/depend.make
new file mode 100644 (file)
index 0000000..262554f
--- /dev/null
@@ -0,0 +1,9 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o: ../mof/base/mofdef.hpp
+mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o: ../mof/base/tstring.hpp
+mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o: ../mof/math/basic_matrix.hpp
+mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o: ../mof/math/matrix3.hpp
+mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o: ../mof/math/test/matrix3_test.cpp
+
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/flags.make b/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/flags.make
new file mode 100644 (file)
index 0000000..4644440
--- /dev/null
@@ -0,0 +1,8 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# compile CXX with /usr/bin/c++
+CXX_FLAGS = -Wall -Werror -g -DPSTSDK_VALIDATION_LEVEL_FULL -std=c++0x -I/home/yasutomo/devel/moflib/src -I/home/yasutomo/devel/moflib/src/mof/math/BOOST_INCLUDE_DIR  
+
+CXX_DEFINES = 
+
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/link.txt b/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/link.txt
new file mode 100644 (file)
index 0000000..da0b6b2
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/c++   -Wall -Werror -g -DPSTSDK_VALIDATION_LEVEL_FULL -std=c++0x   CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o  -o ../../../mof/math/test/testbin/matrix3_test -rdynamic -L/home/yasutomo/devel/moflib/src/../lib /home/yasutomo/devel/moflib/lib/libmofmath.a -Wl,-rpath,/home/yasutomo/devel/moflib/src/../lib 
diff --git a/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/progress.make b/src/build_unix/mof/math/CMakeFiles/matrix3_test.dir/progress.make
new file mode 100644 (file)
index 0000000..164e1d2
--- /dev/null
@@ -0,0 +1,2 @@
+CMAKE_PROGRESS_1 = 2
+
index ab03395..58d07d0 100644 (file)
@@ -6,3 +6,5 @@
 # testing this directory and lists subdirectories to be tested as well.
 ADD_TEST(vector2_test "/home/yasutomo/devel/moflib/src/mof/math/test/testbin/vector2_test")
 ADD_TEST(vector3_test "/home/yasutomo/devel/moflib/src/mof/math/test/testbin/vector3_test")
+ADD_TEST(matrix2_test "/home/yasutomo/devel/moflib/src/mof/math/test/testbin/matrix2_test")
+ADD_TEST(matrix3_test "/home/yasutomo/devel/moflib/src/mof/math/test/testbin/matrix3_test")
index de348d6..03c309b 100644 (file)
@@ -147,6 +147,34 @@ depend:
 .PHONY : depend
 
 # Convenience name for target.
+mof/math/CMakeFiles/matrix2_test.dir/rule:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f CMakeFiles/Makefile2 mof/math/CMakeFiles/matrix2_test.dir/rule
+.PHONY : mof/math/CMakeFiles/matrix2_test.dir/rule
+
+# Convenience name for target.
+matrix2_test: mof/math/CMakeFiles/matrix2_test.dir/rule
+.PHONY : matrix2_test
+
+# fast build rule for target.
+matrix2_test/fast:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/math/CMakeFiles/matrix2_test.dir/build.make mof/math/CMakeFiles/matrix2_test.dir/build
+.PHONY : matrix2_test/fast
+
+# Convenience name for target.
+mof/math/CMakeFiles/matrix3_test.dir/rule:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f CMakeFiles/Makefile2 mof/math/CMakeFiles/matrix3_test.dir/rule
+.PHONY : mof/math/CMakeFiles/matrix3_test.dir/rule
+
+# Convenience name for target.
+matrix3_test: mof/math/CMakeFiles/matrix3_test.dir/rule
+.PHONY : matrix3_test
+
+# fast build rule for target.
+matrix3_test/fast:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/math/CMakeFiles/matrix3_test.dir/build.make mof/math/CMakeFiles/matrix3_test.dir/build
+.PHONY : matrix3_test/fast
+
+# Convenience name for target.
 mof/math/CMakeFiles/mofmath.dir/rule:
        cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f CMakeFiles/Makefile2 mof/math/CMakeFiles/mofmath.dir/rule
 .PHONY : mof/math/CMakeFiles/mofmath.dir/rule
@@ -212,6 +240,54 @@ dummy.cpp.s:
        cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/math/CMakeFiles/mofmath.dir/build.make mof/math/CMakeFiles/mofmath.dir/dummy.cpp.s
 .PHONY : dummy.cpp.s
 
+test/matrix2_test.o: test/matrix2_test.cpp.o
+.PHONY : test/matrix2_test.o
+
+# target to build an object file
+test/matrix2_test.cpp.o:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/math/CMakeFiles/matrix2_test.dir/build.make mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.o
+.PHONY : test/matrix2_test.cpp.o
+
+test/matrix2_test.i: test/matrix2_test.cpp.i
+.PHONY : test/matrix2_test.i
+
+# target to preprocess a source file
+test/matrix2_test.cpp.i:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/math/CMakeFiles/matrix2_test.dir/build.make mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.i
+.PHONY : test/matrix2_test.cpp.i
+
+test/matrix2_test.s: test/matrix2_test.cpp.s
+.PHONY : test/matrix2_test.s
+
+# target to generate assembly for a file
+test/matrix2_test.cpp.s:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/math/CMakeFiles/matrix2_test.dir/build.make mof/math/CMakeFiles/matrix2_test.dir/test/matrix2_test.cpp.s
+.PHONY : test/matrix2_test.cpp.s
+
+test/matrix3_test.o: test/matrix3_test.cpp.o
+.PHONY : test/matrix3_test.o
+
+# target to build an object file
+test/matrix3_test.cpp.o:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/math/CMakeFiles/matrix3_test.dir/build.make mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.o
+.PHONY : test/matrix3_test.cpp.o
+
+test/matrix3_test.i: test/matrix3_test.cpp.i
+.PHONY : test/matrix3_test.i
+
+# target to preprocess a source file
+test/matrix3_test.cpp.i:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/math/CMakeFiles/matrix3_test.dir/build.make mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.i
+.PHONY : test/matrix3_test.cpp.i
+
+test/matrix3_test.s: test/matrix3_test.cpp.s
+.PHONY : test/matrix3_test.s
+
+# target to generate assembly for a file
+test/matrix3_test.cpp.s:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/math/CMakeFiles/matrix3_test.dir/build.make mof/math/CMakeFiles/matrix3_test.dir/test/matrix3_test.cpp.s
+.PHONY : test/matrix3_test.cpp.s
+
 test/vector2_test.o: test/vector2_test.cpp.o
 .PHONY : test/vector2_test.o
 
@@ -271,6 +347,8 @@ help:
        @echo "... install/local"
        @echo "... install/strip"
        @echo "... list_install_components"
+       @echo "... matrix2_test"
+       @echo "... matrix3_test"
        @echo "... mofmath"
        @echo "... rebuild_cache"
        @echo "... test"
@@ -279,6 +357,12 @@ help:
        @echo "... dummy.o"
        @echo "... dummy.i"
        @echo "... dummy.s"
+       @echo "... test/matrix2_test.o"
+       @echo "... test/matrix2_test.i"
+       @echo "... test/matrix2_test.s"
+       @echo "... test/matrix3_test.o"
+       @echo "... test/matrix3_test.i"
+       @echo "... test/matrix3_test.s"
        @echo "... test/vector2_test.o"
        @echo "... test/vector2_test.i"
        @echo "... test/vector2_test.s"
index 896c15f..7784ae0 100644 (file)
@@ -34,8 +34,12 @@ ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
 
 IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")
   FILE(INSTALL DESTINATION "/home/yasutomo/devel/moflib/src/../include/mof/math" TYPE FILE FILES
+    "/home/yasutomo/devel/moflib/src/mof/math/matrix3.hpp"
+    "/home/yasutomo/devel/moflib/src/mof/math/matrix.hpp"
     "/home/yasutomo/devel/moflib/src/mof/math/basic_vector.hpp"
     "/home/yasutomo/devel/moflib/src/mof/math/vector3.hpp"
+    "/home/yasutomo/devel/moflib/src/mof/math/basic_matrix.hpp"
+    "/home/yasutomo/devel/moflib/src/mof/math/matrix2.hpp"
     "/home/yasutomo/devel/moflib/src/mof/math/vector.hpp"
     "/home/yasutomo/devel/moflib/src/mof/math/vector2.hpp"
     )
index 9ff9e6f..c36625e 100644 (file)
@@ -12,7 +12,7 @@ memory
 boost/utility.hpp
 -
 
-/home/yasutomo/devel/moflib/src/mof/util/multimedia_timer.cpp
+/home/yasutomo/devel/moflib/src/mof/util/linux/multimedia_timer.cpp
 mof/util/multimedia_timer.hpp
 -
 ctime
index 71834f9..e9e6c9f 100644 (file)
@@ -4,7 +4,7 @@ SET(CMAKE_DEPENDS_LANGUAGES
   )
 # The set of files for implicit dependencies of each language:
 SET(CMAKE_DEPENDS_CHECK_CXX
-  "/home/yasutomo/devel/moflib/src/mof/util/multimedia_timer.cpp" "/home/yasutomo/devel/moflib/src/build_unix/mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o"
+  "/home/yasutomo/devel/moflib/src/mof/util/linux/multimedia_timer.cpp" "/home/yasutomo/devel/moflib/src/build_unix/mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o"
   )
 SET(CMAKE_CXX_COMPILER_ID "GNU")
 
index ec18925..91574fd 100644 (file)
@@ -46,38 +46,38 @@ include mof/util/CMakeFiles/mofutil.dir/progress.make
 # Include the compile flags for this target's objects.
 include mof/util/CMakeFiles/mofutil.dir/flags.make
 
-mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o: mof/util/CMakeFiles/mofutil.dir/flags.make
-mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o: ../mof/util/multimedia_timer.cpp
+mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o: mof/util/CMakeFiles/mofutil.dir/flags.make
+mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o: ../mof/util/linux/multimedia_timer.cpp
        $(CMAKE_COMMAND) -E cmake_progress_report /home/yasutomo/devel/moflib/src/build_unix/CMakeFiles $(CMAKE_PROGRESS_1)
-       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o"
-       cd /home/yasutomo/devel/moflib/src/build_unix/mof/util && /usr/bin/c++   $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/mofutil.dir/multimedia_timer.cpp.o -c /home/yasutomo/devel/moflib/src/mof/util/multimedia_timer.cpp
+       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o"
+       cd /home/yasutomo/devel/moflib/src/build_unix/mof/util && /usr/bin/c++   $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o -c /home/yasutomo/devel/moflib/src/mof/util/linux/multimedia_timer.cpp
 
-mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.i: cmake_force
-       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/mofutil.dir/multimedia_timer.cpp.i"
-       cd /home/yasutomo/devel/moflib/src/build_unix/mof/util && /usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -E /home/yasutomo/devel/moflib/src/mof/util/multimedia_timer.cpp > CMakeFiles/mofutil.dir/multimedia_timer.cpp.i
+mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.i: cmake_force
+       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.i"
+       cd /home/yasutomo/devel/moflib/src/build_unix/mof/util && /usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -E /home/yasutomo/devel/moflib/src/mof/util/linux/multimedia_timer.cpp > CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.i
 
-mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.s: cmake_force
-       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/mofutil.dir/multimedia_timer.cpp.s"
-       cd /home/yasutomo/devel/moflib/src/build_unix/mof/util && /usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -S /home/yasutomo/devel/moflib/src/mof/util/multimedia_timer.cpp -o CMakeFiles/mofutil.dir/multimedia_timer.cpp.s
+mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.s: cmake_force
+       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.s"
+       cd /home/yasutomo/devel/moflib/src/build_unix/mof/util && /usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -S /home/yasutomo/devel/moflib/src/mof/util/linux/multimedia_timer.cpp -o CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.s
 
-mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o.requires:
-.PHONY : mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o.requires
+mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o.requires:
+.PHONY : mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o.requires
 
-mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o.provides: mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o.requires
-       $(MAKE) -f mof/util/CMakeFiles/mofutil.dir/build.make mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o.provides.build
-.PHONY : mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o.provides
+mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o.provides: mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o.requires
+       $(MAKE) -f mof/util/CMakeFiles/mofutil.dir/build.make mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o.provides.build
+.PHONY : mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o.provides
 
-mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o.provides.build: mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o
-.PHONY : mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o.provides.build
+mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o.provides.build: mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o
+.PHONY : mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o.provides.build
 
 # Object files for target mofutil
 mofutil_OBJECTS = \
-"CMakeFiles/mofutil.dir/multimedia_timer.cpp.o"
+"CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o"
 
 # External object files for target mofutil
 mofutil_EXTERNAL_OBJECTS =
 
-/home/yasutomo/devel/moflib/lib/libmofutil.a: mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o
+/home/yasutomo/devel/moflib/lib/libmofutil.a: mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o
 /home/yasutomo/devel/moflib/lib/libmofutil.a: mof/util/CMakeFiles/mofutil.dir/build.make
 /home/yasutomo/devel/moflib/lib/libmofutil.a: mof/util/CMakeFiles/mofutil.dir/link.txt
        @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX static library /home/yasutomo/devel/moflib/lib/libmofutil.a"
@@ -88,7 +88,7 @@ mofutil_EXTERNAL_OBJECTS =
 mof/util/CMakeFiles/mofutil.dir/build: /home/yasutomo/devel/moflib/lib/libmofutil.a
 .PHONY : mof/util/CMakeFiles/mofutil.dir/build
 
-mof/util/CMakeFiles/mofutil.dir/requires: mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o.requires
+mof/util/CMakeFiles/mofutil.dir/requires: mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o.requires
 .PHONY : mof/util/CMakeFiles/mofutil.dir/requires
 
 mof/util/CMakeFiles/mofutil.dir/clean:
index 13eb588..218be0a 100644 (file)
@@ -1,5 +1,5 @@
 FILE(REMOVE_RECURSE
-  "CMakeFiles/mofutil.dir/multimedia_timer.cpp.o"
+  "CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o"
   "/home/yasutomo/devel/moflib/lib/libmofutil.pdb"
   "/home/yasutomo/devel/moflib/lib/libmofutil.a"
 )
index 9cc9f8e..a12dab1 100644 (file)
@@ -1,6 +1,6 @@
 # CMAKE generated file: DO NOT EDIT!
 # Generated by "Unix Makefiles" Generator, CMake Version 2.8
 
-mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o
+mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o
  ../mof/util/multimedia_timer.hpp
- /home/yasutomo/devel/moflib/src/mof/util/multimedia_timer.cpp
+ /home/yasutomo/devel/moflib/src/mof/util/linux/multimedia_timer.cpp
index 7ba77fd..b14a790 100644 (file)
@@ -1,6 +1,6 @@
 # CMAKE generated file: DO NOT EDIT!
 # Generated by "Unix Makefiles" Generator, CMake Version 2.8
 
-mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o: ../mof/util/multimedia_timer.hpp
-mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o: ../mof/util/multimedia_timer.cpp
+mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o: ../mof/util/multimedia_timer.hpp
+mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o: ../mof/util/linux/multimedia_timer.cpp
 
index 94e0b2e..51da51e 100644 (file)
@@ -1,2 +1,2 @@
-/usr/bin/ar cr /home/yasutomo/devel/moflib/lib/libmofutil.a  CMakeFiles/mofutil.dir/multimedia_timer.cpp.o
+/usr/bin/ar cr /home/yasutomo/devel/moflib/lib/libmofutil.a  CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o
 /usr/bin/ranlib /home/yasutomo/devel/moflib/lib/libmofutil.a
index 5123767..aaf2e8b 100644 (file)
@@ -160,29 +160,29 @@ mofutil/fast:
        cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/util/CMakeFiles/mofutil.dir/build.make mof/util/CMakeFiles/mofutil.dir/build
 .PHONY : mofutil/fast
 
-multimedia_timer.o: multimedia_timer.cpp.o
-.PHONY : multimedia_timer.o
+linux/multimedia_timer.o: linux/multimedia_timer.cpp.o
+.PHONY : linux/multimedia_timer.o
 
 # target to build an object file
-multimedia_timer.cpp.o:
-       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/util/CMakeFiles/mofutil.dir/build.make mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.o
-.PHONY : multimedia_timer.cpp.o
+linux/multimedia_timer.cpp.o:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/util/CMakeFiles/mofutil.dir/build.make mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.o
+.PHONY : linux/multimedia_timer.cpp.o
 
-multimedia_timer.i: multimedia_timer.cpp.i
-.PHONY : multimedia_timer.i
+linux/multimedia_timer.i: linux/multimedia_timer.cpp.i
+.PHONY : linux/multimedia_timer.i
 
 # target to preprocess a source file
-multimedia_timer.cpp.i:
-       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/util/CMakeFiles/mofutil.dir/build.make mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.i
-.PHONY : multimedia_timer.cpp.i
+linux/multimedia_timer.cpp.i:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/util/CMakeFiles/mofutil.dir/build.make mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.i
+.PHONY : linux/multimedia_timer.cpp.i
 
-multimedia_timer.s: multimedia_timer.cpp.s
-.PHONY : multimedia_timer.s
+linux/multimedia_timer.s: linux/multimedia_timer.cpp.s
+.PHONY : linux/multimedia_timer.s
 
 # target to generate assembly for a file
-multimedia_timer.cpp.s:
-       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/util/CMakeFiles/mofutil.dir/build.make mof/util/CMakeFiles/mofutil.dir/multimedia_timer.cpp.s
-.PHONY : multimedia_timer.cpp.s
+linux/multimedia_timer.cpp.s:
+       cd /home/yasutomo/devel/moflib/src/build_unix && $(MAKE) -f mof/util/CMakeFiles/mofutil.dir/build.make mof/util/CMakeFiles/mofutil.dir/linux/multimedia_timer.cpp.s
+.PHONY : linux/multimedia_timer.cpp.s
 
 # Help Target
 help:
@@ -198,9 +198,9 @@ help:
        @echo "... mofutil"
        @echo "... rebuild_cache"
        @echo "... test"
-       @echo "... multimedia_timer.o"
-       @echo "... multimedia_timer.i"
-       @echo "... multimedia_timer.s"
+       @echo "... linux/multimedia_timer.o"
+       @echo "... linux/multimedia_timer.i"
+       @echo "... linux/multimedia_timer.s"
 .PHONY : help
 
 
index 20df9a4..62e4c5e 100644 (file)
@@ -13,16 +13,20 @@ link_directories("${MOFLIB_ROOT_DIR}/lib")
 find_package(Boost)
 include_directories(BOOST_INCLUDE_DIR)
 
+# test
+set(tests vector2_test vector3_test matrix2_test matrix3_test)
+
 # build test
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/test/testbin/)
-add_executable(vector2_test test/vector2_test.cpp)
-add_executable(vector3_test test/vector3_test.cpp)
-target_link_libraries(vector2_test "mofmath")
-target_link_libraries(vector3_test "mofmath")
+foreach(test ${tests})
+       add_executable(${test} test/${test}.cpp)
+       target_link_libraries(${test} "mofmath")
+endforeach(test)
 
 # run test
-add_test(vector2_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/vector2_test)
-add_test(vector3_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/vector3_test)
+foreach(test ${tests})
+       add_test(${test} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${test})
+endforeach(test)
 
 # header install
 set(INCLUDE_DIR ${MOFLIB_ROOT_DIR}/include/)
diff --git a/src/mof/math/basic_matrix.hpp b/src/mof/math/basic_matrix.hpp
new file mode 100644 (file)
index 0000000..e378261
--- /dev/null
@@ -0,0 +1,247 @@
+#pragma once
+#include <mof/base/mofdef.hpp>
+#include <boost/operators.hpp>
+#include <ostream>
+
+namespace mof
+{
+namespace math
+{
+
+       template <size_t Dim> struct row_of_matrix;
+       
+       /**
+        * @brief 同次座標変換行列テンプレートクラス
+        * @note  このテンプレートから直接特殊化することは想定していない.
+        * あくまでmatrixxを実装するための補助テンプレートである.
+        * このクラスは不変クラスである.
+        * @tparam Dim        行列の次元(要素数はこの数値の2乗)
+        * @tparam Derived    特殊化されたテンプレートの派生クラス(matrixx)の型
+        * @tparam Coordinate 対応するベクトルクラス(vectorx)の型
+        */
+       template <size_t Dim, typename Derived, typename Coordinate>
+       class basic_matrix
+               : boost::addable< Derived 
+               , boost::addable2< Derived, float
+               , boost::subtractable< Derived 
+               , boost::subtractable2< Derived, float
+               , boost::multipliable< Derived
+               , boost::multipliable2< Derived, float
+               , boost::equality_comparable< Derived
+               > > > > > > >
+       {
+       protected:
+//{{{ last_index
+               /**
+                * @brief elements_の最後の添字を得る
+                */
+               size_t last_index() const
+               {
+                       return (Dim + 1) * (Dim + 1);
+               }
+//}}}
+               float elements_[(Dim + 1) * (Dim + 1)];///< 要素の配列
+       public:
+//{{{ array
+/*
+               struct array
+               {
+                       float arr_[(Dim + 1) * (Dim + 1) - 1];
+
+                       float& operator[](size_t index)
+                       {
+                               return arr_[index];
+                       }
+
+               };
+*/
+//}}}
+               // コンストラクタ,デストラクタはデフォルトのものを使う
+               // 代入演算子,コピーコンストラクタはデフォルトのものを使う
+//{{{ operator +=
+               Derived& operator+=(const Derived& rhs)
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               elements_[i] += rhs.elements_[i];
+                       }
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+               
+               Derived& operator+=(float rhs)
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               elements_[i] += rhs;
+                       }
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+               
+               friend Derived operator+(float rhs1, Derived& rhs2) 
+               {
+                       Derived retval;
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               retval.elements_[i] = rhs1 + rhs2.elements_[i];
+                       }
+                       return retval;
+               }
+//}}}
+//{{{ operator -=
+               Derived& operator-=(const Derived& rhs)
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               elements_[i] -= rhs.elements_[i];
+                       }
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+               
+               Derived& operator-=(float rhs)
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               elements_[i] -= rhs;
+                       }
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+               
+               friend Derived operator-(float rhs1, Derived& rhs2) 
+               {
+                       Derived retval;
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               retval.elements_[i] = rhs1 - rhs2.elements_[i];
+                       }
+                       return retval;
+               }
+//}}}
+//{{{ operator *=      
+               Derived& operator*=(const Derived& rhs)
+               {
+                       Derived retval;
+                       for (size_t a = 0; a < last_index(); ++a) {
+                               int b = a / Dim * Dim;
+                               int c = a % Dim;
+                               float sum = 0;
+                               for (size_t i = 0; i < Dim; ++i) {
+                                       sum += elements_[b + i] * rhs.elements_[c + i * Dim];
+                               }
+                               retval.elements_[a] = sum;
+                       }
+                       *this = retval;
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+
+               Derived& operator*=(float rhs)
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               elements_[i] *= rhs;
+                       }
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+       
+               Coordinate& operator*(const Coordinate& rhs)
+               {
+                       Coordinate retval;
+                       for (size_t a = 0; a < Dim; ++a) {
+                               int b = a / Dim * Dim;
+                               int c = a % Dim;
+                               float sum = 0;
+                               for (size_t i = 0; i < Dim; ++i) {
+                                       sum += elements_[b + i] * rhs[c + i];
+                               }
+                               retval.components_[a] = sum;
+                       }
+                       return retval;
+               }
+
+               friend Derived operator*(float rhs1, Derived& rhs2) 
+               {
+                       Derived retval;
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               retval.elements_[i] = rhs1 * rhs2.elements_[i];
+                       }
+                       return retval;
+               }
+//}}}
+//{{{ operator /=
+               Derived& operator/=(float rhs)
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               elements_[i] /= rhs;
+                       }
+                       return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
+               }
+//}}}
+//{{{ operator ==
+               bool operator==(const Derived& rhs) const
+               {
+                       const size_t END = last_index() - 1;// 最後の要素は1で保存
+                       for (size_t i = 0; i < END; ++i) {
+                               if (elements_[i] != rhs.elements_[i]) return false;
+                       }
+                       return true;
+               }
+//}}}
+//{{{ operator []
+               /**
+                * @note 補助クラスによってM[i][j]のように参照可能
+                * @note この方法による複数の要素への参照は非効率
+                */
+               row_of_matrix<Dim> operator [](size_t i) const
+               {
+                       return row_of_matrix<Dim>(elements_, i);
+               }
+//}}}
+//{{{ operator <<
+               /**
+                * @brief デバッグ出力用ストリーム演算子
+                * @param [in] stream 出力ストリーム
+                * @param [in] rhs    出力対象となる行列オブジェクト
+                * @return 引数で与えられた出力ストリーム
+                */
+               friend std::ostream& operator<<
+               (
+                       std::ostream& stream,
+                       const Derived& rhs
+               )
+               {
+                       for (size_t i = 0; i < Dim + 1; ++i) {
+                               for (size_t j = 0; j < Dim + 1; ++j) {
+                                       if (j != 0) stream << ", ";
+                                       else if (j != Dim) stream << "\n";
+                                       stream << rhs.elements_[i * (Dim + 1) + j];
+                               }
+                       }
+                       return stream;
+               }
+//}}}
+       };
+//{{{ row_of_matrix
+       /**
+        * @brief M[i][j]のように行列の要素を参照できるようにするための補助クラス
+        */
+       template <size_t Dim>
+       struct row_of_matrix
+       {
+               const float* elements_;
+               size_t row_index_;
+
+               row_of_matrix(const float* elements, size_t row_index) 
+                       : elements_(elements), row_index_(row_index)
+               {
+               }
+               
+               float operator [](size_t index)
+               {
+                       return elements_[row_index_ * (Dim + 1) + index];
+               }
+       };
+//}}}
+
+}// namespace math
+}// namespace mof
index d90a55a..b2e3bac 100644 (file)
@@ -8,7 +8,7 @@ namespace mof
 namespace math
 {
        /**
-        * @brief å\9fºåº\95ベクトルテンプレートクラス
+        * @brief å\90\8c次å\88\97ベクトルテンプレートクラス
         * @note  このテンプレートから直接特殊化することは想定していない.
         * あくまでvectorxを実装するための補助テンプレートである.
         * このクラスは不変クラスである.
@@ -29,6 +29,18 @@ namespace math
        protected:
                float components_[Dim];///< 要素の配列
        public:
+//{{{ array
+               struct array
+               {
+                       float arr_[Dim];
+
+                       float& operator[](size_t index)
+                       {
+                               return arr_[index];
+                       }
+
+               };
+//}}}
                // コンストラクタ,デストラクタはデフォルトのものを使う
                // 代入演算子,コピーコンストラクタはデフォルトのものを使う
 //{{{ operator +=
@@ -92,28 +104,34 @@ namespace math
                        return *reinterpret_cast<Derived*>(this);//thisがDerived型であることは保証されている.
                }
                
-               friend Derived operator/(float rhs1, Derived& rhs2) 
-               {
-                       Derived retval;
-                       for (size_t i = 0; i < Dim; ++i) retval.components_[i] = rhs1 / rhs2.components_[i];
-                       return retval;
-               }
 //}}}
 //{{{ operator ==
                bool operator==(const Derived& rhs) const
                {
-                       for (size_t i = 0; i < Dim; ++i)
-                       {
+                       for (size_t i = 0; i < Dim; ++i) {
                                if (components_[i] != rhs.components_[i]) return false;
                        }
                        return true;
                }
 //}}}
+//{{{ operator []
+               /**
+                * @note Dim+1番目の要素は常に1
+                * @param[in] index 添字
+                */
+               float operator[](size_t index) const
+               {
+                       if (index < Dim) return components_[index];
+                       else if (index == Dim) return 1;
+                       // TODO exception
+                       return 0;
+               }
+//}}}
 //{{{ operator <<
                /**
                 * @brief デバッグ出力用ストリーム演算子
-                * @param [in] stream 出力ストリーム
-                * @param [in] rhs    出力対象となるベクトルオブジェクト
+                * @param[in] stream 出力ストリーム
+                * @param[in] rhs    出力対象となるベクトルオブジェクト
                 * @return 引数で与えられた出力ストリーム
                 */
                friend std::ostream& operator<<
diff --git a/src/mof/math/matrix.hpp b/src/mof/math/matrix.hpp
new file mode 100644 (file)
index 0000000..2fcce2a
--- /dev/null
@@ -0,0 +1,6 @@
+/**
+ * @file 各次元の行列をまとめてインクルードするためのヘッダ
+ */
+#pragma once
+#include <mof/math/matrix2.hpp>
+#include <mof/math/matrix3.hpp>
diff --git a/src/mof/math/matrix2.hpp b/src/mof/math/matrix2.hpp
new file mode 100644 (file)
index 0000000..c05bbb1
--- /dev/null
@@ -0,0 +1,85 @@
+#pragma once
+#include <mof/math/basic_matrix.hpp>
+
+namespace mof
+{
+namespace math
+{
+       class vector2;
+
+       /**
+        * @brief 2次元同次座標変換行列クラス
+        */
+       class matrix2 : public basic_matrix<2, matrix2, vector2>
+       {
+       public:
+//{{{ constructor
+               /**
+                * @brief デフォルトコンストラクタ.最後の要素以外を0で初期化する.
+                */
+               matrix2()
+               {
+                       for (size_t i = 0; i < last_index() - 1; ++i) {
+                               elements_[i] = 0;
+                       }
+                       elements_[last_index() - 1] = 1;
+               }
+
+               /**
+                * @brief 指定した値で初期化する.
+                * @param[in] arr 初期化用配列
+                */
+/*
+               matrix2(const matrix2::array& arr)
+               {
+                       for (size_t i = 0; i < last_index() - 1; ++i) {
+                               elements_[i] = arr[i];
+                       }
+                       elements_[last_index() - 1] = 1;
+               }
+*/
+               
+               /**
+                * @brief 指定した値で初期化する.
+                */
+               matrix2
+               (
+                       float m11, float m12, float m13,
+                       float m21, float m22, float m23,
+                       float m31, float m32
+               )
+               {
+                       const float* table[] =
+                               {
+                                       &m11, &m12, &m13,
+                                       &m21, &m22, &m23,
+                                       &m31, &m32
+                               };
+                       for (size_t i = 0; i < last_index() - 1; ++i) {
+                               elements_[i] = *table[i];
+                       }
+                       elements_[last_index() - 1] = 1;
+               }
+
+//}}}
+//{{{ copy constructor
+       matrix2(const matrix2& rhs)
+       {
+               for (size_t i = 0; i < last_index(); ++i) {
+                       elements_[i] = rhs.elements_[i];
+               }
+       }
+//}}}
+//{{{ operator =
+       matrix2& operator = (const matrix2& rhs)
+       {
+               for (size_t i = 0; i < last_index(); ++i) {
+                       elements_[i] = rhs.elements_[i];
+               }
+               return *this;
+       }
+//}}}
+       };
+
+}// namespace math
+}// namespace mof
diff --git a/src/mof/math/matrix3.hpp b/src/mof/math/matrix3.hpp
new file mode 100644 (file)
index 0000000..3be9730
--- /dev/null
@@ -0,0 +1,90 @@
+#pragma once
+#include <mof/math/basic_matrix.hpp>
+
+namespace mof
+{
+namespace math
+{
+       class vector3;
+
+       /**
+        * @brief 3次元同次座標変換行列クラス
+        */
+       class matrix3 : public basic_matrix<3, matrix3, vector3>
+       {
+       public:
+//{{{ constructor
+               /**
+                * @brief デフォルトコンストラクタ.最後の要素以外を0で初期化する.
+                */
+               matrix3()
+               {
+                       for (size_t i = 0; i < last_index() - 1; ++i) {
+                               elements_[i] = 0;
+                       }
+                       elements_[last_index() - 1] = 1;
+               }
+
+               /**
+                * @brief 指定した値で初期化する.
+                * @param[in] arr 初期化用配列
+                */
+/*
+               matrix3(const matrix3::array& arr)
+               {
+                       for (size_t i = 0; i < last_index() - 1; ++i) {
+                               elements_[i] = arr[i];
+                       }
+                       elements_[last_index() - 1] = 1;
+               }
+*/
+               
+               /**
+                * @brief 指定した値で初期化する.
+                */
+               matrix3
+               (
+                       float m11, float m12, float m13, float m14,
+                       float m21, float m22, float m23, float m24,
+                       float m31, float m32, float m33, float m34,
+                       float m41, float m42, float m43
+               )
+               {
+                       const float* table[] =
+                               {
+                                       &m11, &m12, &m13, &m14,
+                                       &m21, &m22, &m23, &m24,
+                                       &m31, &m32, &m33, &m34,
+                                       &m41, &m42, &m43
+                               };
+                       for (size_t i = 0; i < last_index() - 1; ++i) {
+                               elements_[i] = *table[i];
+                       }
+                       elements_[last_index() - 1] = 1;
+               }
+
+//}}}
+//{{{ copy constructor
+       matrix3(const matrix3& rhs)
+       {
+               for (size_t i = 0; i < last_index(); ++i) {
+                       elements_[i] = rhs.elements_[i];
+               }
+       }
+//}}}
+//{{{ operator =
+       /**
+        * @note コピーのパフォーマンスのためにこの関数の定義は重要
+        */
+       matrix3& operator = (const matrix3& rhs)
+       {
+               for (size_t i = 0; i < last_index(); ++i) {
+                       elements_[i] = rhs.elements_[i];
+               }
+               return *this;
+       }
+//}}}
+       };
+
+}// namespace math
+}// namespace mof
diff --git a/src/mof/math/test/matrix2_test.cpp b/src/mof/math/test/matrix2_test.cpp
new file mode 100644 (file)
index 0000000..fc36b77
--- /dev/null
@@ -0,0 +1,90 @@
+#include <mof/math/matrix2.hpp>
+#include <iostream>
+#include <sstream>
+
+int main()
+{
+       using namespace mof::math;
+       using namespace std;
+       int failed_count = 0;
+
+       {
+               matrix2 M;
+               bool failed = false;
+               for (size_t i = 0; i < 8; ++i) {
+                       if (M[i / 3][i % 3] != 0) failed = true;
+               }
+               std::cout << M[2][2] << std::endl;
+               if (failed || M[2][2] != 1) {
+                       cerr << "Failed:" << " default constructor makes zero matrix" << endl;  
+                       failed_count++;
+               }
+       }
+
+       {
+               matrix2 M(1, 2, 3, 4, 5, 6, 7, 8);
+               std::cout << M << std::endl;
+               bool failed = false;
+               for (size_t i = 0; i < 8; ++i) {
+                       if (M[i / 3][i % 3] != i + 1) failed = true;
+               }
+               if (failed || M[2][2] != 1) {
+                       cerr << "Failed:" << " initialize test" << endl;        
+                       failed_count++;
+               }
+       }
+
+       // any operations keeps the last component 1
+       {       
+               matrix2 M(1, 2, 3, 4, 5, 6, 7, 8);
+               matrix2 N(1, 2, 3, 4, 5, 6, 7, 8);
+               if (M != N) {
+                       cerr << "Failed:" << " comparation test" << endl;       
+                       failed_count++;
+               }
+       }
+       
+       {       
+               matrix2 M(1, 2, 3, 4, 5, 6, 7, 8);
+               matrix2 N(0, 2, 3, 4, 5, 6, 7, 8);
+               if (M == N) {
+                       cerr << "Failed:" << " comparation test" << endl;       
+                       failed_count++;
+               }
+       }
+
+       {
+               matrix2 N1(1, 2, 3, 4, 5, 6, 7, 8);
+               matrix2 N2(15, 13, 11, 9, 7, 5, 3, 1);
+               matrix2 N = N1 + N2;
+               matrix2 A(16, 15, 14, 13, 12, 11, 10, 9);
+               if (N != A) {
+                       cerr << "Failed:" << " addition test" << endl;  
+                       failed_count++;
+               }
+       }
+       
+       {
+               matrix2 N1(1, 2, 3, 4, 5, 6, 7, 8);
+               matrix2 N2(15, 13, 11, 9, 7, 5, 3, 1);
+               matrix2 N = N1 - N2;
+               matrix2 A(-14, -11, -8, -5, -2, 1, 4, 7);
+               if (N != A) {
+                       cerr << "Failed:" << " subtraction test" << endl;       
+                       failed_count++;
+               }
+       }
+
+       /*
+       v = vector2(10, 10);
+       v = 2 * v * 3;
+       if (v.x() != 60 || v.y() != 60 || v.z() != 1) {
+               cerr << "Failed:"  << " multiplation with scalar test" << endl; 
+               failed_count++;
+       }
+       */
+       // TODO matrix devide
+       
+
+       return failed_count;
+}
diff --git a/src/mof/math/test/matrix3_test.cpp b/src/mof/math/test/matrix3_test.cpp
new file mode 100644 (file)
index 0000000..668e865
--- /dev/null
@@ -0,0 +1,95 @@
+#include <mof/math/matrix3.hpp>
+#include <iostream>
+#include <sstream>
+
+int main()
+{
+       using namespace mof::math;
+       using namespace std;
+       int failed_count = 0;
+
+       {
+               matrix3 M;
+               bool failed = false;
+               for (size_t i = 0; i < 15; ++i) {
+                       if (M[i / 4][i % 4] != 0) failed = true;
+               }
+               if (failed || M[3][3] != 1) {
+                       cerr << "Failed:" << " default constructor makes zero matrix" << endl;  
+                       failed_count++;
+               }
+       }
+
+       {
+               matrix3 M(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+               bool failed = false;
+               for (size_t i = 0; i < 15; ++i) {
+                       if (M[i / 4][i % 4] != i + 1) failed = true;
+               }
+               cout << M << endl;
+               if (failed || M[3][3] != 1) {
+                       cerr << "Failed:" << " initialize test" << endl;        
+                       failed_count++;
+               }
+       }
+
+       // any operations keeps the last component 1
+       {       
+               matrix3 M(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+               matrix3 N(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+               if (M != N) {
+                       cerr << "Failed:" << " comparation test" << endl;       
+                       failed_count++;
+               }
+       }
+       
+       {       
+               matrix3 M(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+               matrix3 N(0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+               if (M == N) {
+                       cerr << "Failed:" << " comparation test" << endl;       
+                       failed_count++;
+               }
+       }
+
+       {
+               matrix3 N1(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+               matrix3 N2(29, 27, 25, 23, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1);
+               matrix3 N = N1 + N2;
+               matrix3 A(30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16);
+               if (N != A) {
+                       cerr << "Failed:" << " addition test" << endl;  
+                       failed_count++;
+               }
+       }
+       
+       {
+               matrix3 N1(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+               matrix3 N2(29, 27, 25, 23, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1);
+               matrix3 N = N1 - N2;
+               matrix3 A
+               (
+                       -28, -25, -22, -19,
+                       -16, -13, -10,  -7,
+                        -4,  -1,   2,   5,
+                         8,  11,  14  
+               );
+               if (N != A) {
+                       cerr << "Failed:" << " subtraction test" << endl;       
+                       failed_count++;
+               }
+       }
+
+       /*
+       v = vector2(10, 10);
+       v = 2 * v * 3;
+       if (v.x() != 60 || v.y() != 60 || v.z() != 1) {
+               cerr << "Failed:"  << " multiplation with scalar test" << endl; 
+               failed_count++;
+       }
+       */
+       // TODO matrix devide
+       
+
+       return failed_count;
+}
diff --git a/src/mof/math/test/testbin/matrix2_test b/src/mof/math/test/testbin/matrix2_test
new file mode 100755 (executable)
index 0000000..7e7b38a
Binary files /dev/null and b/src/mof/math/test/testbin/matrix2_test differ
diff --git a/src/mof/math/test/testbin/matrix3_test b/src/mof/math/test/testbin/matrix3_test
new file mode 100755 (executable)
index 0000000..ce6c672
Binary files /dev/null and b/src/mof/math/test/testbin/matrix3_test differ
index e56b300..4527d37 100755 (executable)
Binary files a/src/mof/math/test/testbin/vector2_test and b/src/mof/math/test/testbin/vector2_test differ
index 0952286..db7ecb5 100755 (executable)
Binary files a/src/mof/math/test/testbin/vector3_test and b/src/mof/math/test/testbin/vector3_test differ
index abd5f50..e69e256 100644 (file)
@@ -14,6 +14,12 @@ int main()
                failed_count++;
        }
 
+       v = vector2(1, 2);
+       if (v[0] != 1 || v[1] != 2 || v[2] != 1) {
+               cerr << "Failed:" << " initialize by array" << endl;    
+               failed_count++;
+       }
+
        // any operations keeps the last component 1
        v = vector2(1, 2);
        vector2 w(3, 4);
@@ -37,6 +43,14 @@ int main()
                cerr << "Failed:"  << " multiplation with scalar test" << endl; 
                failed_count++;
        }
+       
+       v = vector2(60, 30);
+       v = v / 3;
+       if (v.x() != 20 || v.y() != 10 || v.z() != 1) {
+               cerr << "Failed:"  << " devidation with scalar test" << endl;   
+               failed_count++;
+       }
+
 
        v = vector2(1, 2);
        w = vector2(1, 2);
index d20d826..641a5ad 100644 (file)
@@ -13,6 +13,12 @@ int main()
                failed_count++;
        }
 
+       v = vector3(1, 2, 3);
+       if (v[0] != 1 || v[1] != 2 || v[2] != 3 || v[3] != 1) {
+               cerr << "Failed:" << " initialize by array" << endl;    
+               failed_count++;
+       }
+
        // any operations keeps the last component 1
        v = vector3(1, 2, 3);
        vector3 w(4, 5, 6);
@@ -36,6 +42,15 @@ int main()
                cerr << "Failed:" << " multiplation with scalar test" << endl;  
                failed_count++;
        }
+       
+       
+       v = vector3(90, 60, 30);
+       v = v / 3;
+       if (v.x() != 30 || v.y() != 20 || v.z() != 10 || v.w() != 1) {
+               cerr << "Failed:"  << " devidation with scalar test" << endl;   
+               failed_count++;
+       }
+
 
        v = vector3(1, 2, 3);
        w = vector3(1, 2, 3);
index 739e672..3d25998 100644 (file)
@@ -6,7 +6,7 @@ namespace mof
 namespace math
 {
        /**
-        * @brief 2次元同次ベクトルクラス
+        * @brief 2次元同次ベクトルクラス
         */
        class vector2 : public basic_vector<2, vector2>
        {
@@ -31,6 +31,18 @@ namespace math
                        components_[0] = x;
                        components_[1] = y;
                }
+               
+               /**
+                * @brief 指定した値で初期化する.
+                * @param[in] arr 初期化用配列
+                */
+/*
+               vector2(const vector2::array& arr)
+               {
+                       components_[0] = arr[0];
+                       components_[1] = arr[1];
+               }
+*/
 //}}}
 //{{{ accessers
                float x() const { return components_[0]; }
index 43d8cdb..aaa6a44 100644 (file)
@@ -7,7 +7,7 @@ namespace mof
 namespace math
 {
        /**
-        * @brief 3次元同次ベクトルクラス
+        * @brief 3次元同次ベクトルクラス
         */
        class vector3 : public basic_vector<3, vector3>
        {
@@ -35,6 +35,20 @@ namespace math
                        components_[1] = y; 
                        components_[2] = z;
                }
+
+               /**
+                * @brief 指定した値で初期化する.
+                * @param[in] arr 初期化用配列
+                */
+/*
+               vector3(const vector3::array& arr)
+               {
+                       components_[0] = arr[0];
+                       components_[1] = arr[1];
+                       components_[2] = arr[2];
+               }
+*/
+
 //}}}
 //{{{ accesser
                float x() const { return components_[0]; }
index da7d2a0..22818ee 100644 (file)
@@ -4,7 +4,10 @@
 project(mofutil)
 
 # build util
-add_library(mofutil STATIC multimedia_timer.cpp)
+if (CMAKE_COMPILER_IS_GNUCC)
+       file(GLOB src FILES linux/*.cpp)
+endif()
+add_library(mofutil STATIC ${src})
 if (CMAKE_COMPILER_IS_GNUCC)
        # no meaning?
        #target_link_libraries(mofutil "librt")