anchor.diff:          Module Procedure MQC_Integral_Integral_Multiply
           Module Procedure MQC_Integral_Eigenvalues_Multiply
           Module Procedure MQC_Eigenvalues_Integral_Multiply
  +        Module Procedure MQC_Eigenvalues_Eigenvalues_Multiply
         End Interface
   !
         Interface Dot_Product
  -        Module Procedure MQC_Eigenvalue_Eigenvalue_Multiply
  +        Module Procedure MQC_Eigenvalue_Eigenvalue_DotProduct
         End Interface
   !
         Interface Transpose
  
positive.code:           call tmpVector1%diag(tmpMatrix1)
            tmpMatrix1 = matmul(integralA%alpha,tmpMatrix1)
            call mqc_integral_allocate(integralOut,myLabel,'space',tmpMatrix1)
          case('spin')
            tmpVector1 = eigenvaluesB%alpha
            tmpVector2 = eigenvaluesB%beta
            call tmpVector1%diag(tmpMatrix1)
            call tmpVector2%diag(tmpMatrix2)
            tmpMatrix1 = matmul(integralA%alpha,tmpMatrix1)
            tmpMatrix2 = matmul(integralA%alpha,tmpMatrix2)
            call mqc_integral_allocate(integralOut,myLabel,'spin',tmpMatrix1,tmpMatrix2)
          case('general')
            tmpVector1 = eigenvaluesB%alpha
            tmpVector2 = eigenvaluesB%beta
            call tmpVector1%diag(tmpMatrix1)
  
negative.code:           tmpMatrix2 = matmul(integralA%beta,tmpMatrix1)
            tmpMatrix1 = matmul(integralA%alpha,tmpMatrix1)
            call mqc_integral_allocate(integralOut,myLabel,'spin',tmpMatrix1,tmpMatrix2)
          case('spin','general')
            tmpVector1 = eigenvaluesB%alpha
            tmpVector2 = eigenvaluesB%beta
            call tmpVector1%diag(tmpMatrix1)
  