GCC Code Coverage Report


Directory: ./
File: src/eps/tests/test36.c
Date: 2025-10-03 04:28:47
Exec Total Coverage
Lines: 35 35 100.0%
Functions: 1 1 100.0%
Branches: 112 164 68.3%

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 static char help[] = "Tests a HEP problem with Hermitian matrix.\n\n";
12
13 #include <slepceps.h>
14
15 46 int main(int argc,char **argv)
16 {
17 46 Mat A; /* matrix */
18 46 EPS eps; /* eigenproblem solver context */
19 46 PetscInt N,n=20,m,Istart,Iend,II,i,j;
20 46 PetscBool flag;
21
22
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
46 PetscFunctionBeginUser;
23
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(SlepcInitialize(&argc,&argv,NULL,help));
24
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(PetscOptionsGetInt(NULL,NULL,"-n",&n,NULL));
25
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(PetscOptionsGetInt(NULL,NULL,"-m",&m,&flag));
26
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
46 if (!flag) m=n;
27 46 N = n*m;
28
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(PetscPrintf(PETSC_COMM_WORLD,"\nHermitian Eigenproblem, N=%" PetscInt_FMT " (%" PetscInt_FMT "x%" PetscInt_FMT " grid)\n\n",N,n,m));
29 #if !defined(PETSC_USE_COMPLEX)
30 SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"This example requires complex scalars!");
31 #endif
32
33 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
34 Compute the matrix that defines the eigensystem, Ax=kx
35 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36
37
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(MatCreate(PETSC_COMM_WORLD,&A));
38
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(MatSetSizes(A,PETSC_DECIDE,PETSC_DECIDE,N,N));
39
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(MatSetFromOptions(A));
40
41
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(MatGetOwnershipRange(A,&Istart,&Iend));
42
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
16648 for (II=Istart;II<Iend;II++) {
43 16602 i = II/n; j = II-i*n;
44
6/8
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
16602 if (i>0) PetscCall(MatSetValue(A,II,II-n,-1.0-0.1*PETSC_i,INSERT_VALUES));
45
6/8
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
16602 if (i<m-1) PetscCall(MatSetValue(A,II,II+n,-1.0+0.1*PETSC_i,INSERT_VALUES));
46
6/8
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
16602 if (j>0) PetscCall(MatSetValue(A,II,II-1,-1.0-0.1*PETSC_i,INSERT_VALUES));
47
6/8
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
16602 if (j<n-1) PetscCall(MatSetValue(A,II,II+1,-1.0+0.1*PETSC_i,INSERT_VALUES));
48
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
16602 PetscCall(MatSetValue(A,II,II,4.0,INSERT_VALUES));
49 }
50
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY));
51
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY));
52
53
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(MatSetOption(A,MAT_HERMITIAN,PETSC_TRUE));
54
55 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
56 Create the eigensolver and solve the problem
57 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
58
59
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(EPSCreate(PETSC_COMM_WORLD,&eps));
60
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(EPSSetOperators(eps,A,NULL));
61
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(EPSSetProblemType(eps,EPS_HEP));
62
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(EPSSetFromOptions(eps));
63
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(EPSSolve(eps));
64
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(EPSErrorView(eps,EPS_ERROR_BACKWARD,NULL));
65
66
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(EPSDestroy(&eps));
67
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
46 PetscCall(MatDestroy(&A));
68
3/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
46 PetscCall(SlepcFinalize());
69 return 0;
70 }
71
72 /*TEST
73
74 build:
75 requires: complex
76
77 testset:
78 args: -m 18 -n 19 -eps_nev 4 -eps_max_it 1000
79 requires: !single complex
80 output_file: output/test36_1.out
81 test:
82 suffix: 1
83 args: -eps_type {{krylovschur subspace arnoldi gd lapack}}
84 test:
85 suffix: 1_jd
86 args: -eps_type jd
87 requires: !__float128
88 test:
89 suffix: 1_elemental
90 args: -eps_type elemental
91 requires: elemental
92
93 test:
94 suffix: 2
95 args: -eps_nev 4 -eps_smallest_real -eps_type {{lobpcg rqcg lapack}}
96 requires: !single complex
97
98 TEST*/
99