Esempio n. 1
0
static void apply_projected_matrix(double *v, double shift, double *Q, 
   int dimQ, double *result, double *rwork, primme_params *primme) {
   
   int ONE = 1;   /* For passing it by reference in matrixMatvec */

   (*primme->matrixMatvec)(v, result, &ONE, primme);
   Num_axpy_dprimme(primme->nLocal, -shift, v, 1, result, 1); 
   if (dimQ > 0)
      apply_projector(Q, dimQ, result, rwork, primme); 

   primme->stats.numMatvecs += 1;
}
Esempio n. 2
0
static void apply_projected_matrix(Complex_Z *v, double shift, Complex_Z *Q, 
   int dimQ, Complex_Z *result, Complex_Z *rwork, primme_params *primme) {
   
   int ONE = 1;   /* For passing it by reference in matrixMatvec */
   Complex_Z ztmp; 

   (*primme->matrixMatvec)(v, result, &ONE, primme);
   {ztmp.r = -shift; ztmp.i = 0.0L;}
   Num_axpy_zprimme(primme->nLocal, ztmp, v, 1, result, 1); 
   if (dimQ > 0)
      apply_projector(Q, dimQ, result, rwork, primme); 

   primme->stats.numMatvecs += 1;
}