Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cBigUnsMulDiv.cpp File Reference
#include "pch.h"
#include "Math/cBigUnsigned.h"
#include "Math/cBigInteger.h"

Namespaces

 GrayLib
 

Macros

#define GRAYLIB_HAVE_SSE2
 
#define MULADDC_INIT
 
#define MULADDC_CORE
 
#define MULADDC_STOP    }
 

Detailed Description

Multiply helper functions.

Macro Definition Documentation

◆ GRAYLIB_HAVE_SSE2

#define GRAYLIB_HAVE_SSE2

◆ MULADDC_CORE

#define MULADDC_CORE
Value:
s0 = ( *pSrc << k_BLOCKH_BITS ) >> k_BLOCKH_BITS; \
s1 = ( *pSrc >> k_BLOCKH_BITS ); pSrc++; \
rx = s0 * b1; r0 = s0 * b0; \
ry = s1 * b0; r1 = s1 * b1; \
r1 += ( rx >> k_BLOCKH_BITS ); \
r1 += ( ry >> k_BLOCKH_BITS ); \
rx <<= k_BLOCKH_BITS; ry <<= k_BLOCKH_BITS; \
r0 += rx; r1 += (r0 < rx); \
r0 += ry; r1 += (r0 < ry); \
r0 += nCarry; r1 += (r0 < nCarry); \
r0 += *pDst; r1 += (r0 < *pDst); \
nCarry = r1; *(pDst++) = r0;

◆ MULADDC_INIT

#define MULADDC_INIT
Value:
{ \
BLOCK_t s0, s1; \
BLOCK_t r0, r1; \
BLOCK_t rx, ry; \
BLOCK_t b0 = ( nMult << k_BLOCKH_BITS ) >> k_BLOCKH_BITS; \
BLOCK_t b1 = ( nMult >> k_BLOCKH_BITS );

◆ MULADDC_STOP

#define MULADDC_STOP    }