GCC Code Coverage Report


Directory: ./
File: src/sys/classes/rg/impls/interval/rginterval.c
Date: 2025-10-04 04:19:13
Exec Total Coverage
Lines: 208 212 98.1%
Functions: 14 14 100.0%
Branches: 447 870 51.4%

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 Interval of the real axis or more generally a (possibly open) rectangle
12 of the complex plane
13 */
14
15 #include <slepc/private/rgimpl.h> /*I "slepcrg.h" I*/
16 #include <petscdraw.h>
17
18 typedef struct {
19 PetscReal a,b; /* interval in the real axis */
20 PetscReal c,d; /* interval in the imaginary axis */
21 } RG_INTERVAL;
22
23 1159 static PetscErrorCode RGIntervalSetEndpoints_Interval(RG rg,PetscReal a,PetscReal b,PetscReal c,PetscReal d)
24 {
25 1159 RG_INTERVAL *ctx = (RG_INTERVAL*)rg->data;
26
27
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
1159 PetscFunctionBegin;
28
1/6
✗ 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.
1159 PetscCheck(a || b || c || d,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_WRONG,"At least one argument must be nonzero");
29
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1159 PetscCheck(a!=b || !a,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_WRONG,"Badly defined interval, endpoints must be distinct (or both zero)");
30
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1159 PetscCheck(a<=b,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_WRONG,"Badly defined interval, must be a<b");
31
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1159 PetscCheck(c!=d || !c,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_WRONG,"Badly defined interval, endpoints must be distinct (or both zero)");
32
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1159 PetscCheck(c<=d,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_WRONG,"Badly defined interval, must be c<d");
33 #if !defined(PETSC_USE_COMPLEX)
34
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
538 PetscCheck(c==-d,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_WRONG,"In real scalars the region must be symmetric wrt real axis");
35 #endif
36 1159 ctx->a = a;
37 1159 ctx->b = b;
38 1159 ctx->c = c;
39 1159 ctx->d = d;
40
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.
1159 PetscFunctionReturn(PETSC_SUCCESS);
41 }
42
43 /*@
44 RGIntervalSetEndpoints - Sets the parameters defining the interval region.
45
46 Logically Collective
47
48 Input Parameters:
49 + rg - the region context
50 . a - left endpoint of the interval in the real axis
51 . b - right endpoint of the interval in the real axis
52 . c - bottom endpoint of the interval in the imaginary axis
53 - d - top endpoint of the interval in the imaginary axis
54
55 Options Database Keys:
56 . -rg_interval_endpoints - the four endpoints
57
58 Note:
59 The region is defined as [a,b]x[c,d]. Particular cases are an interval on
60 the real axis (c=d=0), similar for the imaginary axis (a=b=0), the whole
61 complex plane (a=-inf,b=inf,c=-inf,d=inf), and so on.
62
63 When PETSc is built with real scalars, the region must be symmetric with
64 respect to the real axis.
65
66 Level: advanced
67
68 .seealso: RGIntervalGetEndpoints()
69 @*/
70 1159 PetscErrorCode RGIntervalSetEndpoints(RG rg,PetscReal a,PetscReal b,PetscReal c,PetscReal d)
71 {
72
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
1159 PetscFunctionBegin;
73
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.
1159 PetscValidHeaderSpecific(rg,RG_CLASSID,1);
74
29/66
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ 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 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ 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 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
1159 PetscValidLogicalCollectiveReal(rg,a,2);
75
29/66
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ 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 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ 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 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
1159 PetscValidLogicalCollectiveReal(rg,b,3);
76
29/66
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ 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 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ 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 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
1159 PetscValidLogicalCollectiveReal(rg,c,4);
77
29/66
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ 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 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ 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 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
1159 PetscValidLogicalCollectiveReal(rg,d,5);
78
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.
1159 PetscTryMethod(rg,"RGIntervalSetEndpoints_C",(RG,PetscReal,PetscReal,PetscReal,PetscReal),(rg,a,b,c,d));
79
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.
1159 PetscFunctionReturn(PETSC_SUCCESS);
80 }
81
82 4048 static PetscErrorCode RGIntervalGetEndpoints_Interval(RG rg,PetscReal *a,PetscReal *b,PetscReal *c,PetscReal *d)
83 {
84 4048 RG_INTERVAL *ctx = (RG_INTERVAL*)rg->data;
85
86
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
4048 PetscFunctionBegin;
87
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
4048 if (a) *a = ctx->a;
88
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
4048 if (b) *b = ctx->b;
89
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
4048 if (c) *c = ctx->c;
90
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
4048 if (d) *d = ctx->d;
91
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.
4048 PetscFunctionReturn(PETSC_SUCCESS);
92 }
93
94 /*@
95 RGIntervalGetEndpoints - Gets the parameters that define the interval region.
96
97 Not Collective
98
99 Input Parameter:
100 . rg - the region context
101
102 Output Parameters:
103 + a - left endpoint of the interval in the real axis
104 . b - right endpoint of the interval in the real axis
105 . c - bottom endpoint of the interval in the imaginary axis
106 - d - top endpoint of the interval in the imaginary axis
107
108 Level: advanced
109
110 .seealso: RGIntervalSetEndpoints()
111 @*/
112 4048 PetscErrorCode RGIntervalGetEndpoints(RG rg,PetscReal *a,PetscReal *b,PetscReal *c,PetscReal *d)
113 {
114
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
4048 PetscFunctionBegin;
115
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.
4048 PetscValidHeaderSpecific(rg,RG_CLASSID,1);
116
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.
4048 PetscUseMethod(rg,"RGIntervalGetEndpoints_C",(RG,PetscReal*,PetscReal*,PetscReal*,PetscReal*),(rg,a,b,c,d));
117
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.
4048 PetscFunctionReturn(PETSC_SUCCESS);
118 }
119
120 62 static PetscErrorCode RGView_Interval(RG rg,PetscViewer viewer)
121 {
122 62 RG_INTERVAL *ctx = (RG_INTERVAL*)rg->data;
123 62 PetscBool isdraw,isascii;
124 62 int winw,winh;
125 62 PetscDraw draw;
126 62 PetscDrawAxis axis;
127 62 PetscReal a,b,c,d,ab,cd,lx,ly,w,scale=1.2;
128
129
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
62 PetscFunctionBegin;
130
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.
62 PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERDRAW,&isdraw));
131
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.
62 PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii));
132
15/16
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 10 times.
✓ Branch 7 taken 10 times.
✓ Branch 8 taken 10 times.
✓ Branch 9 taken 10 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 10 times.
✓ Branch 12 taken 2 times.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
62 if (isascii) PetscCall(PetscViewerASCIIPrintf(viewer," region: [%g,%g]x[%g,%g]\n",RGShowReal(ctx->a),RGShowReal(ctx->b),RGShowReal(ctx->c),RGShowReal(ctx->d)));
133
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
10 else if (isdraw) {
134
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.
10 PetscCall(PetscViewerDrawGetDraw(viewer,0,&draw));
135
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.
10 PetscCall(PetscDrawCheckResizedWindow(draw));
136
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.
10 PetscCall(PetscDrawGetWindowSize(draw,&winw,&winh));
137 10 winw = PetscMax(winw,1); winh = PetscMax(winh,1);
138
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.
10 PetscCall(PetscDrawClear(draw));
139
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.
10 PetscCall(PetscDrawSetTitle(draw,"Interval region"));
140
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.
10 PetscCall(PetscDrawAxisCreate(draw,&axis));
141 10 a = ctx->a*rg->sfactor;
142 10 b = ctx->b*rg->sfactor;
143 10 c = ctx->c*rg->sfactor;
144 10 d = ctx->d*rg->sfactor;
145 10 lx = b-a;
146 10 ly = d-c;
147 10 ab = (a+b)/2;
148 10 cd = (c+d)/2;
149
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
10 w = scale*PetscMax(lx/winw,ly/winh)/2;
150
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.
10 PetscCall(PetscDrawAxisSetLimits(axis,ab-w*winw,ab+w*winw,cd-w*winh,cd+w*winh));
151
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.
10 PetscCall(PetscDrawAxisDraw(axis));
152
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.
10 PetscCall(PetscDrawAxisDestroy(&axis));
153
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.
10 PetscCall(PetscDrawRectangle(draw,a,c,b,d,PETSC_DRAW_BLUE,PETSC_DRAW_BLUE,PETSC_DRAW_BLUE,PETSC_DRAW_BLUE));
154
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.
10 PetscCall(PetscDrawFlush(draw));
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.
10 PetscCall(PetscDrawSave(draw));
156
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.
10 PetscCall(PetscDrawPause(draw));
157 }
158
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.
10 PetscFunctionReturn(PETSC_SUCCESS);
159 }
160
161 84169 static PetscErrorCode RGIsTrivial_Interval(RG rg,PetscBool *trivial)
162 {
163 84169 RG_INTERVAL *ctx = (RG_INTERVAL*)rg->data;
164
165
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
84169 PetscFunctionBegin;
166
3/6
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
84439 if (rg->complement) *trivial = (ctx->a==ctx->b && ctx->c==ctx->d)? PETSC_TRUE: PETSC_FALSE;
167
5/8
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 10 times.
89253 else *trivial = (ctx->a<=-PETSC_MAX_REAL && ctx->b>=PETSC_MAX_REAL && ctx->c<=-PETSC_MAX_REAL && ctx->d>=PETSC_MAX_REAL)? PETSC_TRUE: PETSC_FALSE;
168
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.
84169 PetscFunctionReturn(PETSC_SUCCESS);
169 }
170
171 406 static PetscErrorCode RGComputeContour_Interval(RG rg,PetscInt n,PetscScalar *cr,PetscScalar *ci)
172 {
173 406 RG_INTERVAL *ctx = (RG_INTERVAL*)rg->data;
174 406 PetscInt i,N,Nv,Nh,k1,k0;
175 406 PetscReal hv,hh,t;
176
177
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
406 PetscFunctionBegin;
178
4/10
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
406 PetscCheck(ctx->a>-PETSC_MAX_REAL && ctx->b<PETSC_MAX_REAL && ctx->c>-PETSC_MAX_REAL && ctx->d<PETSC_MAX_REAL,PetscObjectComm((PetscObject)rg),PETSC_ERR_SUP,"Contour not defined in unbounded regions");
179
3/4
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
406 if (ctx->a==ctx->b || ctx->c==ctx->d) {
180
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
222 if (ctx->a==ctx->b) {hv = (ctx->d-ctx->c)/(n-1); hh = 0.0;}
181 222 else {hh = (ctx->b-ctx->a)/(n-1); hv = 0.0;}
182
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
738926 for (i=0;i<n;i++) {
183 #if defined(PETSC_USE_COMPLEX)
184 1140 cr[i] = PetscCMPLX(ctx->a+hh*i,ctx->c+hv*i);
185 #else
186
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
737564 if (cr) cr[i] = ctx->a+hh*i;
187
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
737564 if (ci) ci[i] = ctx->c+hv*i;
188 #endif
189 }
190 } else {
191
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
184 PetscCheck(n>3,PetscObjectComm((PetscObject)rg),PETSC_ERR_SUP,"Minimum number of contour points: 4");
192 184 N = n/2;
193 184 t = ((ctx->d-ctx->c)/(ctx->d-ctx->c+ctx->b-ctx->a))*N;
194
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
184 Nv = t-PetscFloorReal(t)>0.5?PetscCeilReal(t):PetscFloorReal(t);
195
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
184 if (Nv==0) Nv++;
196
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
134 else if (Nv==N) Nv--;
197 184 Nh = N-Nv;
198 184 hh = (ctx->b-ctx->a)/Nh;
199 184 hv = (ctx->d-ctx->c)/Nv;
200 /* positive imaginary part first */
201 184 k1 = Nv/2+1;
202 184 k0 = Nv-k1;
203
204
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
229 for (i=k1;i<Nv;i++) {
205 #if defined(PETSC_USE_COMPLEX)
206 45 cr[i-k1] = PetscCMPLX(ctx->b,ctx->c+i*hv);
207 45 cr[i-k1+N] = PetscCMPLX(ctx->a,ctx->d-i*hv);
208 #else
209 if (cr) {cr[i-k1] = ctx->b; cr[i-k1+N] = ctx->a;}
210 if (ci) {ci[i-k1] = ctx->c+i*hv; ci[i-k1+N] = ctx->d-i*hv;}
211 #endif
212 }
213
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
488085 for (i=0;i<Nh;i++) {
214 #if defined(PETSC_USE_COMPLEX)
215 437871 cr[i+k0] = PetscCMPLX(ctx->b-i*hh,ctx->d);
216 437871 cr[i+k0+N] = PetscCMPLX(ctx->a+i*hh,ctx->c);
217 #else
218
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
50030 if (cr) {cr[i+k0] = ctx->b-i*hh; cr[i+k0+N] = ctx->a+i*hh;}
219
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
50030 if (ci) {ci[i+k0] = ctx->d; ci[i+k0+N] = ctx->c;}
220 #endif
221 }
222
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
416 for (i=0;i<k1;i++) {
223 #if defined(PETSC_USE_COMPLEX)
224 212 cr[i+k0+Nh] = PetscCMPLX(ctx->a,ctx->d-i*hv);
225 212 cr[i+k0+Nh+N] = PetscCMPLX(ctx->b,ctx->c+i*hv);
226 #else
227
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
20 if (cr) {cr[i+k0+Nh] = ctx->a; cr[i+k0+Nh+N] = ctx->b;}
228
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
20 if (ci) {ci[i+k0+Nh] = ctx->d+i*hv; ci[i+k0+Nh+N] = ctx->c-i*hv;}
229 #endif
230 }
231 }
232
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.
76 PetscFunctionReturn(PETSC_SUCCESS);
233 }
234
235 36 static PetscErrorCode RGComputeBoundingBox_Interval(RG rg,PetscReal *a,PetscReal *b,PetscReal *c,PetscReal *d)
236 {
237 36 RG_INTERVAL *ctx = (RG_INTERVAL*)rg->data;
238
239
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
36 PetscFunctionBegin;
240
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
36 if (a) *a = ctx->a;
241
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
36 if (b) *b = ctx->b;
242
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
36 if (c) *c = ctx->c;
243
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
36 if (d) *d = ctx->d;
244
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.
36 PetscFunctionReturn(PETSC_SUCCESS);
245 }
246
247 95 static PetscErrorCode RGComputeQuadrature_Interval(RG rg,RGQuadRule quad,PetscInt n,PetscScalar *z,PetscScalar *zn,PetscScalar *w)
248 {
249 95 RG_INTERVAL *ctx = (RG_INTERVAL*)rg->data;
250 95 PetscReal theta,max_w=0.0,radius=1.0;
251 95 PetscScalar tmp,tmp2,center=0.0;
252 95 PetscInt i,j;
253
254
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
95 PetscFunctionBegin;
255
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
95 if (quad == RG_QUADRULE_CHEBYSHEV) {
256
3/10
✓ 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.
77 PetscCheck((ctx->c==ctx->d && ctx->c==0.0) || (ctx->a==ctx->b && ctx->a==0.0),PetscObjectComm((PetscObject)rg),PETSC_ERR_SUP,"Endpoints of the imaginary axis or the real axis must be both zero");
257
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
2341 for (i=0;i<n;i++) {
258 2264 theta = PETSC_PI*(i+0.5)/n;
259 2264 zn[i] = PetscCosReal(theta);
260 2264 w[i] = PetscCosReal((n-1)*theta)/n;
261
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
2264 if (ctx->c==ctx->d) z[i] = ((zn[i]+1.0)*(ctx->b-ctx->a)/2.0+ctx->a)*rg->sfactor;
262 else if (ctx->a==ctx->b) {
263 #if defined(PETSC_USE_COMPLEX)
264 z[i] = ((zn[i]+1.0)*(ctx->d-ctx->c)/2.0+ctx->c)*rg->sfactor*PETSC_i;
265 #else
266
0/2
✗ Branch 0 not taken.
✗ Branch 1 not taken.
1244 SETERRQ(PETSC_COMM_SELF,PETSC_ERR_SUP,"Integration points on a vertical line require complex arithmetic");
267 #endif
268 }
269 }
270 } else { /* RG_QUADRULE_TRAPEZOIDAL */
271 #if defined(PETSC_USE_COMPLEX)
272 13 center = PetscCMPLX(ctx->b+ctx->a,ctx->d+ctx->c)*rg->sfactor/2.0;
273 #else
274 5 center = (ctx->b+ctx->a)*rg->sfactor/2.0;
275 #endif
276 36 radius = PetscSqrtReal(PetscPowRealInt(rg->sfactor*(ctx->b-ctx->a)/2.0,2)+PetscPowRealInt(rg->sfactor*(ctx->d-ctx->c)/2.0,2));
277
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
514 for (i=0;i<n;i++) {
278 496 zn[i] = (z[i]-center)/radius;
279 496 tmp = 1.0; tmp2 = 1.0;
280
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
14448 for (j=0;j<n;j++) {
281 13952 tmp *= z[j];
282
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
13952 if (i != j) tmp2 *= z[j]-z[i];
283 }
284 496 w[i] = tmp/tmp2;
285
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
646 max_w = PetscMax(PetscAbsScalar(w[i]),max_w);
286 }
287
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
514 for (i=0;i<n;i++) w[i] /= (PetscScalar)max_w;
288 }
289
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.
19 PetscFunctionReturn(PETSC_SUCCESS);
290 }
291
292 1797666 static PetscErrorCode RGCheckInside_Interval(RG rg,PetscReal dx,PetscReal dy,PetscInt *inside)
293 {
294 1797666 RG_INTERVAL *ctx = (RG_INTERVAL*)rg->data;
295
296
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
1797666 PetscFunctionBegin;
297
4/4
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
1797666 if (dx>ctx->a && dx<ctx->b) *inside = 1;
298
3/4
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
1009625 else if (dx==ctx->a || dx==ctx->b) *inside = 0;
299 1009455 else *inside = -1;
300
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
1797666 if (*inside>=0) {
301
4/4
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
788211 if (dy>ctx->c && dy<ctx->d) ;
302
3/4
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
474296 else if (dy==ctx->c || dy==ctx->d) *inside = 0;
303 434861 else *inside = -1;
304 }
305
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.
1797666 PetscFunctionReturn(PETSC_SUCCESS);
306 }
307
308 61 static PetscErrorCode RGIsAxisymmetric_Interval(RG rg,PetscBool vertical,PetscBool *symm)
309 {
310 61 RG_INTERVAL *ctx = (RG_INTERVAL*)rg->data;
311
312
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
61 PetscFunctionBegin;
313
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
61 if (vertical) *symm = (ctx->a == -ctx->b)? PETSC_TRUE: PETSC_FALSE;
314 31 else *symm = (ctx->c == -ctx->d)? PETSC_TRUE: PETSC_FALSE;
315
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.
61 PetscFunctionReturn(PETSC_SUCCESS);
316 }
317
318 9256 static PetscErrorCode RGSetFromOptions_Interval(RG rg,PetscOptionItems PetscOptionsObject)
319 {
320 9256 PetscBool flg;
321 9256 PetscInt k;
322 9256 PetscReal array[4]={0,0,0,0};
323
324
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
9256 PetscFunctionBegin;
325
1/12
✗ 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.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
9256 PetscOptionsHeadBegin(PetscOptionsObject,"RG Interval Options");
326
327 9256 k = 4;
328
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.
9256 PetscCall(PetscOptionsRealArray("-rg_interval_endpoints","Interval endpoints (two or four real values separated with a comma without spaces)","RGIntervalSetEndpoints",array,&k,&flg));
329
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
9256 if (flg) {
330
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
525 PetscCheck(k>1,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_SIZ,"Must pass at least two values in -rg_interval_endpoints (comma-separated without spaces)");
331
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.
525 PetscCall(RGIntervalSetEndpoints(rg,array[0],array[1],array[2],array[3]));
332 }
333
334
1/14
✗ Branch 0 not taken.
✓ 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.
9256 PetscOptionsHeadEnd();
335
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.
1787 PetscFunctionReturn(PETSC_SUCCESS);
336 }
337
338 9782 static PetscErrorCode RGDestroy_Interval(RG rg)
339 {
340
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
9782 PetscFunctionBegin;
341
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.
9782 PetscCall(PetscFree(rg->data));
342
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.
9782 PetscCall(PetscObjectComposeFunction((PetscObject)rg,"RGIntervalSetEndpoints_C",NULL));
343
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.
9782 PetscCall(PetscObjectComposeFunction((PetscObject)rg,"RGIntervalGetEndpoints_C",NULL));
344
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.
1891 PetscFunctionReturn(PETSC_SUCCESS);
345 }
346
347 9782 SLEPC_EXTERN PetscErrorCode RGCreate_Interval(RG rg)
348 {
349 9782 RG_INTERVAL *interval;
350
351
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
9782 PetscFunctionBegin;
352
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.
9782 PetscCall(PetscNew(&interval));
353 9782 interval->a = -PETSC_MAX_REAL;
354 9782 interval->b = PETSC_MAX_REAL;
355 9782 interval->c = -PETSC_MAX_REAL;
356 9782 interval->d = PETSC_MAX_REAL;
357 9782 rg->data = (void*)interval;
358
359 9782 rg->ops->istrivial = RGIsTrivial_Interval;
360 9782 rg->ops->computecontour = RGComputeContour_Interval;
361 9782 rg->ops->computebbox = RGComputeBoundingBox_Interval;
362 9782 rg->ops->computequadrature = RGComputeQuadrature_Interval;
363 9782 rg->ops->checkinside = RGCheckInside_Interval;
364 9782 rg->ops->isaxisymmetric = RGIsAxisymmetric_Interval;
365 9782 rg->ops->setfromoptions = RGSetFromOptions_Interval;
366 9782 rg->ops->view = RGView_Interval;
367 9782 rg->ops->destroy = RGDestroy_Interval;
368
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.
9782 PetscCall(PetscObjectComposeFunction((PetscObject)rg,"RGIntervalSetEndpoints_C",RGIntervalSetEndpoints_Interval));
369
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.
9782 PetscCall(PetscObjectComposeFunction((PetscObject)rg,"RGIntervalGetEndpoints_C",RGIntervalGetEndpoints_Interval));
370
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.
1891 PetscFunctionReturn(PETSC_SUCCESS);
371 }
372