Please pull from git://ffmssmsc.jinr.ru:443/varg/ginac.git master
Dear Jens, could you please pull from git://ffmssmsc.jinr.ru:443/varg/ginac.git master The following changes since commit bb6b3d82cdf9e7ff4ecac89c47e63024e39ec96b: Jens Vollinga (1): Fixed bug in unvariate factorization. Bound for lifting was using a ordinary are available: Alexei Sheplyakov (18): lexer: when switching to another output stream, clean last read character. parser: improve error reporting a little bit. multiple zeta values: make crandall_Z helper function reentrant. multiple zeta values: make crandall_Y_loop helper function reentrant. ginsh: use exmap for storing assigned symbols. symbol: get rid of assign/unassign (for performance and other reasons). [BUGFIX] Reclaiming the memory allocated for static objects *is* necessary. match: don't modify subexpression list if expression doesn't match the pattern. don't mention CVS any more, describe how to install from git. build: don't run any ${host} binaries while checking for readline. build: faster check for standard C++ headers. configure: don't check for sizeof(long double), we don't use it. utils.h: use <stdint.h> (if available) instead of reinventing it. configure: don't bother to run checks which can be done at the compile time. configure: run important checks first (and bail out if something is missing). Allow user to disable GiNaC::compile_ex (e.g. for security reasons). build: put (almost) all auto* tools scripts into the config directory. build: shut up automake warnings, don't use GNU make extensions. ChangeLog | 9 ++- INSTALL | 11 +-- acinclude.m4 | 139 +++++++++++++++++++++++++++++++++----------- configure.ac | 67 +++++---------------- doc/examples/Makefile.am | 4 +- doc/tutorial/Makefile.am | 6 +- doc/tutorial/ginac.texi | 7 +-- ginac/basic.cpp | 8 ++- ginac/function.pl | 4 +- ginac/inifcns_nstdsums.cpp | 76 +++++++++++------------- ginac/parser/debug.hpp | 13 ++++ ginac/parser/lexer.cpp | 15 +++++ ginac/parser/lexer.hpp | 3 + ginac/parser/parser.cpp | 20 ++----- ginac/parser/parser.hpp | 12 ++++ ginac/remember.cpp | 4 +- ginac/symbol.cpp | 61 +++---------------- ginac/symbol.h | 25 +------- ginac/utils.cpp | 55 ++++++++++++++++- ginac/utils.h | 23 ++++--- ginsh/ginsh.1.in | 4 +- ginsh/ginsh_parser.yy | 62 ++++++++++---------- 22 files changed, 339 insertions(+), 289 deletions(-) Best regards, Alexei -- All science is either physics or stamp collecting.
Hi, Alexei Sheplyakov schrieb:
could you please pull from git://ffmssmsc.jinr.ru:443/varg/ginac.git master
done! BTW, your changes in inifcns_nstdsums.cpp made me remember that a long time ago I wanted to make ginac functions into their own full classes (even had a cvs branch for that already). One of the reasons was exactly to get the code in inifcns_nstdsums.cpp into a clean, oo, and of course reentrant form. While I gave up on forcing this class idea into the main code base I still have not given up the idea completely. Is it maybe time to reactivate this idea? What do you think? Regards, Jens
Hello! On Wed, Sep 10, 2008 at 09:31:52AM +0200, Jens Vollinga wrote:
Alexei Sheplyakov schrieb:
could you please pull from git://ffmssmsc.jinr.ru:443/varg/ginac.git master
done!
Thank you very much!
Merge: 7d23da3... c647bf0... Author: Jens Vollinga <jensv@nikhef.nl> Date: Tue Sep 9 22:42:50 2008 +0200
It would be nice to avoid merge commits in the official repository. It looks like you've got some commits in your working copy which were not pushed into the official repository: commit 7d23da3e0ee0d03f90f47585ea27f86ecbfe866b Author: Jens Vollinga <jensv@nikhef.nl> Date: Tue Sep 9 22:41:39 2008 +0200 commit 416f530b032f2861bb3cb96d23f14097237a87ea Author: Jens Vollinga <jensv@nikhef.nl> Date: Tue Sep 9 22:41:24 2008 +0200 Thus, the merge was non fast-forward, so there was a merge commit which end up in the official repository. Assuming that 1. Your 'origin' remote is the official repository (i.e. git://www.ginac.de/ginac.git), 2. Your commits are not pushed yet (otherwise merge is unavoidable, and there's no need to bother) the following incantations can be used to avoid such a spurious merge: [ commit changes if necessary ] $ git checkout -b tmp-master origin/master # merge my patches, this should be a fast forward (see condition 2) $ git pull git://ffmssmsc.jinr.ru:443/varg/ginac master # rebase your work on top of that $ git checkout master $ git rebase tmp-master # erase the temporary branch $ git branch -d tmp-master # publish your and my patches $ git push origin
BTW, your changes in inifcns_nstdsums.cpp made me remember that a long time ago I wanted to make ginac functions into their own full classes (even had a cvs branch for that already).
My purpose is a bit different. I'm trying to 1. Make GiNaC reentrant (and thread-safe). 2. Make numerical evaluation of multiple polylogarithms faster. Quite a number of helper functions use ex for number crunching (instead of cl_{N,I,RA}). Typically this results in substantial performance hit (see e.g. http://www.ginac.de/pipermail/ginac-devel/2007-March/001155.html), so that code needs to be fixed. 3. Shut up numerous warnings G++ emits while compiling inifcns_nstdsums.cpp. I think G++ is quite right: it's a bad idea to use int and std::size_t interchangeably (at least for two reasons: a) int is signed, size_t is unsigned, b) sizeof(int) != sizeof(std::size_t)), so this needs to be fixed too.
One of the reasons was exactly to get the code in inifcns_nstdsums.cpp into a clean, oo, and of course reentrant form.
I don't quite understand how converting G{2,3}, Li and friends into full-blown GiNaC classes can help. Could you elaborate, please?
While I gave up on forcing this class idea into the main code base I still have not given up the idea completely. Is it maybe time to reactivate this idea? What do you think?
AFAIR the new RTTI is a prerequisite for converting functions into classes. Is this correct? Best regards, Alexei -- All science is either physics or stamp collecting.
Hi Alexei, Alexei Sheplyakov schrieb:
It would be nice to avoid merge commits in the official repository.
ups. Next time ...
One of the reasons was exactly to get the code in inifcns_nstdsums.cpp into a clean, oo, and of course reentrant form.
I don't quite understand how converting G{2,3}, Li and friends into full-blown GiNaC classes can help. Could you elaborate, please?
You removed global variables and made them local or passed them as function parameters. But if every function were a class, these variables could just as well become class members. It would be thread-safe, too (and no need for additional function parameters).
AFAIR the new RTTI is a prerequisite for converting functions into classes. Is this correct?
If by "new RTTI" you mean the current mechanism using the static void pointer, then yes. Otherwise, in the previous implementation, people would have to choose unique t_info numbers for their own function definitions (not pratical ...). Regards, Jens
participants (2)
-
Alexei Sheplyakov
-
Jens Vollinga