Toggle navigation
ivorium
iv_components
Example project
GitHub
Main Page
Modules
Classes
Files
File List
File Members
ivorium_core
Basics
sig_div.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
glm_alias.hpp
"
4
5
namespace
iv
6
{
7
8
inline
int
sig_div
(
int
a,
unsigned
b )
9
{
10
if
( a >= 0 )
11
return
a / (int)b;
12
else
13
return
( a -
int
( b ) + 1 ) / (
int
)b;
14
}
15
16
inline
int2
sig_div
(
int2
a,
unsigned
b )
17
{
18
return
int2
(
sig_div
( a.x, b ),
sig_div
( a.y, b ) );
19
}
20
21
inline
int
sig_mul
(
int
a,
unsigned
b )
22
{
23
return
a * b;
24
}
25
26
inline
int2
sig_mul
(
int2
a,
unsigned
b )
27
{
28
return
int2
(
sig_mul
( a.x, b ),
sig_mul
( a.y, b ) );
29
}
30
31
inline
int
sig_mod
(
int
a,
unsigned
b )
32
{
33
if
( a >= 0 )
34
return
a % (int)b;
35
else
36
return
( a + 1 ) % int( b ) + int( b ) - 1;
37
}
38
39
inline
int2
sig_mod
(
int2
a,
unsigned
b )
40
{
41
return
int2
(
sig_mod
( a.x, b ),
sig_mod
( a.y, b ) );
42
}
43
44
inline
float
sig_fmod
(
float
val,
float
mod )
45
{
46
if
( ( val < 0.0f ) == ( mod < 0.0f ) )
47
return
val - mod * float(
int
( val / mod ) );
48
else
49
return
val - mod * float(
int
( val / mod ) - 1 );
50
}
51
52
}