anchor.diff:    interface dotprod
       module procedure dotprod_matrix_matrix
       module procedure dotprod_matrix_array
  +    module procedure dotprod_array_matrix
       module procedure dotprod_array_array
     end interface
   
  
positive.code:           deallocate(dot1)
            deallocate(dot2)
            deallocate(dot3)
          else
            return
          end if
  
negative.code:       integer , intent(in) , dimension(2) :: sh
        call init_1DVar_2arg(sh(1),sh(2))
      end subroutine init_1DVar_arr
  
      real function compute_chi_square(m,SEInv,yobs_minus_yhat) result(norm)
        implicit none
        integer , intent(in) :: m
        real , dimension(m,m) , intent(in) :: SEInv
        real , dimension(m) , intent(in) :: yobs_minus_yhat
        if ( .not. isinit ) return
        call dotprod(yobs_minus_yhat,SEInv,dot4)
        dot5 = yobs_minus_yhat/size(yobs_minus_yhat)
        call dotprod(dot4,dot5,norm)
      end function compute_chi_square
  
      subroutine update_solution_1DVar(m,n,fmK,SEInv,SaInv_ret, &
                                       yobs_minus_yhat,xhat,ap,xhat_new,d2)
  