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.