# List of Math Calls

# Addition Calls

These calls add two values of the same data type together and return the result in the same data type.

## Integers

- Add32() Adds 32-bit integers.
- `Add64()` Adds 64-bit integers.

## Fractions

- `AddF14()` Adds 2.14 format fixed-point fractions.
- `AddF16()` Adds 16.16 format fixed-point fractions.
- `AddF30()` Adds 2.30 format fixed-point fractions.
- `AddF32()` Adds 32.32 format fixed-point fractions.
- `AddF60()` Adds 4.60 format fixed-point fractions.

# Subtraction Calls

These calls subtract one value from another and return the result. Both the values and the result are the same data type.

## Integers

- `Sub32()` Subtracts two 32-bit integers.
- `Sub64()` Subtracts two 64-bit integers.

## Fractions

- `SubF14()` Subtracts two 2.14 fractions.
- `SubF16()` Subtracts two 16.16 fractions.
- `SubF30()` Subtracts two 2.30 fractions.
- `SubF32()` Subtracts two 32.32 fractions.
- `SubF60()` Subtracts two 4.60 fractions.

# Division Calls

These calls take two values of the same data type and divide the first by the second to return a quotient and/or a remainder of the same data type.

## Integers

- `DivRemS32()` 32-bit quotient, remainder of a 32-bit division.
- `DivS64()` 64-bit quotient, remainder of a 64-bit division.
- `DivRemU32()` 32-bit quotient, remainder of a 32-bit division.
- `DivU64()` 64-bit quotient, remainder of a 64-bit division.

## Fractions

- `DivSF16()` 16.16 quotient of a 16.16 division.
- `DivRemSF16()` 16.16 quotient, remainder of a 16.16 division.
- `DivUF16()` 16.16 quotient of a 16.16 division.
- `DivRemUF16()` 16.16 quotient, remainder of a 16.16 division.

# Same-Product Multiplication Calls

These calls multiply two values that can be numbers, vectors, or matrices. They return products of the same type as the multipliers.

## Cross-Product Multiplication

- `Cross3_F16()` 16.16 cross-product of 2 vectors of 16.16 values.

## Integer Multiplication

- `Mul32()` Multiplies two 32-bit integers; 32-bit integer result.
- `Mul64()` Multiplies two 64-bit integers; 64-bit integer result.

## Fraction Multiplication

- `MulF14()` Multiplies two 2.14 fractions; 2.14 fraction result.
- `MulSF16()` Multiplies two signed 16.16 fractions; 16.16 result.
- `MulUF16()` Multiplies two unsigned 16.16 fractions; 16.16 result.

## Scalar Multiplication

- `MulScalarF16()` Multiplies 16.16 scalar by an array of 16.16 values; 16.16 array result.

## Vector by Vector Multiplication

- `MulManyF16()` Multiplies an array of 16.16 values by another array of 16.16 values.

## Matrix by Matrix Multiplication

These calls multiply a matrix within an object structure by an external matrix.

- `MulMat33Mat33_F16()` Multiplies two 3x3 matrices of 16.16 values.
- `MulMat44Mat44_F16()`Multiplies two 4x4 matrices of 16.16 values.
- `MulObjectMat33_F16()`Multiplies matrix within an object structure by an external 3x3 matrix of 16.16 values.
- `MulObjectMat44_F16()`Multiplies matrix within an object structure by an external 4x4 matrix of 16.16 values.

## Vector by Matrix Multiplication

These calls multiply many vectors within an object structure by an external matrix.

- `MulManyVec3Mat33_F16()` Multiplies 16.16 vector(s) by a 3x3 matrix of 16.16 values.
- `MulManyVec4Mat44_F16()` Multiplies 16.16 vector(s) by a 4x4 matrix of 16.16 values.
- `MulVec3Mat33_F16()` Multiplies a 16.16 vector and a 3x3 matrix.
- `MulVec4Mat44_F16()` Multiplies a 16.16 vector and a 4x4 matrix.
- `MulObjectVec3Mat33_F16()` Multiplies many 16.16 vectors within an object structure by a 3x3 matrix of 16.16 values.
- `MulObjectVec4Mat44_F16()` Multiplies many 16.16 vectors within an object structure by a 4x4 matrix of 16.16 values.
- `MulVec3Mat33DivZ_F16()` Multiplies a 3x3 matrix of 16.16 fractions by a 3-coordinate vector of 16.16 values, then multiply the x and y elements of the results vector by the ratio n/z.
- `MulManyVec3Mat33DivZ_F16()` Multiplies a 3x3 matrix of 16.16 fractions by one or more 3-coordinate vectors of 16.16 values, then multiply the x and y elements of the result vector by the ration n/z.

# Different-Product Multiplication Calls

These calls multiply two values and return a product of a different type than the arguments.

## Standard Multiplication

- `MulS32_64()` Multiplies two 32-bit integers; 64-bit result.
- `MulSF16_F32()` Multiplies two signed 16.16 numbers; 32.32 result.
- `MulSF30_F60()` Multiplies two signed 2.30 numbers; a 4.60 result.
- `MulU32_64()` Multiplies two unsigned 32-bit integers; 64-bit result.
- `MulUF16_F32()` Multiplies two unsigned 16.16 numbers; 32.32 result.
- `MulUF30_F60()` Multiplies two unsigned 2.30 numbers; 4.60 result.

## Dot Product Multiplication

- `Dot3_F16()` Dot product of 2 three-coordinate vectors of 16.16 values.
- `Dot4_F16()` Dot product of 2 four-coordinate vectors of 16.16 values.

# Matrix Transposition Calls

These calls transpose matrices.

- `Transpose33_F16()` Transposes a 3x3 matrix of 16.16 values.
- `Transpose44_F16()` Transposes a 4x4 matrix of 16.16 values.

# Geometry Calls

These calls compute geometric functions: sines, cosines, and so on.

## Arctangent

- `Atan2F16()` Arctangent of a ratio.

## Cosines

- `CosF16()` 16.16 cosine of a 16.16 fraction angle.
- `CosF30()` 2.30 cosine of a 16.16 fraction.
- `CosF32()` 32.32 cosine of a 16.16 fraction.

## Sines

- `SinF16()` 16.16 sine of a 16.16 fraction angle.
- `SinF30()` 2.30 sine of a 16.16 fraction.
- `SinF32()` 32.32 sine of a 16.16 fraction.

# Conversion Calls

These calls convert a value in one data type to the corresponding value in another data type.

## Integers to Fractions

- `Convert32_F16()` Converts 32-bit integer to 16.16 fraction.
- `Convert32_F32()` Converts 32-bit integer to 32.32 fraction.

## Integers to Integers

- `ConvertS32_64()` Converts 32-bit integer to 64-bit integer.
- `ConvertU32_64()` Converts unsigned 32-bit integer to unsigned 64-bit integer.

## Fractions to Fractions

- `ConvertF14_F16()` Converts 2.14 fraction to 16.16 fraction.
- `ConvertF16_F14()` Converts 16.16 fraction to 2.14 fraction.
- `ConvertF16_F30()` Converts 16.16 fraction to 2.30 fraction.
- `ConvertF30_F16()` Converts 2.30 fraction to 16.16 fraction.
- `ConvertF32_F16()` Converts 32.32 fraction to 16.16 fraction.
- `ConvertSF16_F32()` Converts 16.16 fraction to 32.32 fraction.
- `ConvertUF16_F32()` Converts unsigned 16.16 fraction to unsigned 32.32 fraction.

## Fraction to Integers

- `ConvertF16_32()` Converts 16.16 fraction to 32-bit integer.

# Comparative Calls

These calls compare two values of the same data type and return a result that is a positive value if the first value is greater than the second, a 0 if the two values are equal, and a negative number if the second value is greater than the first.

### Integers

- `CompareS64()` Compares signed 64-bit integers.
- `CompareU64()` Compares unsigned 64-bit integers.

### Fractions

- `CompareSF32()` Compares signed 32.32 format fractions.
- `CompareSF60()` Compares signed 4.60 format fractions.
- `CompareUF32()` Compares unsigned 32.32 format fractions.
- `CompareUF60()` Compares unsigned 4.60 format fractions.

# One's and Two's Complement Calls

These calls return one's and two's complements of a value.

## Two's Complements

- `Neg32()` Two's complement of a 32-bit integer.
- `NegF14()` Two's complement of a 2.14 fraction.
- `NegF16()` Two's complement of a 16.16 fraction.
- `NegF30()` Two's complement of a 2.30 fraction.
- `Neg64()` Two's complement of a 64-bit integer.
- `NegF32()` Two's complement of a 32.32 number.

## One's Complements

- `Not32()` One's complement of a 32-bit integer.
- `NotF14()` One's complement of a 2.14 fraction.
- `NotF16()` One's complement of a 16.16 fraction.
- `NotF30()` One's complement of a 2.30 fraction.
- `Not64()` One's complement of a 64-bit integer.
- `NotF32()` One's complement of a 32.32 number.

# Reciprocal Calls

These calls return the reciprocal of a number.

- `RecipSF16()` Reciprocal of a signed 16.16 number.
- `RecipUF16()` Reciprocal of an unsigned 16.16 number.

# Squaring and Square Root Calls

These calls return the square or the square root of a number.

## Squares

- `Square64()` Square a 64-bit integer.
- `SquareSF16()` Square a signed 16.16 fraction.
- `SquareUF16()` Square an unsigned 16.16 fraction.

## Square Roots

- `Sqrt32()` Unsigned 32-bit square root of an unsigned 32-bit number.
- `SqrtF16()` 16.16 fraction square root of an unsigned 16.16 number.
- `Sqrt64_32()` 32-bit square root of an unsigned 64-bit integer.
- `SqrtF32_F16()` 16.16 square root of a32.32 fraction.

# Absolue Value

The following calls compute the absolute value of a vector call.

- `AbsVec3_F16` Computes the absolute value of a vector of 16.16 values.
- `AbsVec4_F16` Computes the absolute value of a vector of 16.16 values.