| /* normalization with a indefinite norm */ |
| #undef __FUNCT__ |
| #define __FUNCT__ "PSNormIndef_private" |
| static PetscErrorCode PSNormIndef_private(PetscScalar *B,PetscScalar *X, PetscScalar *norm,PetscInt n) |
| static PetscErrorCode PSNormIndef_private(PetscReal *s,PetscScalar *X, PetscScalar *norm,PetscInt n) |
| { |
| PetscInt i; |
| PetscReal norm_; |
| /* s-normalization */ |
| norm_ = 0.0; |
| for(i=0;i<n;i++){norm_ += X[i]*B[i]*X[i];} |
| for(i=0;i<n;i++){norm_ += X[i]*s[i]*X[i];} |
| if(norm_<0){norm_ = -PetscSqrtReal(-norm_);} |
| else {norm_ = PetscSqrtReal(norm_);} |
| for(i=0;i<n;i++)X[i] /= norm_; |
| BLASgemm_("N","N",&n3,&n3,&n3,&one,W+off,&ld,Q+off,&ld,&zero,A+off,&ld); |
| ierr = PSCopyMatrix_Private(ps,PS_MAT_Q,PS_MAT_A);CHKERRQ(ierr); |
| } |
| for (i=l;i<n;i++) d[i] = wr[i]; |
| for (i=l;i<n;i++) d[i] = PetscRealPart(wr[i]); |
| if (ps->compact) { |
| ierr = PetscMemzero(e,(n-1)*sizeof(PetscReal));CHKERRQ(ierr); |