anchor.diff:       TYPE(QuTree), POINTER        :: Quad00,Quad01,Quad10,Quad11
        REAL(DOUBLE), DIMENSION(:,:), ALLOCATABLE :: Blok
     END TYPE QuTree
  -
  +  !
  +  TYPE SpAMM_cubes
  +     TYPE(SpAMM_cubes), POINTER  :: Next
  +     INTEGER                     :: Hash
  +     REAL(DOUBLE)                :: Bound
  +     INTEGER,     DIMENSION(3,2) :: Box
  +  END TYPE SpAMM_cubes
  +  !
  +  !----------------------------------------------------------------
  +  REAL(DOUBLE)       :: SpAMM_tolerance,SpAMM_multiplies
  +  INTEGER            :: SpAMM_tiles,    SpAMM_levels,     SpAMM_quadcount
  +  TYPE(SpAMM_cubes),POINTER :: SpAMM_stream
  +  INTEGER, PARAMETER :: BLOCK_SIZE=2
  +  !----------------------------------------------------------------
  +  !
   CONTAINS
  -
  +  !
     FUNCTION Dense2Quad(A) RESULT(qA)
       REAL(DOUBLE),DIMENSION(:,:) :: A
       TYPE(QuTree),POINTER        :: qA
  
positive.code:   !
    qA=>Dense2Quad(A)
    qB=>Dense2Quad(B)
    qC=>SpAMM(qA,qB,SpAMM_tolerance)
  
    C2=Quad2Dense(qC)
    C1=MATMUL(A,B)
  
negative.code:        CTmp=MATMUL(qA%Blok,qB%Blok)
         ! Increment
         qC%Blok=qC%Blok+CTmp
         ! Bounds
         qC%Norm=qC%Norm+SUM(CTmp(1:BLOCK_SIZE,1:BLOCK_SIZE)**2)
         ! Print
         ! #ifdef SpAMM_PRINT
         ! C_IJ=SUM_K A_IK*B_KJ
         SpAMM_stream%Box(1,:)=qA%Box(2,:) ! I
         SpAMM_stream%Box(2,:)=qA%Box(1,:) ! K
         SpAMM_stream%Box(3,:)=qB%Box(1,:) ! J
         ALLOCATE(SpAMM_stream%Next)
         SpAMM_stream=>SpAMM_stream%Next
         NULLIFY(SpAMM_stream%Next)
  
  !!$
  !       WRITE(*,111)Spamm_Stream%next%Box(1,:),spamm_Stream%next%Box(2,:),spamm_Stream%next%Box(3,:)
  111    FORMAT("Cuboid[{",I6,",",I6,",",I6,"},{",I6,",",I6,",",I6,"}],  ")
  
  
         ! #endif
         RETURN
      ENDIF
      ! New nodes
  