]> www.ginac.de Git - ginac.git/blobdiff - ginac/indexed.h
fixed a bug in the raising/lowering of dummy indices and extended it to work
[ginac.git] / ginac / indexed.h
index df05429e3eaa87a539c045c8e430c31939f6807d..f539444e7b29f04b39edf42bbf38d0059ecd1924 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's indexed expressions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2001 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -42,6 +42,7 @@ class indexed : public exprseq
 
        friend ex simplify_indexed(const ex & e, exvector & free_indices, exvector & dummy_indices, const scalar_products & sp);
        friend ex simplify_indexed_product(const ex & e, exvector & free_indices, exvector & dummy_indices, const scalar_products & sp);
+       friend bool reposition_dummy_indices(ex & e, exvector & variant_dummy_indices, exvector & moved_indices);
 
        // other constructors
 public:
@@ -145,12 +146,10 @@ public:
        void print(const print_context & c, unsigned level = 0) const;
        bool info(unsigned inf) const;
        ex eval(int level = 0) const;
-       int degree(const ex & s) const;
-       int ldegree(const ex & s) const;
-       ex coeff(const ex & s, int n = 1) const;
        exvector get_free_indices(void) const;
 
 protected:
+       ex derivative(const symbol & s) const;
        ex thisexprseq(const exvector & v) const;
        ex thisexprseq(exvector * vp) const;
        unsigned return_type(void) const { return return_types::commutative; }
@@ -234,13 +233,6 @@ private:
 
 // utility functions
 
-/** Return the indexed object handled by an ex.
- *  This is unsafe: you need to check the type first. */
-inline const indexed &ex_to_indexed(const ex &e)
-{
-       return static_cast<const indexed &>(*e.bp);
-}
-
 /** Specialization of is_exactly_a<indexed>(obj) for indexed objects. */
 template<> inline bool is_exactly_a<indexed>(const basic & obj)
 {