@@ -111,32 +111,26 @@ function idrs_method!(log::ConvergenceHistory, X, op, args, C::T,
111111 # Solve small system and make v orthogonal to P
112112
113113 c = LowerTriangular (M[k: s,k: s])\ f[k: s]
114- @blas! V = G[k]
115- @blas! V * = c[1 ]
114+ V . = c[ 1 ] .* G[k]
115+ Q . = c[1 ] .* U[k ]
116116
117- @blas! Q = U[k]
118- @blas! Q *= c[1 ]
119117 for i = k+ 1 : s
120- @blas! V += c[i- k+ 1 ]* G[i]
121- @blas! Q += c[i- k+ 1 ]* U[i]
118+ V . += c[i- k+ 1 ] .* G[i]
119+ Q . += c[i- k+ 1 ] .* U[i]
122120 end
123121
124122 # Compute new U[:,k] and G[:,k], G[:,k] is in space G_j
123+ V .= R .- V
125124
126- # V = R - V
127- @blas! V *= - 1.
128- @blas! V += R
129-
130- @blas! U[k] = Q
131- @blas! U[k] += om* V
125+ U[k] .= Q .+ om .* V
132126 G[k] = op (U[k], args... )
133127
134128 # Bi-orthogonalise the new basis vectors
135129
136130 for i in 1 : k- 1
137131 alpha = vecdot (P[i],G[k])/ M[i,i]
138- @blas! G[k] += - alpha* G[i]
139- @blas! U[k] += - alpha* U[i]
132+ G[k] .- = alpha .* G[i]
133+ U[k] .- = alpha .* U[i]
140134 end
141135
142136 # New column of M = P'*G (first k-1 entries are zero)
@@ -148,22 +142,17 @@ function idrs_method!(log::ConvergenceHistory, X, op, args, C::T,
148142 # Make r orthogonal to q_i, i = 1..k
149143
150144 beta = f[k]/ M[k,k]
151- @blas! R += - beta* G[k]
152- @blas! X += beta* U[k]
145+ R .- = beta .* G[k]
146+ X . += beta .* U[k]
153147
154148 normR = vecnorm (R)
155149 if smoothing
156- # T_s = R_s - R
157- @blas! T_s = R_s
158- @blas! T_s += (- 1. )* R
150+ T_s .= R_s .- R
159151
160152 gamma = vecdot (R_s, T_s)/ vecdot (T_s, T_s)
161153
162- @blas! R_s += - gamma* T_s
163- # X_s = X_s - gamma*(X_s - X)
164- @blas! T_s = X_s
165- @blas! T_s += (- 1. )* X
166- @blas! X_s += - gamma* T_s
154+ R_s .- = gamma .* T_s
155+ X_s .- = gamma .* (X_s .- X)
167156
168157 normR = vecnorm (R_s)
169158 end
@@ -182,34 +171,29 @@ function idrs_method!(log::ConvergenceHistory, X, op, args, C::T,
182171
183172 # Now we have sufficient vectors in G_j to compute residual in G_j+1
184173 # Note: r is already perpendicular to P so v = r
185- @blas! V = R
174+ copy! (V, R)
186175 Q = op (V, args... ):: T
187176 om = omega (Q, R)
188- @blas! R += - om * Q
189- @blas! X += om* V
177+ R .- = om .* Q
178+ X . += om .* V
190179
191180 normR = vecnorm (R)
192181 if smoothing
193- # T_s = R_s - R
194- @blas! T_s = R_s
195- @blas! T_s += (- 1. )* R
182+ T_s .= R_s .- R
196183
197184 gamma = vecdot (R_s, T_s)/ vecdot (T_s, T_s)
198185
199- @blas! R_s += - gamma* T_s
200- # X_s = X_s - gamma*(X_s - X)
201- @blas! T_s = X_s
202- @blas! T_s += (- 1. )* X
203- @blas! X_s += - gamma* T_s
186+ R_s .- = gamma .* T_s
187+ X_s .- = gamma .* (X_s .- X)
204188
205189 normR = vecnorm (R_s)
206190 end
207191 iter += 1
208- nextiter! (log,mvps= 1 )
192+ nextiter! (log, mvps= 1 )
209193 push! (log, :resnorm , normR)
210194 end
211195 if smoothing
212- @blas! X = X_s
196+ copy! (X, X_s)
213197 end
214198 verbose && @printf (" \n " )
215199 setconv (log, 0 <= normR< tol)
0 commit comments