Commit a7c8ce11 authored by Matthieu Schaller's avatar Matthieu Schaller
Browse files

Moved the debugging code between #define guards

parent f8c92e57
......@@ -406,12 +406,14 @@ void cell_split(struct cell *c) {
xparts[j] = xtemp;
}
}
/* for ( k = 0 ; k <= j ; k++ )
if ( parts[k].x[0] > pivot[0] )
error( "cell_split: sorting failed." );
for ( k = i ; k < count ; k++ )
if ( parts[k].x[0] < pivot[0] )
error( "cell_split: sorting failed." ); */
#ifdef SWIFT_DEBUG_CHECKS
for (int k = 0; k <= j; k++)
if (parts[k].x[0] > pivot[0]) error("cell_split: sorting failed.");
for (int k = i; k < count; k++)
if (parts[k].x[0] < pivot[0]) error("cell_split: sorting failed.");
#endif
left[1] = i;
right[1] = count - 1;
left[0] = 0;
......@@ -433,14 +435,17 @@ void cell_split(struct cell *c) {
xparts[j] = xtemp;
}
}
/* for ( int kk = left[k] ; kk <= j ; kk++ )
if ( parts[kk].x[1] > pivot[1] ) {
message( "ival=[%i,%i], i=%i, j=%i." , left[k] , right[k] , i , j );
error( "sorting failed (left)." );
}
for ( int kk = i ; kk <= right[k] ; kk++ )
if ( parts[kk].x[1] < pivot[1] )
error( "sorting failed (right)." ); */
#ifdef SWIFT_DEBUG_CHECKS
for (int kk = left[k]; kk <= j; kk++)
if (parts[kk].x[1] > pivot[1]) {
message("ival=[%i,%i], i=%i, j=%i.", left[k], right[k], i, j);
error("sorting failed (left).");
}
for (int kk = i; kk <= right[k]; kk++)
if (parts[kk].x[1] < pivot[1]) error("sorting failed (right).");
#endif
left[2 * k + 1] = i;
right[2 * k + 1] = right[k];
left[2 * k] = left[k];
......@@ -463,16 +468,20 @@ void cell_split(struct cell *c) {
xparts[j] = xtemp;
}
}
/* for ( int kk = left[k] ; kk <= j ; kk++ )
if ( parts[kk].x[2] > pivot[2] ) {
message( "ival=[%i,%i], i=%i, j=%i." , left[k] , right[k] , i , j );
error( "sorting failed (left)." );
}
for ( int kk = i ; kk <= right[k] ; kk++ )
if ( parts[kk].x[2] < pivot[2] ) {
message( "ival=[%i,%i], i=%i, j=%i." , left[k] , right[k] , i , j );
error( "sorting failed (right)." );
} */
#ifdef SWIFT_DEBUG_CHECKS
for (int kk = left[k]; kk <= j; kk++)
if (parts[kk].x[2] > pivot[2]) {
message("ival=[%i,%i], i=%i, j=%i.", left[k], right[k], i, j);
error("sorting failed (left).");
}
for (int kk = i; kk <= right[k]; kk++)
if (parts[kk].x[2] < pivot[2]) {
message("ival=[%i,%i], i=%i, j=%i.", left[k], right[k], i, j);
error("sorting failed (right).");
}
#endif
left[2 * k + 1] = i;
right[2 * k + 1] = right[k];
left[2 * k] = left[k];
......@@ -490,32 +499,34 @@ void cell_split(struct cell *c) {
for (int k = 0; k < count; k++)
if (parts[k].gpart != NULL) parts[k].gpart->part = &parts[k];
#ifdef SWIFT_DEBUG_CHECKS
/* Verify that _all_ the parts have been assigned to a cell. */
/* for ( k = 1 ; k < 8 ; k++ )
if ( &c->progeny[k-1]->parts[ c->progeny[k-1]->count ] !=
c->progeny[k]->parts )
error( "Particle sorting failed (internal consistency)." );
if ( c->progeny[0]->parts != c->parts )
error( "Particle sorting failed (left edge)." );
if ( &c->progeny[7]->parts[ c->progeny[7]->count ] != &c->parts[ count ] )
error( "Particle sorting failed (right edge)." ); */
for (int k = 1; k < 8; k++)
if (&c->progeny[k - 1]->parts[c->progeny[k - 1]->count] !=
c->progeny[k]->parts)
error("Particle sorting failed (internal consistency).");
if (c->progeny[0]->parts != c->parts)
error("Particle sorting failed (left edge).");
if (&c->progeny[7]->parts[c->progeny[7]->count] != &c->parts[count])
error("Particle sorting failed (right edge).");
/* Verify a few sub-cells. */
/* for (int k = 0 ; k < c->progeny[0]->count ; k++ )
if ( c->progeny[0]->parts[k].x[0] > pivot[0] ||
c->progeny[0]->parts[k].x[1] > pivot[1] ||
c->progeny[0]->parts[k].x[2] > pivot[2] )
error( "Sorting failed (progeny=0)." );
for (int k = 0 ; k < c->progeny[1]->count ; k++ )
if ( c->progeny[1]->parts[k].x[0] > pivot[0] ||
c->progeny[1]->parts[k].x[1] > pivot[1] ||
c->progeny[1]->parts[k].x[2] <= pivot[2] )
error( "Sorting failed (progeny=1)." );
for (int k = 0 ; k < c->progeny[2]->count ; k++ )
if ( c->progeny[2]->parts[k].x[0] > pivot[0] ||
c->progeny[2]->parts[k].x[1] <= pivot[1] ||
c->progeny[2]->parts[k].x[2] > pivot[2] )
error( "Sorting failed (progeny=2)." ); */
for (int k = 0; k < c->progeny[0]->count; k++)
if (c->progeny[0]->parts[k].x[0] > pivot[0] ||
c->progeny[0]->parts[k].x[1] > pivot[1] ||
c->progeny[0]->parts[k].x[2] > pivot[2])
error("Sorting failed (progeny=0).");
for (int k = 0; k < c->progeny[1]->count; k++)
if (c->progeny[1]->parts[k].x[0] > pivot[0] ||
c->progeny[1]->parts[k].x[1] > pivot[1] ||
c->progeny[1]->parts[k].x[2] <= pivot[2])
error("Sorting failed (progeny=1).");
for (int k = 0; k < c->progeny[2]->count; k++)
if (c->progeny[2]->parts[k].x[0] > pivot[0] ||
c->progeny[2]->parts[k].x[1] <= pivot[1] ||
c->progeny[2]->parts[k].x[2] > pivot[2])
error("Sorting failed (progeny=2).");
#endif
/* Now do the same song and dance for the gparts. */
......
......@@ -60,4 +60,7 @@
/* Gravity properties */
#define EXTERNAL_POTENTIAL_POINTMASS
/* Are we debugging ? */
//#define SWIFT_DEBUG_CHECKS
#endif /* SWIFT_CONST_H */
......@@ -224,7 +224,7 @@ void engine_redistribute(struct engine *e) {
bzero(counts, sizeof(int) * nr_nodes * nr_nodes);
bzero(g_counts, sizeof(int) * nr_nodes * nr_nodes);
// Allocate the destination index arrays.
/* Allocate the destination index arrays. */
int *dest, *g_dest;
if ((dest = (int *)malloc(sizeof(int) * s->nr_parts)) == NULL)
error("Failed to allocate dest temporary buffer.");
......@@ -243,9 +243,12 @@ void engine_redistribute(struct engine *e) {
}
const int cid = cell_getid(cdim, parts[k].x[0] * ih[0],
parts[k].x[1] * ih[1], parts[k].x[2] * ih[2]);
/* if (cid < 0 || cid >= s->nr_cells)
error("Bad cell id %i for part %i at [%.3e,%.3e,%.3e].",
cid, k, parts[k].x[0], parts[k].x[1], parts[k].x[2]); */
#ifdef SWIFT_DEBUG_CHECKS
if (cid < 0 || cid >= s->nr_cells)
error("Bad cell id %i for part %zi at [%.3e,%.3e,%.3e].", cid, k,
parts[k].x[0], parts[k].x[1], parts[k].x[2]);
#endif
dest[k] = cells[cid].nodeID;
/* The counts array is indexed as count[from * nr_nodes + to]. */
......@@ -272,9 +275,10 @@ void engine_redistribute(struct engine *e) {
count_this_dest = 0;
}
/* Debug */
/* if(s->parts[k].gpart->id < 0) */
/* error("Trying to link a partnerless gpart !"); */
#ifdef SWIFT_DEBUG_CHECKS
if (s->parts[k].gpart->id < 0)
error("Trying to link a partnerless gpart !");
#endif
s->parts[k].gpart->id = count_this_dest;
count_this_dest++;
......@@ -294,9 +298,12 @@ void engine_redistribute(struct engine *e) {
}
const int cid = cell_getid(cdim, gparts[k].x[0] * ih[0],
gparts[k].x[1] * ih[1], gparts[k].x[2] * ih[2]);
/* if (cid < 0 || cid >= s->nr_cells)
error("Bad cell id %i for part %i at [%.3e,%.3e,%.3e].",
cid, k, g_parts[k].x[0], g_parts[k].x[1], g_parts[k].x[2]); */
#ifdef SWIFT_DEBUG_CHECKS
if (cid < 0 || cid >= s->nr_cells)
error("Bad cell id %i for part %zi at [%.3e,%.3e,%.3e].", cid, k,
gparts[k].x[0], gparts[k].x[1], gparts[k].x[2]);
#endif
g_dest[k] = cells[cid].nodeID;
/* The counts array is indexed as count[from * nr_nodes + to]. */
......@@ -471,36 +478,38 @@ void engine_redistribute(struct engine *e) {
offset_gparts += count_gparts;
}
#ifdef SWIFT_DEBUG_CHECKS
/* Verify that all parts are in the right place. */
/* for ( int k = 0 ; k < nr_parts ; k++ ) {
int cid = cell_getid( cdim , parts_new[k].x[0]*ih[0],
parts_new[k].x[1]*ih[1], parts_new[k].x[2]*ih[2] );
if ( cells[ cid ].nodeID != nodeID )
error( "Received particle (%i) that does not belong here
(nodeID=%i).", k , cells[ cid ].nodeID );
} */
for (int k = 0; k < nr_parts; k++) {
int cid = cell_getid(cdim, parts_new[k].x[0] * ih[0],
parts_new[k].x[1] * ih[1], parts_new[k].x[2] * ih[2]);
if (cells[cid].nodeID != nodeID)
error("Received particle (%i) that does not belong here (nodeID=%i).", k,
cells[cid].nodeID);
}
/* Verify that the links are correct */
/* for (size_t k = 0; k < nr_gparts; ++k) { */
for (size_t k = 0; k < nr_gparts; ++k) {
/* if (gparts_new[k].id > 0) { */
if (gparts_new[k].id > 0) {
/* if (gparts_new[k].part->gpart != &gparts_new[k]) */
/* error("Linking problem !"); */
if (gparts_new[k].part->gpart != &gparts_new[k])
error("Linking problem !");
/* if (gparts_new[k].x[0] != gparts_new[k].part->x[0] || */
/* gparts_new[k].x[1] != gparts_new[k].part->x[1] || */
/* gparts_new[k].x[2] != gparts_new[k].part->x[2]) */
/* error("Linked particles are not at the same position !"); */
/* } */
/* } */
/* for (size_t k = 0; k < nr_parts; ++k) { */
if (gparts_new[k].x[0] != gparts_new[k].part->x[0] ||
gparts_new[k].x[1] != gparts_new[k].part->x[1] ||
gparts_new[k].x[2] != gparts_new[k].part->x[2])
error("Linked particles are not at the same position !");
}
}
for (size_t k = 0; k < nr_parts; ++k) {
/* if (parts_new[k].gpart != NULL) { */
if (parts_new[k].gpart != NULL) {
/* if (parts_new[k].gpart->part != &parts_new[k]) error("Linking problem !"); */
/* } */
/* } */
if (parts_new[k].gpart->part != &parts_new[k]) error("Linking problem !");
}
}
#endif
/* Set the new part data, free the old. */
free(parts);
......@@ -717,8 +726,7 @@ void engine_exchange_cells(struct engine *e) {
MPI_Status status;
ticks tic = getticks();
/* Run through the cells and get the size of the ones that will be sent off.
*/
/* Run through the cells and get the size of the ones that will be sent */
int count_out = 0;
for (int k = 0; k < nr_cells; k++) {
offset[k] = count_out;
......@@ -2445,26 +2453,29 @@ void engine_split(struct engine *e, struct partition *initial_partition) {
for (size_t k = 0; k < s->nr_gparts; k++)
if (s->gparts[k].id > 0) s->gparts[k].part->gpart = &s->gparts[k];
#ifdef SWIFT_DEBUG_CHECKS
/* Verify that the links are correct */
/* for (size_t k = 0; k < s->nr_gparts; ++k) { */
for (size_t k = 0; k < s->nr_gparts; ++k) {
/* if (s->gparts[k].id > 0) { */
if (s->gparts[k].id > 0) {
/* if (s->gparts[k].part->gpart != &s->gparts[k]) error("Linking problem !"); */
if (s->gparts[k].part->gpart != &s->gparts[k]) error("Linking problem !");
/* if (s->gparts[k].x[0] != s->gparts[k].part->x[0] || */
/* s->gparts[k].x[1] != s->gparts[k].part->x[1] || */
/* s->gparts[k].x[2] != s->gparts[k].part->x[2]) */
/* error("Linked particles are not at the same position !"); */
/* } */
/* } */
/* for (size_t k = 0; k < s->nr_parts; ++k) { */
if (s->gparts[k].x[0] != s->gparts[k].part->x[0] ||
s->gparts[k].x[1] != s->gparts[k].part->x[1] ||
s->gparts[k].x[2] != s->gparts[k].part->x[2])
error("Linked particles are not at the same position !");
}
}
for (size_t k = 0; k < s->nr_parts; ++k) {
/* if (s->parts[k].gpart != NULL) { */
if (s->parts[k].gpart != NULL) {
if (s->parts[k].gpart->part != &s->parts[k]) error("Linking problem !");
}
}
/* if (s->parts[k].gpart->part != &s->parts[k]) error("Linking problem !"); */
/* } */
/* } */
#endif
#else
error("SWIFT was not compiled with MPI support.");
......@@ -2483,7 +2494,7 @@ void engine_dump_snapshot(struct engine *e) {
if (e->verbose) message("writing snapshot at t=%f.", e->time);
/* Dump... */
/* Dump... */
#if defined(WITH_MPI)
#if defined(HAVE_PARALLEL_HDF5)
write_output_parallel(e, e->snapshotBaseName, e->snapshotUnits, e->nodeID,
......
......@@ -346,18 +346,18 @@ void runner_do_sort(struct runner *r, struct cell *c, int flags, int clock) {
}
}
#ifdef SWIFT_DEBUG_CHECKS
/* Verify the sorting. */
/* for ( j = 0 ; j < 13 ; j++ ) {
if ( !( flags & (1 << j) ) )
continue;
finger = &sort[ j*(count + 1) ];
for ( k = 1 ; k < count ; k++ ) {
if ( finger[k].d < finger[k-1].d )
error( "Sorting failed, ascending array." );
if ( finger[k].i >= count )
error( "Sorting failed, indices borked." );
}
} */
for (j = 0; j < 13; j++) {
if (!(flags & (1 << j))) continue;
finger = &sort[j * (count + 1)];
for (k = 1; k < count; k++) {
if (finger[k].d < finger[k - 1].d)
error("Sorting failed, ascending array.");
if (finger[k].i >= count) error("Sorting failed, indices borked.");
}
}
#endif
if (clock) TIMER_TOC(timer_dosort);
}
......
......@@ -685,10 +685,12 @@ void scheduler_ranktasks(struct scheduler *s) {
left = j;
}
#ifdef SWIFT_DEBUG_CHECKS
/* Verify that the tasks were ranked correctly. */
/* for ( k = 1 ; k < s->nr_tasks ; k++ )
if ( tasks[ tid[k-1] ].rank > tasks[ tid[k-1] ].rank )
error( "Task ranking failed." ); */
for (int k = 1; k < s->nr_tasks; k++)
if (tasks[tid[k - 1]].rank > tasks[tid[k - 1]].rank)
error("Task ranking failed.");
#endif
}
/**
......
......@@ -431,6 +431,7 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
// clocks_from_ticks(getticks() - tic), clocks_getunit());
#ifdef WITH_MPI
/* Move non-local parts to the end of the list. */
const int local_nodeID = s->e->nodeID;
for (size_t k = 0; k < nr_parts;) {
......@@ -458,8 +459,9 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
}
}
#ifdef SWIFT_DEBUG_CHECKS
/* Check that all parts are in the correct places. */
/* for (size_t k = 0; k < nr_parts; k++) {
for (size_t k = 0; k < nr_parts; k++) {
if (cells[ind[k]].nodeID != local_nodeID) {
error("Failed to move all non-local parts to send list");
}
......@@ -468,7 +470,8 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
if (cells[ind[k]].nodeID == local_nodeID) {
error("Failed to remove local parts from send list");
}
}*/
}
#endif
/* Move non-local gparts to the end of the list. */
for (int k = 0; k < nr_gparts;) {
......@@ -493,8 +496,8 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
}
}
#ifdef SWIFT_DEBUG_CHECKS
/* Check that all gparts are in the correct place (untested). */
/*
for (size_t k = 0; k < nr_gparts; k++) {
if (cells[gind[k]].nodeID != local_nodeID) {
error("Failed to move all non-local gparts to send list");
......@@ -504,7 +507,8 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
if (cells[gind[k]].nodeID == local_nodeID) {
error("Failed to remove local gparts from send list");
}
}*/
}
#endif
/* Exchange the strays, note that this potentially re-allocates
the parts arrays. */
......@@ -533,12 +537,15 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
ind[k] =
cell_getid(cdim, p->x[0] * ih[0], p->x[1] * ih[1], p->x[2] * ih[2]);
cells[ind[k]].count += 1;
/* if ( cells[ ind[k] ].nodeID != nodeID )
error( "Received part that does not belong to me (nodeID=%i)." , cells[
ind[k] ].nodeID ); */
#ifdef SWIFT_DEBUG_CHECKS
if (cells[ind[k]].nodeID != local_nodeID)
error("Received part that does not belong to me (nodeID=%i).",
cells[ind[k]].nodeID);
#endif
}
nr_parts = s->nr_parts;
#endif
#endif /* WITH_MPI */
/* Sort the parts according to their cells. */
space_parts_sort(s, ind, nr_parts, 0, s->nr_cells - 1, verbose);
......@@ -547,15 +554,18 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
for (size_t k = 0; k < nr_parts; k++)
if (s->parts[k].gpart != NULL) s->parts[k].gpart->part = &s->parts[k];
#ifdef SWIFT_DEBUG_CHECKS
/* Verify space_sort_struct. */
/* for ( k = 1 ; k < nr_parts ; k++ ) {
if ( ind[k-1] > ind[k] ) {
error( "Sort failed!" );
}
else if ( ind[k] != cell_getid( cdim , parts[k].x[0]*ih[0] ,
parts[k].x[1]*ih[1] , parts[k].x[2]*ih[2] ) )
error( "Incorrect indices!" );
} */
for (size_t k = 1; k < nr_parts; k++) {
if (ind[k - 1] > ind[k]) {
error("Sort failed!");
} else if (ind[k] != cell_getid(cdim, s->parts[k].x[0] * ih[0],
s->parts[k].x[1] * ih[1],
s->parts[k].x[2] * ih[2])) {
error("Incorrect indices!");
}
}
#endif
/* We no longer need the indices as of here. */
free(ind);
......@@ -596,26 +606,28 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
/* We no longer need the indices as of here. */
free(gind);
#ifdef SWIFT_DEBUG_CHECKS
/* Verify that the links are correct */
/* for (size_t k = 0; k < nr_gparts; ++k) { */
for (size_t k = 0; k < nr_gparts; ++k) {
/* if (s->gparts[k].id > 0) { */
if (s->gparts[k].id > 0) {
/* if (s->gparts[k].part->gpart != &s->gparts[k]) error("Linking problem !"); */
if (s->gparts[k].part->gpart != &s->gparts[k]) error("Linking problem !");
/* if (s->gparts[k].x[0] != s->gparts[k].part->x[0] || */
/* s->gparts[k].x[1] != s->gparts[k].part->x[1] || */
/* s->gparts[k].x[2] != s->gparts[k].part->x[2]) */
/* error("Linked particles are not at the same position !"); */
/* } */
/* } */
/* for (size_t k = 0; k < nr_parts; ++k) { */
if (s->gparts[k].x[0] != s->gparts[k].part->x[0] ||
s->gparts[k].x[1] != s->gparts[k].part->x[1] ||
s->gparts[k].x[2] != s->gparts[k].part->x[2])
error("Linked particles are not at the same position !");
}
}
for (size_t k = 0; k < nr_parts; ++k) {
/* if (s->parts[k].gpart != NULL) { */
if (s->parts[k].gpart != NULL) {
/* if (s->parts[k].gpart->part != &s->parts[k]) error("Linking problem !"); */
/* } */
/* } */
if (s->parts[k].gpart->part != &s->parts[k]) error("Linking problem !");
}
}
#endif
/* Hook the cells up to the parts. */
// tic = getticks();
......@@ -705,13 +717,14 @@ void space_parts_sort(struct space *s, int *ind, size_t N, int min, int max,
/* Launch the sorting tasks. */
engine_launch(s->e, s->e->nr_threads, (1 << task_type_part_sort), 0);
#ifdef SWIFT_DEBUG_CHECKS
/* Verify space_sort_struct. */
/* for (int i = 1; i < N; i++)
for (int i = 1; i < N; i++)
if (ind[i - 1] > ind[i])
error("Sorting failed (ind[%i]=%i,ind[%i]=%i), min=%i, max=%i.", i - 1,
ind[i - 1], i,
ind[i], min, max);
message("Sorting succeeded."); */
ind[i - 1], i, ind[i], min, max);
message("Sorting succeeded.");
#endif
/* Clean up. */
free(space_sort_struct.stack);
......@@ -773,19 +786,21 @@ void space_do_parts_sort() {
}
}
#ifdef SWIFT_DEBUG_CHECKS
/* Verify space_sort_struct. */
/* for (int k = i; k <= jj; k++)
for (int k = i; k <= jj; k++)
if (ind[k] > pivot) {
message("sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%i, j=%i.", k,
ind[k], pivot, i, j);
message("sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%li, j=%li.",
k, ind[k], pivot, i, j);
error("Partition failed (<=pivot).");
}
for (int k = jj + 1; k <= j; k++)
if (ind[k] <= pivot) {
message("sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%i, j=%i.", k,
ind[k], pivot, i, j);
message("sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%li, j=%li.",
k, ind[k], pivot, i, j);
error("Partition failed (>pivot).");
} */
}
#endif
/* Split-off largest interval. */
if (jj - i > j - jj + 1) {
......@@ -885,13 +900,14 @@ void space_gparts_sort(struct space *s, int *ind, size_t N, int min, int max,
/* Launch the sorting tasks. */
engine_launch(s->e, s->e->nr_threads, (1 << task_type_gpart_sort), 0);
#ifdef SWIFT_DEBUG_CHECKS
/* Verify space_sort_struct. */
/* for (int i = 1; i < N; i++)
for (int i = 1; i < N; i++)
if (ind[i - 1] > ind[i])
error("Sorting failed (ind[%i]=%i,ind[%i]=%i), min=%i, max=%i.", i - 1,
ind[i - 1], i,
ind[i], min, max);
message("Sorting succeeded."); */
ind[i - 1], i, ind[i], min, max);
message("Sorting succeeded.");
#endif
/* Clean up. */
free(space_sort_struct.stack);
......@@ -949,19 +965,21 @@ void space_do_gparts_sort() {
}
}
#ifdef SWIFT_DEBUG_CHECKS
/* Verify space_sort_struct. */
/* for (int k = i; k <= jj; k++)
for (int k = i; k <= jj; k++)
if (ind[k] > pivot) {
message("sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%i, j=%i.", k,
ind[k], pivot, i, j);
message("sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%li, j=%li.",
k, ind[k], pivot, i, j);
error("Partition failed (<=pivot).");
}
for (int k = jj + 1; k <= j; k++)
if (ind[k] <= pivot) {
message("sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%i, j=%i.", k,
ind[k], pivot, i, j);
message("sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%li, j=%li.",
k, ind[k], pivot, i, j);
error("Partition failed (>pivot).");
} */
}
#endif
/* Split-off largest interval. */
if (jj - i > j - jj + 1) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment