// Author(s) : Michael Hemmer /*! \file CGAL/Residue.C test for number type module */ #include #include #include #include #include #include #include //#include #ifdef CGAL_USE_LEDA #include #include #endif // CGAL_USE_LEDA #ifdef CGAL_USE_CORE #include #endif // CGAL_USE_CORE #ifdef CGAL_USE_GMP #include #endif #ifdef CGAL_USE_GMPXX #include #endif // CGAL_USE_GMP #include #include template void test_modular_traits(){ typedef CGAL::Residue Residue; typedef CGAL::Modular_traits MT; typedef typename MT::Residue_type Residue_type; typedef typename MT::Modular_image Modular_image; typedef typename MT::Modular_image_representative Modular_image_representative; typedef typename MT::Is_modularizable Is_modularizable; typedef typename MT::NT NT; assert( !(::std::is_same::value)); assert( !(::std::is_same::value)); assert( (::std::is_same::value)); assert( (::std::is_same::value)); Residue::set_current_prime(7); Modular_image modular_image; assert(modular_image(TESTT(10)+TESTT(10)) == Residue_type(-1)); assert(modular_image(TESTT(2) *TESTT(10)) == Residue_type(-1)); assert(modular_image(TESTT(20)) == Residue_type(-1)); assert(modular_image(TESTT(20)) == Residue_type(6)); assert(modular_image(TESTT(21)) == Residue_type(0)); assert(modular_image(TESTT(22)) == Residue_type(1)); assert(modular_image(TESTT(777777722)) == Residue_type(1)); Modular_image_representative modular_image_representative; assert(modular_image_representative(modular_image(TESTT(20))) == TESTT(-1)); } int main() { // Enforce IEEE double precision and rounding mode to nearest CGAL::Protect_FPU_rounding pfr(CGAL_FE_TONEAREST); test_modular_traits(); #ifdef CGAL_USE_LEDA test_modular_traits(); test_modular_traits >(); test_modular_traits >(); test_modular_traits >(); #endif #ifdef CGAL_USE_CORE test_modular_traits(); test_modular_traits >(); test_modular_traits >(); test_modular_traits >(); #endif #ifdef CGAL_USE_GMP test_modular_traits(); #endif #ifdef CGAL_USE_GMPXX test_modular_traits< mpz_class >(); #endif // test Sqrt_extension test_modular_traits >(); assert( (!CGAL::Modular_traits > ::Is_modularizable::value)); // test Polynomial test_modular_traits >(); assert( !CGAL::Modular_traits > ::Is_modularizable::value); // test_modular_traits(); test_modular_traits< CGAL::Lazy_exact_nt >(); assert( !CGAL::Modular_traits > ::Is_modularizable::value); }