* Time the different GCD algorithms. */
/*
- * GiNaC Copyright (C) 1999-2009 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2010 Johannes Gutenberg University Mainz, Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
{
upoly r1, r2;
remainder_in_ring(r1, a, g);
- bug_on(!r1.empty(), "bug: " << label << " : gcd g = \"" << g <<
+ cbug_on(!r1.empty(), "bug: " << label << " : gcd g = \"" << g <<
"\"does not divide a =\"" << a << "\"");
remainder_in_ring(r2, b, g);
- bug_on(!r2.empty(), "bug: " << label << " : gcd g = \"" << g <<
+ cbug_on(!r2.empty(), "bug: " << label << " : gcd g = \"" << g <<
"\"does not divide b =\"" << b << "\"");
return true;
}
return false;
gcd_sanity_check(g, a, b, std::string("heur_gcd"));
- bug_on(g != g_check,
+ cbug_on(g != g_check,
"modular and heuristic GCD disagree: " <<
"a = \"" << a << "\", b = \"" << b << "\", " <<
"mod_gcd = \"" << g_check << "\", " <<
bool check() const
{
gcd_sanity_check(g, a, b, std::string("sr_gcd"));
- bug_on(g != g_check,
+ cbug_on(g != g_check,
"modular and PRS GCD disagree: " <<
"a = \"" << a << "\", b = \"" << b << "\", " <<
"mod_gcd = \"" << g_check << "\", " <<
const upoly& g_check;
unsigned options;
ex_sr_gcd_test(const ex& a_, const ex& b_, const upoly& g_) :
- a(a_), b(b_), g(0), g_check(g_), options(gcd_options::no_heur_gcd)
+ a(a_), b(b_), g(0), g_check(g_), options(gcd_options::no_heur_gcd |
+ gcd_options::use_sr_gcd)
{ }
inline void run()
upoly g_gin;
ex2upoly(g_gin, g);
- bug_on(g_gin != g_check, "modular and old PRS GCD disagree: " <<
+ cbug_on(g_gin != g_check, "modular and old PRS GCD disagree: " <<
"a = \"" << a << "\", b = \"" << b << "\", " <<
"old sr_gcd = \"" << g_gin << "\", " <<
"mod_gcd = \"" << g_check << "\"");