Hi there,
I hope you guys are having a wonderful day.
I am fairly new to SymEngine and I was wondering what should be expected on a hash collision of the derived classes of SymEngine::Basic?
I am working on a project that uses SymEngine to handle very long expressions and do partial CSE on them. My project uses the value returned by Basic::hash() as unique keys to map various attributes to symbols and expressions.
The terms in the expressions and the symbols themselves could easily hit 200M unique required hashes.
I noticed the main hashing function in `basic-inl.h` and the 64-bit data type of the hash.
Since a simple sequential counter would not work with the architecture of SymEngine (symbol("a") should have the same hash as another symbol("a)), I guess I have to modify the hash type to something like `long long` (?).
But I am not familiar with the logic behind the hashing function `hash_combine_impl<>()`. Link
Could you please give me some advice on how to approach this issue? Am I missing something obvious?