Veritable Lasagna
An Allocator & Data Structure Library for C.
Loading...
Searching...
No Matches
vl_algo.h
Go to the documentation of this file.
1
14#ifndef VL_ALGO_H
15#define VL_ALGO_H
16
17#include "vl_compare.h"
18#include "vl_numtypes.h"
19
26#define VL_MIN(a, b) ((a) < (b) ? (a) : (b))
27
34#define VL_MAX(a, b) ((a) > (b) ? (a) : (b))
35
41#define VL_ABS(x) ((x) < 0 ? -(x) : (x))
42
50#define VL_CLAMP(x, min, max) VL_MAX(min, VL_MIN(x, max))
51
62VL_API vl_uint_t vlAlgoPopCount8(vl_uint8_t value);
63
74VL_API vl_uint_t vlAlgoPopCount16(vl_uint16_t value);
75
86VL_API vl_uint_t vlAlgoPopCount32(vl_uint32_t value);
87
98VL_API vl_uint_t vlAlgoPopCount64(vl_uint64_t value);
99
110VL_API vl_uint_t vlAlgoCLZ8(vl_uint8_t value);
111
122VL_API vl_uint_t vlAlgoCLZ16(vl_uint16_t value);
123
134VL_API vl_uint_t vlAlgoCLZ32(vl_uint32_t value);
135
146VL_API vl_uint_t vlAlgoCLZ64(vl_uint64_t value);
147
158VL_API vl_uint_t vlAlgoCTZ8(vl_uint8_t value);
159
170VL_API vl_uint_t vlAlgoCTZ16(vl_uint16_t value);
171
182VL_API vl_uint_t vlAlgoCTZ32(vl_uint32_t value);
183
194VL_API vl_uint_t vlAlgoCTZ64(vl_uint64_t value);
195
217
238VL_API vl_bool_t vlAlgoIsPO2(vl_ularge_t value);
239
252
265
278
292
305
318
331
332#endif // VL_ALGO_H
VL_API vl_bool_t vlAlgoSubUnderflow(vl_ularge_t a, vl_ularge_t b)
Tests whether subtracting two unsigned integers would cause underflow.
Definition vl_algo.c:475
VL_API vl_uint_t vlAlgoCLZ32(vl_uint32_t value)
Counts the number of leading zero bits in a 32-bit value.
Definition vl_algo.c:135
VL_API vl_uint_t vlAlgoCTZ8(vl_uint8_t value)
Counts the number of trailing zero bits in an 8-bit value.
Definition vl_algo.c:215
VL_API vl_uint_t vlAlgoPopCount32(vl_uint32_t value)
Counts the number of set bits (population count) in a 32-bit value.
Definition vl_algo.c:55
VL_API vl_ularge_t vlAlgoLCM(vl_ularge_t a, vl_ularge_t b)
Computes the Least Common Multiple (LCM) of two unsigned integers.
Definition vl_algo.c:454
VL_API vl_bool_t vlAlgoMulOverflow(vl_ularge_t a, vl_ularge_t b)
Tests whether multiplying two unsigned integers would cause overflow.
Definition vl_algo.c:488
VL_API vl_uint_t vlAlgoPopCount16(vl_uint16_t value)
Counts the number of set bits (population count) in a 16-bit value.
Definition vl_algo.c:37
VL_API vl_uint_t vlAlgoCTZ64(vl_uint64_t value)
Counts the number of trailing zero bits in a 64-bit value.
Definition vl_algo.c:276
VL_API vl_uint_t vlAlgoCLZ8(vl_uint8_t value)
Counts the number of leading zero bits in an 8-bit value.
Definition vl_algo.c:84
VL_API vl_uint_t vlAlgoNextPO2(vl_ularge_t value)
Computes the next power of 2 greater than or equal to the given value.
Definition vl_algo.c:313
VL_API vl_uint_t vlAlgoPopCount8(vl_uint8_t value)
Counts the number of set bits (population count) in an 8-bit value.
Definition vl_algo.c:19
VL_API vl_ularge_t vlAlgoGCD(vl_ularge_t a, vl_ularge_t b)
Computes the Greatest Common Divisor (GCD) of two unsigned integers.
Definition vl_algo.c:365
VL_API vl_uint_t vlAlgoCLZ64(vl_uint64_t value)
Counts the number of leading zero bits in a 64-bit value.
Definition vl_algo.c:177
VL_API vl_uint_t vlAlgoCTZ16(vl_uint16_t value)
Counts the number of trailing zero bits in a 16-bit value.
Definition vl_algo.c:233
VL_API vl_ilarge_t vlAlgoLCMSigned(vl_ilarge_t a, vl_ilarge_t b)
Computes the Least Common Multiple (LCM) of two signed integers.
Definition vl_algo.c:419
VL_API vl_uint_t vlAlgoPopCount64(vl_uint64_t value)
Counts the number of set bits (population count) in a 64-bit value.
Definition vl_algo.c:69
VL_API vl_bool_t vlAlgoIsPO2(vl_ularge_t value)
Tests whether a value is a power of 2.
Definition vl_algo.c:347
VL_API vl_uint_t vlAlgoCTZ32(vl_uint32_t value)
Counts the number of trailing zero bits in a 32-bit value.
Definition vl_algo.c:257
VL_API vl_bool_t vlAlgoAddOverflow(vl_ularge_t a, vl_ularge_t b)
Tests whether adding two unsigned integers would cause overflow.
Definition vl_algo.c:348
VL_API vl_uint_t vlAlgoCLZ16(vl_uint16_t value)
Counts the number of leading zero bits in a 16-bit value.
Definition vl_algo.c:118
VL_API vl_ilarge_t vlAlgoGCDSigned(vl_ilarge_t a, vl_ilarge_t b)
Computes the Greatest Common Divisor (GCD) of two signed integers.
Definition vl_algo.c:410
VL_UINT_T vl_uint_t
Standard unsigned integer type.
Definition vl_numtypes.h:158
VL_BOOL_T vl_bool_t
Definition vl_numtypes.h:191
VL_ULARGE_T vl_ularge_t
Largest available unsigned integer type.
Definition vl_numtypes.h:136
VL_ILARGE_T vl_ilarge_t
Largest available signed integer type.
Definition vl_numtypes.h:140