This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello, I'm using the gcc: Reading specs from /usr//bin/../lib/gcc-lib/i586-mandrake-linux-gnu/3.2/specs Configured with: ../configure --prefix=/usr --libdir=/usr/lib --with-slibdir=/lib --mandir=/u sr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posi x --disable-checking --enable-long-long --enable-__cxa_atexit --enable-langu ages=c,c++,ada,f77,objc,java --host=i586-mandrake-linux-gnu --with-system-zl ib Thread model: posix gcc version 3.2 (Mandrake Linux 9.0 3.2-1mdk) But, the problem is related to release 3.3 too. The compiler flags were g++ -O2 gcc.cc -o gcc && ./gcc as well as higher optimizations -O2 -W -Wall -Winline -finline-limit=5000 -ftemplate-depth-200 -fstrict-alia sing -malign-double I've got no error or warnings compiling the attached file. The program's output is: B = Matrix<d, 3, 2> = [ [-0.05, 0], [0, 0.05], [0.05, -0.05] ] D = Matrix<d, 3, 3> = [ [2000, 1000, 0], [1000, 2000, 0], [0, 0, 500] ] K = Matrix<d, 2, 2> = [ [6.25, -5001.25], [-3.75, 2506.25] ] Where K has the wrong result. It should be: K = Matrix<d, 2, 2> = [ [6.25, -3.75], [-3.75, 6.25] ] Well, I'm the owner of the tvmet project at http://tvmet.sourceforge.net/. The libary is using expression and meta templates e.g. for unlooping the matrix-matrix product. The problem is related to the temporary temp_lhs used by the prod function. If I make the temp static I've got right results but, other/further matrix multiplications calculate wrong results (same dimensions with other values using the same static temp). As used here in the example using RVO results in wrong results. Parts of the result are correct, other not. The algorithm/code used is correct (checked with a lot of regression tests). A simple product of matrizes (using prod(const Matrix<>&, const Matrix<>&) not shown here) got the expected result. What is going on here? Thanks Olaf
Attachment:
tvmet.cc
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |