anchor.diff:      ALLOCATE(index_l(sparse_a%rows, sparse_a%columns))
       ALLOCATE(values_l(sparse_a%rows, sparse_a%columns))
       values_per_column_l = 0
  +    ALLOCATE(values_per_column_pi(sparse_a%columns))
  +    ALLOCATE(index_pi(sparse_a%rows, sparse_a%columns))
  +    ALLOCATE(values_pi(sparse_a%rows, sparse_a%columns))
  +    values_per_column_pi = 0
   
       !! Allocate space for a received column
       ALLOCATE(recv_index(sparse_a%rows))
  
positive.code:              END IF
               CALL MPI_Allreduce(MPI_IN_PLACE, Aval, 1, MPINTREAL, MPI_SUM, &
                    & column_comm, grid_error)
               CALL DotOneHelper(recv_num_values,recv_index,recv_values, &
                    & values_per_column_l(local_pi_i), index_l(:,local_pi_i), &
                    & values_l(:,local_pi_i),insert_value,column_comm)
               !! Insert Into L
               insert_value = inverse_factor * (Aval - insert_value)
               IF (JJ .GE. AMat%start_row .AND. JJ .LT. AMat%end_row) THEN
                  CALL AppendToVector(values_per_column_l(local_pi_i), &
                       & index_l(:,local_pi_i), values_l(:, local_pi_i), &
  
negative.code:     DEALLOCATE(values_per_column_l)
      DEALLOCATE(index_l)
      DEALLOCATE(values_l)
      DEALLOCATE(values_per_column_pi)
      DEALLOCATE(index_pi)
      DEALLOCATE(values_pi)
      DEALLOCATE(recv_index)
      DEALLOCATE(recv_values)
      DEALLOCATE(dot_values)
  