TsnTables/Src/Bits/CTZ/CTZ.mqh
Nique_372 343bc52030
2026-08-27 14:03:03 -05:00

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