This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: optimization/2692: excessive compile time with optimization
- To: gcc-bugs at gcc dot gnu dot org
- Subject: Re: optimization/2692: excessive compile time with optimization
- From: scott snyder <snyder at fnal dot gov>
- Date: 18 May 2001 15:34:07 -0500
- References: <200104300404.f3U44Pc01933@karma.fnal.gov>
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)>