anchor.diff:      ALLOCATE(dot_values(sparse_a%columns))
       ALLOCATE(diag_correction_index(sparse_a%columns))
       ALLOCATE(diag_correction_values(sparse_a%columns))
  +    ALLOCATE(local_pivots(sparse_a%columns))
       !! Main Loop
       DO JJ = 1, rank_in
          !! Pick a pivot vector
  
positive.code:        CALL WriteHeader("Linear Solver")
         CALL EnterSubLog
         CALL WriteElement(key="Method", &
               & text_value_in="Pivoted Cholesky Decomposition")
         CALL WriteElement(key="Target_Rank", int_value_in=rank_in)
         CALL PrintFixedSolverParameters(solver_parameters)
      END IF
  
negative.code:        CALL MPI_Allreduce(MPI_IN_PLACE, inverse_factor, 1, MPINTREAL, MPI_SUM, &
              & row_comm, grid_error)
  
         !! Determine local pivots
         num_local_pivots = 0
         DO II = JJ + 1, AMat%actual_matrix_dimension
            pi_i = pivot_vector(II)
            IF (pi_i .GE. AMat%start_column .AND. pi_i .LT. AMat%end_column) THEN
               num_local_pivots = num_local_pivots + 1
               local_pivots(num_local_pivots) = pi_i
            END IF
         END DO
  
         !! Compute Dot Products
         !! Unlike normal cholesky, we need to pack for sending first
         fill_counter = 0
         DO II = 1, num_local_pivots
            pi_i = local_pivots(II)
            local_pi_i = pi_i - AMat%start_column + 1
            fill_counter = fill_counter + 1
            num_val = values_per_column_l(local_pi_i)
            values_per_column_pi(fill_counter) = num_val
            index_pi(:num_val,fill_counter) = index_l(:num_val,local_pi_i)
            values_pi(:num_val,fill_counter) = values_l(:num_val,local_pi_i)
         END DO
         CALL DotAllHelper(recv_num_values, recv_index, recv_values, &
              & values_per_column_pi(:fill_counter), index_pi(:,:fill_counter), &
  