Hide navigation sidebar
Hide table of contents sidebar
Back to top
Toggle table of contents sidebar

# BFP API quick reference

The tables below list the functions of the block floating-point API. The “EW” column indicates whether the operation acts element-wise.

The “Signature” column is intended as a hint which quickly conveys the kind of the conceptual inputs to and outputs from the operation. The signatures are only intended to convey how many (conceptual) inputs and outputs there are, and their dimensionality.

The functions themselves will typically take more arguments than these signatures indicate. Check the function’s full documentation to get more detailed information.

The following symbols are used in the signatures:

Symbol | Description
--- | ---
\(\mathbb{S}\) | A scalar input or output value.
\(\mathbb{V}\) | A vector-valued input or output.
\(\mathbb{M}\) | A matrix-valued input or output.
\(\varnothing\) | Placeholder indicating no input or output.

For example, the operation signature \((\mathbb{V \times V \times S}) \to \mathbb{V}\) indicates the operation takes two vector inputs and a scalar input, and the output is a vector.

- 32-Bit BFP Ops

- 16-Bit BFP Ops

- Complex 32-Bit BFP Ops

- Complex 16-Bit BFP Ops

## 32-Bit BFP API quick reference

Table 3 32-Bit BFP API - quick reference
Function | EW | Signature | Brief
--- | --- | --- | ---
`bfp_s32_init()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Initialize (static)
`bfp_s32_alloc()` |  | \(\varnothing \to \mathbb{V}\) | Initialize (dynamic)
`bfp_s32_dealloc()` |  | \(\mathbb{V} \to \mathbb{\varnothing}\) | Deinitialize
`bfp_s32_set()` | x | \((\mathbb{V \times S}) \to \mathbb{V}\) | Set All Elements
`bfp_s32_use_exponent()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Force Exponent
`bfp_s32_headroom()` |  | \(\mathbb{V} \to \mathbb{S}\) | Get Headroom
`bfp_s32_shl()` | x | \((\mathbb{V \times S}) \to \mathbb{V}\) | Shift Mantissas
`bfp_s32_add()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Add Vector
`bfp_s32_add_scalar()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Add Scalar
`bfp_s32_sub()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Subtract Vector
`bfp_s32_mul()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Multiply Vector
`bfp_s32_macc()` | x | \((\mathbb{V \times V \times V}) \to \mathbb{V}\) | Multiply-Accumulate
`bfp_s32_nmacc()` | x | \((\mathbb{V \times V \times V}) \to \mathbb{V}\) | Negated Multiply-Accumulate
`bfp_s32_scale()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Multiply Scalar
`bfp_s32_abs()` | x | \(\mathbb{V} \to \mathbb{V}\) | Absolute Values
`bfp_s32_sum()` |  | \(\mathbb{V} \to \mathbb{S}\) | Sum Elements
`bfp_s32_dot()` |  | \((\mathbb{V \times V}) \to \mathbb{S}\) | Inner Product
`bfp_s32_clip()` | x | \((\mathbb{V \times S \times S}) \to \mathbb{V}\) | Clip Bounds
`bfp_s32_rect()` | x | \(\mathbb{V} \to \mathbb{V}\) | Rectify Elements
`bfp_s32_to_bfp_s16()` |  | \(\mathbb{V} \to \mathbb{V}\) | Convert to 16-bit
`bfp_s32_sqrt()` | x | \(\mathbb{V} \to \mathbb{V}\) | Square Root
`bfp_s32_inverse()` | x | \(\mathbb{V} \to \mathbb{V}\) | Multiplicative Inverse
`bfp_s32_abs_sum()` |  | \(\mathbb{V} \to \mathbb{S}\) | Absolute Sum Elements
`bfp_s32_mean()` |  | \(\mathbb{V} \to \mathbb{S}\) | Vector Mean Value
`bfp_s32_energy()` |  | \(\mathbb{V} \to \mathbb{S}\) | Vector Energy
`bfp_s32_rms()` |  | \(\mathbb{V} \to \mathbb{S}\) | Vector RMS Value
`bfp_s32_max()` |  | \(\mathbb{V} \to \mathbb{S}\) | Vector Max Element
`bfp_s32_min()` |  | \(\mathbb{V} \to \mathbb{S}\) | Vector Min Element
`bfp_s32_max_elementwise()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Elementwise Max
`bfp_s32_min_elementwise()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Elementwise Min
`bfp_s32_argmax()` |  | \(\mathbb{V} \to \mathbb{S}\) | Max Element Index
`bfp_s32_argmin()` |  | \(\mathbb{V} \to \mathbb{S}\) | Min Element Index
`bfp_s32_convolve_valid()` |  | \((\mathbb{V \times V}) \to \mathbb{V}\) | Convolve With Kernel (Valid mode)
`bfp_s32_convolve_same()` |  | \((\mathbb{V \times V}) \to \mathbb{V}\) | Convolve With Kernel (Same mode)

## 16-Bit BFP API quick reference

Table 4 16-Bit BFP API - quick reference
Function | EW | Signature | Brief
--- | --- | --- | ---
`bfp_s16_init()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Initialize (static)
`bfp_s16_alloc()` |  | \(\varnothing \to \mathbb{V}\) | Initialize (dynamic)
`bfp_s16_dealloc()` |  | \(\mathbb{V} \to \mathbb{\varnothing}\) | Deinitialize
`bfp_s16_set()` | x | \((\mathbb{V \times S}) \to \mathbb{V}\) | Set All Elements
`bfp_s16_use_exponent()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Force Exponent
`bfp_s16_headroom()` |  | \(\mathbb{V} \to \mathbb{S}\) | Get Headroom
`bfp_s16_shl()` | x | \((\mathbb{V \times S}) \to \mathbb{V}\) | Shift Mantissas
`bfp_s16_add()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Add Vector
`bfp_s16_add_scalar()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Add Scalar
`bfp_s16_sub()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Subtract Vector
`bfp_s16_mul()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Multiply Vector
`bfp_s16_macc()` | x | \((\mathbb{V \times V \times V}) \to \mathbb{V}\) | Multiply-Accumulate
`bfp_s16_nmacc()` | x | \((\mathbb{V \times V \times V}) \to \mathbb{V}\) | Negated Multiply-Accumulate
`bfp_s16_scale()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Multiply Scalar
`bfp_s16_abs()` | x | \(\mathbb{V} \to \mathbb{V}\) | Absolute Values
`bfp_s16_sum()` |  | \(\mathbb{V} \to \mathbb{S}\) | Sum Elements
`bfp_s16_dot()` |  | \((\mathbb{V \times V}) \to \mathbb{S}\) | Inner Product
`bfp_s16_clip()` | x | \((\mathbb{V \times S \times S}) \to \mathbb{V}\) | Clip Bounds
`bfp_s16_rect()` | x | \(\mathbb{V} \to \mathbb{V}\) | Rectify Elements
`bfp_s16_to_bfp_s32()` | x | \(\mathbb{V} \to \mathbb{V}\) | Convert to 32-bit
`bfp_s16_sqrt()` | x | \(\mathbb{V} \to \mathbb{V}\) | Square Root
`bfp_s16_inverse()` | x | \(\mathbb{V} \to \mathbb{V}\) | Multiplicative Inverse
`bfp_s16_abs_sum()` |  | \(\mathbb{V} \to \mathbb{V}\) | Absolute Sum Elements
`bfp_s16_mean()` |  | \(\mathbb{V} \to \mathbb{V}\) | Vector Mean Value
`bfp_s16_energy()` |  | \(\mathbb{V} \to \mathbb{S}\) | Vector Energy
`bfp_s16_rms()` |  | \(\mathbb{V} \to \mathbb{S}\) | Vector RMS Value
`bfp_s16_max()` |  | \(\mathbb{V} \to \mathbb{S}\) | Vector Max Element
`bfp_s16_min()` |  | \(\mathbb{V} \to \mathbb{S}\) | Vector Min Element
`bfp_s16_max_elementwise()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Elementwise Max
`bfp_s16_min_elementwise()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Elementwise Min
`bfp_s16_argmax()` |  | \(\mathbb{V} \to \mathbb{S}\) | Max Element Index
`bfp_s16_argmin()` |  | \(\mathbb{V} \to \mathbb{S}\) | Min Element Index
`bfp_s16_accumulate()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Elementwise Accumulate

## Complex 32-bit BFP API quick reference

Table 5 Complex 32-Bit BFP API - quick reference
Function | EW | Signature | Brief
--- | --- | --- | ---
`bfp_complex_s32_init()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Initialize (static)
`bfp_complex_s32_alloc()` |  | \(\varnothing \to \mathbb{V}\) | Initialize (dynamic)
`bfp_complex_s32_dealloc()` |  | \(\mathbb{V} \to \mathbb{\varnothing}\) | Deinitialize
`bfp_complex_s32_set()` | x | \((\mathbb{V \times S}) \to \mathbb{V}\) | Set All Elements
`bfp_complex_s32_use_exponent()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Force Exponent
`bfp_complex_s32_headroom()` |  | \(\mathbb{V} \to \mathbb{S}\) | Get Headroom
`bfp_complex_s32_shl()` | x | \((\mathbb{V \times S}) \to \mathbb{V}\) | Shift Mantissas
`bfp_complex_s32_real_mul()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Real Vector Multiply
`bfp_complex_s32_mul()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Complex Vector Multiply
`bfp_complex_s32_conj_mul()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Complex Vector Conjugate Multiply
`bfp_complex_s32_macc()` | x | \((\mathbb{V \times V \times V}) \to \mathbb{V}\) | Complex Vector Multiply-Accumulate
`bfp_complex_s32_nmacc()` | x | \((\mathbb{V \times V \times V}) \to \mathbb{V}\) | Complex Vector Negated Multiply-Accumulate
`bfp_complex_s32_conj_macc()` | x | \((\mathbb{V \times V \times V}) \to \mathbb{V}\) | Complex Vector Conjugate Multiply-Accumulate
`bfp_complex_s32_conj_nmacc()` | x | \((\mathbb{V \times V \times V}) \to \mathbb{V}\) | Complex Vector Negated Conjugate Multiply-Accumulate
`bfp_complex_s32_real_scale()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Real Scalar Multiply
`bfp_complex_s32_scale()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Complex Scalar Multiply
`bfp_complex_s32_add()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Complex Vector Add
`bfp_complex_s32_add_scalar()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Complex Scalar Add
`bfp_complex_s32_sub()` |  | \((\mathbb{V \times V}) \to \mathbb{V}\) | Complex Vector Subtract
`bfp_complex_s32_to_bfp_complex_s16()` | x | \(\mathbb{V} \to \mathbb{V}\) | Convert to 16-bit
`bfp_complex_s32_squared_mag()` | x | \(\mathbb{V} \to \mathbb{V}\) | Squared Magnitude
`bfp_complex_s32_mag()` | x | \(\mathbb{V} \to \mathbb{V}\) | Magnitude
`bfp_complex_s32_sum()` |  | \(\mathbb{V} \to \mathbb{S}\) | Vector Sum
`bfp_complex_s32_conjugate()` | x | \(\mathbb{V} \to \mathbb{V}\) | Complex Conjugate
`bfp_complex_s32_energy()` |  | \(\mathbb{V} \to \mathbb{S}\) | Vector Energy
`bfp_complex_s32_make()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Construct Complex From Real and Imaginary
`bfp_complex_s32_real_part()` | x | \(\mathbb{V} \to \mathbb{V}\) | Real Part
`bfp_complex_s32_imag_part()` | x | \(\mathbb{V} \to \mathbb{V}\) | Imaginary Part

## Complex 16-bit BFP API quick reference

Table 6 Complex 16-Bit BFP API - quick reference
Function | EW | Signature | Brief
--- | --- | --- | ---
`bfp_complex_s16_init()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Initialize (static)
`bfp_complex_s16_alloc()` |  | \(\varnothing \to \mathbb{V}\) | Initialize (dynamic)
`bfp_complex_s16_dealloc()` |  | \(\mathbb{V} \to \mathbb{\varnothing}\) | Deinitialize
`bfp_complex_s16_set()` | x | \((\mathbb{V \times S}) \to \mathbb{V}\) | Set All Elements
`bfp_complex_s16_use_exponent()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Force Exponent
`bfp_complex_s16_headroom()` |  | \(\mathbb{V} \to \mathbb{S}\) | Get Headroom
`bfp_complex_s16_shl()` | x | \((\mathbb{V \times S}) \to \mathbb{V}\) | Shift Mantissas
`bfp_complex_s16_real_mul()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Real Vector Multiply
`bfp_complex_s16_mul()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Complex Vector Multiply
`bfp_complex_s16_conj_mul()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Complex Vector Conjugate Multiply
`bfp_complex_s16_macc()` | x | \((\mathbb{V \times V \times V}) \to \mathbb{V}\) | Complex Vector Multiply-Accumulate
`bfp_complex_s16_nmacc()` | x | \((\mathbb{V \times V \times V}) \to \mathbb{V}\) | Complex Vector Negated Multiply-Accumulate
`bfp_complex_s16_conj_macc()` | x | \((\mathbb{V \times V \times V}) \to \mathbb{V}\) | Complex Vector Conjugate Multiply-Accumulate
`bfp_complex_s16_conj_nmacc()` | x | \((\mathbb{V \times V \times V}) \to \mathbb{V}\) | Complex Vector Negated Conjugate Multiply-Accumulate
`bfp_complex_s16_real_scale()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Real Scalar Multiply
`bfp_complex_s16_scale()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Complex Scalar Multiply
`bfp_complex_s16_add()` | x | \((\mathbb{V \times V}) \to \mathbb{V}\) | Complex Vector Add
`bfp_complex_s16_add_scalar()` |  | \((\mathbb{V \times S}) \to \mathbb{V}\) | Complex Scalar Add
`bfp_complex_s16_sub()` |  | \((\mathbb{V \times V}) \to \mathbb{V}\) | Complex Vector Subtract
`bfp_complex_s16_to_bfp_complex_s32()` | x | \(\mathbb{V} \to \mathbb{V}\) | Convert to 32-bit
`bfp_complex_s16_squared_mag()` | x | \(\mathbb{V} \to \mathbb{V}\) | Squared Magnitude
`bfp_complex_s16_sum()` |  | \(\mathbb{V} \to \mathbb{S}\) | Vector Sum
`bfp_complex_s16_mag()` | x | \(\mathbb{V} \to \mathbb{V}\) | Magnitude
`bfp_complex_s16_conjugate()` | x | \(\mathbb{V} \to \mathbb{V}\) | Complex Conjugate
`bfp_complex_s16_energy()` |  | \(\mathbb{V} \to \mathbb{S}\) | Vector Energy