/* reorder is ignored, don't know what would be the consequences of a dumb reordering but neither do I see the point of
* reordering*/
-Topo_Cart::Topo_Cart(MPI_Comm comm_old, int ndims, int dims[], int periods[], int /*reorder*/, MPI_Comm* comm_cart)
+Topo_Cart::Topo_Cart(MPI_Comm comm_old, int ndims, const int dims[], const int periods[], int /*reorder*/, MPI_Comm* comm_cart)
: Topo_Cart(ndims)
{
MPI_Group newGroup;
return MPI_SUCCESS;
}
-int Topo_Cart::rank(int* coords, int* rank) {
+int Topo_Cart::rank(const int* coords, int* rank) {
int ndims =ndims_;
*rank = 0;
int multiplier = 1;
int Topo_Cart::shift(int direction, int disp, int *rank_source, int *rank_dest) {
- int position[ndims_];
+ int* position = new int[ndims_];
if(ndims_ == 0) {
return MPI_ERR_ARG;
} else {
this->rank(position, rank_source);
}
-
+ delete[] position;
return MPI_SUCCESS;
}
return MPI_SUCCESS;
}
/* Allocate the array of prime factors which cannot exceed log_2(num) entries */
- int sqrtnum = ceil(sqrt(num));
- int size = ceil(log(num) / log(2));
+ int sqrtnum = ceil(sqrt(double(num)));
+ int size = ceil(log(double(num)) / log(2.0));
*factors = new int[size];
int i = 0;