liba 0.1.15
An algorithm library based on C/C++
Loading...
Searching...
No Matches
a.h File Reference

algorithm library More...

#include <stddef.h>
#include <limits.h>
#include <stdint.h>
#include <float.h>
Include dependency graph for a.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

union  a_cast
 

Macros

#define A_ORDER_LITTLE   1234
 
#define A_ORDER_BIG   4321
 
#define A_BUILD_ASSERT(x)
 
#define A_BUILD_BUG_ON(x)
 
#define a_cast_r(T, x)
 
#define a_cast_d(T, x)
 
#define a_cast_s(T, x)
 
#define a_cast_c(T, x)
 
#define A_CAST_3(a, b, c)
 
#define A_CAST_2(a, b)
 
#define A_CAST_1(a)
 
#define A_NULL   NULL
 
#define a_void_c(_, x)
 
#define a_void_(_, x)
 
#define a_void   void
 
#define A_TRUE   true
 
#define A_FALSE   false
 
#define A_BOOL   bool
 
#define a_bool_c(x)
 
#define a_bool   A_BOOL
 
#define A_INT   int
 
#define A_INT_MIN   INT_MIN
 
#define A_INT_MAX   INT_MAX
 
#define a_int_c(x)
 
#define a_int_(_, x)
 
#define a_int   A_INT
 
#define A_UINT   unsigned int
 
#define A_UINT_MAX   UINT_MAX
 
#define a_uint_c(x)
 
#define a_uint_(_, x)
 
#define a_uint   A_UINT
 
#define A_SHRT   short
 
#define A_SHRT_MIN   SHRT_MIN
 
#define A_SHRT_MAX   SHRT_MAX
 
#define a_shrt_c(x)
 
#define a_shrt_(_, x)
 
#define a_shrt   A_SHRT
 
#define A_USHRT   unsigned short
 
#define A_USHRT_MAX   USHRT_MAX
 
#define a_ushrt_c(x)
 
#define a_ushrt_(_, x)
 
#define a_ushrt   A_USHRT
 
#define A_LONG   long
 
#define A_LONG_MIN   LONG_MIN
 
#define A_LONG_MAX   LONG_MAX
 
#define a_long_c(x)
 
#define a_long_(_, x)
 
#define a_long   A_LONG
 
#define A_ULONG   unsigned long
 
#define A_ULONG_MAX   ULONG_MAX
 
#define a_ulong_c(x)
 
#define a_ulong_(_, x)
 
#define a_ulong   A_ULONG
 
#define A_BYTE   unsigned char
 
#define A_BYTE_MAX   UCHAR_MAX
 
#define a_byte_c(x)
 
#define a_byte_(_, x)
 
#define a_byte   A_BYTE
 
#define A_C8   char
 
#define A_C8_MIN   CHAR_MIN
 
#define A_C8_MAX   CHAR_MAX
 
#define a_c8_c(x)
 
#define a_c8_(_, x)
 
#define a_c8   A_C8
 
#define A_I8   int8_t
 
#define a_i8_c(x)
 
#define a_i8_(_, x)
 
#define a_i8   A_I8
 
#define A_U8   uint8_t
 
#define a_u8_c(x)
 
#define a_u8_(_, x)
 
#define a_u8   A_U8
 
#define A_I16   int16_t
 
#define a_i16_c(x)
 
#define a_i16_(_, x)
 
#define a_i16   A_I16
 
#define A_U16   uint16_t
 
#define a_u16_c(x)
 
#define a_u16_(_, x)
 
#define a_u16   A_U16
 
#define A_I32   int32_t
 
#define a_i32_c(x)
 
#define a_i32_(_, x)
 
#define a_i32   A_I32
 
#define A_U32   uint32_t
 
#define a_u32_c(x)
 
#define a_u32_(_, x)
 
#define a_u32   A_U32
 
#define A_I64   int64_t
 
#define a_i64_c(x)
 
#define a_i64_(_, x)
 
#define a_i64   A_I64
 
#define A_U64   uint64_t
 
#define a_u64_c(x)
 
#define a_u64_(_, x)
 
#define a_u64   A_U64
 
#define A_IMAX   intmax_t
 
#define a_imax_c(x)
 
#define a_imax_(_, x)
 
#define a_imax   A_IMAX
 
#define A_UMAX   uintmax_t
 
#define a_umax_c(x)
 
#define a_umax_(_, x)
 
#define a_umax   A_UMAX
 
#define A_IPTR   intptr_t
 
#define a_iptr_c(x)
 
#define a_iptr_(_, x)
 
#define a_iptr   A_IPTR
 
#define A_UPTR   uintptr_t
 
#define a_uptr_c(x)
 
#define a_uptr_(_, x)
 
#define a_uptr   A_UPTR
 
#define A_DIFF   ptrdiff_t
 
#define a_diff_c(x)
 
#define a_diff_(_, x)
 
#define a_diff   A_DIFF
 
#define A_SIZE   size_t
 
#define a_size_c(x)
 
#define a_size_(_, x)
 
#define a_size   A_SIZE
 
#define A_F16_NNAN   A_U16_C(0xFE00)
 
#define A_F16_PNAN   A_U16_C(0x7E00)
 
#define A_F16_NINF   A_U16_C(0xFC00)
 
#define A_F16_PINF   A_U16_C(0x7C00)
 
#define A_F32   float
 
#define A_F32_C(X)
 
#define A_F32_F(F)
 
#define A_F32_DIG   FLT_DIG
 
#define A_F32_EPSILON   FLT_EPSILON
 
#define A_F32_MANT_DIG   FLT_MANT_DIG
 
#define A_F32_MAX   FLT_MAX
 
#define A_F32_MAX_10_EXP   FLT_MAX_10_EXP
 
#define A_F32_MAX_EXP   FLT_MAX_EXP
 
#define A_F32_MIN   FLT_MIN
 
#define A_F32_MIN_10_EXP   FLT_MIN_10_EXP
 
#define A_F32_MIN_EXP   FLT_MIN_EXP
 
#define A_F32_INF   a_cast_s(A_F32, A_F64_INF)
 
#define A_F32_NAN   (A_F32_C(0.0) * A_F32_INF)
 
#define A_F32_NNAN   A_U32_C(0xFFC00000)
 
#define A_F32_PNAN   A_U32_C(0x7FC00000)
 
#define A_F32_NINF   A_U32_C(0xFF800000)
 
#define A_F32_PINF   A_U32_C(0x7F800000)
 
#define A_F32_PRI(F, C)
 
#define A_F32_SCN(F, C)
 
#define a_f32_c(x)
 
#define a_f32_(_, x)
 
#define a_f32   A_F32
 
#define A_F64   double
 
#define A_F64_C(X)
 
#define A_F64_F(F)
 
#define A_F64_DIG   DBL_DIG
 
#define A_F64_EPSILON   DBL_EPSILON
 
#define A_F64_MANT_DIG   DBL_MANT_DIG
 
#define A_F64_MAX   DBL_MAX
 
#define A_F64_MAX_10_EXP   DBL_MAX_10_EXP
 
#define A_F64_MAX_EXP   DBL_MAX_EXP
 
#define A_F64_MIN   DBL_MIN
 
#define A_F64_MIN_10_EXP   DBL_MIN_10_EXP
 
#define A_F64_MIN_EXP   DBL_MIN_EXP
 
#define A_F64_INF   (DBL_MAX * DBL_MAX)
 
#define A_F64_NAN   (A_F64_C(0.0) * A_F64_INF)
 
#define A_F64_NNAN   A_U64_C(0xFFF8000000000000)
 
#define A_F64_PNAN   A_U64_C(0x7FF8000000000000)
 
#define A_F64_NINF   A_U64_C(0xFFF0000000000000)
 
#define A_F64_PINF   A_U64_C(0x7FF0000000000000)
 
#define A_F64_PRI(F, C)
 
#define A_F64_SCN(F, C)
 
#define a_f64_c(x)
 
#define a_f64_(_, x)
 
#define a_f64   A_F64
 
#define A_FLOAT_TYPE   A_FLOAT_DOUBLE
 
#define A_FLOAT_SINGLE   0x04
 
#define A_FLOAT_DOUBLE   0x08
 
#define A_FLOAT_EXTEND   0x10
 
#define A_FLOAT   double
 
#define A_FLOAT_DIG   DBL_DIG
 
#define A_FLOAT_EPSILON   DBL_EPSILON
 
#define A_FLOAT_MANT_DIG   DBL_MANT_DIG
 
#define A_FLOAT_MAX   DBL_MAX
 
#define A_FLOAT_MAX_10_EXP   DBL_MAX_10_EXP
 
#define A_FLOAT_MAX_EXP   DBL_MAX_EXP
 
#define A_FLOAT_MIN   DBL_MIN
 
#define A_FLOAT_MIN_10_EXP   DBL_MIN_10_EXP
 
#define A_FLOAT_MIN_EXP   DBL_MIN_EXP
 
#define A_FLOAT_C(X)
 
#define A_FLOAT_F(F)
 
#define A_FLOAT_PRI(F, C)
 
#define A_FLOAT_SCN(F, C)
 
#define A_FLOAT_INF   a_cast_s(A_FLOAT, A_F64_INF)
 
#define A_FLOAT_NAN   (A_FLOAT_C(0.0) * A_FLOAT_INF)
 
#define a_float_c(x)
 
#define a_float_(_, x)
 
#define a_float   A_FLOAT
 
#define A_SQ(x)
 square of x, \( x^2 \)
 
#define A_ABS(x)
 absolute value of x, \( |x| \)
 
#define A_ABS_(f, g)
 absolute value of f-g, \( |f-g| \)
 
#define A_MIN(x, y)
 minimum value between x and y
 
#define A_MAX(x, y)
 maximum value between x and y
 
#define A_SGN(x)
 signum function, \( \texttt{sgn}(x)=\begin{cases}+1&x>0\\0&0\\-1&x<0\end{cases} \)
 
#define A_SGN_(f, g)
 signum function, \( \texttt{sgn}(f,g)=\begin{cases}+1&f>g\\0&f=g\\-1&f<g\end{cases} \)
 
#define A_SAT(x, min, max)
 saturation value of x, \( \texttt{sat}(x,min,max)=\begin{cases}min&min>x\\max&x>max\\x&else\end{cases} \)
 
#define A_LEN(a)
 number of elements in a visible array
 
#define a_offsetof(type, member)
 offset of a structure member
 
#define a_container_of(ptr, type, member)
 container of a structure member
 
#define a_size_down(a, n)
 round down size n to be a multiple of a
 
#define a_size_up(a, n)
 round up size n to be a multiple of a
 
#define a_align_down(a, p)
 round pointer p down to the closest a, aligned address <= p
 
#define a_align_up(a, p)
 round pointer p up to the closest a, aligned address >= p
 
#define a_forenum(I, i, n)
 iterate from 0 to n and not include n
 
#define a_forenum_reverse(I, i, n)
 iterate from n to 0 and not include n
 
#define a_foreach(T, P, it, ptr, num)
 iterate over an array
 
#define a_forsafe(T, P, it, ptr, num)
 iterate over an array
 
#define a_foreach_reverse(T, P, it, ptr, num)
 iterate over an array in reverse
 
#define a_forsafe_reverse(T, P, it, ptr, num)
 iterate over an array in reverse
 
#define a_iterate(T, P, it, ptr, end)
 iterate over an array
 
#define a_iterate_reverse(T, P, it, ptr, end)
 iterate over an array in reverse
 
#define A_ALLOC(alloc, addr, size)
 declare allocation function
 
#define a_new(T, ptr, num)
 
#define a_die(ptr)
 

Typedefs

typedef union a_cast a_cast
 

Enumerations

enum  { A_SUCCESS , A_FAILURE , A_INVALID }
 enumeration for return values More...
 

Functions

uint8_t a_u8_rev (uint8_t x)
 reverse the bits in an 8-bit unsigned integer
 
uint16_t a_u16_rev (uint16_t x)
 reverse the bits in a 16-bit unsigned integer
 
uint16_t a_u16_getl (void const *b)
 
uint16_t a_u16_getb (void const *b)
 
void a_u16_setl (void *b, uint16_t x)
 
void a_u16_setb (void *b, uint16_t x)
 
uint32_t a_u32_rev (uint32_t x)
 reverse the bits in a 32-bit unsigned integer
 
uint32_t a_u32_getl (void const *b)
 
uint32_t a_u32_getb (void const *b)
 
void a_u32_setl (void *b, uint32_t x)
 
void a_u32_setb (void *b, uint32_t x)
 
uint64_t a_u64_rev (uint64_t x)
 reverse the bits in a 64-bit unsigned integer
 
uint64_t a_u64_getl (void const *b)
 
uint64_t a_u64_getb (void const *b)
 
void a_u64_setl (void *b, uint64_t x)
 
void a_u64_setb (void *b, uint64_t x)
 
void * a_copy (void *__restrict dst, void const *__restrict src, size_t siz)
 copy one buffer to another
 
void * a_move (void *dst, void const *src, size_t siz)
 move one buffer to another
 
void * a_fill (void *ptr, size_t siz, int val)
 fill a buffer with a character
 
void * a_zero (void *ptr, size_t siz)
 fill a buffer with zero
 
void a_swap (void *lhs, void *rhs, size_t siz)
 swap two different memory blocks of the same size
 
uint32_t a_hash_bkdr (void const *str, uint32_t val)
 a hash function whose prime number is 131
 
uint32_t a_hash_bkdr_ (void const *ptr, size_t siz, uint32_t val)
 a hash function whose prime number is 131
 
uint32_t a_hash_sdbm (void const *str, uint32_t val)
 a hash function whose prime number is 65599
 
uint32_t a_hash_sdbm_ (void const *ptr, size_t siz, uint32_t val)
 a hash function whose prime number is 65599
 
void a_float_push_fore (double *p, size_t n, double x)
 push an element into the front of a float array
 
void a_float_push_back (double *p, size_t n, double x)
 push an element into the end of a float array
 
void a_float_push_fore_ (double *block_p, size_t block_n, double const *cache_p, size_t cache_n)
 push the elements into the front of a float array
 
void a_float_push_back_ (double *block_p, size_t block_n, double const *cache_p, size_t cache_n)
 push the elements into the end of a float array
 
void a_float_roll_fore (double *p, size_t n)
 roll forward the elements of a float array circularly
 
void a_float_roll_back (double *p, size_t n)
 roll backward the elements of a float array circularly
 
void a_float_roll_fore_ (double *block_p, size_t block_n, double *shift_p, size_t shift_n)
 roll forward the elements of a float array circularly
 
void a_float_roll_back_ (double *block_p, size_t block_n, double *shift_p, size_t shift_n)
 roll backward the elements of a float array circularly
 
double a_float_mean (double const *p, size_t n)
 calculate the mean of a float array
 
double a_float_sum (double const *p, size_t n)
 calculate the sum of a float array
 
double a_float_sum1 (double const *p, size_t n)
 calculate the absolute sum of a float array
 
double a_float_sum2 (double const *p, size_t n)
 calculate the sum of squares of a float array
 
void * a_alloc_ (void *addr, size_t size)
 default allocation function
 

Variables

void *(* a_alloc )(void *addr, size_t size)
 allocation function pointer
 

Detailed Description

algorithm library