50 unsigned int dim = A.rows();
51 typename SysVector::value_type rho_1, rho_2(0), alpha, beta;
52 SysVector z(dim), ztilde(dim),
p(dim), ptilde(dim), q(dim), qtilde(dim);
55 const double tolsqr =
sqr(tol);
56 double normbsqr =
b.fabssqr();
61 normbsqr = 1.0 / normbsqr;
63 SysVector r(
b - A *
x);
64 SysVector rtilde(
conj(r));
66 if ((residsqr = r.fabssqr() * normbsqr) <= tolsqr) {
72 for (
unsigned int i = 1;
i <= max_iter; ++
i) {
76 if (rho_1 == (
typename SysVector::value_type)0) {
87 ptilde = ztilde + beta * ptilde;
91 qtilde = A.transMult(ptilde);
92 alpha = rho_1 / (q * ptilde);
95 rtilde -= alpha * qtilde;
98 if ((residsqr = r.fabssqr() * normbsqr) < tolsqr) {
NAMESPACE_TBCI Vector< T > class NN friend int BiCG(const BdMatrix< T > &, Vector< T > &, const Vector< T > &, const Preconditioner_Sig< T, BdMatrix< T > > &, unsigned int &, double &)