public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: Scott Snyder <snyder@fnal.gov> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, Subject: Re: optimization/2692: excessive compile time with optimization Date: Tue, 02 Apr 2002 01:16:00 -0000 [thread overview] Message-ID: <20020402091603.1479.qmail@sources.redhat.com> (raw) The following reply was made to PR optimization/2692; it has been noted by GNATS. From: Scott Snyder <snyder@fnal.gov> To: rth@gcc.gnu.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org, snyder@fnal.gov, gcc-gnats@gcc.gnu.org Cc: Subject: Re: optimization/2692: excessive compile time with optimization Date: 02 Apr 2002 03:11:25 -0600 From: scott snyder <snyder@fnal.gov> Subject: optimization/2692: excessive compile time with optimization To: gcc-bugs@gcc.gnu.org Date: Fri, 18 May 2001 15:34:07 -0500 hi - I just noticed that somehow the code sample for this report didn't make it into gnats. I'm not sure what happened --- it's in my local copy of the report that i saved before sending it. Anyway, here's the complete version, including the code. sss SEND-PR: -*- send-pr -*- SEND-PR: Lines starting with `SEND-PR' will be removed automatically, as SEND-PR: will all comments (text enclosed in `<' and `>'). SEND-PR: SEND-PR: Please consult the GCC manual if you are not sure how to SEND-PR: fill out a problem report. SEND-PR: Note that the Synopsis field is mandatory. The Subject (for SEND-PR: the mail) will be made the same as Synopsis unless explicitly SEND-PR: changed. SEND-PR: SEND-PR: Choose from the following categories: SEND-PR: SEND-PR: c++ c debug fortran java libf2c libgcj libobjc libstdc++ middle-end objc optimization other preprocessor target web SEND-PR: SEND-PR: To: gcc-gnats@gcc.gnu.org Subject: excessive compile time with optimization From: snyder@fnal.gov Reply-To: snyder@fnal.gov Cc: X-send-pr-version: 3.113 X-GNATS-Notify: >Submitter-Id: net >Originator: scott snyder >Organization: <organization of PR author (multiple lines)> >Confidential: no SEND-PR: Leave "Confidential" as "no"; all GCC PRs are public. >Synopsis: excessive compile time with optimization >Severity: serious SEND-PR: critical GCC is completely not operational; no work-around known. SEND-PR: serious GCC is not working properly; a work-around is possible. SEND-PR: non-critical Report indicates minor problem. >Priority: low SEND-PR: high A solution is necessary as soon as possible. SEND-PR: medium The problem should be solved in the next release. SEND-PR: low The problem should be solve in a future release. >Category: optimization >Class: sw-bug SEND-PR: doc-bug The doumentation is incorrect. SEND-PR: accepts-illegal GCC fails to reject erroneous code. SEND-PR: rejects-legal GCC gives an error message for correct code. SEND-PR: wrong-code The machine code generated by gcc is incorrect. SEND-PR: ice-on-legal-code GCC gives an Internal Compiler Error (ICE) SEND-PR: for correct code SEND-PR: ice-on-illegal-code GCC gives an ICE instead of reporting an error SEND-PR: pessimizes-code GCC misses an important optimization opportunity SEND-PR: sw-bug Software bug of some other class than above SEND-PR: change-request A feature in GCC is missing. SEND-PR: support I need help with gcc. >Release: 3.0 20010429 (prerelease) >Environment: System: Linux karma 2.2.16-22 #1 Tue Aug 22 16:49:06 EDT 2000 i686 unknown Architecture: i686 <machine, os, target, libraries (multiple lines)> host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu configured with: ../egcs/configure --prefix=/usr/local/egcs --enable-threads=posix --enable-long-long >Description: If i try to compile the source below with -O2, gcc runs for over 45 minutes and grows to over 300 MB. On my machine, it exhausts the available swap space and dies before completing. Without optimization, it completes in a couple minutes. gcc 2.95.2 dies immediately with an ICE on this source, regardless of whether or not optimization is on, so i guess this isn't a regression. >How-To-Repeat: namespace std { class dcomplex { public: typedef double value_type; dcomplex(double =0.0, double =0.0); double real() const; double imag() const; dcomplex& operator=(double); dcomplex& operator=(const dcomplex&); dcomplex& operator+=(const dcomplex&); dcomplex& operator-=(const dcomplex&); dcomplex& operator*=(const dcomplex&); private: typedef __complex__ double _ComplexT; _ComplexT _M_value; dcomplex(_ComplexT __z) : _M_value(__z) { } }; inline dcomplex operator*(const dcomplex& __x, const dcomplex& __y) { return dcomplex (__x) *= __y; } inline dcomplex operator-(const dcomplex& __x, const dcomplex& __y) { return dcomplex (__x) -= __y; } inline dcomplex operator+(const dcomplex& __x, const dcomplex& __y) { return dcomplex (__x) += __y; } inline double dcomplex::real() const { return __real__ _M_value; } inline double dcomplex::imag() const { return __imag__ _M_value; } inline dcomplex::dcomplex(double __r, double __i) { __real__ _M_value = __r; __imag__ _M_value = __i; } inline dcomplex& dcomplex::operator=(double __d) { __real__ _M_value = __d; __imag__ _M_value = 0.0; return *this; } inline dcomplex& dcomplex::operator=(const dcomplex& __z) { __real__ _M_value = __z.real(); __imag__ _M_value = __z.imag(); return *this; } inline dcomplex& dcomplex::operator+=(const dcomplex& __z) { __real__ _M_value += __z.real(); __imag__ _M_value += __z.imag(); return *this; } inline dcomplex& dcomplex::operator-=(const dcomplex& __z) { __real__ _M_value -= __z.real(); __imag__ _M_value -= __z.imag(); return *this; } inline dcomplex& dcomplex::operator*=(const dcomplex& __z) { _ComplexT __t; __real__ __t = __z.real(); __imag__ __t = __z.imag(); _M_value *= __t; return *this; } } // namespace std typedef std::dcomplex Complex8; Complex8 determinant(Complex8 _m[6][6]) { Complex8 ret ( 0.0, 0.0 ); Complex8 ret5 ( 0.0, 0.0 ); Complex8 ret4 ( 0.0, 0.0 ); Complex8 ret3 ( 0.0, 0.0 ); ret3 = ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][2] + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][0] + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][1]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][1] + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][2] + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][3]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][3] + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][0] + ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][2]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][1] + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][3] + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][0]; ret4 += _m[3][2] * ret3; ret5 += _m[4][4] * ret4; ret4 = 0.0; ret3 = ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][4] + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][1] + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][3]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][2] + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][4] + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][1]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][1] + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][2] + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][3]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][3] + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][4] + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][2]; ret4 += _m[3][1] * ret3; ret5 += _m[4][0] * ret4; ret4 = 0.0; ret3 = ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][2] + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][3] + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][4]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][4] + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][0] + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][3]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][2] + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][4] + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][0]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][0] + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][2] + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][3]; ret4 += _m[3][4] * ret3; ret5 += _m[4][1] * ret4; ret4 = 0.0; ret3 = ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][3] + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][0] + ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][1]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][1] + ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][3] + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][4]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][4] + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][0] + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][3]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][1] + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][4] + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][0]; ret4 += _m[3][3] * ret3; ret5 += _m[4][2] * ret4; ret4 = 0.0; ret3 = ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][0] + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][1] + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][4]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][2] + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][0] + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][1]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][1] + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][2] + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][4]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][4] + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][0] + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][2]; ret4 += _m[3][1] * ret3; ret5 += _m[4][3] * ret4; ret4 = 0.0; ret += _m[5][5] * ret5; ret5 = 0.0; ret3 = ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][2] + ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][4] + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][5]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][5] + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][1] + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][4]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][2] + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][5] + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][1]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][1] + ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][2] + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][4]; ret4 += _m[3][5] * ret3; ret5 += _m[4][3] * ret4; ret4 = 0.0; ret3 = ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][3] + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][1] + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][2]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][2] + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][3] + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][5]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][5] + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][1] + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][3]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][2] + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][5] + ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][1]; ret4 += _m[3][3] * ret3; ret5 += _m[4][4] * ret4; ret4 = 0.0; ret3 = ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][1] + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][2] + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][4]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][3] + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][1] + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][2]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][2] + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][3] + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][4]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][4] + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][1] + ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][3]; ret4 += _m[3][2] * ret3; ret5 += _m[4][5] * ret4; ret4 = 0.0; ret3 = ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][3] + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][4] + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][5]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][5] + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][2] + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][4]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][3] + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][5] + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][2]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][2] + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][3] + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][4]; ret4 += _m[3][5] * ret3; ret5 += _m[4][1] * ret4; ret4 = 0.0; ret3 = ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][4] + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][1] + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][3]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][3] + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][4] + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][5]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][5] + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][1] + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][4]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][3] + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][5] + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][1]; ret4 += _m[3][4] * ret3; ret5 += _m[4][2] * ret4; ret4 = 0.0; ret += _m[5][0] * ret5; ret5 = 0.0; ret3 = ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][0] + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][3] + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][5]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][4] + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][0] + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][3]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][3] + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][4] + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][5]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][5] + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][0] + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][4]; ret4 += _m[3][3] * ret3; ret5 += _m[4][2] * ret4; ret4 = 0.0; ret3 = ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][4] + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][5] + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][0]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][0] + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][2] + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][5]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][4] + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][0] + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][2]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][2] + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][4] + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][5]; ret4 += _m[3][0] * ret3; ret5 += _m[4][3] * ret4; ret4 = 0.0; ret3 = ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][5] + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][2] + ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][3]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][3] + ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][5] + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][0]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][0] + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][2] + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][5]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][3] + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][0] + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][2]; ret4 += _m[3][5] * ret3; ret5 += _m[4][4] * ret4; ret4 = 0.0; ret3 = ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][2] + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][3] + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][0]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][4] + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][2] + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][3]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][3] + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][4] + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][0]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][0] + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][2] + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][4]; ret4 += _m[3][3] * ret3; ret5 += _m[4][5] * ret4; ret4 = 0.0; ret3 = ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][4] + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][5] + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][2]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][2] + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][3] + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][5]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][4] + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][2] + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][3]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][3] + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][4] + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][5]; ret4 += _m[3][2] * ret3; ret5 += _m[4][0] * ret4; ret4 = 0.0; ret += _m[5][1] * ret5; ret5 = 0.0; ret3 = ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][5] + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][3] + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][4]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][4] + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][5] + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][1]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][1] + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][3] + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][5]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][4] + ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][1] + ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][3]; ret4 += _m[3][5] * ret3; ret5 += _m[4][0] * ret4; ret4 = 0.0; ret3 = ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][3] + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][4] + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][0]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][5] + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][3] + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][4]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][4] + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][5] + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][0]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][0] + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][3] + ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][5]; ret4 += _m[3][4] * ret3; ret5 += _m[4][1] * ret4; ret4 = 0.0; ret3 = ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][5] + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][0] + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][1]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][1] + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][4] + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][0]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][5] + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][1] + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][4]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][4] + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][5] + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][0]; ret4 += _m[3][1] * ret3; ret5 += _m[4][3] * ret4; ret4 = 0.0; ret3 = ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][0] + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][3] + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][5]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][5] + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][0] + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][1]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][1] + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][3] + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][0]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][5] + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][1] + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][3]; ret4 += _m[3][0] * ret3; ret5 += _m[4][4] * ret4; ret4 = 0.0; ret3 = ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][3] + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][4] + ( _m[0][3] * _m[1][4] - _m[0][4] * _m[1][3] ) * _m[2][1]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][4] * _m[1][3] - _m[0][3] * _m[1][4] ) * _m[2][0] + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][3] + ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][4]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][4] + ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][0] + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][1]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][1] + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][3] + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][0]; ret4 += _m[3][4] * ret3; ret5 += _m[4][5] * ret4; ret4 = 0.0; ret += _m[5][2] * ret5; ret5 = 0.0; ret3 = ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][0] + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][1] + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][2]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][2] + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][4] + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][1]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][0] + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][2] + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][4]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][4] + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][0] + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][1]; ret4 += _m[3][2] * ret3; ret5 += _m[4][5] * ret4; ret4 = 0.0; ret3 = ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][1] + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][4] + ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][5]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][5] + ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][1] + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][2]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][2] + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][4] + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][1]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][5] + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][2] + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][4]; ret4 += _m[3][1] * ret3; ret5 += _m[4][0] * ret4; ret4 = 0.0; ret3 = ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][4] + ( _m[0][2] * _m[1][4] - _m[0][4] * _m[1][2] ) * _m[2][5] + ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][2]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][0] + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][4] + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][5]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][5] + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][0] + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][2]; ret4 += _m[3][4] * ret3; ret3 = ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][2] + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][4] + ( _m[0][4] * _m[1][2] - _m[0][2] * _m[1][4] ) * _m[2][0]; ret4 += _m[3][5] * ret3; ret5 += _m[4][1] * ret4; ret4 = 0.0; ret3 = ( _m[0][1] * _m[1][4] - _m[0][4] * _m[1][1] ) * _m[2][0] + ( _m[0][4] * _m[1][0] - _m[0][0] * _m[1][4] ) * _m[2][1] + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][4]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][4] + ( _m[0][4] * _m[1][1] - _m[0][1] * _m[1][4] ) * _m[2][5] + ( _m[0][5] * _m[1][4] - _m[0][4] * _m[1][5] ) * _m[2][1]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][4] * _m[1][5] - _m[0][5] * _m[1][4] ) * _m[2][0] + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][4] + ( _m[0][0] * _m[1][4] - _m[0][4] * _m[1][0] ) * _m[2][5]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][5] + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][0] + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][1]; ret4 += _m[3][4] * ret3; ret5 += _m[4][2] * ret4; ret4 = 0.0; ret3 = ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][1] + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][5] + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][0]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][0] + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][1] + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][2]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][2] + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][5] + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][1]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][0] + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][2] + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][5]; ret4 += _m[3][1] * ret3; ret5 += _m[4][4] * ret4; ret4 = 0.0; ret += _m[5][3] * ret5; ret5 = 0.0; ret3 = ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][5] + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][0] + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][2]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][1] + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][5] + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][0]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][0] + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][1] + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][2]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][2] + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][5] + ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][1]; ret4 += _m[3][0] * ret3; ret5 += _m[4][3] * ret4; ret4 = 0.0; ret3 = ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][1] + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][2] + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][3]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][3] + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][0] + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][2]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][1] + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][3] + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][0]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][0] + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][1] + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][2]; ret4 += _m[3][3] * ret3; ret5 += _m[4][5] * ret4; ret4 = 0.0; ret3 = ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][2] + ( _m[0][1] * _m[1][2] - _m[0][2] * _m[1][1] ) * _m[2][5] + ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][1]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][1] + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][2] + ( _m[0][2] * _m[1][1] - _m[0][1] * _m[1][2] ) * _m[2][3]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][3] + ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][5] + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][2]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][1] + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][3] + ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][5]; ret4 += _m[3][2] * ret3; ret5 += _m[4][0] * ret4; ret4 = 0.0; ret3 = ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][5] + ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][0] + ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][3]; ret4 += _m[3][2] * ret3; ret3 = ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][2] + ( _m[0][2] * _m[1][0] - _m[0][0] * _m[1][2] ) * _m[2][5] + ( _m[0][5] * _m[1][2] - _m[0][2] * _m[1][5] ) * _m[2][0]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][2] * _m[1][3] - _m[0][3] * _m[1][2] ) * _m[2][0] + ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][2] + ( _m[0][0] * _m[1][2] - _m[0][2] * _m[1][0] ) * _m[2][3]; ret4 += _m[3][5] * ret3; ret3 = ( _m[0][2] * _m[1][5] - _m[0][5] * _m[1][2] ) * _m[2][3] + ( _m[0][3] * _m[1][2] - _m[0][2] * _m[1][3] ) * _m[2][5] + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][2]; ret4 += _m[3][0] * ret3; ret5 += _m[4][1] * ret4; ret4 = 0.0; ret3 = ( _m[0][3] * _m[1][5] - _m[0][5] * _m[1][3] ) * _m[2][1] + ( _m[0][5] * _m[1][1] - _m[0][1] * _m[1][5] ) * _m[2][3] + ( _m[0][1] * _m[1][3] - _m[0][3] * _m[1][1] ) * _m[2][5]; ret4 += _m[3][0] * ret3; ret3 = ( _m[0][3] * _m[1][0] - _m[0][0] * _m[1][3] ) * _m[2][5] + ( _m[0][5] * _m[1][3] - _m[0][3] * _m[1][5] ) * _m[2][0] + ( _m[0][0] * _m[1][5] - _m[0][5] * _m[1][0] ) * _m[2][3]; ret4 += _m[3][1] * ret3; ret3 = ( _m[0][5] * _m[1][0] - _m[0][0] * _m[1][5] ) * _m[2][1] + ( _m[0][0] * _m[1][1] - _m[0][1] * _m[1][0] ) * _m[2][5] + ( _m[0][1] * _m[1][5] - _m[0][5] * _m[1][1] ) * _m[2][0]; ret4 += _m[3][3] * ret3; ret3 = ( _m[0][3] * _m[1][1] - _m[0][1] * _m[1][3] ) * _m[2][0] + ( _m[0][0] * _m[1][3] - _m[0][3] * _m[1][0] ) * _m[2][1] + ( _m[0][1] * _m[1][0] - _m[0][0] * _m[1][1] ) * _m[2][3]; ret4 += _m[3][5] * ret3; ret5 += _m[4][2] * ret4; ret += _m[5][4] * ret5; return ret; } >Fix: <how to correct or work around the problem, if known (multiple lines)>
next reply other threads:[~2002-04-02 9:16 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-04-02 1:16 Scott Snyder [this message] -- strict thread matches above, loose matches on Subject: below -- 2002-04-12 16:43 rth 2002-04-02 1:56 Richard Henderson 2002-04-02 1:34 rth 2002-04-02 0:31 rth 2001-04-29 21:06 snyder
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20020402091603.1479.qmail@sources.redhat.com \ --to=snyder@fnal.gov \ --cc=gcc-prs@gcc.gnu.org \ --cc=nobody@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).