anchor.diff:          call hecmw_localmat_write(BTtmat,700+hecmw_comm_get_rank())
         endif
       endif
  +    t1 = hecmw_wtime()
  +    if (TIMER >= 1) write(0, '(A,f10.4)') "### hecmw_trimatmul_TtKT_mpc (3) : ",t1-t0
  +    t0 = hecmw_wtime()
       call hecmw_trimatmul_TtKT(hecMESH, BTtmat, hecMAT, BTmat, iwS, n_mpc, hecTKT)
  +    t1 = hecmw_wtime()
  +    if (TIMER >= 1) write(0, '(A,f10.4)') "### hecmw_trimatmul_TtKT_mpc (4) : ",t1-t0
  +    t0 = hecmw_wtime()
   
       if (associated(hecTKT%B)) deallocate(hecTKT%B)
       if (associated(hecTKT%X)) deallocate(hecTKT%X)
  
positive.code:     enddo
      !$omp end do
      !$omp end parallel
      call sort_and_uniq_rows(Cmat)
    end subroutine multiply_mat_mat
  
    subroutine blk_matmul_add(ndof, A, B, AB)
  
negative.code:     integer(kind=kint) :: js, je, j, jj, ks, ke, k, kk, ls, le, l, ll, l0
      integer(kind=kint), allocatable :: iw(:)
      real(kind=kreal), pointer :: Ap(:), Bp(:), Cp(:)
      real(kind=kreal) :: t0, t1
      t0 = hecmw_wtime()
      if (Amat%ndof /= Bmat%ndof) stop 'ERROR: multiply_mat_mat: unmatching ndof'
      ndof = Amat%ndof
      ndof2 = ndof*ndof
  