#include "indexed.h"
#include "lorentzidx.h"
-#ifndef NO_NAMESPACE_GINAC
namespace GiNaC {
-#endif // ndef NO_NAMESPACE_GINAC
typedef std::pair<std::string,std::string> strstrpair;
typedef std::pair<strstrpair,lorentzidx> spmapkey;
public:
bool operator()(const spmapkey & lh, const spmapkey & rh) const
{
- /*
- cerr << "spmapkey_is_less" << endl;
- cerr << "lh=((" << lh.first.first
- << "," << lh.first.second << "),";
- lh.second.printraw(cerr);
- cerr << ")" << endl;
-
- cerr << "rh=((" << rh.first.first
- << "," << rh.first.second << "),";
- rh.second.printraw(cerr);
- cerr << ")" << endl;
- */
bool res = lh.first<rh.first
|| (!(rh.first<lh.first) && lh.second.compare(rh.second)<0);
- // cout << "result=" << res << endl;
return res;
}
};
/** Base class for simp_lor object */
class simp_lor : public indexed
{
+ GINAC_DECLARE_REGISTERED_CLASS(simp_lor, indexed)
+
// friends
friend class scalar_products;
simp_lor_vec
} simp_lor_types;
-// member functions
-
- // default constructor, destructor, copy constructor assignment operator and helpers
-public:
- simp_lor();
- ~simp_lor();
- simp_lor(const simp_lor & other);
- const simp_lor & operator=(const simp_lor & other);
-protected:
- void copy(const simp_lor & other);
- void destroy(bool call_parent);
-
// other constructors
protected:
simp_lor(simp_lor_types const t);
// functions overriding virtual functions from base classes
public:
- basic * duplicate() const;
void printraw(std::ostream & os) const;
void printtree(std::ostream & os, unsigned indent) const;
void print(std::ostream & os, unsigned upper_precedence=0) const;
bool info(unsigned inf) const;
ex eval(int level=0) const;
protected:
- int compare_same_type(const basic & other) const;
bool is_equal_same_type(const basic & other) const;
unsigned return_type(void) const;
unsigned return_type_tinfo(void) const;
std::string name;
};
-// global constants
-
-extern const simp_lor some_simp_lor;
-extern const std::type_info & typeid_simp_lor;
-
// utility functions
inline const simp_lor &ex_to_simp_lor(const ex &e)
{
simp_lor lor_vec(const std::string & n, const ex & mu);
ex simplify_simp_lor_mul(const ex & m, const scalar_products & sp);
ex simplify_simp_lor(const ex & e, const scalar_products & sp=scalar_products());
-ex Dim(void);
-#ifndef NO_NAMESPACE_GINAC
} // namespace GiNaC
-#endif // ndef NO_NAMESPACE_GINAC
#endif // ndef _SIMP__GINAC_LOR_H__