The main documentation of the Orthogonal_Mathematic_Vector Procedure contains additional explanation of this code listing.
function Orthogonal_Mathematic_Vector (MV1, MV2) result(Orthogonal) ! Use association information. use Caesar_Numbers_Module, only: zero ! Input variables. ! Mathematic Vectors to be dotted. type(Mathematic_Vector_type), intent(in) :: MV1, MV2 ! Output variable. type(logical) :: Orthogonal ! Result of dot product. !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! Verify requirements. VERIFY(Valid_State(MV1),5) ! MV1 is valid. VERIFY(Valid_State(MV2),5) ! MV2 is valid. ! Calculate whether the two vectors are orthogonal. Orthogonal = Dot_Product(MV1%Values, MV2%Values) .eq. zero ! Verify guarantees -- none. return end function Orthogonal_Mathematic_Vector