| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /* | ||
| 2 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
| 3 | SLEPc - Scalable Library for Eigenvalue Problem Computations | ||
| 4 | Copyright (c) 2002-, Universitat Politecnica de Valencia, Spain | ||
| 5 | |||
| 6 | This file is part of SLEPc. | ||
| 7 | SLEPc is distributed under a 2-clause BSD license (see LICENSE). | ||
| 8 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <slepc/private/vecimplslepc.h> /*I "slepcvec.h" I*/ | ||
| 12 | |||
| 13 | /*@ | ||
| 14 | VecNormalizeComplex - Normalizes a possibly complex vector by the 2-norm. | ||
| 15 | |||
| 16 | Collective | ||
| 17 | |||
| 18 | Input Parameters: | ||
| 19 | + xr - the real part of the vector (overwritten on output) | ||
| 20 | . xi - the imaginary part of the vector (not referenced if `iscomplex` is false) | ||
| 21 | - iscomplex - a flag indicating if the vector is complex | ||
| 22 | |||
| 23 | Output Parameter: | ||
| 24 | . norm - the vector norm before normalization (can be set to `NULL`) | ||
| 25 | |||
| 26 | Level: developer | ||
| 27 | |||
| 28 | .seealso: `BVNormalize()` | ||
| 29 | @*/ | ||
| 30 | 420 | PetscErrorCode VecNormalizeComplex(Vec xr,Vec xi,PetscBool iscomplex,PetscReal *norm) | |
| 31 | { | ||
| 32 | #if !defined(PETSC_USE_COMPLEX) | ||
| 33 | 250 | PetscReal normr,normi,alpha; | |
| 34 | #endif | ||
| 35 | |||
| 36 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
420 | PetscFunctionBegin; |
| 37 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
420 | PetscValidHeaderSpecific(xr,VEC_CLASSID,1); |
| 38 | #if !defined(PETSC_USE_COMPLEX) | ||
| 39 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
|
250 | if (iscomplex) { |
| 40 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
110 | PetscValidHeaderSpecific(xi,VEC_CLASSID,2); |
| 41 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
110 | PetscCall(VecNormBegin(xr,NORM_2,&normr)); |
| 42 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
110 | PetscCall(VecNormBegin(xi,NORM_2,&normi)); |
| 43 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
110 | PetscCall(VecNormEnd(xr,NORM_2,&normr)); |
| 44 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
110 | PetscCall(VecNormEnd(xi,NORM_2,&normi)); |
| 45 | 110 | alpha = SlepcAbsEigenvalue(normr,normi); | |
| 46 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
|
110 | if (norm) *norm = alpha; |
| 47 | 110 | alpha = 1.0 / alpha; | |
| 48 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
110 | PetscCall(VecScale(xr,alpha)); |
| 49 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
110 | PetscCall(VecScale(xi,alpha)); |
| 50 | } else | ||
| 51 | #endif | ||
| 52 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
310 | PetscCall(VecNormalize(xr,norm)); |
| 53 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
84 | PetscFunctionReturn(PETSC_SUCCESS); |
| 54 | } | ||
| 55 | |||
| 56 | 2833 | static PetscErrorCode VecCheckOrthogonality_Private(Vec V[],PetscInt nv,Vec W[],PetscInt nw,Mat B,PetscViewer viewer,PetscReal *lev,PetscBool norm) | |
| 57 | { | ||
| 58 | 2833 | PetscInt i,j; | |
| 59 | 2833 | PetscScalar *vals; | |
| 60 | 2833 | PetscBool isascii; | |
| 61 | 2833 | Vec w; | |
| 62 | |||
| 63 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2833 | PetscFunctionBegin; |
| 64 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
2833 | if (!lev) { |
| 65 | ✗ | if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)*V),&viewer)); | |
| 66 | ✗ | PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,6); | |
| 67 | ✗ | PetscCheckSameComm(*V,1,viewer,6); | |
| 68 | ✗ | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii)); | |
| 69 | ✗ | if (!isascii) PetscFunctionReturn(PETSC_SUCCESS); | |
| 70 | } | ||
| 71 | |||
| 72 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
2833 | PetscCall(PetscMalloc1(nv,&vals)); |
| 73 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
2833 | if (B) PetscCall(VecDuplicate(V[0],&w)); |
| 74 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
2833 | if (lev) *lev = 0.0; |
| 75 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
41526 | for (i=0;i<nw;i++) { |
| 76 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
38693 | if (B) { |
| 77 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
20760 | if (W) PetscCall(MatMult(B,W[i],w)); |
| 78 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
20760 | else PetscCall(MatMult(B,V[i],w)); |
| 79 | } else { | ||
| 80 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
17933 | if (W) w = W[i]; |
| 81 | 14151 | else w = V[i]; | |
| 82 | } | ||
| 83 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38693 | PetscCall(VecMDot(w,nv,V,vals)); |
| 84 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
4890726 | for (j=0;j<nv;j++) { |
| 85 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
4852033 | if (lev) { |
| 86 |
4/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
9660071 | if (i!=j) *lev = PetscMax(*lev,PetscAbsScalar(vals[j])); |
| 87 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
38693 | else if (norm) { |
| 88 |
3/4✓ Branch 0 taken 8 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 8 times.
|
34911 | if (PetscRealPart(vals[j])<0.0) *lev = PetscMax(*lev,PetscAbsScalar(vals[j]+PetscRealConstant(1.0))); /* indefinite case */ |
| 89 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
65428 | else *lev = PetscMax(*lev,PetscAbsScalar(vals[j]-PetscRealConstant(1.0))); |
| 90 | } | ||
| 91 | } else { | ||
| 92 | #if !defined(PETSC_USE_COMPLEX) | ||
| 93 |
0/6✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
3085793 | PetscCall(PetscViewerASCIIPrintf(viewer," %12g ",(double)vals[j])); |
| 94 | #else | ||
| 95 |
0/6✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
1766240 | PetscCall(PetscViewerASCIIPrintf(viewer," %12g%+12gi ",(double)PetscRealPart(vals[j]),(double)PetscImaginaryPart(vals[j]))); |
| 96 | #endif | ||
| 97 | } | ||
| 98 | } | ||
| 99 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
38693 | if (!lev) PetscCall(PetscViewerASCIIPrintf(viewer,"\n")); |
| 100 | } | ||
| 101 |
5/8✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
2833 | PetscCall(PetscFree(vals)); |
| 102 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
2833 | if (B) PetscCall(VecDestroy(&w)); |
| 103 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
559 | PetscFunctionReturn(PETSC_SUCCESS); |
| 104 | } | ||
| 105 | |||
| 106 | /*@ | ||
| 107 | VecCheckOrthogonality - Checks (or prints) the level of (bi-)orthogonality | ||
| 108 | of a set of vectors. | ||
| 109 | |||
| 110 | Collective | ||
| 111 | |||
| 112 | Input Parameters: | ||
| 113 | + V - a set of vectors | ||
| 114 | . nv - number of V vectors | ||
| 115 | . W - an alternative set of vectors (optional) | ||
| 116 | . nw - number of W vectors | ||
| 117 | . B - Hermitian matrix defining the inner product (optional) | ||
| 118 | - viewer - optional visualization context | ||
| 119 | |||
| 120 | Output Parameter: | ||
| 121 | . lev - level of orthogonality (optional) | ||
| 122 | |||
| 123 | Notes: | ||
| 124 | This function computes $W^*V$ and prints the result. It is intended to check | ||
| 125 | the level of bi-orthogonality of the vectors in the two sets. If $W$ is equal | ||
| 126 | to `NULL` then $V$ is used, thus checking the orthogonality of the $V$ vectors. | ||
| 127 | |||
| 128 | If matrix `B` is provided then the check uses the $B$-inner product, $W^*BV$, | ||
| 129 | where $B$ is assumed to be Hermitian. | ||
| 130 | |||
| 131 | If `V`, `W` represent eigenvectors computed by SLEPc, this function will not work | ||
| 132 | correctly if one of the eigenvalues is complex when running with real scalars. | ||
| 133 | |||
| 134 | If `lev` is not `NULL`, it will contain the maximum entry of matrix | ||
| 135 | $W^*V - I$ (in absolute value) omitting the diagonal. Otherwise, the matrix $W^*V$ | ||
| 136 | is printed. | ||
| 137 | |||
| 138 | Level: developer | ||
| 139 | |||
| 140 | .seealso: `VecCheckOrthonormality()` | ||
| 141 | @*/ | ||
| 142 | 291 | PetscErrorCode VecCheckOrthogonality(Vec V[],PetscInt nv,Vec W[],PetscInt nw,Mat B,PetscViewer viewer,PetscReal *lev) | |
| 143 | { | ||
| 144 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
291 | PetscFunctionBegin; |
| 145 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
291 | PetscAssertPointer(V,1); |
| 146 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
291 | PetscValidHeaderSpecific(*V,VEC_CLASSID,1); |
| 147 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
291 | PetscValidLogicalCollectiveInt(*V,nv,2); |
| 148 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
291 | PetscValidLogicalCollectiveInt(*V,nw,4); |
| 149 |
2/14✓ Branch 0 taken 8 times.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
|
291 | if (nv<=0 || nw<=0) PetscFunctionReturn(PETSC_SUCCESS); |
| 150 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
291 | if (W) { |
| 151 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
291 | PetscAssertPointer(W,3); |
| 152 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
291 | PetscValidHeaderSpecific(*W,VEC_CLASSID,3); |
| 153 |
13/32✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
291 | PetscCheckSameComm(*V,1,*W,3); |
| 154 | } | ||
| 155 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
291 | PetscCall(VecCheckOrthogonality_Private(V,nv,W,nw,B,viewer,lev,PETSC_FALSE)); |
| 156 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
51 | PetscFunctionReturn(PETSC_SUCCESS); |
| 157 | } | ||
| 158 | |||
| 159 | /*@ | ||
| 160 | VecCheckOrthonormality - Checks (or prints) the level of (bi-)orthonormality | ||
| 161 | of a set of vectors. | ||
| 162 | |||
| 163 | Collective | ||
| 164 | |||
| 165 | Input Parameters: | ||
| 166 | + V - a set of vectors | ||
| 167 | . nv - number of V vectors | ||
| 168 | . W - an alternative set of vectors (optional) | ||
| 169 | . nw - number of W vectors | ||
| 170 | . B - Hermitian matrix defining the inner product (optional) | ||
| 171 | - viewer - optional visualization context | ||
| 172 | |||
| 173 | Output Parameter: | ||
| 174 | . lev - level of orthogonality (optional) | ||
| 175 | |||
| 176 | Notes: | ||
| 177 | This function is equivalent to `VecCheckOrthonormality()`, but in addition it checks | ||
| 178 | that the diagonal of $W^*V$ (or $W^*BV$) is equal to all ones. | ||
| 179 | |||
| 180 | Level: developer | ||
| 181 | |||
| 182 | .seealso: `VecCheckOrthogonality()` | ||
| 183 | @*/ | ||
| 184 | 2542 | PetscErrorCode VecCheckOrthonormality(Vec V[],PetscInt nv,Vec W[],PetscInt nw,Mat B,PetscViewer viewer,PetscReal *lev) | |
| 185 | { | ||
| 186 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2542 | PetscFunctionBegin; |
| 187 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
2542 | PetscAssertPointer(V,1); |
| 188 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
2542 | PetscValidHeaderSpecific(*V,VEC_CLASSID,1); |
| 189 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
2542 | PetscValidLogicalCollectiveInt(*V,nv,2); |
| 190 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
2542 | PetscValidLogicalCollectiveInt(*V,nw,4); |
| 191 |
2/14✓ Branch 0 taken 8 times.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
|
2542 | if (nv<=0 || nw<=0) PetscFunctionReturn(PETSC_SUCCESS); |
| 192 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
2542 | if (W) { |
| 193 |
0/4✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
2034 | PetscAssertPointer(W,3); |
| 194 |
0/16✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
2034 | PetscValidHeaderSpecific(*W,VEC_CLASSID,3); |
| 195 |
0/32✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
2034 | PetscCheckSameComm(*V,1,*W,3); |
| 196 | } | ||
| 197 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
2542 | PetscCall(VecCheckOrthogonality_Private(V,nv,W,nw,B,viewer,lev,PETSC_TRUE)); |
| 198 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
508 | PetscFunctionReturn(PETSC_SUCCESS); |
| 199 | } | ||
| 200 | |||
| 201 | /*@ | ||
| 202 | VecDuplicateEmpty - Creates a new vector of the same type as an existing vector, | ||
| 203 | but without internal array. | ||
| 204 | |||
| 205 | Collective | ||
| 206 | |||
| 207 | Input Parameter: | ||
| 208 | . v - a vector to mimic | ||
| 209 | |||
| 210 | Output Parameter: | ||
| 211 | . newv - location to put new vector | ||
| 212 | |||
| 213 | Note: | ||
| 214 | This is similar to `VecDuplicate()`, but the new vector does not have an internal | ||
| 215 | array, so the intended usage is with `VecPlaceArray()`. | ||
| 216 | |||
| 217 | Level: developer | ||
| 218 | |||
| 219 | .seealso: `VecDuplicate()`, `MatCreateVecsEmpty()` | ||
| 220 | @*/ | ||
| 221 | 136 | PetscErrorCode VecDuplicateEmpty(Vec v,Vec *newv) | |
| 222 | { | ||
| 223 | 136 | PetscBool standard,cuda,hip,mpi; | |
| 224 | 136 | PetscInt N,nloc,bs; | |
| 225 | |||
| 226 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
136 | PetscFunctionBegin; |
| 227 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
136 | PetscValidHeaderSpecific(v,VEC_CLASSID,1); |
| 228 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
136 | PetscAssertPointer(newv,2); |
| 229 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
136 | PetscValidType(v,1); |
| 230 | |||
| 231 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
136 | PetscCall(PetscObjectTypeCompareAny((PetscObject)v,&standard,VECSEQ,VECMPI,"")); |
| 232 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
136 | PetscCall(PetscObjectTypeCompareAny((PetscObject)v,&cuda,VECSEQCUDA,VECMPICUDA,"")); |
| 233 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
136 | PetscCall(PetscObjectTypeCompareAny((PetscObject)v,&hip,VECSEQHIP,VECMPIHIP,"")); |
| 234 |
5/6✓ Branch 0 taken 4 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
136 | if (standard || cuda || hip) { |
| 235 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
136 | PetscCall(PetscObjectTypeCompareAny((PetscObject)v,&mpi,VECMPI,VECMPICUDA,VECMPIHIP,"")); |
| 236 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
136 | PetscCall(VecGetLocalSize(v,&nloc)); |
| 237 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
136 | PetscCall(VecGetSize(v,&N)); |
| 238 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
136 | PetscCall(VecGetBlockSize(v,&bs)); |
| 239 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
|
136 | if (cuda) { |
| 240 | #if defined(PETSC_HAVE_CUDA) | ||
| 241 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
8 | if (mpi) PetscCall(VecCreateMPICUDAWithArray(PetscObjectComm((PetscObject)v),bs,nloc,N,NULL,newv)); |
| 242 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
8 | else PetscCall(VecCreateSeqCUDAWithArray(PetscObjectComm((PetscObject)v),bs,N,NULL,newv)); |
| 243 | #endif | ||
| 244 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
|
128 | } else if (hip) { |
| 245 | #if defined(PETSC_HAVE_HIP) | ||
| 246 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
8 | if (mpi) PetscCall(VecCreateMPIHIPWithArray(PetscObjectComm((PetscObject)v),bs,nloc,N,NULL,newv)); |
| 247 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
8 | else PetscCall(VecCreateSeqHIPWithArray(PetscObjectComm((PetscObject)v),bs,N,NULL,newv)); |
| 248 | #endif | ||
| 249 | } else { | ||
| 250 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
120 | if (mpi) PetscCall(VecCreateMPIWithArray(PetscObjectComm((PetscObject)v),bs,nloc,N,NULL,newv)); |
| 251 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
120 | else PetscCall(VecCreateSeqWithArray(PetscObjectComm((PetscObject)v),bs,N,NULL,newv)); |
| 252 | } | ||
| 253 | ✗ | } else PetscCall(VecDuplicate(v,newv)); /* standard duplicate, with internal array */ | |
| 254 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
24 | PetscFunctionReturn(PETSC_SUCCESS); |
| 255 | } | ||
| 256 | |||
| 257 | /*@ | ||
| 258 | VecSetRandomNormal - Sets all components of a vector to normally distributed random values. | ||
| 259 | |||
| 260 | Logically Collective | ||
| 261 | |||
| 262 | Input Parameters: | ||
| 263 | + v - the vector to be filled with random values | ||
| 264 | . rctx - the random number context (can be `NULL`) | ||
| 265 | . w1 - first work vector (can be `NULL`) | ||
| 266 | - w2 - second work vector (can be `NULL`) | ||
| 267 | |||
| 268 | Notes: | ||
| 269 | Fills the two work vectors with uniformly distributed random values (`VecSetRandom()`) | ||
| 270 | and then applies the Box-Muller transform to get normally distributed values on `v`. | ||
| 271 | |||
| 272 | Level: developer | ||
| 273 | |||
| 274 | .seealso: `VecSetRandom()` | ||
| 275 | @*/ | ||
| 276 | 1184 | PetscErrorCode VecSetRandomNormal(Vec v,PetscRandom rctx,Vec w1,Vec w2) | |
| 277 | { | ||
| 278 | 1184 | const PetscScalar *x,*y; | |
| 279 | 1184 | PetscScalar *z; | |
| 280 | 1184 | PetscInt n,i; | |
| 281 | 1184 | PetscRandom rand=NULL; | |
| 282 | 1184 | Vec v1=NULL,v2=NULL; | |
| 283 | |||
| 284 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1184 | PetscFunctionBegin; |
| 285 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
1184 | PetscValidHeaderSpecific(v,VEC_CLASSID,1); |
| 286 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1184 | PetscValidType(v,1); |
| 287 |
3/14✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
|
1184 | if (rctx) PetscValidHeaderSpecific(rctx,PETSC_RANDOM_CLASSID,2); |
| 288 |
3/14✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
|
1184 | if (w1) PetscValidHeaderSpecific(w1,VEC_CLASSID,3); |
| 289 |
3/14✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
|
1184 | if (w2) PetscValidHeaderSpecific(w2,VEC_CLASSID,4); |
| 290 | |||
| 291 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
1184 | if (!rctx) { |
| 292 | ✗ | PetscCall(PetscRandomCreate(PetscObjectComm((PetscObject)v),&rand)); | |
| 293 | ✗ | PetscCall(PetscRandomSetFromOptions(rand)); | |
| 294 | ✗ | rctx = rand; | |
| 295 | } | ||
| 296 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
1184 | if (!w1) { |
| 297 | ✗ | PetscCall(VecDuplicate(v,&v1)); | |
| 298 | ✗ | w1 = v1; | |
| 299 | } | ||
| 300 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
1184 | if (!w2) { |
| 301 | ✗ | PetscCall(VecDuplicate(v,&v2)); | |
| 302 | ✗ | w2 = v2; | |
| 303 | } | ||
| 304 |
13/32✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
1184 | PetscCheckSameTypeAndComm(v,1,w1,3); |
| 305 |
13/32✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
1184 | PetscCheckSameTypeAndComm(v,1,w2,4); |
| 306 | |||
| 307 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1184 | PetscCall(VecSetRandom(w1,rctx)); |
| 308 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1184 | PetscCall(VecSetRandom(w2,rctx)); |
| 309 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1184 | PetscCall(VecGetLocalSize(v,&n)); |
| 310 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1184 | PetscCall(VecGetArrayWrite(v,&z)); |
| 311 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1184 | PetscCall(VecGetArrayRead(w1,&x)); |
| 312 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1184 | PetscCall(VecGetArrayRead(w2,&y)); |
| 313 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
68648 | for (i=0;i<n;i++) { |
| 314 | #if defined(PETSC_USE_COMPLEX) | ||
| 315 | 28192 | z[i] = PetscCMPLX(PetscSqrtReal(-2.0*PetscLogReal(PetscRealPart(x[i])))*PetscCosReal(2.0*PETSC_PI*PetscRealPart(y[i])),PetscSqrtReal(-2.0*PetscLogReal(PetscImaginaryPart(x[i])))*PetscCosReal(2.0*PETSC_PI*PetscImaginaryPart(y[i]))); | |
| 316 | #else | ||
| 317 | 39272 | z[i] = PetscSqrtReal(-2.0*PetscLogReal(x[i]))*PetscCosReal(2.0*PETSC_PI*y[i]); | |
| 318 | #endif | ||
| 319 | } | ||
| 320 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1184 | PetscCall(VecRestoreArrayWrite(v,&z)); |
| 321 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1184 | PetscCall(VecRestoreArrayRead(w1,&x)); |
| 322 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1184 | PetscCall(VecRestoreArrayRead(w2,&y)); |
| 323 | |||
| 324 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1184 | PetscCall(VecDestroy(&v1)); |
| 325 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1184 | PetscCall(VecDestroy(&v2)); |
| 326 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1184 | if (!rctx) PetscCall(PetscRandomDestroy(&rand)); |
| 327 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
230 | PetscFunctionReturn(PETSC_SUCCESS); |
| 328 | } | ||
| 329 |