# Linear Interpolation

float16_t riscv_linear_interp_f16(riscv_linear_interp_instance_f16 *S, float16_t x)
float32_t riscv_linear_interp_f32(riscv_linear_interp_instance_f32 *S, float32_t x)
q15_t riscv_linear_interp_q15(const q15_t *pYData, q31_t x, uint32_t nValues)
q31_t riscv_linear_interp_q31(const q31_t *pYData, q31_t x, uint32_t nValues)
q7_t riscv_linear_interp_q7(const q7_t *pYData, q31_t x, uint32_t nValues)
group LinearInterpolate

Linear interpolation is a method of curve fitting using linear polynomials. Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line.

A Linear Interpolate function calculates an output value(y), for the input(x) using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values)

Algorithm:

This set of functions implements Linear interpolation process for Q7, Q15, Q31, and floating-point data types. The functions operate on a single sample of data and each call to the function returns a single processed value. `S` points to an instance of the Linear Interpolate function data structure. `x` is the input sample value. The functions returns the output value.

if x is outside of the table boundary, Linear interpolation returns first value of the table if x is below input range and returns last value of table if x is above range.

Functions

float16_t riscv_linear_interp_f16(riscv_linear_interp_instance_f16 *S, float16_t x)

Process function for the floating-point Linear Interpolation Function.

Parameters
• S[inout] is an instance of the floating-point Linear Interpolation structure

• x[in] input sample to process

Returns

y processed output sample.

float32_t riscv_linear_interp_f32(riscv_linear_interp_instance_f32 *S, float32_t x)

Process function for the floating-point Linear Interpolation Function.

Parameters
• S[inout] is an instance of the floating-point Linear Interpolation structure

• x[in] input sample to process

Returns

y processed output sample.

q15_t riscv_linear_interp_q15(const q15_t *pYData, q31_t x, uint32_t nValues)

Process function for the Q15 Linear Interpolation Function.

Input sample `x` is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. This function can support maximum of table size 2^12.

Parameters
• pYData[in] pointer to Q15 Linear Interpolation table

• x[in] input sample to process

• nValues[in] number of table values

Returns

y processed output sample.

q31_t riscv_linear_interp_q31(const q31_t *pYData, q31_t x, uint32_t nValues)

Process function for the Q31 Linear Interpolation Function.

Input sample `x` is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. This function can support maximum of table size 2^12.

Parameters
• pYData[in] pointer to Q31 Linear Interpolation table

• x[in] input sample to process

• nValues[in] number of table values

Returns

y processed output sample.

q7_t riscv_linear_interp_q7(const q7_t *pYData, q31_t x, uint32_t nValues)

Process function for the Q7 Linear Interpolation Function.

Input sample `x` is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. This function can support maximum of table size 2^12.

Parameters
• pYData[in] pointer to Q7 Linear Interpolation table

• x[in] input sample to process

• nValues[in] number of table values

Returns

y processed output sample.