| Line 49... |
Line 49... |
PetscFunctionReturn(0);
|
PetscFunctionReturn(0);
|
}
|
}
|
/* normalization with a indefinite norm */
|
/* normalization with a indefinite norm */
|
#undef __FUNCT__
|
#undef __FUNCT__
|
#define __FUNCT__ "PSNormIndef_private"
|
#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;
|
PetscInt i;
|
PetscReal norm_;
|
PetscReal norm_;
|
/* s-normalization */
|
/* s-normalization */
|
norm_ = 0.0;
|
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_);}
|
if(norm_<0){norm_ = -PetscSqrtReal(-norm_);}
|
else {norm_ = PetscSqrtReal(norm_);}
|
else {norm_ = PetscSqrtReal(norm_);}
|
for(i=0;i<n;i++)X[i] /= norm_;
|
for(i=0;i<n;i++)X[i] /= norm_;
|
if(norm) *norm = norm_;
|
if(norm) *norm = norm_;
|
PetscFunctionReturn(0);
|
PetscFunctionReturn(0);
|