anchor.diff:          integer, parameter :: sp = selected_real_kind(6, 37)
           integer, intent(in) :: n, klu
           real(sp), intent(in), dimension(n) :: x
  -        real(sp), intent(out), dimension(n) :: u
  +        real(sp), intent(inout), dimension(n) :: u
           real(sp), intent(in), dimension(2 * klu + 1, n) :: op
           real(sp), intent(in) :: sign
   
  
positive.code:         end if
      end subroutine make_laplacian
  
      subroutine make_laplacian_2d(n, m, h, op)
          implicit none
  
          integer, parameter :: sp = selected_real_kind(6, 37)
          integer, intent(in) :: n
          integer, intent(in) :: m ! order
          real(sp), intent(in) :: h
          real(sp), intent(out), dimension(m, n) :: op
  
          real(sp) :: dx2
          real(sp), dimension(m) :: left, middle, right
          real(sp), dimension(3 * m) :: row
  
          dx2 = 1.0 / h ** 2
  
          left = (/ 0, 1, 0 /) / dx2
          middle = (/ 1, -4, 1 /) / dx2
          right = (/ 0, 1, 0 /) / dx2
  
          row(0 * m + 1:1 * m) = left
          row(1 * m + 1:2 * m) = middle
          row(2 * m + 1:3 * m) = right
  
          call make_banded_matrix(n * n, 3 * m, row, op)
      end subroutine make_laplacian_2d
  
      !   \brief Wrapper of BLAS-2 function `sgbmv` which is matvec implementation for banded matrix.
      subroutine rgbmv(x, u, sign, op, klu, n) ! reduced gbmv()
  
negative.code:     public :: make_banded_matrix
      public :: clear_first_row_of_derivative
      public :: divide_derivative_on_radius
      public :: make_laplacian_o3, make_laplacian_o5, make_laplacian_o7, make_laplacian, make_laplacian_2d
      public :: rgbmv, rbbmv
      public :: revervoir, revervoir_2d
      public :: hamiltonian, hamiltonian_2d
      public :: runge_kutta, runge_kutta_2d
      public :: solve_nls_1d, solve_nls_2d, solve_nls
  
  contains
  
  