[GiNaC-devel] new function system
Jens Vollinga
vollinga at physik.uni-wuppertal.de
Sat Nov 26 10:03:54 CET 2005
Hi,
Richard B. Kreckel wrote:
> What about this alternative:
>
> Name the classes sin_t, log_t, tgamma_t (or some other uniform scheme)
> and provide functions sin, log, tgamma that return objects of these
> classes. The advantages are that people a) don't have to rewrite too
> much code and b) we don't bother our users with yet another convention
> for naming mathematical functions. Does that sound reasonable?
>
> Though, I totally agree with your earlier sentiment that in the general
> case we shouldn't worry too much about name clashes and instead we
> should put the burden of disambiguation on the user. But in special
> cases where there are conflicts with functions of built-in integral
> type, I think it is just fine to disambiguate in favor of the GiNaC
> functions by adding an explicit signature. This way, sin(1) stays what
> it is: sin(1) (well, sin_t(1) or function(42,1) or whatever) and does
> not become 0.84147...
sorry, I don't fully understand your proposal, yet.
Why should the user have to learn another convention (as stated above
under b)) if all the classes have the same name as the current functions?
Why is it fine to disambiguate just in case of integral types (see
question below)? sin(1) doesn't disambiguate currently when one includes
cmath!!
Does it really make sense to have sin(1) or zeta(2) evaled on creation
(by means of a special function)? I remember having to 'tweak' zeta a
little bit to not throw an exception when the argument is 1. And with
the polylogs I often have to use a lot of .holds() just because I don't
want the automatic evaluation in intermediate expressions. And isn't
there an issue with 1/tgamma(-n) ...? Maybe a solution to this is easier
without the automatic evaluation on creation.
To have automatic evaluation just on assignment might (I am not sure
though, please teach me!) be more clear, powerful, ...
Regards,
Jens
More information about the GiNaC-devel
mailing list