anchor.diff:  
     deallocate (                                                       &
         W, residual_norm,                                              &
  -      U, overlap,                                                    &
  -      R, c, S,                                                       &
  +      U,                                                             &
  +      c, S,                                                       &
         h,                                                             &
         y, s_, s_tmp,                                                  &
         lambda                                                         &
  
positive.code:   integer                        :: i,j,k,l,m
    logical                        :: converged
    
    double precision, allocatable  :: overlap(:,:)
    double precision               :: u_dot_v, u_dot_u
    
    integer                        :: k_pairs, kl
    
    integer                        :: iter2
    double precision, allocatable  :: W(:,:),  U(:,:), R(:,:), S(:,:)
    double precision, allocatable  :: y(:,:), h(:,:), lambda(:), s2(:)
    double precision, allocatable  :: c(:), s_(:,:), s_tmp(:,:)
    double precision               :: diag_h_mat_elem
  
negative.code:   integer                        :: shift, shift2, itermax
    include 'constants.include.F'
    
    !DIR$ ATTRIBUTES ALIGN : $IRP_ALIGN :: U, W, S, y, h, lambda
    if (N_st_diag > sze) then
       stop 'error in Davidson : N_st_diag > sze'
    endif
  