# Arithmetic Functions (MATH) Functions

### Utility Functions

MATH_IAbs |  | Returns an int-type argument's absolute value. (Inline function)
MATH_IMin |  | Compares two int-type arguments and returns the smaller. (Inline function)
MATH_IMax |  | Compares two int-type arguments and returns the larger. (Inline function)
MATH_ABS |  | Returns an argument's absolute value ( (Function macro - has side effects)
MATH_MIN |  | Compares two numbers and returns the smaller. (Function macro - has side effects)
MATH_MAX |  | Compares two numbers and returns the larger. (Function macro - has side effects)
MATH_CLAMP |  | Returns the value of the first argument fit into the range of low to high. (Function macro - has side effects)
MATH_ROUNDUP |  | Returns the value of first argument rounded up to the multiple of second argument. (Function macro)
MATH_ROUNDDOWN |  | Returns the value of first argument rounded down to the multiple of second argument. (Function macro)
MATH_ROUNDUP32 |  | Returns value of argument rounded up to a multiple of 32. (Function macro)
MATH_ROUNDDOWN32 |  | Returns value of argument rounded down to a multiple of 32. (Function macro)

### Integer Operations

MATH_ILog2 |  | Returns the integer portion of the log base 2 of a `u32` value.

### Bit Operations

MATH_CountLeadingZeros |  | Gets the number of 0s from the start, expressed in a binary 32-bit value.
MATH_CLZ |  | A different name for `MATH_CountLeadingZeros`.
MATH_CountTrailingZeros |  | Gets the number of 0s from the end, expressed in a binary 32-bit value.
MATH_CTZ |  | A different name for `MATH_CountTrailingZeros`.
MATH_GetLeastSignificantBit |  | Gets the lowest order bit set to 1, expressed in a binary 32-bit value.
MATH_LSB |  | A different name for `MATH_GetLeastSignificantBit`.
MATH_GetMostSignificantBit |  | Gets the highest order bit set to 1, expressed in a binary 32-bit value.
MATH_MSB |  | A different name for `MATH_GetMostSignificantBit`.
MATH_CountPopulation |  | Gets the number of `1` bits, expressed in binary 32-bit.

### Random Number-Related Features

MATH_InitRand* |  | Initializes random number generated by linear congruential method.
MATH_Rand* |  | Gets random number generated by linear congruential method.
MATHRandContext* |  | The context structure of random number generated by linear congruential method.

### Sort-Related Functions

MATH_QSort |  | Performs quicksort.
MATH_QSortStackSize |  | Gets the buffer size required for a quicksort.
MATHCompareFunc |  | Comparison function type that is set when using quicksort.

### Fast Fourier Transforms

MATH_MakeFFTSinTable |  | This creates the sine value table for the fast Fourier transform.
MATH_FFT |  | This applies the fast Fourier transform on complex number sequences.
MATH_IFFT |  | This applies the inverse fast Fourier transform on the complex number sequences.
MATH_FFTReal |  | This applies the fast Fourier transform on the real number sequences.
MATH_IFFTReal |  | This performs the inverse fast Fourier transform on the real number sequence.

### Hash Value-Related Functions

MATH_Checksum*Init |  | Initializes the context structure for calculation of hash values based on checksums.
MATH_Checksum*Update |  | Updates the hash value based on checksums with the input data.
MATH_Checksum*GetHash |  | Gets the hash value based on checksums from the context structure.
MATHChecksum*Context |  | The context structure used for calculating hash based on checksums.
MATH_CalcChecksum* |  | The function that calculates hash value based on checksums using one function.
MATH_CRC*InitTable |  | Initializes the table used for calculating hash value based on CRCs.
MATH_CRC*Init |  | Initializes the context structure for calculation of hash values based on CRCs.
MATH_CRC*Update |  | Updates the hash value based on CRCs with the input data.
MATH_CRC*GetHash |  | Gets the hash value based on CRCs from the context structure.
MATHCRC*Table |  | The table structure used for calculating hash values based on CRCs.
MATHCRC*Context |  | The context structure used for calculating hash based on CRCs.
MATH_CalcCRC* |  | The utility function that calculates hash values based on CRCs using one function.

### Message Digest Functions

MATH_SHA1Init |  | Initializes the context structure used for message digest calculation based on SHA1.
MATH_SHA1Update |  | Updates the SHA1-based message digest value using input data.
MATH_SHA1GetHash |  | Gets the SHA1-based message digest value from the context structure.
MATHSHA1Context |  | The context structure used for message digest calculation based on SHA1.
MATH_CalcSHA1 |  | Utility function that calculates message digest values based on SHA1 using one function.
MATH_CalcHMACSHA1 |  | Calculates keyed hash values based on HMAC-SHA1.
MATH_SHA256Init |  | Initializes the context structure used for SHA256 message digest calculation.
MATH_SHA256Update |  | Updates the SHA256 message digest value using input data.
MATH_SHA256GetHash |  | Gets the SHA256 message digest value from a context structure.
MATHSHA256Context |  | The context structure used for SHA256 message digest calculation.
MATH_CalcSHA256 |  | Utility function that allows SHA256 message digest calculation to be performed with a single function call.
MATH_CalcHMACSHA256 |  | Calculates HMAC-SHA256 keyed hash values.

CONFIDENTIAL