[GiNaC-devel] Spurious merges, inifcns_nstdsums, RTTI, and all that (Was: Plese pull from ...)

Alexei Sheplyakov varg at theor.jinr.ru
Wed Sep 10 17:51:36 CEST 2008


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 at 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 at nikhef.nl>
Date:   Tue Sep 9 22:41:39 2008 +0200
 
commit 416f530b032f2861bb3cb96d23f14097237a87ea
Author: Jens Vollinga <jensv at 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.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 827 bytes
Desc: Digital signature
URL: <http://www.ginac.de/pipermail/ginac-devel/attachments/20080910/0ecb8e22/attachment.sig>


More information about the GiNaC-devel mailing list