forked from nique_372/TsnTables
129 lines
No EOL
3.1 KiB
MQL4
129 lines
No EOL
3.1 KiB
MQL4
//+------------------------------------------------------------------+
|
|
//| CTZ.mqh |
|
|
//| Copyright 2026, Niquel Mendoza |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Copyright 2026, Niquel Mendoza"
|
|
#property link "https://www.mql5.com"
|
|
#property strict
|
|
|
|
#ifndef TSNTABES_SRC_BITS_CTZ_CTZ_MQH
|
|
#define TSNTABES_SRC_BITS_CTZ_CTZ_MQH
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
namespace TSN
|
|
{
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
// Para la busquieda
|
|
//--- obtiene el nidice para la tabla
|
|
#define TSNTABLES_CTZ_64_CONSTANT 571740426102773010ULL
|
|
#define TSNTABLES_CTZ_64_INDEX(flag_real) ((flag_real * TSNTABLES_CTZ_64_CONSTANT) >> 58)
|
|
|
|
//---- finales
|
|
// obtiene el byte
|
|
#define TSNTABLES_CTZ_64_GET_BYTE(flag_real) (g_tsntables_table_ctz_i64[TSNTABLES_CTZ_64_INDEX(flag_real)]>>3)
|
|
// obtiene el bit
|
|
#define TSNTABLES_CTZ_64_GET_BIT(flag_real) (g_tsntables_table_ctz_i64[TSNTABLES_CTZ_64_INDEX(flag_real)])
|
|
|
|
//--- utilidades
|
|
// aislar el menos significatvio
|
|
#define TSNTABLES_BIT_DEJAR_SOLO_MINUS_SIG_BYTE(mask) (mask & (~mask + 1ULL))
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Tablas |
|
|
//+------------------------------------------------------------------+
|
|
//--- 64
|
|
const char g_tsntables_table_ctz_i64[64] =
|
|
{
|
|
63,
|
|
0,
|
|
47,
|
|
1,
|
|
56,
|
|
48,
|
|
27,
|
|
2,
|
|
60,
|
|
57,
|
|
49,
|
|
41,
|
|
37,
|
|
28,
|
|
16,
|
|
3,
|
|
61,
|
|
54,
|
|
58,
|
|
35,
|
|
52,
|
|
50,
|
|
42,
|
|
21,
|
|
44,
|
|
38,
|
|
32,
|
|
29,
|
|
23,
|
|
17,
|
|
11,
|
|
4,
|
|
62,
|
|
46,
|
|
55,
|
|
26,
|
|
59,
|
|
40,
|
|
36,
|
|
15,
|
|
53,
|
|
34,
|
|
51,
|
|
20,
|
|
43,
|
|
31,
|
|
22,
|
|
10,
|
|
45,
|
|
25,
|
|
39,
|
|
14,
|
|
33,
|
|
19,
|
|
30,
|
|
9,
|
|
24,
|
|
13,
|
|
18,
|
|
8,
|
|
12,
|
|
7,
|
|
6,
|
|
5
|
|
};
|
|
|
|
//--- 8
|
|
const uchar g_tsntables_table_ctz_i8[256] =
|
|
{
|
|
8, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
|
|
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
|
|
};
|
|
}
|
|
#endif // TSNTABES_SRC_BITS_CTZ_MAIN_MQH |