GCC Code Coverage Report


Directory: ./
File: src/sys/classes/st/impls/shell/ftn-custom/zshellf.c
Date: 2026-05-04 03:58:11
Exec Total Coverage
Lines: 20 20 100.0%
Functions: 8 8 100.0%
Branches: 16 32 50.0%

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 <petsc/private/ftnimpl.h>
12 #include <slepcst.h>
13
14 #if defined(PETSC_HAVE_FORTRAN_CAPS)
15 #define stshellsetapply_ STSHELLSETAPPLY
16 #define stshellsetapplytranspose_ STSHELLSETAPPLYTRANSPOSE
17 #define stshellsetapplyhermitiantranspose_ STSHELLSETAPPLYHERMITIANTRANSPOSE
18 #define stshellsetbacktransform_ STSHELLSETBACKTRANSFORM
19 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
20 #define stshellsetapply_ stshellsetapply
21 #define stshellsetapplytranspose_ stshellsetapplytranspose
22 #define stshellsetapplyhermitiantranspose_ stshellsetapplyhermitiantranspose
23 #define stshellsetbacktransform_ stshellsetbacktransform
24 #endif
25
26 static struct {
27 PetscFortranCallbackId apply;
28 PetscFortranCallbackId applytranspose;
29 PetscFortranCallbackId applyhermtrans;
30 PetscFortranCallbackId backtransform;
31 } _cb;
32
33 /* These are not extern C because they are passed into non-extern C user level functions */
34 240 static PetscErrorCode ourshellapply(ST st,Vec x,Vec y)
35 {
36
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 6 times.
240 PetscObjectUseFortranCallback(st,_cb.apply,(ST*,Vec*,Vec*,PetscErrorCode*),(&st,&x,&y,&ierr));
37 }
38
39 40 static PetscErrorCode ourshellapplytranspose(ST st,Vec x,Vec y)
40 {
41
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
40 PetscObjectUseFortranCallback(st,_cb.applytranspose,(ST*,Vec*,Vec*,PetscErrorCode*),(&st,&x,&y,&ierr));
42 }
43
44 80 static PetscErrorCode ourshellapplyhermitiantranspose(ST st,Vec x,Vec y)
45 {
46
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 4 times.
80 PetscObjectUseFortranCallback(st,_cb.applyhermtrans,(ST*,Vec*,Vec*,PetscErrorCode*),(&st,&x,&y,&ierr));
47 }
48
49 3356 static PetscErrorCode ourshellbacktransform(ST st,PetscInt n,PetscScalar *eigr,PetscScalar *eigi)
50 {
51
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 6 times.
3356 PetscObjectUseFortranCallback(st,_cb.backtransform,(ST*,PetscInt*,PetscScalar*,PetscScalar*,PetscErrorCode*),(&st,&n,eigr,eigi,&ierr));
52 }
53
54 12 SLEPC_EXTERN void stshellsetapply_(ST *st,void (*apply)(ST*,Vec*,Vec*,PetscErrorCode*),PetscErrorCode *ierr)
55 {
56
1/2
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
12 *ierr = PetscObjectSetFortranCallback((PetscObject)*st,PETSC_FORTRAN_CALLBACK_CLASS,&_cb.apply,(PetscFortranCallbackFn*)apply,NULL); if (*ierr) return;
57 12 *ierr = STShellSetApply(*st,ourshellapply);
58 }
59
60 12 SLEPC_EXTERN void stshellsetapplytranspose_(ST *st,void (*applytranspose)(ST*,Vec*,Vec*,PetscErrorCode*),PetscErrorCode *ierr)
61 {
62
1/2
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
12 *ierr = PetscObjectSetFortranCallback((PetscObject)*st,PETSC_FORTRAN_CALLBACK_CLASS,&_cb.applytranspose,(PetscFortranCallbackFn*)applytranspose,NULL); if (*ierr) return;
63 12 *ierr = STShellSetApplyTranspose(*st,ourshellapplytranspose);
64 }
65
66 8 SLEPC_EXTERN void stshellsetapplyhermitiantranspose_(ST *st,void (*applyhermtrans)(ST*,Vec*,Vec*,PetscErrorCode*),PetscErrorCode *ierr)
67 {
68
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
8 *ierr = PetscObjectSetFortranCallback((PetscObject)*st,PETSC_FORTRAN_CALLBACK_CLASS,&_cb.applyhermtrans,(PetscFortranCallbackFn*)applyhermtrans,NULL); if (*ierr) return;
69 8 *ierr = STShellSetApplyHermitianTranspose(*st,ourshellapplyhermitiantranspose);
70 }
71
72 12 SLEPC_EXTERN void stshellsetbacktransform_(ST *st,void (*backtransform)(ST*,PetscScalar*,PetscScalar*,PetscErrorCode*),PetscErrorCode *ierr)
73 {
74
1/2
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
12 *ierr = PetscObjectSetFortranCallback((PetscObject)*st,PETSC_FORTRAN_CALLBACK_CLASS,&_cb.backtransform,(PetscFortranCallbackFn*)backtransform,NULL); if (*ierr) return;
75 12 *ierr = STShellSetBackTransform(*st,ourshellbacktransform);
76 }
77