* Interface to GiNaC's indexed expressions. */
/*
- * GiNaC Copyright (C) 1999-2014 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2024 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
public:
/** Construct indexed object with no index.
*
- * @param b Base expression
- * @return newly constructed indexed object */
+ * @param b Base expression */
indexed(const ex & b);
/** Construct indexed object with one index. The index must be of class idx.
*
* @param b Base expression
- * @param i1 The index
- * @return newly constructed indexed object */
+ * @param i1 The index */
indexed(const ex & b, const ex & i1);
/** Construct indexed object with two indices. The indices must be of class idx.
*
* @param b Base expression
* @param i1 First index
- * @param i2 Second index
- * @return newly constructed indexed object */
+ * @param i2 Second index */
indexed(const ex & b, const ex & i1, const ex & i2);
/** Construct indexed object with three indices. The indices must be of class idx.
* @param b Base expression
* @param i1 First index
* @param i2 Second index
- * @param i3 Third index
- * @return newly constructed indexed object */
+ * @param i3 Third index */
indexed(const ex & b, const ex & i1, const ex & i2, const ex & i3);
/** Construct indexed object with four indices. The indices must be of class idx.
* @param i1 First index
* @param i2 Second index
* @param i3 Third index
- * @param i4 Fourth index
- * @return newly constructed indexed object */
+ * @param i4 Fourth index */
indexed(const ex & b, const ex & i1, const ex & i2, const ex & i3, const ex & i4);
/** Construct indexed object with two indices and a specified symmetry. The
* @param b Base expression
* @param symm Symmetry of indices
* @param i1 First index
- * @param i2 Second index
- * @return newly constructed indexed object */
+ * @param i2 Second index */
indexed(const ex & b, const symmetry & symm, const ex & i1, const ex & i2);
/** Construct indexed object with three indices and a specified symmetry.
* @param symm Symmetry of indices
* @param i1 First index
* @param i2 Second index
- * @param i3 Third index
- * @return newly constructed indexed object */
+ * @param i3 Third index */
indexed(const ex & b, const symmetry & symm, const ex & i1, const ex & i2, const ex & i3);
/** Construct indexed object with four indices and a specified symmetry. The
* @param i1 First index
* @param i2 Second index
* @param i3 Third index
- * @param i4 Fourth index
- * @return newly constructed indexed object */
+ * @param i4 Fourth index */
indexed(const ex & b, const symmetry & symm, const ex & i1, const ex & i2, const ex & i3, const ex & i4);
/** Construct indexed object with a specified vector of indices. The indices
* must be of class idx.
*
* @param b Base expression
- * @param iv Vector of indices
- * @return newly constructed indexed object */
+ * @param iv Vector of indices */
indexed(const ex & b, const exvector & iv);
/** Construct indexed object with a specified vector of indices and
*
* @param b Base expression
* @param symm Symmetry of indices
- * @param iv Vector of indices
- * @return newly constructed indexed object */
+ * @param iv Vector of indices */
indexed(const ex & b, const symmetry & symm, const exvector & iv);
// internal constructors
indexed(const symmetry & symm, const exprseq & es);
- indexed(const symmetry & symm, const exvector & v, bool discardable = false);
- indexed(const symmetry & symm, std::auto_ptr<exvector> vp);
+ indexed(const symmetry & symm, const exvector & v);
+ indexed(const symmetry & symm, exvector && v);
// functions overriding virtual functions from base classes
public:
- unsigned precedence() const {return 55;}
- bool info(unsigned inf) const;
- ex eval(int level = 0) const;
- ex real_part() const;
- ex imag_part() const;
- exvector get_free_indices() const;
+ unsigned precedence() const override {return 55;}
+ bool info(unsigned inf) const override;
+ ex eval() const override;
+ ex real_part() const override;
+ ex imag_part() const override;
+ exvector get_free_indices() const override;
/** Save (a.k.a. serialize) indexed object into archive. */
- void archive(archive_node& n) const;
+ void archive(archive_node& n) const override;
/** Read (a.k.a. deserialize) indexed object from archive. */
- void read_archive(const archive_node& n, lst& syms);
+ void read_archive(const archive_node& n, lst& syms) override;
protected:
- ex derivative(const symbol & s) const;
- ex thiscontainer(const exvector & v) const;
- ex thiscontainer(std::auto_ptr<exvector> vp) const;
- unsigned return_type() const;
- return_type_t return_type_tinfo() const { return op(0).return_type_tinfo(); }
- ex expand(unsigned options = 0) const;
+ ex derivative(const symbol & s) const override;
+ ex thiscontainer(const exvector & v) const override;
+ ex thiscontainer(exvector && v) const override;
+ unsigned return_type() const override;
+ return_type_t return_type_tinfo() const override { return op(0).return_type_tinfo(); }
+ ex expand(unsigned options = 0) const override;
// new virtual functions which can be overridden by derived classes
// none
exvector get_all_dummy_indices(const ex & e);
/** More reliable version of the form. The former assumes that e is an
- * expanded epxression. */
+ * expanded expression. */
exvector get_all_dummy_indices_safely(const ex & e);
/** Returns b with all dummy indices, which are listed in va, renamed
* indices with the corresponding numeric values without variance.
*
* @param e the given expression
- * @param subs_idx indicates if variance of dummy indixes should be neglected
+ * @param subs_idx indicates if variance of dummy indices should be neglected
*/
ex expand_dummy_sum(const ex & e, bool subs_idx = false);