[SCM] GiNaC -- a C++ library for symbolic computations branch, master, updated. release_1-4-0-146-g4fb48e2
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, master has been updated via 4fb48e28063e08c613a773378cfa5de608560a84 (commit) via d327f3f00c66a79d42855939866047b3e8caa630 (commit) via 434e5582627a91aa4d8fdb5156d975482a7f350c (commit) via 8fdf123fe6dac43ad7b8020d7bb7446c51cf75e7 (commit) via 94e5076a9ad0d142ee4604e9b078a10083efd24c (commit) via 32209e57010f19f080cc25e527347bcaa36053ec (commit) via def26469ff96228c66e877bb5594e7d9a24b638f (commit) via 09988aee53a2bfef87fc887a434b4c78d6326c47 (commit) via 12fefbca9b424cb8e9ae05d83883b96e17c7b96e (commit) via b573b0146341709649f373e0fc5c0d440877ebaf (commit) via e858ebe524f9beac33d492b9a4e614666819c3ab (commit) via 11fcbe7ea462936b79807a1f12273e5685f3f744 (commit) via e9b5729311fcd5572d806f5df2e645e1845603e5 (commit) via ce9053c15affb2a1a99d1157b85266d70aec601b (commit) via c7d9b624cb4bd5658a36fbcac2f73dbdb99edd5f (commit) via 47b7f9c9b4a5bd91c7c83b12bac8481b55bf4b92 (commit) via 55fcb39a1209898ec43694f7e25ffb4572b0c4d1 (commit) via 62923ac249c7e4f7e824bc37030ac79bab3675f3 (commit) via d5c76f155cfbd25ccfd14735b6d1041e23214a86 (commit) via ceb63120f43b41b62dcb0328231a3137d666161b (commit) from a377cee53b71348235ec36f83afeced7e10288a8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4fb48e28063e08c613a773378cfa5de608560a84 Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Sun Oct 19 20:21:33 2008 +0400 tutorial: simplify the instructions on writing extension classes. Don't mention (un)archiving while describing the `mystring' class (the minimalistic extension class), so readers have less chances to get confused. commit d327f3f00c66a79d42855939866047b3e8caa630 Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Sun Oct 19 19:39:30 2008 +0400 Don't force every algebraic class to implement archiving/unarchiving. So people who don't use (un)archiving don't need to bother with it. commit 434e5582627a91aa4d8fdb5156d975482a7f350c Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Fri Oct 17 17:57:27 2008 +0400 tutorial: don't mention custom RTTI any more (as it does not exist). commit 8fdf123fe6dac43ad7b8020d7bb7446c51cf75e7 Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Thu Oct 16 15:43:32 2008 +0400 symbol: make get_domain() a virtual method, remove symbol::domain. This cuts yet another 4 bytes from GiNaC::symbol. While at it, fix a memory leak in ginsh. commit 94e5076a9ad0d142ee4604e9b078a10083efd24c Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Thu Oct 16 15:43:32 2008 +0400 symbol: don't bother to set TeX name if user did not specified one. Same for the usual name. As a result we use less memory (and the output is exactly the same). commit 32209e57010f19f080cc25e527347bcaa36053ec Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Fri Oct 17 14:56:54 2008 +0400 symbol: remove return_type_tinfo() and return_type() (shrink symbol by 8 bytes) Bloating symbol to the state sizeof(symbol) == 64 is not appreciated at all. If someone needs/wants non-commutative symbols or other fancy stuff, please derive from class symbol and do whatever you want. commit def26469ff96228c66e877bb5594e7d9a24b638f Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Fri Oct 17 13:41:01 2008 +0400 Wipe out remnants of custom RTTI. Custom RTTI considered harmful, final part. commit 09988aee53a2bfef87fc887a434b4c78d6326c47 Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Wed Oct 15 15:32:11 2008 +0400 registered_class_info: use typeid() instead of tinfo_static. (Custom RTTI considered harmful, part 5). Since custom RTTI is going to be removed, registered_class_info needs to be re-organazied. Now tinfo_key is a (const) pointer to std::type_info. commit 12fefbca9b424cb8e9ae05d83883b96e17c7b96e Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Fri Oct 17 13:15:03 2008 +0400 A better return_type_tinfo() mechanism. return_type_tinfo() is used in order to distingish between non-commutative objects of different type. However, often it's necessary to distingish between non-commutative objects of the same type, for example, between gamma matrices with different representation label. return_type_tinfo() does not provide any clean way to do that. Hence, introduce return_type_t type which holds representation label along with type information, and use it for return_type_tinfo(). commit b573b0146341709649f373e0fc5c0d440877ebaf Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Wed Oct 15 15:32:11 2008 +0400 calchash(): use type_info::name() instead of tinfo(). Custom RTTI considered harmful, part 4. The hash value of the object of different types should be different whenever possible. Hence calcash() needs a unique per type number. Previously we used tinfo_key for this. typeinfo::name() (a *pointer* to implementation dependent string) is also unique for each class, so it's just as good as tinfo() is. commit e858ebe524f9beac33d492b9a4e614666819c3ab Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Wed Oct 15 15:32:11 2008 +0400 indexed::eval: use standard C++ RTTI. Custom RTTI considered harmful, part 3. commit 11fcbe7ea462936b79807a1f12273e5685f3f744 Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Wed Oct 15 15:32:11 2008 +0400 basic, expairseq: use standard C++ RTTI in compare(), is_equal(), match(), etc. Custom RTTI considered harmful, part 2. * basic.cpp: use standard C++ RTTI in compare(), is_equal(), operator=(), match(). * expairseq.cpp: use standard C++ RTTI in match(), make_flat(), construct_from_2_ex(). commit e9b5729311fcd5572d806f5df2e645e1845603e5 Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Wed Oct 15 15:32:11 2008 +0400 is_exactly_a: use typeid() to check the type of expression. Custom RTTI considered harmful, part 1. Custom run time type information (RTTI) system implemented in GiNaC have several serious drawbacks, such as 1. It makes writing GiNaC classes unnecessary cumbersome. 2. It wastes sizeof(void *) bytes per object, for small objects like symbol, numeric, etc. this overhead is considerable. It turns out that GiNaC's RTTI is not any faster than the standard one (at least on GNU/Linux and Solaris with GNU C++ library and compiler). So, GiNaC RTTI have no reasons to exit any more. commit ce9053c15affb2a1a99d1157b85266d70aec601b Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Wed Oct 15 10:16:07 2008 +0400 ptr.h: use unsigned int to store reference counts (in order to save memory). We'll hardly ever get more than 2^32 references to the same object. So using size_t to store reference count only wastes 4 bytes per object (on 64-bit architecture). Use unsigned int instead. commit c7d9b624cb4bd5658a36fbcac2f73dbdb99edd5f Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Sun Oct 19 21:27:14 2008 +0400 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). commit 47b7f9c9b4a5bd91c7c83b12bac8481b55bf4b92 Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Tue Oct 14 10:44:07 2008 +0400 polynomial: introduce a helper function to divide polynomial by ring element. commit 55fcb39a1209898ec43694f7e25ffb4572b0c4d1 Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Tue Oct 14 10:37:42 2008 +0400 mod_gcd: naive hack to chose a 'good' prime (to speed up gcd computation). commit 62923ac249c7e4f7e824bc37030ac79bab3675f3 Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Mon Sep 29 09:58:35 2008 +0400 [bugfix] remainder_in_ring: using exact division is plain wrong. commit d5c76f155cfbd25ccfd14735b6d1041e23214a86 Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Mon Sep 29 09:53:46 2008 +0400 [bugfix] normalize_in_ring: don't set the leading coefficient to 1. The coefficient ring is not a field, so the leading coefficient don't have to be 1. commit ceb63120f43b41b62dcb0328231a3137d666161b Author: Alexei Sheplyakov <varg@theor.jinr.ru> Date: Thu Sep 25 13:19:57 2008 +0400 [trivial] excompiler.cpp: shut up some silly compiler warnings. GCC warns about 'comparison between signed and unsigned integer expressions'. In this case such comparison is harmless, but still it's a bit annoying. ----------------------------------------------------------------------- Summary of changes: check/Makefile.am | 4 + check/exam_archive.cpp | 3 +- check/test_runner.h | 67 + check/time_uvar_gcd.cpp | 1877 +++++++++++++++++++++++++++++ doc/examples/mystring.cpp | 24 +- doc/tutorial/ginac.texi | 195 +--- ginac/Makefile.am | 6 + ginac/add.cpp | 12 +- ginac/add.h | 3 +- ginac/archive.cpp | 46 +- ginac/archive.h | 80 ++ ginac/basic.cpp | 47 +- ginac/basic.h | 31 +- ginac/clifford.cpp | 40 +- ginac/clifford.h | 25 +- ginac/color.cpp | 34 +- ginac/color.h | 12 +- ginac/constant.cpp | 20 +- ginac/constant.h | 7 +- ginac/container.h | 104 +- ginac/ex.h | 3 +- ginac/excompiler.cpp | 6 +- ginac/expairseq.cpp | 38 +- ginac/expairseq.h | 3 + ginac/exprseq.h | 3 - ginac/fail.cpp | 3 +- ginac/fail.h | 2 + ginac/fderivative.cpp | 9 +- ginac/fderivative.h | 3 + ginac/function.pl | 40 +- ginac/idx.cpp | 29 +- ginac/idx.h | 12 +- ginac/indexed.cpp | 22 +- ginac/indexed.h | 7 +- ginac/integral.cpp | 12 +- ginac/integral.h | 8 +- ginac/lst.cpp | 3 + ginac/lst.h | 4 +- ginac/matrix.cpp | 20 +- ginac/matrix.h | 6 + ginac/mul.cpp | 17 +- ginac/mul.h | 3 +- ginac/ncmul.cpp | 23 +- ginac/ncmul.h | 4 +- ginac/numeric.cpp | 24 +- ginac/numeric.h | 6 + ginac/polynomial/eval_uvar.h | 38 + ginac/polynomial/gcd_uvar.cpp | 33 + ginac/polynomial/heur_gcd_uvar.h | 66 + ginac/polynomial/interpolate_padic_uvar.h | 40 + ginac/polynomial/mod_gcd.cpp | 12 +- ginac/polynomial/normalize.tcc | 3 +- ginac/polynomial/prem_uvar.h | 47 + ginac/polynomial/remainder.tcc | 2 +- ginac/polynomial/ring_traits.hpp | 13 + ginac/polynomial/sr_gcd_uvar.h | 95 ++ ginac/polynomial/upoly.hpp | 31 + ginac/power.cpp | 11 +- ginac/power.h | 12 +- ginac/pseries.cpp | 10 +- ginac/pseries.h | 5 + ginac/ptr.h | 10 +- ginac/registrar.cpp | 10 - ginac/registrar.h | 75 +- ginac/relational.cpp | 16 +- ginac/relational.h | 8 +- ginac/structure.h | 35 +- ginac/symbol.cpp | 231 ++-- ginac/symbol.h | 79 +- ginac/symmetry.cpp | 15 +- ginac/symmetry.h | 6 + ginac/tensor.cpp | 26 +- ginac/tensor.h | 19 +- ginac/utils.cpp | 2 + ginac/utils.h | 16 +- ginac/wildcard.cpp | 15 +- ginac/wildcard.h | 6 + ginsh/ginsh.h | 2 +- ginsh/ginsh_lexer.ll | 8 +- 79 files changed, 3121 insertions(+), 823 deletions(-) create mode 100644 check/test_runner.h create mode 100644 check/time_uvar_gcd.cpp create mode 100644 ginac/polynomial/eval_uvar.h create mode 100644 ginac/polynomial/gcd_uvar.cpp create mode 100644 ginac/polynomial/heur_gcd_uvar.h create mode 100644 ginac/polynomial/interpolate_padic_uvar.h create mode 100644 ginac/polynomial/prem_uvar.h create mode 100644 ginac/polynomial/sr_gcd_uvar.h hooks/post-receive -- GiNaC -- a C++ library for symbolic computations
participants (1)
-
git@ginac.de