anchor.diff:    real(kind = x_precision) function dichotomy(k, S_min, S_max, eps, T, optical_depth)
       implicit none
   
  -    real(kind = x_precision),intent(in) :: S_min, S_max
  -    real(kind = x_precision),intent(in) :: eps
  -    real(kind = x_precision),intent(in) :: T
  -    integer,                 intent(in) :: k
  -    integer,                 intent(in) :: optical_depth
  -
  -    integer                             :: j
  -    real(kind = x_precision)            :: tau_eff
  -    real(kind = x_precision)            :: Smin
  -    real(kind = x_precision)            :: Smax
  -    real(kind = x_precision)            :: f_min
  -    real(kind = x_precision)            :: f_max
  -    real(kind = x_precision)            :: f_center
  -    real(kind = x_precision)            :: S_center
  -
  +    real(kind = x_precision), intent(in) :: S_min, S_max
  +    real(kind = x_precision), intent(in) :: eps ! Required precision
  +    real(kind = x_precision), intent(in) :: T ! Temperature for which to solve the dichotomy
  +    integer,                  intent(in) :: k
  +    integer,                  intent(in) :: optical_depth
       !-------------------------------------------------------------------------
  -    ! N-> Number of iterations for the dichotomy
  -    ! Smin, Smax -> Starting range
  -    ! eps -> Precision
  -    ! T-> Fixed variable
  +    integer                  :: j
  +    real(kind = x_precision) :: tau_eff
  +    real(kind = x_precision) :: Smin     ! Low point
  +    real(kind = x_precision) :: Smax     ! High point
  +    real(kind = x_precision) :: S_center ! Middle point
  +    real(kind = x_precision) :: f_min    ! Q+ − Q− at the low point
  +    real(kind = x_precision) :: f_max    ! Q+ − Q− at the high point
  +    real(kind = x_precision) :: f_center ! Q+ − Q− at the middle point
       !-------------------------------------------------------------------------
   
       Smin                 = S_min
  
positive.code:   !-------------------------------------------------------------------------
    ! Subroutine in order to display the critical points
    !-------------------------------------------------------------------------
    subroutine display_critical_points(sigma_c_thin, temp_c_thin, sigma_c_thick, temp_c_thick,k)
      implicit none
  
      real(kind = x_precision),intent(in) :: sigma_c_thin
      real(kind = x_precision),intent(in) :: temp_c_thin
      real(kind = x_precision),intent(in) :: sigma_c_thick
      real(kind = x_precision),intent(in) :: temp_c_thick
      integer                 ,intent(in) :: k
  
      !------------------------------------------------------------------------
  
      write(*,*)'**** Critical Point',k,'********'
      write(*,*)'****************************************'
      write(*,"(' Optically thin (T,sigma) :',1p,E12.4,4x,1p,E12.4)")temp_c_thin, sigma_c_thin
      write(*,"(' Optically thick (T,sigma):',1p,E12.4,4x,1p,E12.4)")temp_c_thick, sigma_c_thick
      write(*,*)'****************************************'
  
    end subroutine display_critical_points
  
negative.code: 
          ! S found with the dichotomy approach
          sigma_t_thin(i)  = dichotomy(k, S_min, S_max, eps, temperature(i), optical_depth)
        enddo
  
        ! For the first critical point (the one at the right of the S shape)
  