13#include <util/mpi/MpiStructBuilder.h>
27 if (v1.elem_[i] != v2.elem_[i]) {
38 if (v1.elem_[i] != v2[i]) {
46 {
return (v2 == v1); }
51 {
return !(v1 == v2); }
55 {
return !(v1 == v2); }
59 {
return !(v2 == v1); }
67 in >> vector.elem_[i];
78 out.width(IntVector::Width);
79 out << vector.elem_[i];
86 MPI::Datatype MpiTraits<IntVector>::type = MPI::BYTE;
87 bool MpiTraits<IntVector>::hasType =
false;
92 void IntVector::commitMpiType()
94 if (!MpiTraits<IntVector>::hasType) {
95 MpiStructBuilder builder;
97 builder.setBase(&vector);
98 builder.addMember(&vector[0], MPI::INT);
99 builder.addMember(&vector[1], MPI::INT);
100 builder.addMember(&vector[2], MPI::INT);
101 builder.commit(MpiTraits<IntVector>::type);
102 MpiTraits<IntVector>::hasType =
true;
115 static int nCall = 0;
An IntVector is an integer Cartesian vector.
static const IntVector Zero
Zero IntVector.
static void initStatic()
Initialize static IntVector::Zero.
IntVector()
Default constructor.
File containing preprocessor macros for error handling.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
const int Dimension
Dimensionality of space.
Utility classes for scientific computation.
bool operator==(Polynomial< T > const &a, Polynomial< T > const &b)
Equality operator for polynomials.
std::istream & operator>>(std::istream &in, Pair< Data > &pair)
Input a Pair from an istream.
std::ostream & operator<<(std::ostream &out, const Pair< Data > &pair)
Output a Pair to an ostream, without line breaks.
bool operator!=(Polynomial< T > const &a, Polynomial< T > const &b)
Inequality operator for polynomials.