From a7d199bf9a9c2fb2d924ed012f18d89675f43b79 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Sat, 6 Mar 2010 21:37:14 +0100 Subject: [PATCH] fix trsolve --- Eigen/src/Core/products/TriangularSolverMatrix.h | 10 ++++++---- test/product_symm.cpp | 8 +++++--- test/product_syrk.cpp | 4 +++- test/product_trsolve.cpp | 11 ++++++----- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/Eigen/src/Core/products/TriangularSolverMatrix.h b/Eigen/src/Core/products/TriangularSolverMatrix.h index e32a9929c..1774081a2 100644 --- a/Eigen/src/Core/products/TriangularSolverMatrix.h +++ b/Eigen/src/Core/products/TriangularSolverMatrix.h @@ -74,6 +74,7 @@ struct ei_triangular_solve_matrix conj; ei_gebp_kernel > gebp_kernel; ei_gemm_pack_lhs pack_lhs; + ei_gemm_pack_rhs pack_rhs; for(int k2=IsLower ? 0 : size; IsLower ? k20; @@ -137,8 +138,7 @@ struct ei_triangular_solve_matrix() - (blockB, _other+startBlock, otherStride, -1, actualPanelWidth, cols, actual_kc, blockBOffset); + pack_rhs(blockB, _other+startBlock, otherStride, -1, actualPanelWidth, cols, actual_kc, blockBOffset); // GEBP if (lengthTarget>0) @@ -267,7 +267,8 @@ struct ei_triangular_solve_matrix0) gebp_kernel(_other+i2+startPanel*otherStride, otherStride, blockA, geb, - actual_mc, actual_kc, rs); + actual_mc, actual_kc, rs, + -1, -1, 0, 0, allocatedBlockB); } } diff --git a/test/product_symm.cpp b/test/product_symm.cpp index a0d80080f..4ff1735d6 100644 --- a/test/product_symm.cpp +++ b/test/product_symm.cpp @@ -109,9 +109,11 @@ void test_product_symm() for(int i = 0; i < g_repeat ; i++) { CALL_SUBTEST_1(( symm(ei_random(10,320),ei_random(10,320)) )); - CALL_SUBTEST_2(( symm,Dynamic,Dynamic>(ei_random(10,320),ei_random(10,320)) )); + CALL_SUBTEST_2(( symm(ei_random(10,320),ei_random(10,320)) )); + CALL_SUBTEST_3(( symm,Dynamic,Dynamic>(ei_random(10,320),ei_random(10,320)) )); - CALL_SUBTEST_3(( symm(ei_random(10,320)) )); - CALL_SUBTEST_4(( symm,Dynamic,1>(ei_random(10,320)) )); + CALL_SUBTEST_4(( symm(ei_random(10,320)) )); + CALL_SUBTEST_5(( symm(ei_random(10,320)) )); + CALL_SUBTEST_6(( symm,Dynamic,1>(ei_random(10,320)) )); } } diff --git a/test/product_syrk.cpp b/test/product_syrk.cpp index e597ac88a..ec93056a9 100644 --- a/test/product_syrk.cpp +++ b/test/product_syrk.cpp @@ -77,6 +77,8 @@ void test_product_syrk() s = ei_random(10,320); CALL_SUBTEST_1( syrk(MatrixXf(s, s)) ); s = ei_random(10,320); - CALL_SUBTEST_2( syrk(MatrixXcd(s, s)) ); + CALL_SUBTEST_2( syrk(MatrixXd(s, s)) ); + s = ei_random(10,320); + CALL_SUBTEST_3( syrk(MatrixXcd(s, s)) ); } } diff --git a/test/product_trsolve.cpp b/test/product_trsolve.cpp index 6e916230e..7a8068c35 100644 --- a/test/product_trsolve.cpp +++ b/test/product_trsolve.cpp @@ -79,12 +79,13 @@ void test_product_trsolve() { // matrices CALL_SUBTEST_1((trsolve(ei_random(1,320),ei_random(1,320)))); - CALL_SUBTEST_2((trsolve,Dynamic,Dynamic>(ei_random(1,320),ei_random(1,320)))); + CALL_SUBTEST_2((trsolve(ei_random(1,320),ei_random(1,320)))); + CALL_SUBTEST_3((trsolve,Dynamic,Dynamic>(ei_random(1,320),ei_random(1,320)))); // vectors - CALL_SUBTEST_3((trsolve,Dynamic,1>(ei_random(1,320)))); - CALL_SUBTEST_4((trsolve())); - CALL_SUBTEST_5((trsolve())); - CALL_SUBTEST_6((trsolve,4,1>())); + CALL_SUBTEST_4((trsolve,Dynamic,1>(ei_random(1,320)))); + CALL_SUBTEST_5((trsolve())); + CALL_SUBTEST_6((trsolve())); + CALL_SUBTEST_7((trsolve,4,1>())); } }