Note that the test applications do not act like unit tests – they act more like compiler tests. In other words, if the test application links and runs without crashing, it is assumed that the code compiled correctly.
Since MPFRCPP is an interface, there is nothing to test except possibility of compilation. Numeric part of MPFRCPP depends on GMP / MPFR. Both GMP and MPFR come with tests and you should check them after installation.
We have tested MPFRCPP with the folowing compilers:
Compiler | Version |
---|---|
g++ (GCC) | 3.3.5, 3.4.2, 4.0.0 |
Microsoft ® 32-bit C/C++ Optimizing Compiler | 14.00 |
Intel ® Compiler for Windows | 9.1 |
Complex numbers test “test/std_complex.cpp
” could not be compilled by GCC or MS C/C++.
GCC bug could be corrected easily, see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31511.
However using std::complex<Real>
is deprecated. You should not specify std::complex<Real>
explicitly due to distinctions in different std::complex<T>
implementations (actually, not all of them conform strictly to the ISO C++ standard).
You should use mpfrcpp::Complex
class from the <mpfrcpp/extra/complex.hpp>
.
The folowing test classes are available from the mpfrcpp/test
directory.
namespace mpfr {
namespace test {
class BasicAritmeticFunctions {
public:
static void start () throw();
};
class BasicAritmeticFunctions {
public:
static void start () throw();
};
class Constants {
public:
static void start () throw();
};
class ExponentialFunctions {
public:
static void start () throw();
};
class HyperbolicFunctions {
public:
static void start () throw();
};
class Initialization {
public:
static void start () throw();
};
class IntegerRelatedFunctions {
public:
static void start () throw();
};
class InverseHyperbolicFunctions {
public:
static void start () throw();
};
class InverseTrigonometricFunctions {
public:
static void start () throw();
};
class LogarithmicFunctions {
public:
static void start () throw();
};
class MiscellaneousFunctions {
public:
static void start () throw();
};
class NativeComplex {
public:
static void start () throw();
};
class SpecialFunctions {
public:
static void start () throw();
};
class StdComplex {
public:
static void start () throw();
};
class StdOverloads {
public:
static void start () throw();
};
class TrigonometricFunctions {
public:
static void start () throw();
};
} // namespace test
} // namespace mpfr