]> www.ginac.de Git - ginac.git/blobdiff - ginac/ex.h
Fix pseries::evalf() regression.
[ginac.git] / ginac / ex.h
index 3b980aabafff98f9ae6bfe20c9b50b28ded03607..dd3cfe0530ae51f33e72db25bde99fac7760f2e2 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's light-weight expression handles. */
 
 /*
- *  GiNaC Copyright (C) 1999-2016 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2019 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
@@ -185,9 +185,7 @@ public:
        // rational functions
        ex normal() const;
        ex to_rational(exmap & repl) const;
-       ex to_rational(lst & repl_lst) const;
        ex to_polynomial(exmap & repl) const;
-       ex to_polynomial(lst & repl_lst) const;
        ex numer() const;
        ex denom() const;
        ex numer_denom() const;
@@ -740,18 +738,12 @@ inline ex numer_denom(const ex & thisex)
 inline ex normal(const ex & thisex)
 { return thisex.normal(); }
 
-inline ex to_rational(const ex & thisex, lst & repl_lst)
-{ return thisex.to_rational(repl_lst); }
-
 inline ex to_rational(const ex & thisex, exmap & repl)
 { return thisex.to_rational(repl); }
 
 inline ex to_polynomial(const ex & thisex, exmap & repl)
 { return thisex.to_polynomial(repl); }
 
-inline ex to_polynomial(const ex & thisex, lst & repl_lst)
-{ return thisex.to_polynomial(repl_lst); }
-
 inline ex collect(const ex & thisex, const ex & s, bool distributed = false)
 { return thisex.collect(s, distributed); }
 
@@ -970,6 +962,26 @@ inline void swap(GiNaC::ex &a, GiNaC::ex &b)
        a.swap(b);
 }
 
+/** Specialization of std::hash() for ex objects. */
+template<>
+struct hash<GiNaC::ex>
+{
+       std::size_t operator()(const GiNaC::ex & e) const noexcept
+       {
+               return e.gethash();
+       }
+};
+
+/** Specialization of std::equal_to() for ex objects. */
+template<>
+struct equal_to<GiNaC::ex>
+{
+       bool operator()(const GiNaC::ex &e1, const GiNaC::ex &e2) const noexcept
+       {
+               return e1.is_equal(e2);
+       }
+};
+
 } // namespace std
 
 #endif // ndef GINAC_EX_H