Christian Bauer [Mon, 29 Oct 2001 19:29:02 +0000 (19:29 +0000)]
The last 3 evaluated expressions in ginsh are now referred to with the
tokens '%', '%%' and '%%%'. The old '"', '""' and '"""' remain for
compatibility but may be removed in a future version of GiNaC.
Christian Bauer [Mon, 29 Oct 2001 19:03:06 +0000 (19:03 +0000)]
- renamed configure.in to configure.ac as suggested in the autoconf docs
- removed acconfig.h in favour of 3-argument AC_DEFINE_UNQUOTED
- autoupdated configure.ac
- removed the following files which are generated by the autogen.sh script:
config.guess, config.sub, install-sh, ltmain.sh, missing, mkinstalldirs
This means that you have to run autogen.sh on a machine with sufficiently
recent version of autoconf (2.50), automake (1.5) and libtool (1.4)
Richard Kreckel [Sun, 28 Oct 2001 17:37:50 +0000 (17:37 +0000)]
* Hahaha! The second of the two tests was actually BS(tm) but this was only
triggered with nonvanishing probability on systems like IRIX with a weak
rand() function. Added a little additional check to trap those cases.
Richard Kreckel [Sun, 28 Oct 2001 14:58:24 +0000 (14:58 +0000)]
* Require Autoconf 2.50.
Rationale: Older versions set YYTEXT_POINTER wrong in config.h for nearly
all non-Linux platforms resulting in a build failure.
Note to developers: you either need to install your own autoconf or run
autogen.sh on a Debian Woody platform (which has a hybrid 2.13/2.52
installation of Autoconf, choosing 2.13 by default and 2.52 if AC_PREREQ
asks for it. Sorry.
Richard Kreckel [Sat, 27 Oct 2001 20:18:51 +0000 (20:18 +0000)]
* Headers only include <iosfwd> from now on, since that contains all the
necessary forward declarations without bringing in the whole big
<iostream> header.
Richard Kreckel [Mon, 22 Oct 2001 17:59:49 +0000 (17:59 +0000)]
* Some internal reorganization WRT flyweight handling and initialization,
resulting in a general speed-up.
Wherever thou hast written _ex7() thou shalt write _ex7 from now on.
Richard Kreckel [Wed, 22 Aug 2001 20:11:48 +0000 (20:11 +0000)]
- Cleanups: My evil plot of making ex::bp private may finally be carried
out, provided one changes all the is_of_type(obj,type) to is_a<type>(obj)
which we don't do right now because it would degrade performance on
gcc-2.95.x. Also, ex_to_type(obj) has gone for good now, we have been
having ex_to<type>(obj) long enough. ex_to_nonconst_type(obj) have gone
as well, since they are almost never used and one can always cast aways
the constness explicitly if need should arise.
Richard Kreckel [Fri, 17 Aug 2001 21:33:57 +0000 (21:33 +0000)]
- removed manual basepointer-fiddling in construct-on-first-use objects
in favor of ex_to<foo>(obj) functions. This is part of an evil plot
I have to remove all of these and eventually make ex::bp a private thing.
(Incidentally these changes compile to slightly better code. Dunno why.)
Richard Kreckel [Wed, 15 Aug 2001 21:16:19 +0000 (21:16 +0000)]
- remove some explicit accesses to ex::bp by replacing with ex_to<>().
- log_series(): check if the argument expands simply to Order(x^foo) and
if so expand somewhat further in order not to produce rubbish like
log(Order(x)^(-1)... and such.
Richard Kreckel [Tue, 14 Aug 2001 18:52:29 +0000 (18:52 +0000)]
- Remove the -ansi compiler switch in the example since it doesn't
play well with lex.
- Added a passing reference to autogen.sh for brave people who are running
from CVS.
Richard Kreckel [Tue, 14 Aug 2001 18:18:10 +0000 (18:18 +0000)]
- Updated to the optimized version. This allows us to
a) add more tests for consistency
b) actually believe the result of the timings because they were
irreproducible before (due to different branches taken by different
representations, which happens because eariler tests account for
low timings by iterating an unknown number of times thus producing
different hashvalues for symbols in later calculations.)
Richard Kreckel [Mon, 30 Jul 2001 19:09:29 +0000 (19:09 +0000)]
- moved is_of_type and friend macros into utils.h so they can be phased
out in one of the next releases.
- rewrote the foo_evalf() functions without TYPECHECK macros. (Since they
were not flexible enough and some functions need more flexibility than
can be provided by such macros. They are evil anyways.)
- marked the TYPECHECK macros as evil^H^H^H^Hdeprecated.
- implemented a more flexible scheme for some foo_evalf() functions, notably
zeta(3.0) eval's to a float now while zeta(3) doesn't eval, just as is
usual for all the trigonometric functions.
- this day is very hot.
Richard Kreckel [Fri, 27 Jul 2001 03:58:21 +0000 (03:58 +0000)]
- power::eval(): for the case (b_n/b_d)^(e_n/e_d) we now check separately
if we can compute numerator and denominator. This allows us to eval
(3/8)^(1/3) to 1/2*3^(1/3) instead of holding it. For square roots this
is still less clever than what MapleV does, but then again that system
has the funny goof not to touch 8^(1/3) where we immediately eval() to
plain 2; fun, fun, fun...
Oh, and a little memory hole has been squished along the way, too.
Christian Bauer [Thu, 26 Jul 2001 23:28:08 +0000 (23:28 +0000)]
- epsilon*epsilon contractions work
- dirac_slash(a, D) now constructs a special kind of clifford object (printed
as "a\") instead of creating a "a.symbol42*gamma~symbol42" product. This
helps avoiding problems when doing something like
ex prop = (dirac_slash(p, D) - m * dirac_ONE());
ex I = prop * dirac_slash(l, D) * prop;
where the same dummy index would be used for both p-slash in I. Now it's
perfectly safe to do this. Dummy indices are only created when taking
traces or contracting indices. A nice side-effect of this is that "a\*a\"
immediately gets simplified to a^2.
- The "contraction of symmetric and antisymmetric objects is zero" rule
in simplify_indexed() has been generalized. Now expressions like
"epsilon.i.j.k*A.j*A.k" also get simplified to zero (what GiNaC does is
to assert dummy index exchange symmetry).
Richard Kreckel [Wed, 18 Jul 2001 22:55:14 +0000 (22:55 +0000)]
- removed this file. it has become obsolete as of libtool-1.4. removing
the file may cause old versions of automake to fail, however. please
apply the patch at the end of libtool-1.4's README to automake if you
encounter this problem (i.e. simply remove 'ltconfig' from the
@libtoolize_files list).
Richard Kreckel [Wed, 27 Jun 2001 23:07:30 +0000 (23:07 +0000)]
- eta(x,y) was broken all along since ages: eta(I,I) for instance ought
to return 0 but... that formula that reduces eta(x,y) to theta functions
is basically to naive.
Christian Bauer [Wed, 27 Jun 2001 00:32:01 +0000 (00:32 +0000)]
- replaced the Derivative() function by a more resonable fderivative class;
to see it in action, try "series(abs(x),x==0,3)" and "series(abs(x),x==y,3)"
in ginsh with previous GiNaC releases and with this one
- add::eval() throws an exception when the first term is non-commutative and
the overall_coeff is non-zero
- small fixes to print_tree output of indexed objects
- ncmul::expand() now actually does expand something like "(dirac_gamma(mu)+1)
*dirac_gamma(nu)" correctly (but the change to add::eval() should make this
a "can't happen" case)
- moved ToString() to tostring.h (fewer header dependencies)
- ALL YOUR "BASES CLASSES" ARE BELONG TO US