diff --git a/CMakeLists.txt b/CMakeLists.txt index 6ff97c1..40bdbb3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,8 +9,12 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) +INCLUDE_DIRECTORIES("~/apps/mpfrc++/") +LINK_DIRECTORIES("~/apps/mpfrc++/") +LINK_DIRECTORIES("/usr/lib/") + ADD_DEFINITIONS( -Wall -W -Wextra ) ADD_EXECUTABLE(test test.cpp) -TARGET_LINK_LIBRARIES(test ${Boost_LIBRARIES}) +TARGET_LINK_LIBRARIES(test ${Boost_LIBRARIES} gmp mpfr mpreal) diff --git a/cholesky.h b/cholesky.h index a131a52..2391c18 100644 --- a/cholesky.h +++ b/cholesky.h @@ -55,6 +55,9 @@ public: // FIXME check if triangular types behaviour is like having 0 typedef ublas::matrix< T > FactorMat; + //! The type of the scalars + typedef T AtomType; + /** Instanciate without computing anything, you are responsible of * calling the algorithm and getting the result with operator() * */ @@ -322,8 +325,8 @@ public: T sum = 0.0; // for( unsigned int k=1; k_L(i, k) * this->_L(i, k); } this->_L(i,i) = this->_L(i,i) - sum; @@ -338,8 +341,8 @@ public: sum = 0.0; // for( unsigned int k = 1; k < i-1; ++k ) { // for( unsigned int k = 1; k < i; ++k ) { - for( unsigned int k = 0; k < i; ++k ) { -// for( unsigned int k = 0; k < i-1; ++k ) { +// for( unsigned int k = 0; k < i; ++k ) { + for( unsigned int k = 0; k < i-1; ++k ) { sum += this->_L(j, k) * this->_L(i, k); } this->_L(j,i) = this->_L(j,i) - sum; diff --git a/test.cpp b/test.cpp index 044d35c..38a2c8f 100644 --- a/test.cpp +++ b/test.cpp @@ -28,6 +28,9 @@ Authors: #include #include +#include +using namespace mpfr; + #include "cholesky.h" @@ -238,6 +241,7 @@ int main(int argc, char** argv) std::clog << "Legend:" << std::endl; std::clog << "\tAlgo: (failures/runs)\tAverage error" << std::endl; + /* std::cout << std::endl << "FLOAT" << std::endl; test(M,N,F,R,seed); @@ -246,5 +250,10 @@ int main(int argc, char** argv) std::cout << std::endl << "LONG DOUBLE" << std::endl; test(M,N,F,R,seed); + */ + + std::cout << std::endl << "MPREAL 128" << std::endl; + mpreal::set_default_prec(128); + test(M,N,F,R,seed); }