7#ifndef KO_INTEGER_MATHS_H
8#define KO_INTEGER_MATHS_H
21#define UINT16_MAX 65535u
29#define UINT32_MAX (4294967295u)
37#define INT16_MAX 32767
41#define INT16_MIN -32768
46template<
typename _T_,
typename _T2_,
typename _T3_>
47inline _T_
CLAMP(_T_ x, _T2_ l, _T3_
u)
59 uint c = a * b + 0x80u;
68 uint c = a * b + 0x80u;
69 return ((c >> 8) + c) >> 8;
81 uint t = a * b * c + 0x7F5B;
82 return ((t >> 7) + t) >> 16;
92 int c = (int(a) - int(b)) * alpha + 0x80u;
93 c = ((c >> 8) + c) >> 8;
99 uint c = a * b + 0x8000u;
100 return ((c >> 16) + c) >> 16;
119 int c = ((int(a) - int(b)) *
int(alpha)) >> 16;
132 c = c - (c >> 8) + 128;
140 int c = ((int(a) - int(b)) *
int(alpha)) >> 16;
uint UINT8_SCALEBY(uint a, uint b)
take a and scale it up by 256*b/255
uint UINT8_MULT(uint a, uint b)
int INT16_BLEND(int a, int b, uint alpha)
uint UINT8_BLEND(uint a, uint b, uint alpha)
uint UINT16_MULT(uint a, uint b)
uint UINT16_BLEND(uint a, uint b, uint alpha)
uint UINT8_TO_UINT16(uint c)
uint UINT16_DIVIDE(uint a, uint b)
int INT16_MULT(int a, int b)
uint UINT16_TO_UINT8(uint c)
uint UINT8_DIVIDE(uint a, uint b)
uint UINT8_MULT3(uint a, uint b, uint c)
Approximation of (a * b * c + 32512) / 65025.0.