2026-06-27 21:28:54 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| SplitMix.mqh |
|
| | | //| Copyright 2026, Niquel Mendoza. |
|
| | | //| https://www.mql5.com/ |
|
| | | //+------------------------------------------------------------------+
|
| | | #property copyright "Copyright 2026, Niquel Mendoza."
|
| | | #property link "https://www.mql5.com/"
|
| | | #property strict
|
| | |
|
| | | #ifndef SIMPHASH_SRC_HASH_UL1_SPLITMIX_MQH
|
| | | #define SIMPHASH_SRC_HASH_UL1_SPLITMIX_MQH
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | #include "..\\Def.mqh"
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | namespace TSN
|
| | | {
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | class CHash1SplitMix : public IHashGeneratorWSeed
|
| | | {
|
| | | public:
|
| | | CHash1SplitMix(void) {}
|
| | | ~CHash1SplitMix(void) {}
|
| | |
|
2026-07-28 11:19:10 -05:00 | | | ulong Hash(ulong v, const ulong seed) override final
|
2026-06-27 21:28:54 -05:00 | | | {
|
2026-07-28 11:19:10 -05:00 | | | v += seed * 0x9e3779b97f4a7c15;
|
| | | v = (v ^ (v >> 30)) * 0xbf58476d1ce4e5b9;
|
| | | v = (v ^ (v >> 27)) * 0x94d049bb133111eb;
|
| | | return v ^ (v >> 31);
|
2026-06-27 21:28:54 -05:00 | | | }
|
| | |
|
| | | void BuildString(string& data, const string& table_seeds_name) override final
|
| | | {
|
| | | data += "//---\r\n";
|
| | | data += StringFormat(" ulong h = key_hash + %s[seed_index] * 0x9e3779b97f4a7c15;\r\n", table_seeds_name);
|
| | | data += " h = (h ^ (h >> 30)) * 0xbf58476d1ce4e5b9;\r\n";
|
| | | data += " h = (h ^ (h >> 27)) * 0x94d049bb133111eb;\r\n";
|
| | | data += " h ^= (h >> 31);\r\n";
|
| | | data += "\r\n";
|
| | | }
|
| | | void AddIncludes(string& data) override final
|
| | | {
|
| | | // Nada
|
| | | }
|
| | | };
|
| | | }
|
| | | //+------------------------------------------------------------------+
|
2026-07-28 11:19:10 -05:00 | | | #endif // SIMPHASH_SRC_HASH_UL1_SPLITMIX_MQH
|