dsplib

Описание

Библиотека elcore50-dsplib содержит референсные реализации функций цифровой обработки сигналов, скалярных, векторных и матричных операций и оптимизированные реализации для архитектуры DSP ELcore-50 математических и матричных операций.

Форматы поддерживаемых данных оптимизированных реализаций: int16, int32, float, double.

API

Состоит из следующих заголовочных файлов:

  • elcore50-dsplib/asm_func.h — функции библиотеки.

  • elcore50-dsplib/reference.h — референсные функции.

adds16()

void adds16(int16_t *src0, int16_t *src1, int16_t *dst, int32_t size)

Описание аргументов функции adds16():

  • src0 — первый входной вектор типа int16.

  • src1 — второй входной вектор типа int16.

  • dst — выходные данные типа int16.

  • size — размер входных данных.

Функция adds16() вычисляет сумму двух векторов типа int16.

adds32()

void adds32(int32_t *src0, int32_t *src1, int32_t *dst, int32_t size)

Описание аргументов функции adds32():

  • src0 — первый входной вектор типа int32.

  • src1 — второй входной вектор типа int32.

  • dst — выходные данные типа int32.

  • size — размер входных данных.

Функция adds32() вычисляет сумму двух векторов типа int32.

add_fl()

void add_fl(float *src0, float *src1, float *dst, int32_t size)

Описание аргументов функции add_fl():

  • src0 — первый входной вектор типа float.

  • src1 — второй входной вектор типа float.

  • dst — выходные данные типа float.

  • size — размер входных данных.

Функция add_fl() вычисляет сумму двух векторов типа float.

add_db()

void add_db(double *src0, double *src1, double *dst, int32_t size)

Описание аргументов функции add_db():

  • src0 — первый входной вектор типа double.

  • src1 — второй входной вектор типа double.

  • dst — выходные данные типа double.

  • size — размер входных данных.

Функция add_db() вычисляет сумму двух векторов типа double.

dotprod()

int32_t dotprod(int16_t *src0, int16_t *src1, int32_t size)

Описание аргументов функции dotprod():

  • src0 — первый входной вектор типа int16.

  • src1 — второй входной вектор типа int16.

  • size — размер входных данных.

Функция dotprod() вычисляет скалярное произведение векторов типа int16. Возвращает число типа int32 — результат скалярного произведения.

dotprod32()

int64_t dotprod32(int32_t *src0, int32_t *src1, int32_t size)

Описание аргументов функции dotprod32():

  • src0 — первый входной вектор типа int32.

  • src1 — второй входной вектор типа int32.

  • size — размер входных данных.

Функция dotprod32() вычисляет скалярное произведение векторов типа int32. Возвращает число типа int64 — результат скалярного произведения.

dotprod_fl()

float dotprod_fl(float *src0, float *src1, int32_t size)

Описание аргументов функции dotprod_fl():

  • src0 — первый входной вектор типа float.

  • src1 — второй входной вектор типа float.

  • size — размер входных данных.

Функция dotprod_fl() вычисляет скалярное произведение векторов типа float. Возвращает число типа float — результат скалярного произведения.

dotprod_db()

double dotprod_db(double *src0, double *src1, int32_t size)

Описание аргументов функции dotprod_db():

  • src0 — первый входной вектор типа double.

  • src1 — второй входной вектор типа double.

  • size — размер входных данных.

Функция dotprod_db() вычисляет скалярное произведение векторов типа double. Возвращает число типа double — результат скалярного произведения.

vecsumsq()

int64_t vecsumsq(int16_t *src0, int32_t size)

Описание аргументов функции vecsumsq():

  • src0 — входной вектор типа int16.

  • size — размер входных данных.

Функция vecsumsq() вычисляет корень из суммы элементов вектора типа int16. Возвращает число типа int64 — корень из суммы элементов.

vecsumsq32()

int64_t vecsumsq32(int32_t *src0, int32_t size)

Описание аргументов функции vecsumsq32():

  • src0 — входной вектор типа int32.

  • size — размер входных данных.

Функция vecsumsq32() вычисляет корень из суммы элементов вектора типа int32. Возвращает число типа int64 — корень из суммы элементов.

vecsumsq_fl()

float vecsumsq_fl(float *src0, int32_t size)

Описание аргументов функции vecsumsq_fl():

  • src0 — входной вектор типа float.

  • size — размер входных данных.

Функция vecsumsq_fl() вычисляет корень из суммы элементов вектора типа float. Возвращает число типа float — корень из суммы элементов.

vecsumsq_db()

double vecsumsq_db(double *src0, int32_t size)

Описание аргументов функции vecsumsq_db():

  • src0 — входной вектор типа double.

  • size — размер входных данных.

Функция vecsumsq_db() вычисляет корень из суммы элементов вектора типа double. Возвращает число типа double — корень из суммы элементов.

neg16()

void neg16(int16_t *src0, int16_t *dst, int32_t size)

Описание аргументов функции neg16():

  • src0 — входной вектор типа int16.

  • dst — выходной вектор типа int16.

  • size — размер входных данных.

Функция neg16() выполняет отрицание элементов вектора типа int16.

neg32()

void neg32(int32_t *src0, int32_t *dst, int32_t size)

Описание аргументов функции neg32():

  • src0 — входной вектор типа int32.

  • dst — выходной вектор типа int32.

  • size — размер входных данных.

Функция neg32() выполняет отрицание элементов вектора типа int32.

neg_fl()

void neg_fl(float *src0, float *dst, int32_t size)

Описание аргументов функции neg_fl():

  • src0 — входной вектор типа float.

  • dst — выходной вектор типа float.

  • size — размер входных данных.

Функция neg_fl() выполняет отрицание элементов вектора типа float.

neg_db()

void neg_db(double *src0, double *dst, int32_t size)

Описание аргументов функции neg_db():

  • src0 — входной вектор типа double.

  • dst — выходной вектор типа double.

  • size — размер входных данных.

Функция neg_db() выполняет отрицание элементов вектора типа double.

w_vec()

void w_vec(int16_t *src0, int16_t *src1, int16_t w, int16_t *dst, int32_t size)

Описание аргументов функции w_vec():

  • src0 — первый входной вектор типа int16.

  • src1 — второй входной вектор типа int16.

  • w — весовой коэффициент.

  • dst — выходной вектор типа int16.

  • size — размер входных данных.

Функция w_vec() выполняет сложение элементов первого вектора со взвешенными элементами второго вектора для типа int16.

w_vec32()

void w_vec32(int32_t *src0, int32_t *src1, int32_t w, int32_t *dst, int32_t size)

Описание аргументов функции w_vec32():

  • src0 — первый входной вектор типа int32.

  • src1 — второй входной вектор типа int32.

  • w — весовой коэффициент.

  • dst — выходной вектор типа int32.

  • size — размер входных данных.

Функция w_vec32() выполняет сложение элементов первого вектора со взвешенными элементами второго вектора для типа int32.

w_vec_fl()

void w_vec_fl(float *src0, float *src1, float w, float *dst, int32_t size)

Описание аргументов функции w_vec_fl():

  • src0 — первый входной вектор типа float.

  • src1 — второй входной вектор типа float.

  • w — весовой коэффициент.

  • dst — выходной вектор типа float.

  • size — размер входных данных.

Функция w_vec_fl() выполняет сложение элементов первого вектора со взвешенными элементами второго вектора для типа float.

w_vec_db()

void w_vec_db(double *src0, double *src1, double w, double *dst, int32_t size)

Описание аргументов функции w_vec_db():

  • src0 — первый входной вектор типа double.

  • src1 — второй входной вектор типа double.

  • w — весовой коэффициент.

  • dst — выходной вектор типа double.

  • size — размер входных данных.

Функция w_vec_db() выполняет сложение элементов первого вектора со взвешенными элементами второго вектора для типа double.

dotp_sqr()

int32_t dotp_sqr(int32_t G, int16_t *src0, int16_t *src1, int32_t *r, int32_t size)

Описание аргументов функции dotp_sqr():

  • G — коэффициент, который суммируется с результатом суммы квадратов.

  • src0 — первый входной вектор типа int16.

  • src1 — второй входной вектор типа int16.

  • r — скалярное произведение векторов.

  • size — размер входных данных.

Функция dotp_sqr() вычисляет сумму квадратов элементов второго вектора и скалярное произведение векторов типа int16. Возвращает число типа int32 — сумму квадратов элементов второго вектора.

dotp_sqr32()

int64_t dotp_sqr32(int64_t G, int32_t *src0, int32_t *src1, int64_t *r, int32_t size)

Описание аргументов функции dotp_sqr32():

  • G — коэффициент, который суммируется с результатом суммы квадратов.

  • src0 — первый входной вектор типа int32.

  • src1 — второй входной вектор типа int32.

  • r — скалярное произведение векторов.

  • size — размер входных данных.

Функция dotp_sqr32() вычисляет сумму квадратов элементов второго вектора и скалярное произведение векторов типа int32. Возвращает число типа int64 — сумму квадратов элементов второго вектора.

dotp_sqr_fl()

float dotp_sqr_fl(float G, float *src0, float *src1, float *r, int32_t size)

Описание аргументов функции dotp_sqr_fl():

  • G — коэффициент, который суммируется с результатом суммы квадратов.

  • src0 — первый входной вектор типа float.

  • src1 — второй входной вектор типа float.

  • r — скалярное произведение векторов.

  • size — размер входных данных.

Функция dotp_sqr_fl() вычисляет сумму квадратов элементов второго вектора и скалярное произведение векторов типа float. Возвращает число типа float — сумму квадратов элементов второго вектора.

dotp_sqr_db()

double dotp_sqr_db(double G, double *src0, double *src1, double *r, int32_t size)

Описание аргументов функции dotp_sqr_db():

  • G — коэффициент, который суммируется с результатом суммы квадратов.

  • src0 — первый входной вектор типа double.

  • src1 — второй входной вектор типа double.

  • r — скалярное произведение векторов.

  • size — размер входных данных.

Функция dotp_sqr_db() вычисляет сумму квадратов элементов второго вектора и скалярное произведение векторов типа double. Возвращает число типа double — сумму квадратов элементов второго вектора.

maxval()

int16_t maxval(int16_t *src0, int32_t size)

Описание аргументов функции maxval():

  • src0 — входной вектор типа int16.

  • size — размер входных данных.

Функция maxval() выполняет поиск значения максимального элемента в векторе типа int16. Возвращает число типа int16 — значение максимума.

maxval32()

int32_t maxval32(int32_t *src0, int32_t size)

Описание аргументов функции maxval32():

  • src0 — входной вектор типа int32.

  • size — размер входных данных.

Функция maxval32() выполняет поиск значения максимального элемента в векторе типа int32. Возвращает число типа int32 — значение максимума.

maxval_fl()

float maxval_fl(float *src0, int32_t size)

Описание аргументов функции maxval_fl():

  • src0 — входной вектор типа float.

  • size — размер входных данных.

Функция maxval_fl() выполняет поиск значения максимального элемента в векторе типа float. Возвращает число типа float — значение максимума.

maxval_db()

double maxval_db(double *src0, int32_t size)

Описание аргументов функции maxval_db():

  • src0 — входной вектор типа double.

  • size — размер входных данных.

Функция maxval_db() выполняет поиск значения максимального элемента в векторе типа double. Возвращает число типа double — значение максимума.

minval()

int16_t minval(int16_t *src0, int32_t size)

Описание аргументов функции minval():

  • src0 — входной вектор типа int16.

  • size — размер входных данных.

Функция minval() выполняет поиск значения минимального элемента в векторе типа int16. Возвращает число типа int16 — значение минимума.

minval32()

int32_t minval32(int32_t *src0, int32_t size)

Описание аргументов функции minval32():

  • src0 — входной вектор типа int32.

  • size — размер входных данных.

Функция minval32() выполняет поиск значения минимального элемента в векторе типа int32. Возвращает число типа int32 — значение минимума.

minval_fl()

float minval_fl(float *src0, int32_t size)

Описание аргументов функции minval_fl():

  • src0 — входной вектор типа float.

  • size — размер входных данных.

Функция minval_fl() выполняет поиск значения минимального элемента в векторе типа float. Возвращает число типа float — значение минимума.

minval_db()

double minval_db(double *src0, int32_t size)

Описание аргументов функции minval_db():

  • src0 — входной вектор типа double.

  • size — размер входных данных.

Функция minval_db() выполняет поиск значения минимального элемента в векторе типа double. Возвращает число типа double — значение минимума.

mat_trans_scalar()

void mat_trans_scalar(int16_t *src0, int32_t rows, int32_t columns, int16_t *dst)

Описание аргументов функции mat_trans_scalar():

  • src0 — входная матрица типа int16.

  • rows — количество строк матрицы.

  • columns — количество столбцов матрицы.

  • dst — выходная матрица типа int16.

Функция mat_trans_scalar() выполняет транспонирование матрицы типа int16.

mat_trans_scalar_s32()

void mat_trans_scalar_s32(int32_t *src0, int32_t rows, int32_t columns, int32_t *dst)

Описание аргументов функции mat_trans_scalar_s32():

  • src0 — входная матрица типа int32.

  • rows — количество строк матрицы.

  • columns — количество столбцов матрицы.

  • dst — выходная матрица типа int32.

Функция mat_trans_scalar_s32() выполняет транспонирование матрицы типа int32.

mat_trans_scalar_fl()

void mat_trans_scalar_fl(float *src0, int32_t rows, int32_t columns, float *dst)

Описание аргументов функции mat_trans_scalar_fl():

  • src0 — входная матрица типа float.

  • rows — количество строк матрицы.

  • columns — количество столбцов матрицы.

  • dst — выходная матрица типа float.

Функция mat_trans_scalar_fl() выполняет транспонирование матрицы типа float.

mat_trans_scalar_db()

void mat_trans_scalar_db(double *src0, int32_t rows, int32_t columns, double *dst)

Описание аргументов функции mat_trans_scalar_db():

  • src0 — входная матрица типа double.

  • rows — количество строк матрицы.

  • columns — количество столбцов матрицы.

  • dst — выходная матрица типа double.

Функция mat_trans_scalar_db() выполняет транспонирование матрицы типа double.

mat_mul()

void mat_mul(int16_t *src0, int32_t rows0, int32_t columns0, int16_t *src1, int32_t columns1, int16_t *dst, int32_t shift)

Описание аргументов функции mat_mul():

  • src0 — первая входная матрица типа int16.

  • rows0 — количество строк первой матрицы.

  • columns0 — количество столбцов первой матрицы.

  • src1 — вторая входная матрица типа int16.

  • rows1 — количество строк второй матрицы.

  • columns1 — количество столбцов второй матрицы.

  • dst — выходная матрица типа int16.

  • shift — сдвиг результата.

Функция mat_mul() выполняет умножение матриц типа int16.

mat_mul32()

void mat_mul32(int32_t *src0, int32_t rows0, int32_t columns0, int32_t *src1, int32_t columns1, int32_t *dst, int32_t shift)

Описание аргументов функции mat_mul32():

  • src0 — первая входная матрица типа int32.

  • rows0 — количество строк первой матрицы.

  • columns0 — количество столбцов первой матрицы.

  • src1 — вторая входная матрица типа int32.

  • rows1 — количество строк второй матрицы.

  • columns1 — количество столбцов второй матрицы.

  • dst — выходная матрица типа int32.

  • shift — сдвиг результата.

Функция mat_mul32() выполняет умножение матриц типа int32.

mat_mul_fl()

void mat_mul_fl(float *src0, int32_t rows0, int32_t columns0, float *src1, int32_t columns1, float *dst)

Описание аргументов функции mat_mul_fl():

  • src0 — первая входная матрица типа float.

  • rows0 — количество строк первой матрицы.

  • columns0 — количество столбцов первой матрицы.

  • src1 — вторая входная матрица типа float.

  • rows1 — количество строк второй матрицы.

  • columns1 — количество столбцов второй матрицы.

  • dst — выходная матрица типа float.

Функция mat_mul_fl() выполняет умножение матриц типа float.

mat_mul_db()

void mat_mul_db(double *src0, int32_t rows0, int32_t columns0, double *src1, int32_t columns1, double *dst)

Описание аргументов функции mat_mul_db():

  • src0 — первая входная матрица типа double.

  • rows0 — количество строк первой матрицы.

  • columns0 — количество столбцов первой матрицы.

  • src1 — вторая входная матрица типа double.

  • rows1 — количество строк второй матрицы.

  • columns1 — количество столбцов второй матрицы.

  • dst — выходная матрица типа double.

Функция mat_mul_db() выполняет умножение матриц типа double.

mat_mul_cplx()

void mat_mul_cplx(int16_t *src0, int32_t rows0, int32_t columns0, int16_t *src1, int32_t columns1, int16_t *dst, int32_t shift)

Описание аргументов функции mat_mul_cplx():

  • src0 — первая входная матрица типа int16 (cint16).

  • rows0 — количество строк первой матрицы.

  • columns0 — количество столбцов первой матрицы.

  • src1 — вторая входная матрица типа int16 (cint16).

  • rows1 — количество строк второй матрицы.

  • columns1 — количество столбцов второй матрицы.

  • dst — выходная матрица типа int16 (cint16).

  • shift — сдвиг результата.

Функция mat_mul_cplx() выполняет комплексное умножение матриц типа int16 (cint16).

mat_mul_cplx32()

void mat_mul_cplx32(int32_t *src0, int32_t rows0, int32_t columns0, int32_t *src1, int32_t columns1, int32_t *dst, int32_t shift)

Описание аргументов функции mat_mul_cplx32():

  • src0 — первая входная матрица типа int32 (cint32).

  • rows0 — количество строк первой матрицы.

  • columns0 — количество столбцов первой матрицы.

  • src1 — вторая входная матрица типа int32 (cint32).

  • rows1 — количество строк второй матрицы.

  • columns1 — количество столбцов второй матрицы.

  • dst — выходная матрица типа int32 (cint32).

  • shift — сдвиг результата.

Функция mat_mul_cplx32() выполняет комплексное умножение матриц типа int32 (cint32).

mat_mul_cplx_fl()

void mat_mul_cplx_fl(float *src0, int32_t rows0, int32_t columns0, float *src1, int32_t columns1, float *dst)

Описание аргументов функции mat_mul_cplx_fl():

  • src0 — первая входная матрица типа float (cfloat).

  • rows0 — количество строк первой матрицы.

  • columns0 — количество столбцов первой матрицы.

  • src1 — вторая входная матрица типа float (cfloat).

  • rows1 — количество строк второй матрицы.

  • columns1 — количество столбцов второй матрицы.

  • dst — выходная матрица типа float (cfloat).

Функция mat_mul_cplx_fl() выполняет комплексное умножение матриц типа float (cfloat).

mat_mul_cplx_db()

void mat_mul_cplx_db(double *src0, int32_t rows0, int32_t columns0, double *src1, int32_t columns1, double *dst)

Описание аргументов функции mat_mul_cplx_db():

  • src0 — первая входная матрица типа double (cdouble).

  • rows0 — количество строк первой матрицы.

  • columns0 — количество столбцов первой матрицы.

  • src1 — вторая входная матрица типа double (cdouble).

  • rows1 — количество строк второй матрицы.

  • columns1 — количество столбцов второй матрицы.

  • dst — выходная матрица типа double (cdouble).

Функция mat_mul_cplx_db() выполняет комплексное умножение матриц типа double (cdouble).

recip16()

void recip16(int16_t *x, int16_t *rfrac, int16_t *rexp, int32_t size)

Описание аргументов функции recip16():

  • x — входной вектор типа int16.

  • rfrac — выходной вектор типа int16 (нормализованное значение).

  • rexp — выходной вектор типа int16 (значение степени экспоненты).

  • size — размер входных массивов.

Функция recip16() вычисляет обратную величину для чисел с фиксированной точкой типа int16.

mul32()

void mul32(int32_t *src0, int32_t *src1, int32_t *dst, int32_t size)

Описание аргументов функции mul32():

  • src0 — первый входной вектор типа int32.

  • src1 — второй входной вектор типа int32.

  • dst — выходной вектор типа int32.

  • size — размер входных массивов.

Функция mul32() выполняет поэлементное умножение чисел для типа int32.