116 #ifdef LIBMESH_USE_REAL_NUMBERS
127 const unsigned N =
A.m();
134 for (
unsigned eigenval=0; eigenval<N; ++eigenval)
137 if (
std::abs(lambda_imag(eigenval)) < tol*tol)
141 for (
unsigned i=0; i<N; ++i)
143 rhs(i) = lambda_real(eigenval) * VL(i, eigenval);
144 for (
unsigned j=0; j<N; ++j)
145 lhs(i) +=
A(j, i) * VL(j, eigenval);
151 LIBMESH_ASSERT_FP_EQUAL(0., lhs.l2_norm(),
std::sqrt(tol)*tol);
168 for (
unsigned i=0; i<N; ++i)
170 rhs(i) = lambda_real(eigenval) * VL(i, eigenval) + lambda_imag(eigenval) * VL(i, eigenval+1);
171 for (
unsigned j=0; j<N; ++j)
172 lhs(i) +=
A(j, i) * VL(j, eigenval);
176 LIBMESH_ASSERT_FP_EQUAL(0., lhs.l2_norm(),
std::sqrt(tol)*tol);
187 for (
unsigned i=0; i<N; ++i)
189 rhs(i) = -lambda_imag(eigenval) * VL(i, eigenval) + lambda_real(eigenval) * VL(i, eigenval+1);
190 for (
unsigned j=0; j<N; ++j)
191 lhs(i) +=
A(j, i) * VL(j, eigenval+1);
195 LIBMESH_ASSERT_FP_EQUAL(0., lhs.l2_norm(),
std::sqrt(tol)*tol);
215 for (
unsigned eigenval=0; eigenval<N; ++eigenval)
218 if (
std::abs(lambda_imag(eigenval)) < tol*tol)
222 for (
unsigned i=0; i<N; ++i)
224 rhs(i) = lambda_real(eigenval) * VR(i, eigenval);
225 for (
unsigned j=0; j<N; ++j)
226 lhs(i) +=
A(i, j) * VR(j, eigenval);
230 LIBMESH_ASSERT_FP_EQUAL(0., lhs.l2_norm(),
std::sqrt(tol)*tol);
247 for (
unsigned i=0; i<N; ++i)
249 rhs(i) = lambda_real(eigenval) * VR(i, eigenval) - lambda_imag(eigenval) * VR(i, eigenval+1);
250 for (
unsigned j=0; j<N; ++j)
251 lhs(i) +=
A(i, j) * VR(j, eigenval);
255 LIBMESH_ASSERT_FP_EQUAL(0., lhs.l2_norm(),
std::sqrt(tol)*tol);
260 for (
unsigned i=0; i<N; ++i)
262 rhs(i) = lambda_imag(eigenval) * VR(i, eigenval) + lambda_real(eigenval) * VR(i, eigenval+1);
263 for (
unsigned j=0; j<N; ++j)
264 lhs(i) +=
A(i, j) * VR(j, eigenval+1);
268 LIBMESH_ASSERT_FP_EQUAL(0., lhs.l2_norm(),
std::sqrt(tol)*tol);
282 std::sort(true_lambda_real.begin(), true_lambda_real.end());
283 std::sort(true_lambda_imag.begin(), true_lambda_imag.end());
286 for (
unsigned i=0; i<lambda_real.
size(); ++i)
293 LIBMESH_ASSERT_FP_EQUAL(true_lambda_real[i], lambda_real(i),
std::sqrt(tol)*tol);
294 LIBMESH_ASSERT_FP_EQUAL(true_lambda_imag[i], lambda_imag(i),
std::sqrt(tol)*tol);