X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=check%2Fexam_matrices.cpp;h=ccf735ede4c2a58c4b73e5d91ca68c5ad177f45b;hp=9e8d90c754cce32f2302a9dcb41d6103587be129;hb=7e7beee2c946694130a484c923f6af8391867495;hpb=383d5eb3b0f0506810d9105a268f939125bfc347 diff --git a/check/exam_matrices.cpp b/check/exam_matrices.cpp index 9e8d90c7..ccf735ed 100644 --- a/check/exam_matrices.cpp +++ b/check/exam_matrices.cpp @@ -3,7 +3,7 @@ * Here we examine manipulations on GiNaC's symbolic matrices. */ /* - * GiNaC Copyright (C) 1999-2001 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -216,6 +216,31 @@ static unsigned matrix_solve2(void) return result; } +static unsigned matrix_evalm(void) +{ + unsigned result = 0; + + matrix S(2, 2, lst( + 1, 2, + 3, 4 + )), T(2, 2, lst( + 1, 1, + 2, -1 + )), R(2, 2, lst( + 27, 14, + 36, 26 + )); + + ex e = ((S + T) * (S + 2*T)); + ex f = e.evalm(); + if (!f.is_equal(R)) { + clog << "Evaluating " << e << " erroneously returned " << f << " instead of " << R << endl; + result++; + } + + return result; +} + static unsigned matrix_misc(void) { unsigned result = 0; @@ -279,6 +304,7 @@ unsigned exam_matrices(void) result += matrix_invert2(); cout << '.' << flush; result += matrix_invert3(); cout << '.' << flush; result += matrix_solve2(); cout << '.' << flush; + result += matrix_evalm(); cout << "." << flush; result += matrix_misc(); cout << '.' << flush; if (!result) {