1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// This file is part of Eigen, a lightweight C++ template library 2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// for linear algebra. 3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com> 5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// This Source Code Form is subject to the terms of the Mozilla 7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Public License v. 2.0. If a copy of the MPL was not distributed 8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define EIGEN_NO_STATIC_ASSERT 11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include "product.h" 12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// regression test for bug 447 14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathvoid product1x1() 15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{ 16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Matrix<float,1,3> matAstatic; 17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Matrix<float,3,1> matBstatic; 18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath matAstatic.setRandom(); 19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath matBstatic.setRandom(); 20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_IS_APPROX( (matAstatic * matBstatic).coeff(0,0), 21c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath matAstatic.cwiseProduct(matBstatic.transpose()).sum() ); 22c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 23c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath MatrixXf matAdynamic(1,3); 24c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath MatrixXf matBdynamic(3,1); 25c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath matAdynamic.setRandom(); 26c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath matBdynamic.setRandom(); 27c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_IS_APPROX( (matAdynamic * matBdynamic).coeff(0,0), 28c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath matAdynamic.cwiseProduct(matBdynamic.transpose()).sum() ); 29c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath} 30c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 31c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 32c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathvoid test_product_small() 33c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{ 34c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath for(int i = 0; i < g_repeat; i++) { 35c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath CALL_SUBTEST_1( product(Matrix<float, 3, 2>()) ); 36c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath CALL_SUBTEST_2( product(Matrix<int, 3, 5>()) ); 37c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath CALL_SUBTEST_3( product(Matrix3d()) ); 38c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath CALL_SUBTEST_4( product(Matrix4d()) ); 39c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath CALL_SUBTEST_5( product(Matrix4f()) ); 40c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath CALL_SUBTEST_6( product1x1() ); 41c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath } 42c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 43c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#ifdef EIGEN_TEST_PART_6 44c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath { 45c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // test compilation of (outer_product) * vector 46c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Vector3f v = Vector3f::Random(); 47c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_IS_APPROX( (v * v.transpose()) * v, (v * v.transpose()).eval() * v); 48c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath } 49c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#endif 50c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath} 51