Add simple exam test for releational objects.
Add exam for ex::collect().
bugfix: function: always pass evalf'ed arguments to evalf_funcp GiNaC passes unevaluted arguments to a function with evalf_funcp taking an exvector. Fixed that, and added a test case
Clarify types of test suite files.
Rename test suite files... ...to match any of the three types: exam* test result for specific input (like a pupil's exam) check* test coherence of results among each other, for random input time* measure run-time All tests are still there, but maybe elsewhere: * rename match_bug.cpp => exam_match.cpp * rename heur_gcd_bug.cpp => exam_heur_gcd.cpp * rename bugme_chinrem_gcd.cpp => exam_chinrem_gcd.cpp * rename parser_bugs.cpp => exam_parser.cpp * rename exam_cra.cpp => check_cra.cpp * include numeric_archive.cpp => exam_archive.cpp * include pgcd_infinite_loop.cpp => exam_pgcd.cpp * include pgcd_relatively_prime_bug.cpp => exam_pgcd.cpp These two have been deleted, since memory leaks are best looked for using tools on real programs on a regular basis (they were also not automatically executed): * delete parser_memleak.cpp * delete mul_eval_memleak.cpp
Added new routines for the numerical evaluation of iterated integrals like elliptic multiple polylogarithms or iterated integrals of modular forms. Changes to be committed: modified: check/CMakeLists.txt modified: check/Makefile.am new file: check/exam_inifcns_elliptic.cpp modified: doc/tutorial/ginac.texi modified: ginac/CMakeLists.txt modified: ginac/Makefile.am modified: ginac/ginac.h modified: ginac/inifcns.h new file: ginac/inifcns_elliptic.cpp new file: ginac/integration_kernel.cpp new file: ginac/integration_kernel.h new file: ginac/utils_multi_iterator.h modified: ginsh/ginsh_parser.ypp
Segregate sqfree() tests into file of its own.
Clean up check suite a little bit. Some tests in tiny test files are better moved elsewhere to reduce compile and link time.
Add exam for exam_common_factors. Including a case involving a hidden zero to catch errors like the one fixed in 5f7f81ad35a, as suggested by Alexey Sheplyakov <asheplyakov@yandex.ru>.
Remove exhashmap<T> class. Class exhashmap<T> was a workaround for missing std::hash_map<Key, T> in the original C++98 standard. It was put in GiNaC because map<Key, T> was deemed too slow. Since C++11 there is std::unorderd_map<Key, T>, which is hash-based. To be able to use it, add specializations of std::hash<ex> and std:equal_to<ex>.
Speed up power::real_part() and power::imag_part(). Add special case for real base and exponent (not just integer exponent). Improve special case for integer exponent by explicitly constructing the result using the Binomial expansion. Add a test case for real/imaginary part expansion.
[build] Include CMake related files into the tarball.
check: auto* tools build: compile and run check_mul_info.
[bugfix] factor_univariate(): handle polinomials over rationals (no segfaults any more).
pgcd(): avoid infinite loop if the first GCD candidate coincides with GCD 136 if (H_lcoeff.is_equal(lc_gcd)) { 137 if ((Hprev-H).expand().smod(pn).is_zero()) // (*) 138 continue; The check (*) can result in infinite loop if the (very) first GCD candidate gives the correct GCD: any subsequent iterations give the same result, so Hprev and H will be equal (hence the infinite loop). That check is not very useful (AFAIR I was trying to avoid extra division checks), so let's remove it.
pgcd(): detect relatively prime polynomials properly... ... so pgcd() doesn't loop forever any more. Division test does not handle relatively prime polynomials (because C = 1 divides any polynomial). So we should stop interpolation (and return gcd of contents) if we got relatively prime images (we should do that for efficiency reasons too). Thanks to Jörg Arndt for a bug report.
Fix chinese_remainder() so modular GCD actually works.
Renamed files *.tcc and *.hpp to *.h.
Rewritten heuristic and PRS GCD for univariate polynomials, added benchmark. Using a better data structure for univariate polynomials makes GCD 10 -- 300 times faster (and less memory hungry).
Implemented modular GCD algorithm for univariate polynomials.