TsnTables/Src/Bits/Swar/Numbers.mqh

40 lines
2 KiB
MQL5

//+------------------------------------------------------------------+
//| Numbers.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_SWAR_NUMBERS_MQH
#define TSNTABES_SRC_BITS_SWAR_NUMBERS_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#define TSNTABLES_PN64_M_H (0xF0F0F0F0F0F0F0F0)
#define TSNTABLES_PN64_M_L (0x0F0F0F0F0F0F0F0F)
#define TSNTABLES_PN64_M_NSTART (0x3030303030303030)
#define TSNTABLES_PN64_M_NMAX (0x0909090909090909)
// pn = parse number
#define TSNTABLES_PN64_M_40 (0x000000FF000000FF)
#define TSNTABLES_PN64_M_MUL1 (0x000F424000000064)
#define TSNTABLES_PN64_M_MUL2 (0x0000271000000001)
#define TSNTABLES_PN64_M_P8 (100000000)
//+------------------------------------------------------------------+
//| Is Digit paralelo |
//+------------------------------------------------------------------+
#define TSN_TABLES_IS_DIG64(val) (((val&TSNTABLES_PN64_M_H)==TSNTABLES_PN64_M_NSTART)&&((val&TSNTABLES_PN64_M_L)<=TSNTABLES_PN64_M_NMAX))
//+------------------------------------------------------------------+
//| Parseo en si |
//+------------------------------------------------------------------+
#define TSN_TABLES_PN_COMBIN_PARES(val) ((val * 10) + (val >> 8))
#define TSN_TABLES_PN_FINAL(val) \
(((val & TSNTABLES_PN64_M_40) * TSNTABLES_PN64_M_MUL1 + ((val >> 16) & TSNTABLES_PN64_M_40) * TSNTABLES_PN64_M_MUL2) >> 32)
#endif // TSNTABES_SRC_BITS_SWAR_NUMBERS_MQH