163 {
164
165 typename Matrix::value_type*
a = rhs.Array();
166
167 static typename Matrix::value_type t1, t2, t3, temp,
s;
168 static typename Matrix::value_type c11, c12, c13, c21, c22, c23, c31, c32, c33, det;
169
170
171
172 c11 =
a[4] *
a[8] -
a[7] *
a[5];
173 c12 =
a[7] *
a[2] -
a[1] *
a[8];
174 c13 =
a[1] *
a[5] -
a[4] *
a[2];
175 c21 =
a[5] *
a[6] -
a[8] *
a[3];
176 c22 =
a[8] *
a[0] -
a[2] *
a[6];
177 c23 =
a[2] *
a[3] -
a[5] *
a[0];
178 c31 =
a[3] *
a[7] -
a[6] *
a[4];
179 c32 =
a[6] *
a[1] -
a[0] *
a[7];
180 c33 =
a[0] *
a[4] -
a[3] *
a[1];
181
185
186
187 if(t1 < t2) {
188 if (t3 < t2) {
189
191 det = c13 * c32 - c12 * c33;
192 } else {
193
195 det = c23 * c12 - c22 * c13;
196 }
197 } else {
198 if(t3 < t1) {
199
201 det = c22 * c33 - c23 * c32;
202 } else {
203
205 det = c23 * c12 - c22 * c13;
206 }
207 }
208
209 if (det == 0.) {
210 return false;
211 }
212
213
224 return true;
225 }
Expr< UnaryOp< Fabs< T >, Expr< A, T, D >, T >, T, D > fabs(const Expr< A, T, D > &rhs)
Definition: UnaryOperators.hh:96
void a()
Definition: check_aligned.C:59
s
Definition: check_shower.C:55