Christian Bauer [Fri, 30 Mar 2001 17:34:35 +0000 (17:34 +0000)]
- dummy index recognition in products was flawed: A.i.i*B.j.j would be
treated as a scalar product of A and B, A.j.j.i.i*B.k.l would be 0
if A was symmetric and B antisymmetric etc.
- removed redundant code for handling d.akl*f.akl contraction; this is
handled by simplify_indexed() itself since it is a contraction of a
symmetric with an antisymmetric tensor
Christian Bauer [Fri, 30 Mar 2001 17:32:02 +0000 (17:32 +0000)]
added checks for bugs in GiNaC 0.8.0
Christian Bauer [Thu, 29 Mar 2001 20:56:45 +0000 (20:56 +0000)]
added checks for color objects
Christian Bauer [Thu, 29 Mar 2001 20:56:32 +0000 (20:56 +0000)]
- added Clifford algebra unity element
- superfluous unity elements are removed from Clifford and color strings
- added Clifford contractions:
gamma~mu*gamma.mu
gamma~mu*gamma~alpha*gamma.mu
- added color contractions:
d.aac
d.abc*d.abc
d.akl*d.bkl
d.abc*f.abc
d.akl*f.bkl
f.abc*f.abc
f.akl*f.bkl
- delta tensor and color structure constants can be evaluated numerically
- color_T(), color_d() and color_f() check their arguments
- added a couple of utility functions to idx.*
- simplify_indexed() doesn't crash any more when used on expressions containing
noncommutative products
Christian Bauer [Thu, 29 Mar 2001 20:48:17 +0000 (20:48 +0000)]
- introduced macros to shorten the source files
- added exam_color()
Christian Bauer [Wed, 28 Mar 2001 01:25:32 +0000 (01:25 +0000)]
skeleton implementation of new color class
Christian Bauer [Wed, 28 Mar 2001 01:21:43 +0000 (01:21 +0000)]
restored deleted files
Christian Bauer [Wed, 28 Mar 2001 00:36:37 +0000 (00:36 +0000)]
- added skeleton implementation of color and clifford classes (don't bother
trying it, it doesn't work yet)
- some macros in utils.h (DEFAULT_*) provide shorthands for implementing
many required class member functions
Christian Bauer [Tue, 27 Mar 2001 18:17:25 +0000 (18:17 +0000)]
contraction of symmetric with antisymmetric tensor over more than one index
is zero
Christian Bauer [Tue, 27 Mar 2001 18:17:06 +0000 (18:17 +0000)]
added check for contraction of epsilon with symmetric tensor
Richard Kreckel [Sat, 24 Mar 2001 22:09:41 +0000 (22:09 +0000)]
* Documented sqrfree.
Richard Kreckel [Sat, 24 Mar 2001 22:09:30 +0000 (22:09 +0000)]
* Date inserted.
Richard Kreckel [Fri, 23 Mar 2001 19:27:20 +0000 (19:27 +0000)]
* Tidied some old crap.
Christian Bauer [Fri, 23 Mar 2001 18:36:41 +0000 (18:36 +0000)]
fixed memory leaks in lst_to_matrix() and diag_matrix()
Christian Bauer [Fri, 23 Mar 2001 17:50:01 +0000 (17:50 +0000)]
lst_to_matrix() takes a "lst &" instead of an "ex &"
Christian Bauer [Fri, 23 Mar 2001 17:49:54 +0000 (17:49 +0000)]
- simplify_indexed() simplifies c*(M).i.j -> (M').i.j (c: numeric, M: matrix)
with M'=c*M
- new member function matrix::mul(const numeric &other) to multiply matrix
with scalar
- lst_to_matrix() takes a "lst &" instead of an "ex &"
- added constructor of matrix from flat list
- added function diag_matrix() to construct matrix from list of diagonal
elements
Christian Bauer [Fri, 23 Mar 2001 17:46:44 +0000 (17:46 +0000)]
simplify_indexed() recognizes linear combinations of matrices with numeric
coefficients
Christian Bauer [Fri, 23 Mar 2001 17:46:12 +0000 (17:46 +0000)]
used new diag_matrix() and matrix from lst constructor
Christian Bauer [Fri, 23 Mar 2001 17:45:59 +0000 (17:45 +0000)]
documentation update
Richard Kreckel [Thu, 22 Mar 2001 21:24:32 +0000 (21:24 +0000)]
* Eliminated overloaded operator% for noncommunistic objects for good.
End of story. There was just too much risk involved in somebody not
caring enough whether there are noncommutatating objects inside
expressions to be multiplied and it could potentially end up in people
using operator% instead of operator* all the time, just to be safe.
In any case, it was our firm believe that noncommutatividity is a
property of the class objects belong to and hence of the objects and
not at all of the sign to symbol the object (as Maple, Reduce and others
want to make us believe). Finally we found out how to code operator*
so that it handles both cases without any performance loss. It couldn't
be less intrusive! There is no measurable performance degradation.
(Except perhaps for the tgamma-expansion which seems to show some 3%
loss while others mysteriously become somewhat faster -- my brain is
melting.) Enough, now...
Richard Kreckel [Thu, 22 Mar 2001 20:09:25 +0000 (20:09 +0000)]
* configure.in, cint/run_exams.cpp, cint/ginaccint.cpp: adjusted the
--with-cint logic so ginaccint may run without a preset $CINTSYSDIR
(in case of a clean system-wide installation as opposed to the tool-
centric installation). cint/Makefile.makecint generation does not
yet work in this case, makecint needs a tiny upstream bugfix.
Richard Kreckel [Thu, 22 Mar 2001 20:09:22 +0000 (20:09 +0000)]
* INSTALL: reflect Cint status.
* configure.in, cint/run_exams.cpp, cint/ginaccint.cpp: adjusted the
--with-cint logic so ginaccint may run without a preset $CINTSYSDIR
(in case of a clean system-wide installation as opposed to the tool-
centric installation). cint/Makefile.makecint generation does not
yet work in this case, makecint needs a tiny upstream bugfix.
Christian Bauer [Thu, 22 Mar 2001 18:52:08 +0000 (18:52 +0000)]
sums of indexed matrices are now possible
Christian Bauer [Thu, 22 Mar 2001 18:51:48 +0000 (18:51 +0000)]
added another relativistic electrodynamics check (energy density and Poynting
vector)
Christian Bauer [Thu, 22 Mar 2001 18:51:15 +0000 (18:51 +0000)]
bumped version number to 0.8.0
Richard Kreckel [Wed, 21 Mar 2001 21:07:29 +0000 (21:07 +0000)]
* tensdelta is an atomic class.
Christian Bauer [Wed, 21 Mar 2001 21:03:05 +0000 (21:03 +0000)]
- the tensor returned by metric_tensor() is symmetric
- (c*x)~mu with c being a number automatically gets converted to c*x~mu
Christian Bauer [Wed, 21 Mar 2001 21:01:58 +0000 (21:01 +0000)]
the tensor returned by metric_tensor() is symmetric
Richard Kreckel [Tue, 20 Mar 2001 21:27:13 +0000 (21:27 +0000)]
* Adjusted to current class shuffling.
Christian Bauer [Mon, 19 Mar 2001 18:42:39 +0000 (18:42 +0000)]
added tutorial section about indexed objects
Christian Bauer [Fri, 16 Mar 2001 18:08:48 +0000 (18:08 +0000)]
an indexed "0" is just a plain "0"
Richard Kreckel [Thu, 15 Mar 2001 21:10:48 +0000 (21:10 +0000)]
* Exam some simple square free factorizations.
Richard Kreckel [Thu, 15 Mar 2001 20:42:14 +0000 (20:42 +0000)]
* added missing std::
Richard Kreckel [Wed, 14 Mar 2001 23:09:51 +0000 (23:09 +0000)]
* add missing std::.
Christian Bauer [Wed, 14 Mar 2001 23:05:38 +0000 (23:05 +0000)]
added checks involving epsilon tensor
Christian Bauer [Wed, 14 Mar 2001 23:05:10 +0000 (23:05 +0000)]
added predefined epsilon tensor
Christian Bauer [Wed, 14 Mar 2001 23:01:06 +0000 (23:01 +0000)]
documentation update
Richard Kreckel [Wed, 14 Mar 2001 21:31:28 +0000 (21:31 +0000)]
* ex.h: add docu.
* normal.cpp: make sqrfree_yun() static.
* basic.cpp (compare): slightly clarify syntax.
Richard Kreckel [Wed, 14 Mar 2001 21:30:16 +0000 (21:30 +0000)]
fix stupid memory problem.
Richard Kreckel [Sun, 11 Mar 2001 19:10:03 +0000 (19:10 +0000)]
normal.cpp, normal.h: Fix Yun's algorithm (there was a mistake in Geddes et
al.) for square-free factorization. Also change the syntax to allow for
square-free factoring in a recursive way in Q[X]. This is an example how it
works in Z[x,y,z] in ginsh:
> ?sqrfree
sqrfree(expression [, symbol-list]) - square-free factorization of a polynomial
> sqrfree(expand((x+y)*(x+y+z)^2*(y-z)^3));
(x+y)*(-x-y-z)^2*(y^3+3*y*z^2-3*y^2*z-z^3)
> sqrfree(expand((x+y)*(x+y+z)^2*(y-z)^3),[y]);
(x+y)*(y-z)^3*(x+y+z)^2
> sqrfree(expand((x+y)*(x+y+z)^2*(y-z)^3),[z]);
(x+y)*(y-z)^3*(x+y+z)^2
> sqrfree(expand((x+y)*(x+y+z)^2*(y-z)^3),[x]);
(x+y)*(-x-y-z)^2*(y^3+3*y*z^2-3*y^2*z-z^3)
> sqrfree(expand((x+y)*(x+y+z)^2*(y-z)^3),[x,y]);
(x+y)*(-x-y-z)^2*(y^3+3*y*z^2-3*y^2*z-z^3)
> sqrfree(expand((x+y)*(x+y+z)^2*(y-z)^3),[x,y,z]);
(x+y)*(-x-y-z)^2*(y^3+3*y*z^2-3*y^2*z-z^3)
> sqrfree(expand((x+y)*(x+y+z)^2*(y-z)^3),[v]);
3*x*y^5+3*x^2*y^4+x^3*y^3+y^6-y*z^5-2*y^4*z^2+y^2*z^4-y^5*z+2*y^3*z^3-3*x^3*y^2*z+3*x^3*y*z^2-5*x*y^4*z-x*y*z^4+3*x^2*y*z^3+6*x*y^2*z^3+3*x^2*y^2*z^2-2*x*y^3*z^2-7*x^2*y^3*z-x^3*z^3-2*x^2*z^4-x*z^5
Christian Bauer [Sat, 10 Mar 2001 04:07:15 +0000 (04:07 +0000)]
fixed major memory leak in mul::expand()
Christian Bauer [Fri, 9 Mar 2001 22:21:35 +0000 (22:21 +0000)]
- lcm_of_coefficients_denominators(1/2+x^10) returned 1024 instead of 2 and
multiply_lcm() on that expression barfed
- contract_with() now takes two exvector::iterators and and exvector; this
makes it possible to look for more contractions in the implementation
Christian Bauer [Tue, 6 Mar 2001 20:07:16 +0000 (20:07 +0000)]
- revamped indexed objects
- subs() works on matrices
Christian Bauer [Tue, 6 Mar 2001 20:06:38 +0000 (20:06 +0000)]
added checks for new indexed objects
Christian Bauer [Tue, 6 Mar 2001 20:05:57 +0000 (20:05 +0000)]
documentation update
Christian Bauer [Tue, 6 Mar 2001 20:05:24 +0000 (20:05 +0000)]
removed obsolete files
Richard Kreckel [Mon, 5 Mar 2001 20:02:00 +0000 (20:02 +0000)]
* New funny timing added: compute an antipode in Yukawa theory.
Richard Kreckel [Thu, 1 Mar 2001 19:54:50 +0000 (19:54 +0000)]
* ginac/pseries.cpp (pseries::compare_same_type): optimized.
Richard Kreckel [Wed, 28 Feb 2001 23:30:45 +0000 (23:30 +0000)]
* This is a deliberately silly commit.
Richard Kreckel [Wed, 28 Feb 2001 23:30:28 +0000 (23:30 +0000)]
* Really make those macros work...
Christian Bauer [Wed, 28 Feb 2001 20:02:24 +0000 (20:02 +0000)]
updated to "autogen.sh Professional"
Richard Kreckel [Wed, 28 Feb 2001 15:54:52 +0000 (15:54 +0000)]
* ginac/registrar.h: dtor is inlined now.
* ginac/basic.h, ginac/ex.h: removed INLINE_FOO_CONSTRUCTORS and hand-inlined
stuff instead, since the macros turned out to get in the way while
fine-tuning the inlining.
* ginac/utils.h: if 'long long' works, use that one for computing the hash
value instead of floating point tricks. 2 Reasons: on Intel the assembler
is terrible and slow otherwise, 'long long' will appear in C++ anyways when
they adapt to the C99 standard.
* Several other small performance tweaks.
* ginac/constant.cpp: (constant::calchash()) implement, caring for serial.
* ginac/function.pl (function::calchash()): implement, caring for serial.
* ginac/expairseq.cpp: honor coeff's hash value.
* ginac/pseries.cpp: (pseries::power_const()) fix problems with zero pseries.
* Added several pounds of in-source documentation in doxygen style.
Richard Kreckel [Wed, 28 Feb 2001 15:54:46 +0000 (15:54 +0000)]
* Tweak around problem with unexpanded GINAC_DECLARE_REGISTER_CLASS macros.
Richard Kreckel [Wed, 28 Feb 2001 15:54:23 +0000 (15:54 +0000)]
* Prepare for landing of version 0.7.3.
Richard Kreckel [Wed, 28 Feb 2001 15:54:07 +0000 (15:54 +0000)]
* Macro deobfuscation.
Richard Kreckel [Wed, 28 Feb 2001 15:53:26 +0000 (15:53 +0000)]
* some longish timings are now disabled by default.
* check/time_lw_M2.cpp: new timing (defaults to disabled)
* check/time_lw_N.cpp: new timing (defaults to disabled)
Richard Kreckel [Wed, 28 Feb 2001 15:53:15 +0000 (15:53 +0000)]
* prepare for landing of version 0.7.3.
Christian Bauer [Tue, 27 Feb 2001 19:54:38 +0000 (19:54 +0000)]
when there are multiple variables with the same maximum degree, the one with
the least number of terms in the leading coefficient is chosen as the main
variable in GCD computations
Christian Bauer [Tue, 27 Feb 2001 19:22:46 +0000 (19:22 +0000)]
"return" statement was missing in yyerror()
Christian Bauer [Tue, 27 Feb 2001 19:21:55 +0000 (19:21 +0000)]
building in separate directory didn't work
Christian Bauer [Wed, 21 Feb 2001 18:40:15 +0000 (18:40 +0000)]
- g~mu_mu contraction returns Dim for general Lorentz indices and Dim-dimP
for orthogonal-only indices
Christian Bauer [Tue, 20 Feb 2001 21:55:10 +0000 (21:55 +0000)]
documentation update
Christian Bauer [Tue, 20 Feb 2001 21:54:56 +0000 (21:54 +0000)]
added a section about adding new algebraic classes to GiNaC
Richard Kreckel [Mon, 19 Feb 2001 14:19:01 +0000 (14:19 +0000)]
Fix two leaks in class pseries, where zero terms could have been created.
Richard Kreckel [Sun, 18 Feb 2001 19:21:22 +0000 (19:21 +0000)]
is_(ex_)(exactly_)of_type: macros fixed, simplfied and documented.
Richard Kreckel [Sat, 17 Feb 2001 21:07:08 +0000 (21:07 +0000)]
pseries::expand(): do not generate zero terms.
pseries::print(): print trivial case, too.
others: documentation updates.
Richard Kreckel [Sat, 17 Feb 2001 21:06:25 +0000 (21:06 +0000)]
Fix typos.
Richard Kreckel [Sat, 17 Feb 2001 21:06:17 +0000 (21:06 +0000)]
Minor fixes.
Richard Kreckel [Sat, 17 Feb 2001 21:06:07 +0000 (21:06 +0000)]
Reflect version number 0.7.2 and update Cint status.
Christian Bauer [Fri, 16 Feb 2001 20:25:47 +0000 (20:25 +0000)]
GINAC_DECLARE_REGISTERED_CLASS declares duplicate() and compare_same_type(),
GINAC_IMPLEMENT_REGISTERED_CLASS implements duplicate()
Christian Bauer [Thu, 15 Feb 2001 22:54:52 +0000 (22:54 +0000)]
the destructor, copy constructor, and assignment operator (which were the
same for all subclasses of basic, with very few exceptions) are now included
in the GINAC_IMPLEMENT_REGISTERED_CLASS macro; the GINAC_DECLARE_REGISTERED_CLASS
macro also defines these (and other common) member functions
Christian Bauer [Thu, 15 Feb 2001 22:52:16 +0000 (22:52 +0000)]
disabled the exam because the lortensor API is going to change soon
Richard Kreckel [Thu, 15 Feb 2001 19:49:08 +0000 (19:49 +0000)]
add two checks that power::series did wrong so far.
Richard Kreckel [Thu, 15 Feb 2001 19:47:57 +0000 (19:47 +0000)]
pseries::power_const: fix a critical bug that led to wrong computations.
power::series: better handling of divergent basis cases.
Christian Bauer [Wed, 14 Feb 2001 19:04:18 +0000 (19:04 +0000)]
removed the "some_*" and "typeid_*" definitions since we are using our own
RTTI for quite some time now
Richard Kreckel [Wed, 14 Feb 2001 19:00:28 +0000 (19:00 +0000)]
Adapted to new version 1.2.5.
Christian Bauer [Wed, 14 Feb 2001 18:42:20 +0000 (18:42 +0000)]
added missing thisexprseq() to clifford class
Christian Bauer [Wed, 14 Feb 2001 00:50:46 +0000 (00:50 +0000)]
- added documentation to the indexed, color, lortensor and clifford classes
- moved Dim() function from lortensor.cpp to lorentzidx.cpp
- moved append_exvector_to_exvector() from color.cpp to utils.cpp
- some cleanups in the lortensor and clifford classes
Christian Bauer [Mon, 12 Feb 2001 20:54:53 +0000 (20:54 +0000)]
- added documentation for the idx, coloridx and lorentzidx classes
- idx_intersect() works correctly when indices appear multiple times
- g~mu_mu = D-2 (instead of D-dim(P))
Richard Kreckel [Wed, 7 Feb 2001 19:16:52 +0000 (19:16 +0000)]
Hope this works now.
Richard Kreckel [Wed, 7 Feb 2001 19:16:41 +0000 (19:16 +0000)]
More file cleanups
Richard Kreckel [Wed, 7 Feb 2001 19:16:21 +0000 (19:16 +0000)]
trancendental function branch-point sanity
Richard Kreckel [Wed, 7 Feb 2001 19:15:51 +0000 (19:15 +0000)]
ChangeLog: mention cvs log (must be non-empty for Debian)
INSTALL: update cint-status
configure.in, NEWS: Prepare for release
Richard Kreckel [Sun, 4 Feb 2001 18:08:26 +0000 (18:08 +0000)]
Explain the branch-cut conventions in some more detail.
Richard Kreckel [Fri, 2 Feb 2001 21:39:19 +0000 (21:39 +0000)]
Added correct series expansion for atan and atanh.
Richard Kreckel [Wed, 31 Jan 2001 21:07:43 +0000 (21:07 +0000)]
Fixed most bugs with building Debian packages.
Richard Kreckel [Wed, 31 Jan 2001 00:55:27 +0000 (00:55 +0000)]
- throw at atan()'s poles.
Christian Bauer [Wed, 31 Jan 2001 00:37:44 +0000 (00:37 +0000)]
documentation update
Christian Bauer [Wed, 31 Jan 2001 00:37:13 +0000 (00:37 +0000)]
list of completion work break characters set correctly
Christian Bauer [Tue, 30 Jan 2001 19:50:16 +0000 (19:50 +0000)]
normal() applied to a power expression also normalizes the exponent
Christian Bauer [Mon, 29 Jan 2001 21:46:01 +0000 (21:46 +0000)]
expand() always expands the exponent and transforms x^(a+b) -> x^a*x^b
Christian Bauer [Mon, 29 Jan 2001 21:43:45 +0000 (21:43 +0000)]
added a check that expand(x^((a+b)^2-a^2-b^2-2*a*b)) -> 1
Christian Bauer [Mon, 29 Jan 2001 21:42:36 +0000 (21:42 +0000)]
updated changes
Richard Kreckel [Mon, 29 Jan 2001 18:52:35 +0000 (18:52 +0000)]
- Lewis-Wester tests D and E now benchmark the time to expand the
rational function. Just assembling it is boring...
Christian Bauer [Thu, 25 Jan 2001 20:53:54 +0000 (20:53 +0000)]
- gcd() and lcm() always checked the second argument, even when check_args
was false
- add::normal() handles large expressions (that collapse to much smaller ones)
better
Christian Bauer [Tue, 23 Jan 2001 19:14:36 +0000 (19:14 +0000)]
replaced fraction addition algorithm with a slightly faster one (no polynomial
divisions in loop)
Richard Kreckel [Mon, 22 Jan 2001 18:11:54 +0000 (18:11 +0000)]
- See if __GNUC__ < 2.97 before using std::vector<..,malloc_alloc>. Sorry,
there is no way having this depend on whether we are setting up Cint or
not because the malloc_alloc goes into the mangled signature and the
result won't link if one tries to be more clever. It really sucks.
Let's all just pray Masaharu throws away that old STL implementation
really soon now. (Jeez, he still calls this old junk 'reference'!)
- Bumped up a few dates. :-)
Richard Kreckel [Tue, 16 Jan 2001 21:06:47 +0000 (21:06 +0000)]
- Updated Cint mileage report.
Richard Kreckel [Sun, 7 Jan 2001 19:47:41 +0000 (19:47 +0000)]
- Import namespace std globally.
Christian Bauer [Sat, 6 Jan 2001 19:18:29 +0000 (19:18 +0000)]
when normal() doesn't recur any further because the specified recursion level
was reached, the remaining subexpression is replaced by a symbol to avoid
continuing with non-polynomial expressions