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 | /* Private MPI datatypes and operators */ | ||
14 | static MPI_Datatype MPIU_NORM2=0, MPIU_NORM1_AND_2=0; | ||
15 | static PetscBool VecCompInitialized = PETSC_FALSE; | ||
16 | MPI_Op MPIU_NORM2_SUM=0; | ||
17 | |||
18 | /* Private functions */ | ||
19 | static inline void SumNorm2(PetscReal*,PetscReal*,PetscReal*,PetscReal*); | ||
20 | static inline PetscReal GetNorm2(PetscReal,PetscReal); | ||
21 | static inline void AddNorm2(PetscReal*,PetscReal*,PetscReal); | ||
22 | static PetscErrorCode VecCompSetSubVecs_Comp(Vec,PetscInt,Vec*); | ||
23 | static PetscErrorCode VecCompGetSubVecs_Comp(Vec,PetscInt*,const Vec**); | ||
24 | |||
25 | #include "veccomp0.h" | ||
26 | |||
27 | #define __WITH_MPI__ | ||
28 | #include "veccomp0.h" | ||
29 | |||
30 | 38177 | static inline void SumNorm2(PetscReal *ssq0,PetscReal *scale0,PetscReal *ssq1,PetscReal *scale1) | |
31 | { | ||
32 | 38177 | PetscReal q; | |
33 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
38177 | if (*scale0 > *scale1) { |
34 | 18320 | q = *scale1/(*scale0); | |
35 | 18320 | *ssq1 = *ssq0 + q*q*(*ssq1); | |
36 | 18320 | *scale1 = *scale0; | |
37 | } else { | ||
38 | 19857 | q = *scale0/(*scale1); | |
39 | 19857 | *ssq1 += q*q*(*ssq0); | |
40 | } | ||
41 | 38177 | } | |
42 | |||
43 | 421374 | static inline PetscReal GetNorm2(PetscReal ssq,PetscReal scale) | |
44 | { | ||
45 | 421374 | return scale*PetscSqrtReal(ssq); | |
46 | } | ||
47 | |||
48 | 422586 | static inline void AddNorm2(PetscReal *ssq,PetscReal *scale,PetscReal x) | |
49 | { | ||
50 | 422586 | PetscReal absx,q; | |
51 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
|
422586 | if (x != 0.0) { |
52 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
422579 | absx = PetscAbs(x); |
53 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
422579 | if (*scale < absx) { |
54 | 422020 | q = *scale/absx; | |
55 | 422020 | *ssq = 1.0 + *ssq*q*q; | |
56 | 422020 | *scale = absx; | |
57 | } else { | ||
58 | 559 | q = absx/(*scale); | |
59 | 559 | *ssq += q*q; | |
60 | } | ||
61 | } | ||
62 | 422586 | } | |
63 | |||
64 | 38177 | SLEPC_EXTERN void MPIAPI SlepcSumNorm2_Local(void *in,void *out,PetscMPIInt *cnt,MPI_Datatype *datatype) | |
65 | { | ||
66 | 38177 | PetscInt i,count = *cnt; | |
67 | 38177 | PetscReal *xin = (PetscReal*)in,*xout = (PetscReal*)out; | |
68 | |||
69 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
38177 | PetscFunctionBegin; |
70 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
38177 | if (*datatype == MPIU_NORM2) { |
71 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
76326 | for (i=0;i<count;i++) { |
72 | 38163 | SumNorm2(&xin[i*2],&xin[i*2+1],&xout[i*2],&xout[i*2+1]); | |
73 | } | ||
74 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
14 | } else if (*datatype == MPIU_NORM1_AND_2) { |
75 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
28 | for (i=0;i<count;i++) { |
76 | 14 | xout[i*3] += xin[i*3]; | |
77 | 14 | SumNorm2(&xin[i*3+1],&xin[i*3+2],&xout[i*3+1],&xout[i*3+2]); | |
78 | } | ||
79 | } else { | ||
80 | ✗ | (void)(*PetscErrorPrintf)("Can only handle MPIU_NORM* data types"); | |
81 | ✗ | MPI_Abort(PETSC_COMM_WORLD,1); | |
82 | } | ||
83 |
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.
|
38177 | PetscFunctionReturnVoid(); |
84 | } | ||
85 | |||
86 | 354 | static PetscErrorCode VecCompNormEnd(void) | |
87 | { | ||
88 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
354 | PetscFunctionBegin; |
89 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 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.
✓ 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.
|
354 | PetscCallMPI(MPI_Type_free(&MPIU_NORM2)); |
90 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 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.
✓ 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.
|
354 | PetscCallMPI(MPI_Type_free(&MPIU_NORM1_AND_2)); |
91 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 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.
✓ 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.
|
354 | PetscCallMPI(MPI_Op_free(&MPIU_NORM2_SUM)); |
92 | 354 | VecCompInitialized = PETSC_FALSE; | |
93 |
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.
|
354 | PetscFunctionReturn(PETSC_SUCCESS); |
94 | } | ||
95 | |||
96 | 354 | static PetscErrorCode VecCompNormInit(void) | |
97 | { | ||
98 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
354 | PetscFunctionBegin; |
99 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 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.
✓ 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.
|
354 | PetscCallMPI(MPI_Type_contiguous(2,MPIU_REAL,&MPIU_NORM2)); |
100 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 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.
✓ 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.
|
354 | PetscCallMPI(MPI_Type_commit(&MPIU_NORM2)); |
101 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 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.
✓ 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.
|
354 | PetscCallMPI(MPI_Type_contiguous(3,MPIU_REAL,&MPIU_NORM1_AND_2)); |
102 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 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.
✓ 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.
|
354 | PetscCallMPI(MPI_Type_commit(&MPIU_NORM1_AND_2)); |
103 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 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.
✓ 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.
|
354 | PetscCallMPI(MPI_Op_create(SlepcSumNorm2_Local,PETSC_TRUE,&MPIU_NORM2_SUM)); |
104 |
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.
|
354 | PetscCall(PetscRegisterFinalize(VecCompNormEnd)); |
105 |
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.
|
70 | PetscFunctionReturn(PETSC_SUCCESS); |
106 | } | ||
107 | |||
108 | 28687 | PetscErrorCode VecDestroy_Comp(Vec v) | |
109 | { | ||
110 | 28687 | Vec_Comp *vs = (Vec_Comp*)v->data; | |
111 | 28687 | PetscInt i; | |
112 | |||
113 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
28687 | PetscFunctionBegin; |
114 | #if defined(PETSC_USE_LOG) | ||
115 |
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.
|
28687 | PetscCall(PetscLogObjectState((PetscObject)v,"Length=%" PetscInt_FMT,v->map->n)); |
116 | #endif | ||
117 |
7/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 2 times.
|
62712 | for (i=0;i<vs->nx;i++) PetscCall(VecDestroy(&vs->x[i])); |
118 |
7/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
|
28687 | if (--vs->n->friends <= 0) PetscCall(PetscFree(vs->n)); |
119 |
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.
|
28687 | PetscCall(PetscFree(vs->x)); |
120 |
6/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
28687 | PetscCall(PetscFree(vs)); |
121 |
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.
|
28687 | PetscCall(PetscObjectComposeFunction((PetscObject)v,"VecCompSetSubVecs_C",NULL)); |
122 |
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.
|
28687 | PetscCall(PetscObjectComposeFunction((PetscObject)v,"VecCompGetSubVecs_C",NULL)); |
123 |
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.
|
5725 | PetscFunctionReturn(PETSC_SUCCESS); |
124 | } | ||
125 | |||
126 | static struct _VecOps DvOps = { | ||
127 | PetscDesignatedInitializer(duplicate,VecDuplicate_Comp), | ||
128 | PetscDesignatedInitializer(duplicatevecs,VecDuplicateVecs_Comp), | ||
129 | PetscDesignatedInitializer(destroyvecs,VecDestroyVecs_Comp), | ||
130 | PetscDesignatedInitializer(dot,VecDot_Comp_MPI), | ||
131 | PetscDesignatedInitializer(mdot,VecMDot_Comp_MPI), | ||
132 | PetscDesignatedInitializer(norm,VecNorm_Comp_MPI), | ||
133 | PetscDesignatedInitializer(tdot,VecTDot_Comp_MPI), | ||
134 | PetscDesignatedInitializer(mtdot,VecMTDot_Comp_MPI), | ||
135 | PetscDesignatedInitializer(scale,VecScale_Comp), | ||
136 | PetscDesignatedInitializer(copy,VecCopy_Comp), | ||
137 | PetscDesignatedInitializer(set,VecSet_Comp), | ||
138 | PetscDesignatedInitializer(swap,VecSwap_Comp), | ||
139 | PetscDesignatedInitializer(axpy,VecAXPY_Comp), | ||
140 | PetscDesignatedInitializer(axpby,VecAXPBY_Comp), | ||
141 | PetscDesignatedInitializer(maxpy,VecMAXPY_Comp), | ||
142 | PetscDesignatedInitializer(aypx,VecAYPX_Comp), | ||
143 | PetscDesignatedInitializer(waxpy,VecWAXPY_Comp), | ||
144 | PetscDesignatedInitializer(axpbypcz,VecAXPBYPCZ_Comp), | ||
145 | PetscDesignatedInitializer(pointwisemult,VecPointwiseMult_Comp), | ||
146 | PetscDesignatedInitializer(pointwisedivide,VecPointwiseDivide_Comp), | ||
147 | PetscDesignatedInitializer(setvalues,NULL), | ||
148 | PetscDesignatedInitializer(assemblybegin,NULL), | ||
149 | PetscDesignatedInitializer(assemblyend,NULL), | ||
150 | PetscDesignatedInitializer(getarray,NULL), | ||
151 | PetscDesignatedInitializer(getsize,VecGetSize_Comp), | ||
152 | PetscDesignatedInitializer(getlocalsize,VecGetLocalSize_Comp), | ||
153 | PetscDesignatedInitializer(restorearray,NULL), | ||
154 | PetscDesignatedInitializer(max,VecMax_Comp), | ||
155 | PetscDesignatedInitializer(min,VecMin_Comp), | ||
156 | PetscDesignatedInitializer(setrandom,VecSetRandom_Comp), | ||
157 | PetscDesignatedInitializer(setoption,NULL), | ||
158 | PetscDesignatedInitializer(setvaluesblocked,NULL), | ||
159 | PetscDesignatedInitializer(destroy,VecDestroy_Comp), | ||
160 | PetscDesignatedInitializer(view,VecView_Comp), | ||
161 | PetscDesignatedInitializer(placearray,NULL), | ||
162 | PetscDesignatedInitializer(replacearray,NULL), | ||
163 | PetscDesignatedInitializer(dot_local,VecDot_Comp_Seq), | ||
164 | PetscDesignatedInitializer(tdot_local,VecTDot_Comp_Seq), | ||
165 | PetscDesignatedInitializer(norm_local,VecNorm_Comp_Seq), | ||
166 | PetscDesignatedInitializer(mdot_local,VecMDot_Comp_Seq), | ||
167 | PetscDesignatedInitializer(mtdot_local,VecMTDot_Comp_Seq), | ||
168 | PetscDesignatedInitializer(load,NULL), | ||
169 | PetscDesignatedInitializer(reciprocal,VecReciprocal_Comp), | ||
170 | PetscDesignatedInitializer(conjugate,VecConjugate_Comp), | ||
171 | PetscDesignatedInitializer(setlocaltoglobalmapping,NULL), | ||
172 | PetscDesignatedInitializer(getlocaltoglobalmapping,NULL), | ||
173 | PetscDesignatedInitializer(resetarray,NULL), | ||
174 | PetscDesignatedInitializer(setfromoptions,NULL), | ||
175 | PetscDesignatedInitializer(maxpointwisedivide,VecMaxPointwiseDivide_Comp), | ||
176 | PetscDesignatedInitializer(pointwisemax,VecPointwiseMax_Comp), | ||
177 | PetscDesignatedInitializer(pointwisemaxabs,VecPointwiseMaxAbs_Comp), | ||
178 | PetscDesignatedInitializer(pointwisemin,VecPointwiseMin_Comp), | ||
179 | PetscDesignatedInitializer(getvalues,NULL), | ||
180 | PetscDesignatedInitializer(sqrt,VecSqrtAbs_Comp), | ||
181 | PetscDesignatedInitializer(abs,VecAbs_Comp), | ||
182 | PetscDesignatedInitializer(exp,VecExp_Comp), | ||
183 | PetscDesignatedInitializer(log,VecLog_Comp), | ||
184 | PetscDesignatedInitializer(shift,VecShift_Comp), | ||
185 | PetscDesignatedInitializer(create,NULL), | ||
186 | PetscDesignatedInitializer(stridegather,NULL), | ||
187 | PetscDesignatedInitializer(stridescatter,NULL), | ||
188 | PetscDesignatedInitializer(dotnorm2,VecDotNorm2_Comp_MPI), | ||
189 | PetscDesignatedInitializer(getsubvector,NULL), | ||
190 | PetscDesignatedInitializer(restoresubvector,NULL), | ||
191 | PetscDesignatedInitializer(getarrayread,NULL), | ||
192 | PetscDesignatedInitializer(restorearrayread,NULL), | ||
193 | PetscDesignatedInitializer(stridesubsetgather,NULL), | ||
194 | PetscDesignatedInitializer(stridesubsetscatter,NULL), | ||
195 | PetscDesignatedInitializer(viewnative,NULL), | ||
196 | PetscDesignatedInitializer(loadnative,NULL), | ||
197 | PetscDesignatedInitializer(getlocalvector,NULL) | ||
198 | }; | ||
199 | |||
200 | 389 | PetscErrorCode VecDuplicateVecs_Comp(Vec w,PetscInt m,Vec *V[]) | |
201 | { | ||
202 | 389 | PetscInt i; | |
203 | |||
204 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
389 | PetscFunctionBegin; |
205 |
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.
|
389 | PetscValidHeaderSpecific(w,VEC_CLASSID,1); |
206 |
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.
|
389 | PetscAssertPointer(V,3); |
207 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
389 | PetscCheck(m>0,PetscObjectComm((PetscObject)w),PETSC_ERR_ARG_OUTOFRANGE,"m must be > 0: m = %" PetscInt_FMT,m); |
208 |
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.
|
389 | PetscCall(PetscMalloc1(m,V)); |
209 |
7/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 2 times.
|
4139 | for (i=0;i<m;i++) PetscCall(VecDuplicate(w,*V+i)); |
210 |
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.
|
77 | PetscFunctionReturn(PETSC_SUCCESS); |
211 | } | ||
212 | |||
213 | 389 | PetscErrorCode VecDestroyVecs_Comp(PetscInt m,Vec v[]) | |
214 | { | ||
215 | 389 | PetscInt i; | |
216 | |||
217 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
389 | PetscFunctionBegin; |
218 |
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.
|
389 | PetscAssertPointer(v,2); |
219 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
389 | PetscCheck(m>0,PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"m must be > 0: m = %" PetscInt_FMT,m); |
220 |
7/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 2 times.
|
4139 | for (i=0;i<m;i++) PetscCall(VecDestroy(&v[i])); |
221 |
6/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
389 | PetscCall(PetscFree(v)); |
222 |
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.
|
77 | PetscFunctionReturn(PETSC_SUCCESS); |
223 | } | ||
224 | |||
225 | 28687 | static PetscErrorCode VecCreate_Comp_Private(Vec v,Vec *x,PetscInt nx,PetscBool x_to_me,Vec_Comp_N *n) | |
226 | { | ||
227 | 28687 | Vec_Comp *s; | |
228 | 28687 | PetscInt N=0,lN=0,i,k; | |
229 | |||
230 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
28687 | PetscFunctionBegin; |
231 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
28687 | if (!VecCompInitialized) { |
232 | 354 | VecCompInitialized = PETSC_TRUE; | |
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.
|
354 | PetscCall(VecRegister(VECCOMP,VecCreate_Comp)); |
234 |
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.
|
354 | PetscCall(VecCompNormInit()); |
235 | } | ||
236 | |||
237 | /* Allocate a new Vec_Comp */ | ||
238 |
1/10✗ 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.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
|
28687 | if (v->data) PetscCall(PetscFree(v->data)); |
239 |
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.
|
28687 | PetscCall(PetscNew(&s)); |
240 |
4/6✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
28687 | PetscCall(PetscMemcpy(v->ops,&DvOps,sizeof(DvOps))); |
241 | 28687 | v->data = (void*)s; | |
242 | 28687 | v->petscnative = PETSC_FALSE; | |
243 | |||
244 | /* Allocate the array of Vec, if it is needed to be done */ | ||
245 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
28687 | if (!x_to_me) { |
246 |
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.
|
19767 | if (nx) PetscCall(PetscMalloc1(nx,&s->x)); |
247 |
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.
|
19767 | if (x) PetscCall(PetscArraycpy(s->x,x,nx)); |
248 | 8920 | } else s->x = x; | |
249 | |||
250 | 28687 | s->nx = nx; | |
251 | |||
252 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
28687 | if (nx && x) { |
253 | /* Allocate the shared structure, if it is not given */ | ||
254 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
28657 | if (!n) { |
255 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1157 | for (i=0;i<nx;i++) { |
256 |
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.
|
655 | PetscCall(VecGetSize(x[i],&k)); |
257 | 655 | N+= k; | |
258 |
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.
|
655 | PetscCall(VecGetLocalSize(x[i],&k)); |
259 | 655 | lN+= k; | |
260 | } | ||
261 |
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.
|
502 | PetscCall(PetscNew(&n)); |
262 | 502 | s->n = n; | |
263 | 502 | n->n = nx; | |
264 | 502 | n->N = N; | |
265 | 502 | n->lN = lN; | |
266 | 502 | n->friends = 1; | |
267 | } else { /* If not, check in the vector in the shared structure */ | ||
268 | 28155 | s->n = n; | |
269 | 28155 | s->n->friends++; | |
270 | } | ||
271 | |||
272 | /* Set the virtual sizes as the real sizes of the vector */ | ||
273 |
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.
|
28657 | PetscCall(VecSetSizes(v,s->n->lN,s->n->N)); |
274 | } | ||
275 | |||
276 |
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.
|
28687 | PetscCall(PetscObjectChangeTypeName((PetscObject)v,VECCOMP)); |
277 |
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.
|
28687 | PetscCall(PetscObjectComposeFunction((PetscObject)v,"VecCompSetSubVecs_C",VecCompSetSubVecs_Comp)); |
278 |
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.
|
28687 | PetscCall(PetscObjectComposeFunction((PetscObject)v,"VecCompGetSubVecs_C",VecCompGetSubVecs_Comp)); |
279 |
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.
|
5725 | PetscFunctionReturn(PETSC_SUCCESS); |
280 | } | ||
281 | |||
282 | 30 | SLEPC_EXTERN PetscErrorCode VecCreate_Comp(Vec V) | |
283 | { | ||
284 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
30 | PetscFunctionBegin; |
285 |
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.
|
30 | PetscCall(VecCreate_Comp_Private(V,NULL,0,PETSC_FALSE,NULL)); |
286 |
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.
|
6 | PetscFunctionReturn(PETSC_SUCCESS); |
287 | } | ||
288 | |||
289 | /*@ | ||
290 | VecCreateComp - Creates a new vector containing several subvectors, | ||
291 | each stored separately. | ||
292 | |||
293 | Collective | ||
294 | |||
295 | Input Parameters: | ||
296 | + comm - communicator for the new Vec | ||
297 | . Nx - array of (initial) global sizes of child vectors | ||
298 | . n - number of child vectors | ||
299 | . t - type of the child vectors | ||
300 | - Vparent - (optional) template vector | ||
301 | |||
302 | Output Parameter: | ||
303 | . V - new vector | ||
304 | |||
305 | Notes: | ||
306 | This is similar to PETSc's VecNest but customized for SLEPc's needs. In particular, | ||
307 | the number of child vectors can be modified dynamically, with VecCompSetSubVecs(). | ||
308 | |||
309 | Level: developer | ||
310 | |||
311 | .seealso: VecCreateCompWithVecs(), VecCompSetSubVecs() | ||
312 | @*/ | ||
313 | 30 | PetscErrorCode VecCreateComp(MPI_Comm comm,PetscInt Nx[],PetscInt n,VecType t,Vec Vparent,Vec *V) | |
314 | { | ||
315 | 30 | Vec *x; | |
316 | 30 | PetscInt i; | |
317 | |||
318 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
30 | PetscFunctionBegin; |
319 |
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.
|
30 | PetscCall(VecCreate(comm,V)); |
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.
|
30 | PetscCall(PetscMalloc1(n,&x)); |
321 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
90 | for (i=0;i<n;i++) { |
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.
|
60 | PetscCall(VecCreate(comm,&x[i])); |
323 |
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.
|
60 | PetscCall(VecSetSizes(x[i],PETSC_DECIDE,Nx[i])); |
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.
|
60 | PetscCall(VecSetType(x[i],t)); |
325 | } | ||
326 |
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.
|
30 | PetscCall(VecCreate_Comp_Private(*V,x,n,PETSC_TRUE,Vparent?((Vec_Comp*)Vparent->data)->n:NULL)); |
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.
|
6 | PetscFunctionReturn(PETSC_SUCCESS); |
328 | } | ||
329 | |||
330 | /*@ | ||
331 | VecCreateCompWithVecs - Creates a new vector containing several subvectors, | ||
332 | each stored separately, from an array of Vecs. | ||
333 | |||
334 | Collective | ||
335 | |||
336 | Input Parameters: | ||
337 | + x - array of Vecs | ||
338 | . n - number of child vectors | ||
339 | - Vparent - (optional) template vector | ||
340 | |||
341 | Output Parameter: | ||
342 | . V - new vector | ||
343 | |||
344 | Level: developer | ||
345 | |||
346 | .seealso: VecCreateComp() | ||
347 | @*/ | ||
348 | 19737 | PetscErrorCode VecCreateCompWithVecs(Vec x[],PetscInt n,Vec Vparent,Vec *V) | |
349 | { | ||
350 | 19737 | PetscInt i; | |
351 | |||
352 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
19737 | PetscFunctionBegin; |
353 |
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.
|
19737 | PetscAssertPointer(x,1); |
354 |
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.
|
19737 | PetscValidHeaderSpecific(*x,VEC_CLASSID,1); |
355 |
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.
|
19737 | PetscValidLogicalCollectiveInt(*x,n,2); |
356 |
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.
|
19737 | PetscCall(VecCreate(PetscObjectComm((PetscObject)x[0]),V)); |
357 |
7/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 2 times.
|
43832 | for (i=0;i<n;i++) PetscCall(PetscObjectReference((PetscObject)x[i])); |
358 |
7/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
19737 | PetscCall(VecCreate_Comp_Private(*V,x,n,PETSC_FALSE,Vparent?((Vec_Comp*)Vparent->data)->n:NULL)); |
359 |
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.
|
3869 | PetscFunctionReturn(PETSC_SUCCESS); |
360 | } | ||
361 | |||
362 | 8890 | PetscErrorCode VecDuplicate_Comp(Vec win,Vec *V) | |
363 | { | ||
364 | 8890 | Vec *x; | |
365 | 8890 | PetscInt i; | |
366 | 8890 | Vec_Comp *s = (Vec_Comp*)win->data; | |
367 | |||
368 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
8890 | PetscFunctionBegin; |
369 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
8890 | SlepcValidVecComp(win,1); |
370 |
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.
|
8890 | PetscCall(VecCreate(PetscObjectComm((PetscObject)win),V)); |
371 |
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.
|
8890 | PetscCall(PetscMalloc1(s->nx,&x)); |
372 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
18700 | for (i=0;i<s->nx;i++) { |
373 |
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.
|
9810 | if (s->x[i]) PetscCall(VecDuplicate(s->x[i],&x[i])); |
374 | ✗ | else x[i] = NULL; | |
375 | } | ||
376 |
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.
|
8890 | PetscCall(VecCreate_Comp_Private(*V,x,s->nx,PETSC_TRUE,s->n)); |
377 |
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.
|
1844 | PetscFunctionReturn(PETSC_SUCCESS); |
378 | } | ||
379 | |||
380 | 1556616 | static PetscErrorCode VecCompGetSubVecs_Comp(Vec win,PetscInt *n,const Vec **x) | |
381 | { | ||
382 | 1556616 | Vec_Comp *s = (Vec_Comp*)win->data; | |
383 | |||
384 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1556616 | PetscFunctionBegin; |
385 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
1556616 | if (x) *x = s->x; |
386 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1556616 | if (n) *n = s->n->n; |
387 |
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.
|
1556616 | PetscFunctionReturn(PETSC_SUCCESS); |
388 | } | ||
389 | |||
390 | /*@C | ||
391 | VecCompGetSubVecs - Returns the entire array of vectors defining a | ||
392 | compound vector. | ||
393 | |||
394 | Collective | ||
395 | |||
396 | Input Parameter: | ||
397 | . win - compound vector | ||
398 | |||
399 | Output Parameters: | ||
400 | + n - number of child vectors | ||
401 | - x - array of child vectors | ||
402 | |||
403 | Level: developer | ||
404 | |||
405 | .seealso: VecCreateComp() | ||
406 | @*/ | ||
407 | 1556616 | PetscErrorCode VecCompGetSubVecs(Vec win,PetscInt *n,const Vec **x) | |
408 | { | ||
409 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1556616 | PetscFunctionBegin; |
410 |
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.
|
1556616 | PetscValidHeaderSpecific(win,VEC_CLASSID,1); |
411 |
9/16✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
|
1556616 | PetscUseMethod(win,"VecCompGetSubVecs_C",(Vec,PetscInt*,const Vec**),(win,n,x)); |
412 |
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.
|
1556616 | PetscFunctionReturn(PETSC_SUCCESS); |
413 | } | ||
414 | |||
415 | 9483 | static PetscErrorCode VecCompSetSubVecs_Comp(Vec win,PetscInt n,Vec *x) | |
416 | { | ||
417 | 9483 | Vec_Comp *s = (Vec_Comp*)win->data; | |
418 | 9483 | PetscInt i,N,nlocal; | |
419 | 9483 | Vec_Comp_N *nn; | |
420 | |||
421 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
9483 | PetscFunctionBegin; |
422 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
9483 | PetscCheck(s,PetscObjectComm((PetscObject)win),PETSC_ERR_ORDER,"Must call VecSetSizes first"); |
423 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
9483 | if (!s->nx) { |
424 | /* vector has been created via VecCreate+VecSetType+VecSetSizes, so allocate data structures */ | ||
425 |
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.
|
30 | PetscCall(PetscMalloc1(n,&s->x)); |
426 |
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.
|
30 | PetscCall(VecGetSize(win,&N)); |
427 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
30 | PetscCheck(N%n==0,PetscObjectComm((PetscObject)win),PETSC_ERR_SUP,"Global dimension %" PetscInt_FMT " is not divisible by %" PetscInt_FMT,N,n); |
428 |
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.
|
30 | PetscCall(VecGetLocalSize(win,&nlocal)); |
429 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
30 | PetscCheck(nlocal%n==0,PetscObjectComm((PetscObject)win),PETSC_ERR_SUP,"Local dimension %" PetscInt_FMT " is not divisible by %" PetscInt_FMT,nlocal,n); |
430 | 30 | s->nx = n; | |
431 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
90 | for (i=0;i<n;i++) { |
432 |
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.
|
60 | PetscCall(VecCreate(PetscObjectComm((PetscObject)win),&s->x[i])); |
433 |
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.
|
60 | PetscCall(VecSetSizes(s->x[i],nlocal/n,N/n)); |
434 |
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.
|
60 | PetscCall(VecSetFromOptions(s->x[i])); |
435 | } | ||
436 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
30 | if (!s->n) { |
437 |
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.
|
30 | PetscCall(PetscNew(&nn)); |
438 | 30 | s->n = nn; | |
439 | 30 | nn->N = N; | |
440 | 30 | nn->lN = nlocal; | |
441 | 30 | nn->friends = 1; | |
442 | } | ||
443 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
9453 | } else PetscCheck(n<=s->nx,PetscObjectComm((PetscObject)win),PETSC_ERR_SUP,"Number of child vectors cannot be larger than %" PetscInt_FMT,s->nx); |
444 |
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.
|
9483 | if (x) PetscCall(PetscArraycpy(s->x,x,n)); |
445 | 9483 | s->n->n = n; | |
446 |
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.
|
9483 | PetscFunctionReturn(PETSC_SUCCESS); |
447 | } | ||
448 | |||
449 | /*@ | ||
450 | VecCompSetSubVecs - Resets the number of subvectors defining a compound vector, | ||
451 | or replaces the subvectors. | ||
452 | |||
453 | Collective | ||
454 | |||
455 | Input Parameters: | ||
456 | + win - compound vector | ||
457 | . n - number of child vectors | ||
458 | - x - array of child vectors | ||
459 | |||
460 | Note: | ||
461 | It is not possible to increase the number of subvectors with respect to the | ||
462 | number set at its creation. | ||
463 | |||
464 | Level: developer | ||
465 | |||
466 | .seealso: VecCreateComp(), VecCompGetSubVecs() | ||
467 | @*/ | ||
468 | 9483 | PetscErrorCode VecCompSetSubVecs(Vec win,PetscInt n,Vec x[]) | |
469 | { | ||
470 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
9483 | PetscFunctionBegin; |
471 |
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.
|
9483 | PetscValidHeaderSpecific(win,VEC_CLASSID,1); |
472 |
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.
|
9483 | PetscValidLogicalCollectiveInt(win,n,2); |
473 |
8/14✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 10 times.
✓ 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.
|
9483 | PetscTryMethod(win,"VecCompSetSubVecs_C",(Vec,PetscInt,Vec*),(win,n,x)); |
474 |
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.
|
9483 | PetscFunctionReturn(PETSC_SUCCESS); |
475 | } | ||
476 | |||
477 | 666946 | PetscErrorCode VecAXPY_Comp(Vec v,PetscScalar alpha,Vec w) | |
478 | { | ||
479 | 666946 | Vec_Comp *vs = (Vec_Comp*)v->data,*ws = (Vec_Comp*)w->data; | |
480 | 666946 | PetscInt i; | |
481 | |||
482 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
666946 | PetscFunctionBegin; |
483 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
666946 | SlepcValidVecComp(v,1); |
484 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
666946 | SlepcValidVecComp(w,3); |
485 |
7/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 2 times.
|
1335577 | for (i=0;i<vs->n->n;i++) PetscCall(VecAXPY(vs->x[i],alpha,ws->x[i])); |
486 |
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.
|
119300 | PetscFunctionReturn(PETSC_SUCCESS); |
487 | } | ||
488 | |||
489 | 391854 | PetscErrorCode VecAYPX_Comp(Vec v,PetscScalar alpha,Vec w) | |
490 | { | ||
491 | 391854 | Vec_Comp *vs = (Vec_Comp*)v->data,*ws = (Vec_Comp*)w->data; | |
492 | 391854 | PetscInt i; | |
493 | |||
494 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
391854 | PetscFunctionBegin; |
495 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
391854 | SlepcValidVecComp(v,1); |
496 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
391854 | SlepcValidVecComp(w,3); |
497 |
7/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 2 times.
|
784583 | for (i=0;i<vs->n->n;i++) PetscCall(VecAYPX(vs->x[i],alpha,ws->x[i])); |
498 |
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.
|
69952 | PetscFunctionReturn(PETSC_SUCCESS); |
499 | } | ||
500 | |||
501 | 30 | PetscErrorCode VecAXPBY_Comp(Vec v,PetscScalar alpha,PetscScalar beta,Vec w) | |
502 | { | ||
503 | 30 | Vec_Comp *vs = (Vec_Comp*)v->data,*ws = (Vec_Comp*)w->data; | |
504 | 30 | PetscInt i; | |
505 | |||
506 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
30 | PetscFunctionBegin; |
507 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
30 | SlepcValidVecComp(v,1); |
508 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
30 | SlepcValidVecComp(w,4); |
509 |
7/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 2 times.
|
90 | for (i=0;i<vs->n->n;i++) PetscCall(VecAXPBY(vs->x[i],alpha,beta,ws->x[i])); |
510 |
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.
|
6 | PetscFunctionReturn(PETSC_SUCCESS); |
511 | } | ||
512 | |||
513 | 399458 | PetscErrorCode VecMAXPY_Comp(Vec v,PetscInt n,const PetscScalar *alpha,Vec *w) | |
514 | { | ||
515 | 399458 | Vec_Comp *vs = (Vec_Comp*)v->data; | |
516 | 399458 | Vec *wx; | |
517 | 399458 | PetscInt i,j; | |
518 | |||
519 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
399458 | PetscFunctionBegin; |
520 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
399458 | SlepcValidVecComp(v,1); |
521 |
4/6✓ Branch 0 taken 8 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
|
1394955 | for (i=0;i<n;i++) SlepcValidVecComp(w[i],4); |
522 | |||
523 |
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.
|
399458 | PetscCall(PetscMalloc1(n,&wx)); |
524 | |||
525 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
799762 | for (j=0;j<vs->n->n;j++) { |
526 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1397493 | for (i=0;i<n;i++) wx[i] = ((Vec_Comp*)w[i]->data)->x[j]; |
527 |
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.
|
400304 | PetscCall(VecMAXPY(vs->x[j],n,alpha,wx)); |
528 | } | ||
529 | |||
530 |
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.
|
399458 | PetscCall(PetscFree(wx)); |
531 |
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.
|
71226 | PetscFunctionReturn(PETSC_SUCCESS); |
532 | } | ||
533 | |||
534 | 8150 | PetscErrorCode VecWAXPY_Comp(Vec v,PetscScalar alpha,Vec w,Vec z) | |
535 | { | ||
536 | 8150 | Vec_Comp *vs = (Vec_Comp*)v->data,*ws = (Vec_Comp*)w->data,*zs = (Vec_Comp*)z->data; | |
537 | 8150 | PetscInt i; | |
538 | |||
539 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
8150 | PetscFunctionBegin; |
540 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
8150 | SlepcValidVecComp(v,1); |
541 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
8150 | SlepcValidVecComp(w,3); |
542 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
8150 | SlepcValidVecComp(z,4); |
543 |
7/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 2 times.
|
16330 | for (i=0;i<vs->n->n;i++) PetscCall(VecWAXPY(vs->x[i],alpha,ws->x[i],zs->x[i])); |
544 |
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.
|
1640 | PetscFunctionReturn(PETSC_SUCCESS); |
545 | } | ||
546 | |||
547 | 8150 | PetscErrorCode VecAXPBYPCZ_Comp(Vec v,PetscScalar alpha,PetscScalar beta,PetscScalar gamma,Vec w,Vec z) | |
548 | { | ||
549 | 8150 | Vec_Comp *vs = (Vec_Comp*)v->data,*ws = (Vec_Comp*)w->data,*zs = (Vec_Comp*)z->data; | |
550 | 8150 | PetscInt i; | |
551 | |||
552 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
8150 | PetscFunctionBegin; |
553 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
8150 | SlepcValidVecComp(v,1); |
554 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
8150 | SlepcValidVecComp(w,5); |
555 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
8150 | SlepcValidVecComp(z,6); |
556 |
7/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 2 times.
|
16330 | for (i=0;i<vs->n->n;i++) PetscCall(VecAXPBYPCZ(vs->x[i],alpha,beta,gamma,ws->x[i],zs->x[i])); |
557 |
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.
|
1640 | PetscFunctionReturn(PETSC_SUCCESS); |
558 | } | ||
559 | |||
560 | 90 | PetscErrorCode VecGetSize_Comp(Vec v,PetscInt *size) | |
561 | { | ||
562 | 90 | Vec_Comp *vs = (Vec_Comp*)v->data; | |
563 | |||
564 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
90 | PetscFunctionBegin; |
565 |
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.
|
90 | PetscAssertPointer(size,2); |
566 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
90 | if (vs->n) { |
567 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
60 | SlepcValidVecComp(v,1); |
568 | 60 | *size = vs->n->N; | |
569 | 30 | } else *size = v->map->N; | |
570 |
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.
|
90 | PetscFunctionReturn(PETSC_SUCCESS); |
571 | } | ||
572 | |||
573 | 469830 | PetscErrorCode VecGetLocalSize_Comp(Vec v,PetscInt *size) | |
574 | { | ||
575 | 469830 | Vec_Comp *vs = (Vec_Comp*)v->data; | |
576 | |||
577 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
469830 | PetscFunctionBegin; |
578 |
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.
|
469830 | PetscAssertPointer(size,2); |
579 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
469830 | if (vs->n) { |
580 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
469800 | SlepcValidVecComp(v,1); |
581 | 469800 | *size = vs->n->lN; | |
582 | 30 | } else *size = v->map->n; | |
583 |
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.
|
469830 | PetscFunctionReturn(PETSC_SUCCESS); |
584 | } | ||
585 | |||
586 | 30 | PetscErrorCode VecMax_Comp(Vec v,PetscInt *idx,PetscReal *z) | |
587 | { | ||
588 | 30 | Vec_Comp *vs = (Vec_Comp*)v->data; | |
589 | 30 | PetscInt idxp,s=0,s0; | |
590 | 30 | PetscReal zp,z0; | |
591 | 30 | PetscInt i; | |
592 | |||
593 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
30 | PetscFunctionBegin; |
594 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
30 | SlepcValidVecComp(v,1); |
595 |
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.
|
30 | if (!idx && !z) PetscFunctionReturn(PETSC_SUCCESS); |
596 | |||
597 |
6/10✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
|
60 | if (vs->n->n > 0) PetscCall(VecMax(vs->x[0],idx?&idxp:NULL,&zp)); |
598 | else { | ||
599 | ✗ | zp = PETSC_MIN_REAL; | |
600 | ✗ | if (idx) idxp = -1; | |
601 | } | ||
602 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
60 | for (i=1;i<vs->n->n;i++) { |
603 |
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.
|
30 | PetscCall(VecGetSize(vs->x[i-1],&s0)); |
604 | 30 | s += s0; | |
605 |
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.
|
60 | PetscCall(VecMax(vs->x[i],idx?&idxp:NULL,&z0)); |
606 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
30 | if (zp < z0) { |
607 | ✗ | if (idx) *idx = s+idxp; | |
608 | ✗ | zp = z0; | |
609 | } | ||
610 | } | ||
611 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
30 | if (z) *z = zp; |
612 |
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.
|
6 | PetscFunctionReturn(PETSC_SUCCESS); |
613 | } | ||
614 | |||
615 | 30 | PetscErrorCode VecMin_Comp(Vec v,PetscInt *idx,PetscReal *z) | |
616 | { | ||
617 | 30 | Vec_Comp *vs = (Vec_Comp*)v->data; | |
618 | 30 | PetscInt idxp,s=0,s0; | |
619 | 30 | PetscReal zp,z0; | |
620 | 30 | PetscInt i; | |
621 | |||
622 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
30 | PetscFunctionBegin; |
623 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
30 | SlepcValidVecComp(v,1); |
624 |
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.
|
30 | if (!idx && !z) PetscFunctionReturn(PETSC_SUCCESS); |
625 | |||
626 |
6/10✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
|
60 | if (vs->n->n > 0) PetscCall(VecMin(vs->x[0],idx?&idxp:NULL,&zp)); |
627 | else { | ||
628 | ✗ | zp = PETSC_MAX_REAL; | |
629 | ✗ | if (idx) idxp = -1; | |
630 | } | ||
631 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
60 | for (i=1;i<vs->n->n;i++) { |
632 |
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.
|
30 | PetscCall(VecGetSize(vs->x[i-1],&s0)); |
633 | 30 | s += s0; | |
634 |
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.
|
60 | PetscCall(VecMin(vs->x[i],idx?&idxp:NULL,&z0)); |
635 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
30 | if (zp > z0) { |
636 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
30 | if (idx) *idx = s+idxp; |
637 | 30 | zp = z0; | |
638 | } | ||
639 | } | ||
640 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
30 | if (z) *z = zp; |
641 |
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.
|
6 | PetscFunctionReturn(PETSC_SUCCESS); |
642 | } | ||
643 | |||
644 | 30 | PetscErrorCode VecMaxPointwiseDivide_Comp(Vec v,Vec w,PetscReal *m) | |
645 | { | ||
646 | 30 | Vec_Comp *vs = (Vec_Comp*)v->data,*ws = (Vec_Comp*)w->data; | |
647 | 30 | PetscReal work; | |
648 | 30 | PetscInt i; | |
649 | |||
650 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
30 | PetscFunctionBegin; |
651 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
30 | SlepcValidVecComp(v,1); |
652 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
30 | SlepcValidVecComp(w,2); |
653 |
3/16✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 2 times.
✗ 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.
|
30 | if (!m || vs->n->n == 0) PetscFunctionReturn(PETSC_SUCCESS); |
654 |
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.
|
30 | PetscCall(VecMaxPointwiseDivide(vs->x[0],ws->x[0],m)); |
655 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
60 | for (i=1;i<vs->n->n;i++) { |
656 |
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.
|
30 | PetscCall(VecMaxPointwiseDivide(vs->x[i],ws->x[i],&work)); |
657 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
30 | *m = PetscMax(*m,work); |
658 | } | ||
659 |
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.
|
6 | PetscFunctionReturn(PETSC_SUCCESS); |
660 | } | ||
661 | |||
662 | #define __QUOTEME__(x) #x | ||
663 | #define __COMPOSE2__(A,B) A##B | ||
664 | #define __COMPOSE3__(A,B,C) A##B##C | ||
665 | |||
666 | #define __FUNC_TEMPLATE1__(NAME) \ | ||
667 | PetscErrorCode __COMPOSE3__(Vec,NAME,_Comp)(Vec v) \ | ||
668 | { \ | ||
669 | Vec_Comp *vs = (Vec_Comp*)v->data; \ | ||
670 | PetscInt i; \ | ||
671 | \ | ||
672 | PetscFunctionBegin; \ | ||
673 | SlepcValidVecComp(v,1); \ | ||
674 | for (i=0;i<vs->n->n;i++) { \ | ||
675 | PetscCall(__COMPOSE2__(Vec,NAME)(vs->x[i])); \ | ||
676 | } \ | ||
677 | PetscFunctionReturn(PETSC_SUCCESS);\ | ||
678 | } | ||
679 | |||
680 |
15/26✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 4 times.
✓ Branch 3 taken 5 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
✓ Branch 12 taken 1 times.
✓ Branch 13 taken 1 times.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
|
52507 | __FUNC_TEMPLATE1__(Conjugate) |
681 |
15/26✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ 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 taken 2 times.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
|
90 | __FUNC_TEMPLATE1__(Reciprocal) |
682 |
15/26✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ 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 taken 2 times.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
|
90 | __FUNC_TEMPLATE1__(SqrtAbs) |
683 |
15/26✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ 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 taken 2 times.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
|
90 | __FUNC_TEMPLATE1__(Abs) |
684 |
15/26✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ 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 taken 2 times.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
|
90 | __FUNC_TEMPLATE1__(Exp) |
685 |
15/26✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ 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 taken 2 times.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
|
90 | __FUNC_TEMPLATE1__(Log) |
686 | |||
687 | #define __FUNC_TEMPLATE2__(NAME,T0) \ | ||
688 | PetscErrorCode __COMPOSE3__(Vec,NAME,_Comp)(Vec v,T0 __a) \ | ||
689 | { \ | ||
690 | Vec_Comp *vs = (Vec_Comp*)v->data; \ | ||
691 | PetscInt i; \ | ||
692 | \ | ||
693 | PetscFunctionBegin; \ | ||
694 | SlepcValidVecComp(v,1); \ | ||
695 | for (i=0;i<vs->n->n;i++) { \ | ||
696 | PetscCall(__COMPOSE2__(Vec,NAME)(vs->x[i],__a)); \ | ||
697 | } \ | ||
698 | PetscFunctionReturn(PETSC_SUCCESS);\ | ||
699 | } | ||
700 | |||
701 |
15/26✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ 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 taken 2 times.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
|
37500 | __FUNC_TEMPLATE2__(Set,PetscScalar) |
702 |
15/26✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ 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 taken 2 times.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
|
90 | __FUNC_TEMPLATE2__(View,PetscViewer) |
703 |
15/26✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ 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 taken 2 times.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
|
28780 | __FUNC_TEMPLATE2__(Scale,PetscScalar) |
704 |
15/26✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ 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 taken 2 times.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
|
90 | __FUNC_TEMPLATE2__(SetRandom,PetscRandom) |
705 |
15/26✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ 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 taken 2 times.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
|
90 | __FUNC_TEMPLATE2__(Shift,PetscScalar) |
706 | |||
707 | #define __FUNC_TEMPLATE3__(NAME) \ | ||
708 | PetscErrorCode __COMPOSE3__(Vec,NAME,_Comp)(Vec v,Vec w) \ | ||
709 | { \ | ||
710 | Vec_Comp *vs = (Vec_Comp*)v->data,\ | ||
711 | *ws = (Vec_Comp*)w->data; \ | ||
712 | PetscInt i; \ | ||
713 | \ | ||
714 | PetscFunctionBegin; \ | ||
715 | SlepcValidVecComp(v,1); \ | ||
716 | SlepcValidVecComp(w,2); \ | ||
717 | for (i=0;i<vs->n->n;i++) { \ | ||
718 | PetscCall(__COMPOSE2__(Vec,NAME)(vs->x[i],ws->x[i])); \ | ||
719 | } \ | ||
720 | PetscFunctionReturn(PETSC_SUCCESS);\ | ||
721 | } | ||
722 | |||
723 |
16/30✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 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 taken 2 times.
✗ Branch 11 not taken.
✓ 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 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
|
436120 | __FUNC_TEMPLATE3__(Copy) |
724 |
16/30✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 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 taken 2 times.
✗ Branch 11 not taken.
✓ 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 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
|
90 | __FUNC_TEMPLATE3__(Swap) |
725 | |||
726 | #define __FUNC_TEMPLATE4__(NAME) \ | ||
727 | PetscErrorCode __COMPOSE3__(Vec,NAME,_Comp)(Vec v,Vec w,Vec z) \ | ||
728 | { \ | ||
729 | Vec_Comp *vs = (Vec_Comp*)v->data, \ | ||
730 | *ws = (Vec_Comp*)w->data, \ | ||
731 | *zs = (Vec_Comp*)z->data; \ | ||
732 | PetscInt i; \ | ||
733 | \ | ||
734 | PetscFunctionBegin; \ | ||
735 | SlepcValidVecComp(v,1); \ | ||
736 | SlepcValidVecComp(w,2); \ | ||
737 | SlepcValidVecComp(z,3); \ | ||
738 | for (i=0;i<vs->n->n;i++) { \ | ||
739 | PetscCall(__COMPOSE2__(Vec,NAME)(vs->x[i],ws->x[i],zs->x[i])); \ | ||
740 | } \ | ||
741 | PetscFunctionReturn(PETSC_SUCCESS);\ | ||
742 | } | ||
743 | |||
744 |
17/34✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 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 taken 2 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✓ 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 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
|
90 | __FUNC_TEMPLATE4__(PointwiseMax) |
745 |
17/34✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 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 taken 2 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✓ 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 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
|
90 | __FUNC_TEMPLATE4__(PointwiseMaxAbs) |
746 |
17/34✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 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 taken 2 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✓ 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 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
|
90 | __FUNC_TEMPLATE4__(PointwiseMin) |
747 |
17/34✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 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 taken 2 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✓ 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 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
|
90 | __FUNC_TEMPLATE4__(PointwiseMult) |
748 |
17/34✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 10 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 taken 2 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✓ 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 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
|
90 | __FUNC_TEMPLATE4__(PointwiseDivide) |
749 |