Christian Bauer [Tue, 18 Dec 2001 18:48:06 +0000 (18:48 +0000)]
- input parser recognizes "sqrt()", which is also used in the output
- divide(a,b,q) only modifies q if the division succeeds; also, divide(a,b,a)
works now
- fixed small bug in dummy index renaming which could cause it to not
recognize renamable indices in some cases
- power::degree() and power::ldegree() throw an exception when encountering
a non-integer exponent
Richard Kreckel [Sat, 17 Nov 2001 18:48:46 +0000 (18:48 +0000)]
* sqrfree(ex, lst): after factoring in the first variable, we forgot to call
sqrfree again in the remaining variables for the constant term. For
example, the expanded polynomial (x+1)*(y-1)*z only found one of the
factors, no matter which variable order was specified in lst.
Richard Kreckel [Thu, 1 Nov 2001 19:27:43 +0000 (19:27 +0000)]
* Make installdirs before trying to write there.
(NB: Dunno why this worked before, it seems totally unrelated to the
last patch, judging from the generated Makefiles.)
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.