* Implementation of relations between expressions */
/*
- * GiNaC Copyright (C) 1999-2008 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2015 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
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <iostream>
-#include <stdexcept>
-
#include "relational.h"
#include "operators.h"
#include "numeric.h"
#include "archive.h"
#include "utils.h"
+#include "hash_seed.h"
+
+#include <iostream>
+#include <stdexcept>
namespace GiNaC {
unsigned relational::calchash() const
{
- const void* this_tinfo = (const void*)typeid(*this).name();
- unsigned v = golden_ratio_hash((p_int)this_tinfo);
+ unsigned v = make_hash_seed(typeid(*this));
unsigned lhash = lh.gethash();
unsigned rhash = rh.gethash();
return cond? &safe_bool_helper::nonnull : 0;
}
-/** Cast the relational into a boolean, mainly for evaluation within an
+/** Cast the relational into a Boolean, mainly for evaluation within an
* if-statement. Note that (a<b) == false does not imply (a>=b) == true in
* the general symbolic case. A false result means the comparison is either
* false or undecidable (except of course for !=, where true means either