GCC Code Coverage Report


Directory: src/athena/
File: src/athena/athena_initialiser_zeros.f90
Date: 2026-04-15 16:08:59
Exec Total Coverage
Lines: 10 13 76.9%
Functions: 0 0 -%
Branches: 73 228 32.0%

Line Branch Exec Source
1 module athena__initialiser_zeros
2 !! Module containing the implementation of the Zeros initialiser
3 !!
4 !! This module contains the implementation of the Zeros initialiser
5 !! for the weights and biases of a layer
6 use coreutils, only: real32
7 use athena__misc_types, only: base_init_type
8 implicit none
9
10
11 private
12
13 public :: zeros_init_type
14
15
16 type, extends(base_init_type) :: zeros_init_type
17 !! Type for the Zeros initialiser
18 contains
19 procedure, pass(this) :: initialise => zeros_initialise
20 !! Initialise the weights and biases using the Zeros distribution
21 end type zeros_init_type
22
23
24 interface zeros_init_type
25 module function initialiser_zeros_setup() result(initialiser)
26 !! Interface for the Zeros initialiser
27 type(zeros_init_type) :: initialiser
28 !! Zeros initialiser object
29 end function initialiser_zeros_setup
30 end interface zeros_init_type
31
32
33
34 contains
35
36 !###############################################################################
37 295 module function initialiser_zeros_setup() result(initialiser)
38 !! Interface for the Zeros initialiser
39 implicit none
40
41 type(zeros_init_type) :: initialiser
42 !! Zeros initialiser object
43
44 295 initialiser%name = "zeros"
45
46 295 end function initialiser_zeros_setup
47 !###############################################################################
48
49
50 !###############################################################################
51 278 pure subroutine zeros_initialise(this, input, fan_in, fan_out, spacing)
52 !! Initialise the weights and biases using the Zeros distribution
53 implicit none
54
55 ! Arguments
56 class(zeros_init_type), intent(inout) :: this
57 !! Instance of the Zeros initialiser
58 real(real32), dimension(..), intent(out) :: input
59 !! Weights and biases to initialise
60 integer, optional, intent(in) :: fan_in, fan_out
61 !! Number of input and output parameters
62 integer, dimension(:), optional, intent(in) :: spacing
63 !! Spacing of the input and output units
64
65 select rank(input)
66 rank(0)
67 1 input = 0._real32
68 rank(1)
69
6/10
✗ Branch 0 not taken.
✓ Branch 1 taken 275 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 275 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 275 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 275 times.
✓ Branch 12 taken 6027 times.
✓ Branch 13 taken 275 times.
6302 input = 0._real32
70 rank(2)
71 input = 0._real32
72 rank(3)
73
18/30
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✓ Branch 36 taken 1 times.
✓ Branch 37 taken 1 times.
✓ Branch 38 taken 1 times.
✓ Branch 39 taken 1 times.
✓ Branch 40 taken 1 times.
✓ Branch 41 taken 1 times.
4 input = 0._real32
74 rank(4)
75 input = 0._real32
76 rank(5)
77 input = 0._real32
78 rank(6)
79
36/60
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 48 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 54 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 60 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 63 not taken.
✓ Branch 64 taken 1 times.
✗ Branch 66 not taken.
✓ Branch 67 taken 1 times.
✗ Branch 69 not taken.
✓ Branch 70 taken 1 times.
✓ Branch 72 taken 1 times.
✓ Branch 73 taken 1 times.
✓ Branch 74 taken 1 times.
✓ Branch 75 taken 1 times.
✓ Branch 76 taken 1 times.
✓ Branch 77 taken 1 times.
✓ Branch 78 taken 1 times.
✓ Branch 79 taken 1 times.
✓ Branch 80 taken 1 times.
✓ Branch 81 taken 1 times.
✓ Branch 82 taken 1 times.
✓ Branch 83 taken 1 times.
7 input = 0._real32
80 end select
81
82 278 end subroutine zeros_initialise
83 !###############################################################################
84
85
13/18
✓ Branch 0 taken 277 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 277 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✓ Branch 5 taken 277 times.
✓ Branch 6 taken 275 times.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✓ Branch 10 taken 1 times.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
278 end module athena__initialiser_zeros
86