anchor.diff:    new_vector%y=a(2)
     new_vector%z=a(3)
   
  -end function new_vector
  +end function new_vec
   
   end module utils
  
positive.code: end function dot
  
  ! returns the magnitude of a vector
  function absvec(a)
    type (vector), intent (in) :: a
    real(dp)                   :: absvec
      absvec = sqrt(a%x**2 + a%y**2 + a%z**2)
  end function absvec
  
  ! constructor for a new vector
  function new_vector(a)
    real(dp), intent(in) :: a(3)
    type(vector) :: new_vector
    
  
negative.code: 
  ! overload abs 
  interface abs
     module procedure abs_vec
  end interface abs
  
  ! constructor for vector data type
  interface vector
     module procedure new_vec
  end interface vector
  
  contains
  