nmpp: nmpp

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
nmpp
Полный список групп.
[уровень детализации 12345]
▼ Целочисленные функции |
▼ Векторные функции |
► Функции поддержки |
nmppsMalloc | Распределение памяти для векторов библиотеки
nmppsFree | Освобождение памяти для векторов
nmppsAddr_ | Возвращает адрес ячейки памяти, содержащей указанный элемент.Реализация для процессора NeuroMatrix возвращает адрес, выровненный в памяти на 32 бита
nmppsSetVal_ | Модификация элемента вектора
nmppsGetVal_ | Извлекает значение элемента вектора
nmppsGetVal_(return) | Извлекает значение элемента вектора
► Инициализация и копирование |
nmppsSet-инициализация | Функция инициализации элементов массива постоянным значением
nmppsRandUniform | Инициализация массива случайными числами
nmppsRandUniform_ | Генерация случайного числа с равномерным раcпределением
nmppsRamp_ | Инициализация массива элементами арифметической прогрессии
nmppsConvert | Изменение разрядности элементов вектора.Преобразование знаковых данных к меньшей разрядности осуществляется отбрасыванием старших битов. Преобразование знаковых данных к большей разрядности осуществляется c распространением влево старшего (знакового) бита. Преобразование беззнаковых данных к большей разрядности осуществляется добавлением слева старших нулевых битов
nmppsCopy_ | Копирование вектора
nmppsCopyua_ | Копирование вектора с невыровненной байтовой позиции в выровненную
nmppsSwap_ | Перестановка двух векторов.
Vec_ClipRShiftConvert_AddC | Изменение разрядности элементов вектора с клиппированиемПреобразование 32р знаковых данных к восьмиразрядным осуществляется вырезанием битов 16..31.. ,затем клиппированием и вырезанием восьми младших бит реультата. При клиппировании используется глобальая константа типа nm64s с именем _F1CR_16_to_x. По умолчанию, там лежит ff00_ff00_ff00_ff00 соответствующая диапазону результата [-255..256]. К каждому полученному 64р слову результата прибавляется значение глобальной переменной _VR_16_to_x, которая по умолчанию равна нулю
► Арифметические операции |
nmppsAbs | Вычисление абсолютных значений для элементов вектора
nmppsAbs1 | Функция логического вычисления модулей элементов вектора
nmppsNeg | Изменение знака элементов вектора на противоположный.
nmppsAddC | Добавление к вектору константы
nmppsAddC_p | Добавление к вектору константы
nmppsAdd | Сложение двух векторов
nmppsAdd_AddC | Сложение двух векторов с прибавлением константы
nmppsSubC | Вычитание константы из вектора
nmppsSubCRev | Вычитание константы из вектора с переменой знака элементов вектора
nmppsSub | Вычитание двух вектров
nmppsAbsDiff | Вычисление вектора модулей разности элементов двух векторов
nmppsAbsDiff_f | Вычисление вектора модулей разности элементов двух векторов
nmppsAbsDiff1 | Функция логического вычисления модулей разностей элементов двух векторов
nmppsMulC | Умножение вектора на константу
nmppsMul_AddC | Поэлементное умножение векторов с прибавлением константы
nmppsMulC_AddC | Умножение вектора на константу с прибавлением константы
nmppsRShiftC_MulC_AddC |
nmppsMulC_AddV_AddC | Умножение вектора на константу с прибавлением вектора и константы
nmppsSumN | Сложение нескольких векторов
nmppsDivC | Деление вектора на константу
nmppsSum | Возвращает сумму всех элементов вектора
nmppsSum_1 | Возвращает сумму всех элементов вектора
nmppsDotProd_sm | Скалярное умножение двух векторов
nmppsDotProd | Скалярное умножение двух векторов
nmppsWeightedSum | Поэлементное взвешенное суммирование элементов двух векторов
► Логические и бинарные операции |
nmppsNot_ | Функция логического "НЕ"
nmppsAndC | Функция логического "И" между вектором и константой
nmppsAnd | Функция логического "И" между двумя векторами
nmppsAnd4V_ | Функция логического "И" между четырьмя векторами
nmppsAndNotV_ | Функция логического "И-НЕ" между двумя векторами
nmppsOrC | Функция логического "ИЛИ" между вектором и константой
nmppsOr | Функция логического "ИЛИ" между двумя векторами
nmppsOr3V_ | Функция логического "ИЛИ" между четырьмя векторами
nmppsOr4V_ | Функция логического "ИЛИ" между четырьмя векторами
nmppsXorC | Функция логического "Исключающего ИЛИ" между вектором и константой
nmppsXor | Функция логического "Исключающего ИЛИ" между двумя векторами
nmppsMaskV_ | Функция логического ИЛИ с предварительным маскированием двух векторов
nmppsRShiftC | Операция арифметического сдвига вправо
nmppsRShiftC_ | Операция логического сдвига
nmppsRShiftC_AddC_ | Операция логического сдвига
nmppsDisplaceBits | Непрерывное смещение битов внутри бинарного массива в сторону конца массиваФункция смещает биты внутри бинарного массива на несколько позиций (nBits) в сторону конца массива. Внутри 64р. слова младшие биты сдвигаются на старшие позиции того же слова, а старшие биты перемещаются в младшие позиции следующего 64р. слова. Освободившееся место в первом 64р. слове заполняется старшими битами 64р. слова с адреса pnBits. Сдвинутые биты сохраняются в массиве pDst. Пример сдвига на 8 бит :
► Операции сравнения |
nmppsMax_ | Поиск значения максимального элемента вектора
nmppsMin | Поиск значения минимального элемента вектора
nmppsMaxIndx_ | Поиск значения максимального элемента вектора и его положения (положений) в векторе
nmppsMinIndx_ | Поиск значения минимального элемента вектора и его положения (положений) в векторе
nmppsMinIndxVN_ | Поиск значения минимального элемента вектора длины N и его положения в векторе
nmppsFirstZeroIndx | Поиск позиции первого нулевого элемента в векторе
nmppsFirstNonZeroIndx | Поиск позиции первого ненулевого элемента в векторе
nmppsLastZeroIndx | Поиск позиции последнего нулевого элемента в векторе
nmppsLastNonZeroIndx | Поиск позиции последнего ненулевого элемента в векторе
nmppsMinEvery_ | Поэлементный минимум из двух векторов
nmppsMaxEvery_ | Поэлементный максимум из двух векторов
nmppsMinCmpLtV_ | Поэлементный минимум из двух векторов
nmppsCmpLt0 | Сравнивает элементы массива на меньше нуля
nmppsCmpEq0(Reduced) | Сравнивает элементы массива неполной разрядности на признак равенства нулю
nmppsCmpGt0 | Сравнивает элементы массива на больше нуля
nmppsMinMaxEvery_ | Поэлементное сравнение двух векторов
nmppsClipPowC_ | Функция насыщения
nmppsClipCC_ | Функция насыщения с произвольными порогами
nmppsThreshold_Lt_Gt_f | Пороговая функция с нижним и верхним порогами
nmppsClipRShiftConvert_AddC_ | Сокращение разрядности данных c предварительной их обработкой
nmppsClipConvert_AddC_ | Сокращение разрядности данных c предварительной их обработкой
nmppsCmpEqC | Сравнивает элементы массива на признак равенства константе
nmppsCmpNe0 | Сравнивает элементы массива на признак неравенства нулю
nmppsCmpEq0 | Сравнивает элементы массива на признак равенства нулю
nmppsCmpNeC | Сравнивает элементы массива на признак неравенства константе
nmppsCmpNeC_flag | Сравнивает элементы массива на признак неравенства константе
nmppsCmpLtC | Функция сравнения элементов массива с константой (меньше)
nmppsCmpGtC | Функция сравнения элементов массива с константой (больше)
nmppsCmpEqV_ | Поэлементное сравнение элементов (неполной разрядности) двух вектров на признак равенства
nmppsCmpNe | Сравнивает элементы массива на признак неравенства константе
nmppsCmpLt | Функция сравнения элементов массива с константой (меньше)
nmppsCmpNeV_ | Поэлементное сравнение элементов двух вектров на признак неравенства
Статистические функции |
► Переупорядочивание и сортировка |
VEC_QSort | Сортировка массива по убыванию
nmppsRemap_ | Переупорядочивание элементов вектора по таблице
nmppSplitTmp | Расщепляет массив на два, группируя по четным и нечетным элементам
nmppSplit | Расщепляет массив на два массива, группируя по четным и нечетным элементам
nmppMerge | Собирает массив из двух, чередуя элементы из каждого. Функция обратная nmppsSplit
nmppSplit_32fcr | Расщепляет массив на два, группируя по четным и нечетным элементам
nmppsDecimate | Делает выборку элементов из массива c некоторым шагом
▼ Матричные функции |
► Инициализация и копирование |
nmppmCopyua | Копирование подматрицы с невыровненной по границам 64- разрядного слова позиции в выровненную
MTR_Copyau | Копирование подматрицы с выровненной по границе 64-х разрядных слов позиции в невыровненную позицию
MTR_Copy | Функции копирования прямоугольных областей памяти между двумерными массивами
► Функции поддержки |
MTR_Malloc | Распределение памяти для матриц библиотеки.Начало и конец распределяемой памяти выравнивается на начало 64-х разрядного слова
MTR_Free | Освобождение памяти для матриц
MTR_Addr | Возвращает адрес ячейки памяти, содержащей указанный элемент.Реализация для процессора NeuroMatrix возвращает адрес, выровненный в памяти на 32 бита
MTR_SetVal | Зыписывате число в элемент марицы
MTR_GetVal | Считывает значение элемента марицы
► Векторно-матричные операции |
nmppmMul_mm | Умножение матрицы на матрицу
nmppmMul_mv_ | Умножение матрицы на вектор
nmppmMul_mv_8xH | Умножение матрицы на вектор
nmppmMul_mv__AddC | Умножение матрицы на вектор с добавлением константы
MTR_ProdUnitV | Умножение матрицы на единичный вектор
▼ Функции обработки сигналов |
► Свертка |
nmppsXCorr_32s | Свертка двух векторов
► Масочная фильтрация |
nmppcMedian3_32u | Вычисление медианы трех чисел
► КИХ-фильтрация | Одномерная КИХ-фильтрация
nmppsFIR_Xs | Одномерная КИХ-фильтрация
nmppsFIRInit_Xs | Инициализация функции одномерной фильтрации
nmppsFIRInitAlloc_Xs | Выделение и инициализация служебной структуры для функции одномерной фильтрации
nmppsFIRGetStateSize_Xs | Возвращает размер памяти (в 32р.-словах) необходимый для хранения служебной структуры
nmppsFIRFree | освобождает структуру pState в куче
► Изменение размеров |
nmppsResampleDown2 | Уменьшение числа отсчетов в двое
nmppsResampleUp3Down2 | Передискретизации сигнала в 3/2 разаПередискретизации сигнала осуществляется методом Polyphase:
nmppsCreateResample | Создание ядра для функции передискретизации nmppsResample().Функции выделяют память и инициализируют таблицы весовых коэффициентов для использования в функциях передискретизации
nmppsSetResample | Создание ядра для функции передискретизации nmppsResample().Функции инициализируют таблицы весовых коэффициентов для использования в функциях передискретизации
nmppsResample_perf | Функции для оценки производительности функций фильтрации nmppsResample()Функция эквивалентно следующим псевдоинструкциям:
► Быстрое преобразование Фурье |
FFT-256 |
IFFT-256 |
FFT-512 |
IFFT-512 |
FFT-1024 |
IFFT-1024 |
FFT-2048 |
IFFT-2048 |
FFT-4096 |
IFFT-4096 |
FFT-8192 |
IFFT-8192 |
▼ Функции обработки изображений |
Floodfill | Исполняет разделение бинарной картинки на односвязные области. Пример вызова: no=VL_FloodFill32b(pSrcImage, Tetr,Image, pTmpBuff, nSrcWidth, nSrcHeight);
► Переупорядочивание изображений |
► Блочное переупорядочивание | Блочное перупорядочивание изображений
nmppiSplitIntoBlocks | Преобразует изображение в последовательность квадратных блоков
nmppiMergeFromBlocks | Объединяет последовательность квадратных блоков в изображение
Арифметические действия |
► Масочная фильтрация |
КИХ-фильтрация | Двумерная КИХ фильтрация
Инициализация и копирование |
Изменение размеров |
Операции выборки |
► Функции поддержки |
nmppiRelease | Освобождение блоков памяти, выделенных функиями nmppiCreate***
▼ Скалярные функции |
► Инициализация |
nmppsRand | Генерация случайного числа с равномерным раcпределением
► Integer operations |
nmppcSqrt | Вычисление квадратного корня
► Fix-point 64 |
nmppcFixSqrt64 | Вычисление квадратного корня числа в формате fixed-point (32.32)
nmppcDoubleToFix64 | Функция перевода из Fixed-Point 64 в Double
nmppcFix64ToDouble | Преобразование 64р. числа с фиксированной точкой в число с плвающей точкой типа double
nmppcFixDiv64 | Деление двух целых чисел с записью результата в формате fixed-point
nmppcFixSinCos64 | Вычисление синуса и косинуса от аргумента в формате fixed-point (32.32)
nmppcFixArcTan64 | Вычисление арктангенса от аргумента в формате fixed-point (32.32)
► Fix-point 32 |
nmppcFixExp32 | Вычисление вычисления экспоненты числа в формате fixed-point (16.16)
nmppcFixSinCos32 | Вычисление синуса и косинуса от аргумента в формате fixed-point (16.16)
nmppcFixArcTan32 | Вычисление арктангенса от аргумента в формате fixed-point (16.16)
nmppcDoubleToFix32 | Функция перевода из Fixed-Point (16.16) в Double
nmppcFix32ToDouble | Преобразование 32р. числа с фиксированной точкой (16.16) в число с плвающей точкой типа double
nmppcFixSqrt32 | Вычисление квадратного корня числа в формате fixed-point (16.16)
nmppcFixMul32 | Вычисление произведения двух числе в формате fixed-point (16.16)
nmppcFixInv32 | Вычисление обратного значения целого числа с записью результата в формате fixed-point
nmppcTblFixArcSin32 | Вычисление функции arcsin по таблице. Входные и выходные значения задаются в формате fixed-point (16.16)
nmppcTblFixArcCos32 | Вычисление функции arccos по таблице. Входные и выходные значения задаются в формате fixed-point (16.16)
nmppcTblFixCos32 | Вычисление функции cos по таблице. Входные и выходные значения задаются в формате fixed-point (16.16)
nmppcTblFixSin32 | Вычисление функции sin по таблице. Входные и выходные значения задаются в формате fixed-point (16.16)
nmppcFixDivMod32 | Вычисление частного и остатка при делении чисел с фиксированной запятой в формате fixed-point (16.16)
nmppcFix64Exp01 | Вычисление вычисления экспоненты числа в формате fixed-point (4.60)
► Арифметические операции |
nmppcDivC | частное двух комплексных чисел
nmppcProdC | произведение двух комплексных чисел
Функции деинтерлейсинга |
▼ Базовые регистровые функции библиотеки |
► Элементарные функции |
Vec_0_sub_data |
Vec_activate_data |
Vec_activate_data_add_0 |
Vec_activate_data_xor_data |
Vec_activate_data_add_ram |
Vec_afifo |
Vec_data |
Vec_data_add_ram |
Vec_data_and_ram |
Vec_data_or_ram |
Vec_data_sub_ram |
Vec_data_xor_ram |
Vec_And |
Vec_Or |
Vec_Xor |
Vec_Add |
Vec_Sub |
Vec_not_data |
Vec_ram |
Vec_ram_sub_data |
Vec_vsum_activate_data_0 |
► функции взвешенного суммирования |
Vec_ClipMul2D2W8_AddVr |
Vec_ClipMulNDNW2_AddVr |
Vec_ClipMulNDNW4_AddVr |
Vec_ClipMulNDNW8_AddVr |
Vec_Mul2D2W1_AddVr |
Vec_Mul2D2W2_AddVr |
Vec_Mul2D2W4_AddVr |
Vec_Mul2D2W8_AddVr |
Vec_Mul3D3W2_AddVr |
Vec_Mul3D3W8_AddVr |
Vec_Mul4D4W2_AddVr |
Vec_MulVN_AddVN |
Vec_vsum_data_0 |
Vec_vsum_data_vr |
Vec_vsum_shift_data_0 |
Vec_vsum_shift_data_vr |
Vec_vsum_shift_data_afifo |
► Целевые функции |
<br> |
Vec_data_add_afifo |
Vec_FilterCoreRow2 |
Vec_FilterCoreRow4 |
Vec_FilterCoreRow8 |
Vec_Abs |
Vec_ClipExt |
Vec_IncNeg |
Vec_SubAbs |
Vec_SubVN_Abs |
Vec_Swap |
Vec_MUL_2V4toW8_shift |
Vec_MUL_2V8toW16_shift |
Vec_vsum_data_afifo |
Vec_CompareMinV | Поэлементный поиск минимальногоДействие функции эквивалентно следующим псевдоинструкциям:
Vec_CompareMaxV | Поэлементный поиск максимальногоДействие функции эквивалентно следующим псевдоинструкциям:
Vec_DupValueInVector8 | Размножение 8-ми битового значения по всему вектору.Действие функции эквивалентно следующим псевдоинструкциям:
Vec_DupValueInVector16 | Размножение 16-ти битового значения по всему вектору.Действие функции эквивалентно следующим псевдоинструкциям:
Vec_BuildDiagWeights8 | Построение диагональной матрицы весовых коеффициентов (8x8)
Vec_BuildDiagWeights16 | Построение диагональной матрицы весовых коеффициентов (16x16)
Vec_MaxVal_v8nm8s | Поиск максимума в 8 байтах
Vec_MaxVal_v4nm16s | Поиск максимума в 4-х 16р. элементах
Vec_MaxVal | Поиск максимумов в колонках матрицы SrcMtr1.
Vec_MinVal_v8nm8s | Поиск минимума в 8 байтах
Vec_MinVal_v4nm16s | Поиск минимума в 4-х 16р. элементах
Vec_MinVal | Поиск минимумов в колонках матрицы SrcMtr1.
Vec_AccMul1D1W32_AddVr | Умножение с накоплениемДействие функции эквивалентно следующим псевдоинструкциям:
▼ implement |
контроль переполнения |
▼ Функции с плавающей точкой |
▼ Векторные функции |
► Инициализация и копирование |
nmppsRandUniform | Инициализация массива случайными числами
nmppsConvert | Изменение разрядности элементов вектора. Входной вектор
nmppsConvert_rounding | Функции конвертации вектора чисел с плавающей точкой одинарной точности в вектор целых 32-битных чисел с разной степенью округления
nmppsMerge | Функция соединяет 2 массива 32-х чисел с плавающей точкой (float) в один. Результирующий массив { pSrcVec1[0], pSrcVec2[0], pSrcVec1[1], pSrcVec2[1], pSrcVec1[2], pSrcVec2[2] и т.д. }
nmppsConvertRisc | Функциии изменения разрядности чисел входного вектора
nmppsCopy | Копирование массива чисел с плавающей точкой одинарной точности (с любого на любой адрес)
nmppsCopyOddToOdd_32f | Копирование массива чисел с плавающей точкой одинарной точности (с нечетного на нечетный адрес)
nmppsCopyEvenToOdd_32f | Копирование массива чисел с плавающей точкой одинарной точности (с четного на нечетный адрес)
nmppsCopyOddToEven_32f | Копирование массива чисел с плавающей точкой одинарной точности (с нечетного на четный адрес)
nmppsCopyEvenToEven_32f | Копирование массива чисел с плавающей точкой одинарной точности (с четного на четный адрес)
nmppsCopyRisc | Копирование массива
► Арифметические операции |
nmppsAddC | Добавление к вектору константы
nmppsAdd | Сложение двух векторов
nmppsSubC | Вычитание константы из вектора
nmppsSubCRev | Вычитание вектора из константы
nmppsSub | Вычитание двух вектров
nmppsMulC | Умножение вектора на константу
nmppsMul_Mul_Add | Умножение двух пар векторов с последующим суммированием результатов (pDstVec = pSrcVec1 * pSrcVec2 + pSrcVec3 * pSrcVec4)
nmppsMul_Add | Умножение с накоплением
nmppsMul_ConjMul_Add | Умножение пары векторов (вектор pSrcVec4 комплексно-сопряженный) с последующим суммированием результата (pDstVec[i] = pSrcVec1[i] * pSrcVec2[i] + pSrcVec3[i] * Conj(pSrcVec4[i]))
nmppsMulC_AddC | Умножает вектор на констану с прибавлением другой константы (pDstVec[i] = nMulC * pSrcVec[i] + nAddC)
nmppsMulC_AddV_AddC | Умножение вектора на константу с прибавлением вектора и константы (pDstVec[i] = nMulC * pSrcVec[i] + pVecAdd[i] + nAddC)
nmppsMul | Умножение векторов (pDstVec[i] = pSrcVec1[i] * pSrcVec1[i])
nmppsConjMul | Умножение вектора на комлексно-сопряженный вектор(pDstVec[i] = pSrcVec1[i] * Conj(pSrcVec1[i]))
nmppsMul_Mul_Sub | Умножение пары векторов с последующим вычитанием результатов (pDstVec[i] = pSrcVec1[i] * pSrcVec2[i] - pSrcVec3[i] * pSrcVec4[i])
nmppsMulC_Add | Умножение вектора на константу с накоплением (pDstVec[i] = pSrcVec1[i] * С + pSrcVec2[i])
nmppsMul_AddC | Поэлементное умножение векторов с прибавлением константы
► Операции сравнения |
nmppsCmpLteC | Функция сравнения элементов массива с константой (меньше или равно)
nmppsCmpLtC | Функция сравнения элементов массива с константой (меньше или равно)
nmppsCmpGteC | Функция сравнения элементов массива с константой (больше или равно)
nmppsCmpGtC | Функция сравнения элементов массива с константой (больше)
► Элементарные математические функции |
Тригонометрические функции | Функция, вычисляющая синус/косинус над каждым элементом вектора чисел с плавающей точкой одинарной точности (32f)
Функция деления векторов | Функция, вычисляющая x/y (pSrcVec1 / pSrcVec2), где x и y (делимые числа и делители) это вектора чисел с плавающей точкой одинарной
Экспонента | Функция, вычисляющая экспоненту над каждым элементом вектора чисел с плавающей точкой одинарной точности (32f)
Натуральный логарифм | Функция, вычисляющая натуральный логарифм над каждым элементом вектора чисел с плавающей точкой одинарной точности (32f)
Возведение в степень | Функция возводит в степень (Deg) каждый элемент вектора чисел с плавающей точкой двойной точности (64f)
Вычисление квадратного корня | Функция вычисляет квадратный корень от каждого элемента входного вектора чисел с плавающей точкой
▼ Матричные функции |
► Обращение матрицы |
MTR_fpResolve_Gauss | Решение системы линейных уравнений методом Гаусса
MTR_fpResolve_PivotGauss | Решение системы линейных уравнений методом Гаусса с выбором ведущего элемента
nmppmLUDecomp | LU-разложение матрицы
nmppmLUResolve | Решение системы линейных уравнений из LU-разложения L*y = b; U*x = y
▼ Функции обработки сигналов |
► Быстрое преобразование Фурье |
FFTFwdInitAlloc | Функции инициализации структур коэффициентов, необходимых для вычисления прямого БПФ
FFTInvInitAlloc | Функции инициализации структур коэффициентов, необходимых для вычисления обратного БПФ
DFT-8 | Функция для вычисления прямого ДПФ с плавающей точкой над вектором, состоящим из 8 комплексных чисел
FFT-16 | Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 16 комплексных чисел
FFT-32 | Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 32 комплексных чисел
FFT-64 | Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 64 комплексных чисел
FFT-128 | Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 128 комплексных чисел
FFT-256 | Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 256 комплексных чисел
FFT-512 | Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 512 комплексных чисел
FFT-1024 | Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 1024 комплексных чисел
FFT-2048 | Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 2048 комплексных чисел
FFT-4096 | Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 4096 комплексных чисел
IDFT-8 | Функция для вычисления обратного ДПФ с плавающей точкой над вектором, состоящим из 8 комплексных чисел
IFFT-16 | Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 16 комплексных чисел
IFFT-32 | Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 32 комплексных чисел
IFFT-64 | Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 64 комплексных чисел
IFFT-128 | Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 128 комплексных чисел
IFFT-256 | Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 256 комплексных чисел
IFFT-512 | Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 512 комплексных чисел
IFFT-1024 |
IFFT-2048 | Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 2048 комплексных чисел
IFFT-4096 | Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 4096 комплексных чисел
► FFT-Common |
IFFT-Common | Функция для вычисления прямого БПФ с плавающей точкой над вектором длины от 8 до 2048
▼ Базовые регистровые функции библиотеки |
► Элементарные функции |
Vec_copyEvenToEven_32f |
Vec_CopyOddToEven_32f |
▼ nmblas |
BLASS-LEVEL1 |
BLASS-LEVEL2 |
BLASS-LEVEL3 |
▼ Типы данных |
Типы векторных данных |
Типы скалярных данных |
Создано системой doxygen 1.9.5


nmpp: Целочисленные функции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Целочисленные функции

Группы

Векторные функции
Матричные функции
Функции обработки сигналов
Функции обработки изображений
Скалярные функции
Базовые регистровые функции библиотеки
implement

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Векторные функции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Векторные функции
Целочисленные функции

Группы

Функции поддержки
Инициализация и копирование
Арифметические операции
Логические и бинарные операции
Операции сравнения
Статистические функции
Переупорядочивание и сортировка

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Функции поддержки

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Функции поддержки
Целочисленные функции » Векторные функции

Группы

nmppsMalloc
Распределение памяти для векторов библиотеки.
nmppsFree
Освобождение памяти для векторов.
nmppsAddr_
Возвращает адрес ячейки памяти, содержащей указанный элемент.Реализация для процессора NeuroMatrix возвращает адрес, выровненный в памяти на 32 бита.
nmppsSetVal_
Модификация элемента вектора.
nmppsGetVal_
Извлекает значение элемента вектора.
nmppsGetVal_(return)
Извлекает значение элемента вектора.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppsMalloc

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMalloc
Целочисленные функции » Векторные функции » Функции поддержки

Распределение памяти для векторов библиотеки. Подробнее...

Функции

void * | nmppsMalloc32 (unsigned sizeInt32)
nm64s * | nmppsMalloc_64s (unsigned nSize)
nm1 * | nmppsMalloc_1 (unsigned nSize)
nm2s * | nmppsMalloc_2s (unsigned nSize)
nm2u * | nmppsMalloc_2u (unsigned nSize)
nm4s * | nmppsMalloc_4s (unsigned nSize)
nm4u * | nmppsMalloc_4u (unsigned nSize)
nm8u * | nmppsMalloc_8u (unsigned nSize)
nm8s * | nmppsMalloc_8s (unsigned nSize)
nm16u * | nmppsMalloc_16u (unsigned nSize)
nm16s * | nmppsMalloc_16s (unsigned nSize)
nm32u * | nmppsMalloc_32u (unsigned nSize)
nm32s * | nmppsMalloc_32s (unsigned nSize)
nm64u * | nmppsMalloc_64u (unsigned nSize)
nm64sc * | nmppsMalloc_64sc (unsigned nSize)
nm32sc * | nmppsMalloc_32sc (unsigned sizeCmplxInt32)
nm32fc * | nmppsMalloc_32fc (unsigned sizeCmplxFloat)
nm32fcr * | nmppsMalloc_32fcr (unsigned sizeCmplxFloat)
float * | nmppsMalloc_32f (unsigned sizeFloat)
double * | nmppsMalloc_64f (unsigned sizeDouble)

Подробное описание

Распределение памяти для векторов библиотеки.

Аргументы
nSize | Число элементов в векторе.
hint | Номер банка памяти. Может принимать значения MEM_LOCAL, MEM_GLOBAL.
Заметки
Память, распределенная с помощью функций nmppsMalloc_ должна освобождаться с помощью функции nmppsFree().


nmpp: nmppsFree

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsFree
Целочисленные функции » Векторные функции » Функции поддержки

Освобождение памяти для векторов. Подробнее...

Функции

void nmppsFree (void *ptr)

Подробное описание

Освобождение памяти для векторов.

Заметки
Данная функция должна вызываться только для векторов, распределенных с помощью функций nmppsMalloc_.


nmpp: nmppsAddr_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAddr_
Целочисленные функции » Векторные функции » Функции поддержки

Возвращает адрес ячейки памяти, содержащей указанный элемент.Реализация для процессора NeuroMatrix возвращает адрес, выровненный в памяти на 32 бита. Подробнее...

Функции

__INLINE__ nm1 * | nmppsAddr_1 (const nm1 *pVec, int nIndex)
nm2s * | nmppsAddr_2s (const nm2s *pVec, int nIndex)
nm4s * | nmppsAddr_4s (const nm4s *pVec, int nIndex)
__INLINE__ nm8s * | nmppsAddr_8s (const nm8s *pVec, int nIndex)
__INLINE__ nm16s * | nmppsAddr_16s (const nm16s *pVec, int nIndex)
__INLINE__ nm32s * | nmppsAddr_32s (const nm32s *pVec, int nIndex)
__INLINE__ nm32f * | nmppsAddr_32f (const nm32f *pVec, int nIndex)
__INLINE__ nm64s * | nmppsAddr_64s (const nm64s *pVec, int nIndex)
__INLINE__ nm64f * | nmppsAddr_64f (const nm64f *pVec, int nIndex)
nm2u * | nmppsAddr_2u (const nm2u *pVec, int nIndex)
nm4u * | nmppsAddr_4u (const nm4u *pVec, int nIndex)
__INLINE__ nm8u * | nmppsAddr_8u (const nm8u *pVec, int nIndex)
__INLINE__ nm16u * | nmppsAddr_16u (const nm16u *pVec, int nIndex)
__INLINE__ nm32u * | nmppsAddr_32u (const nm32u *pVec, int nIndex)
__INLINE__ nm64u * | nmppsAddr_64u (const nm64u *pVec, int nIndex)

Подробное описание

Возвращает адрес ячейки памяти, содержащей указанный элемент.

Реализация для процессора NeuroMatrix возвращает адрес, выровненный в памяти на 32 бита.

Аргументы
pVec | Входной вектор.
nIndex | Индекс элемента.
Возвращает
Адрес ячейки памяти.
Заметки
Для ускорения работы на PC возможно использование макроса ADDR(ptr, index), который раскрывается на PC как (ptr+index), а на NM как вызов функции nmppsAddr_.
Аргументы
pVec | Входной вектор.
nIndex | Индекс элемента.
Возвращает
Адрес ячейки памяти.
Заметки
Для ускорения работы на PC возможно использование макроса ADDR(ptr, index), который раскрывается на PC как (ptr+index), а на NM как вызов функции nmppsAddr_.


nmpp: nmppsSetVal_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsSetVal_
Целочисленные функции » Векторные функции » Функции поддержки

Модификация элемента вектора. Подробнее...

Функции

void | nmppsPut_1 (nm1 *pVec, int nIndex, int1b nVal)
void | nmppsPut_2s (nm2s *pVec, int nIndex, int2b nVal)
void | nmppsPut_4s (nm4s *pVec, int nIndex, int4b nVal)
void | nmppsPut_8s (nm8s *pVec, int nIndex, int8b nVal)
void | nmppsPut_16s (nm16s *pVec, int nIndex, int16b nVal)
__INLINE__ void | nmppsPut_32s (nm32s *pVec, int nIndex, int32b nVal)
__INLINE__ void | nmppsPut_64s (nm64s *pVec, int nIndex, int64b nVal)
__INLINE__ void | nmppsPut_2u (nm2u *pVec, int nIndex, uint2b nVal)
__INLINE__ void | nmppsPut_4u (nm4u *pVec, int nIndex, uint4b nVal)
__INLINE__ void | nmppsPut_8u (nm8u *pVec, int nIndex, uint8b nVal)
__INLINE__ void | nmppsPut_16u (nm16u *pVec, int nIndex, uint16b nVal)
__INLINE__ void | nmppsPut_32u (nm32u *pVec, int nIndex, uint32b nVal)
__INLINE__ void | nmppsPut_64u (nm64u *pVec, int nIndex, uint64b nVal)

Подробное описание

Модификация элемента вектора.

Аргументы
pVec | Вектор.
nIndex | Позиция элемента
nVal | Значение элемента
Возвращает
void

Аргументы
pVec | Вектор.
nIndex | Позиция элемента
nVal | Значение элемента
Возвращает
void


nmpp: nmppsGetVal_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsGetVal_
Целочисленные функции » Векторные функции » Функции поддержки

Извлекает значение элемента вектора. Подробнее...

Функции

void | nmppsGetVal_1 (const nm1 *pVec, int nIndex, int1b *nVal)
void | nmppsGetVal_2s (const nm2s *pVec, int nIndex, int2b *nVal)
void | nmppsGetVal_4s (const nm4s *pVec, int nIndex, int4b *nVal)
void | nmppsGetVal_8s (const nm8s *pVec, int nIndex, int8b *nVal)
void | nmppsGetVal_16s (const nm16s *pVec, int nIndex, int16b *nVal)
__INLINE__ void | nmppsGetVal_32s (const nm32s *pVec, int nIndex, int32b *nVal)
__INLINE__ void | nmppsGetVal_64s (const nm64s *pVec, int nIndex, int64b *nVal)
void | nmppsGetVal_2u (const nm2u *pVec, int nIndex, uint2b *nVal)
void | nmppsGetVal_4u (const nm4u *pVec, int nIndex, uint4b *nVal)
void | nmppsGetVal_8u (const nm8u *pVec, int nIndex, uint8b *nVal)
void | nmppsGetVal_16u (const nm16u *pVec, int nIndex, uint16b *nVal)
__INLINE__ void | nmppsGetVal_32u (const nm32u *pVec, int nIndex, uint32b *nVal)
__INLINE__ void | nmppsGetVal_64u (const nm64u *pVec, int nIndex, uint64b *nVal)

Подробное описание

Извлекает значение элемента вектора.

Аргументы
pVec | Вектор.
nIndex | Позиция элемента.
Возвращаемые значения
nVal Значение элемента.
Возвращает
void
Аргументы
pVec | Вектор.
nIndex | Позиция элемента.
Возвращаемые значения
nVal Значение элемента.
Возвращает
void


nmpp: nmppsGetVal_(return)

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsGetVal_(return)
Целочисленные функции » Векторные функции » Функции поддержки

Извлекает значение элемента вектора. Подробнее...

Функции

int2b | nmppsGet_2s (const nm2s *pVec, int nIndex)
int4b | nmppsGet_4s (const nm4s *pVec, int nIndex)
int8b | nmppsGet_8s (const nm8s *pVec, int nIndex)
int16b | nmppsGet_16s (const nm16s *pVec, int nIndex)
__INLINE__ int32b | nmppsGet_32s (const nm32s *pVec, int nIndex)
uint1b | nmppsGet_1 (const nm1 *pVec, int nIndex)
uint2b | nmppsGet_2u (const nm2u *pVec, int nIndex)
uint4b | nmppsGet_4u (const nm4u *pVec, int nIndex)
uint8b | nmppsGet_8u (const nm8u *pVec, int nIndex)
uint16b | nmppsGet_16u (const nm16u *pVec, int nIndex)
__INLINE__ uint32b | nmppsGet_32u (const nm32u *pVec, int nIndex)

Подробное описание

Извлекает значение элемента вектора.

Аргументы
pVec | Вектор.
nIndex | Позиция элемента.
Возвращает
Значение элемента.
Аргументы
pVec | Вектор.
nIndex | Позиция элемента.
Возвращает
Значение элемента.


nmpp: Инициализация и копирование

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Инициализация и копирование
Целочисленные функции » Векторные функции

Группы

nmppsSet-инициализация
Функция инициализации элементов массива постоянным значением.
nmppsRandUniform
Инициализация массива случайными числами.
nmppsRandUniform_
Генерация случайного числа с равномерным раcпределением.
nmppsRamp_
Инициализация массива элементами арифметической прогрессии.
nmppsConvert
Изменение разрядности элементов вектора.Преобразование знаковых данных к меньшей разрядности осуществляется отбрасыванием старших битов. Преобразование знаковых данных к большей разрядности осуществляется c распространением влево старшего (знакового) бита. Преобразование беззнаковых данных к большей разрядности осуществляется добавлением слева старших нулевых битов.
nmppsCopy_
Копирование вектора.
nmppsCopyua_
Копирование вектора с невыровненной байтовой позиции в выровненную.
nmppsSwap_
Перестановка двух векторов..
Vec_ClipRShiftConvert_AddC
Изменение разрядности элементов вектора с клиппированиемПреобразование 32р знаковых данных к восьмиразрядным осуществляется вырезанием битов 16..31.. ,затем клиппированием и вырезанием восьми младших бит реультата. При клиппировании используется глобальая константа типа nm64s с именем _F1CR_16_to_x. По умолчанию, там лежит ff00_ff00_ff00_ff00 соответствующая диапазону результата [-255..256]. К каждому полученному 64р слову результата прибавляется значение глобальной переменной _VR_16_to_x, которая по умолчанию равна нулю.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppsSet-инициализация

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsSet-инициализация
Целочисленные функции » Векторные функции » Инициализация и копирование

Функция инициализации элементов массива постоянным значением. Подробнее...

Функции

void | nmppsSet_8s (int8b val, nm8s *pDst, int len)
void | nmppsSet_16s (int16b val, nm16s *pDst, int len)
void | nmppsSet_32s (int32b val, nm32s *pDst, int len)
void | nmppsSet_64s (int64b val, nm64s *pDst, int len)
void | nmppsSet_64sc (int64sc val, nm64sc *pDst, int len)
__INLINE__ void | nmppsSet_8u (uint8b val, nm8u *pDst, int len)
__INLINE__ void | nmppsSet_16u (uint16b val, nm16u *pDst, int len)
__INLINE__ void | nmppsSet_32u (uint32b val, nm32u *pDst, int len)
__INLINE__ void | nmppsSet_64u (uint64b val, nm64u *pDst, int len)

Подробное описание

Функция инициализации элементов массива постоянным значением.

Аргументы
len | Размер вектора в элементах.
val | Константа. Диапазон значений val должен соответсвовать типу результирующего вектора.
Возвращаемые значения
pDst Результирующий вектор.
Возвращает
void


nmpp: nmppsRandUniform

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsRandUniform
Целочисленные функции » Векторные функции » Инициализация и копирование

Инициализация массива случайными числами. Подробнее...

Функции

void | nmppsRandUniform_64s (nm64s *pDstVec, int nSize)
__INLINE__ void | nmppsRandUniform_8s (nm8s *pDstVec, int nSize)
__INLINE__ void | nmppsRandUniform_16s (nm16s *pDstVec, int nSize)
__INLINE__ void | nmppsRandUniform_32s (nm32s *pDstVec, int nSize)
__INLINE__ void | nmppsRandUniform_8u (nm8u *pDstVec, int nSize)
__INLINE__ void | nmppsRandUniform_16u (nm16u *pDstVec, int nSize)
__INLINE__ void | nmppsRandUniform_32u (nm32u *pDstVec, int nSize)
__INLINE__ void | nmppsRandUniform_64u (nm64u *pDstVec, int nSize)

Подробное описание

Инициализация массива случайными числами.

Аргументы
nSize Размер вектора.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void

Функции

◆ nmppsRandUniform_64s()

void nmppsRandUniform_64s | ( | nm64s * | pDstVec,
 |  | int | nSize
 | ) |  |

/ru Инициализация массива 32-разрядными случайными числами. /en Random initialization of 32-bit buffer /~


nmpp: nmppsRandUniform_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsRandUniform_
Целочисленные функции » Векторные функции » Инициализация и копирование

Генерация случайного числа с равномерным раcпределением. Подробнее...

Функции

int | nmppsRandUniform2_32s (int nMin, int nMax, int nDivisible)
int | nmppsRandUniform3_32s (int nMin, int nMax)
int | nmppsRandUniform ()

Подробное описание

Генерация случайного числа с равномерным раcпределением.

Аргументы
nMin | Минимальное возможное значение случайного числа.
nMax | Максимальное возможное значение случайного числа.
nDivisible | Значение, которому будет кратно случайное число.
Возвращает
int Случайное число в диапазоне либо [nMin, nMax]. Для функции без параметров данный диапазон [-2^31; 2^31-1].


nmpp: nmppsRamp_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsRamp_
Целочисленные функции » Векторные функции » Инициализация и копирование

Инициализация массива элементами арифметической прогрессии. Подробнее...

Функции

void | nmppsRamp_8s (nm8s *pVec, int8b nOffset, int8b nSlope, int nSize)
void | nmppsRamp_16s (nm16s *pVec, int16b nOffset, int16b nSlope, int nSize)
void | nmppsRamp_32s (nm32s *pVec, int32b nOffset, int32b nSlope, int nSize)
void | nmppsRamp_64s (nm64s *pVec, int64b nOffset, int64b nSlope, int nSize)

Подробное описание

Инициализация массива элементами арифметической прогрессии.

Аргументы
nOffset | Первый член арифметической прогрессии.
nSlope | Разность арифметической прогрессии.
nSize | Размер вектора.
Возвращаемые значения
pVec Результирующий массив.
Возвращает
void


nmpp: nmppsConvert

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsConvert
Целочисленные функции » Векторные функции » Инициализация и копирование

Изменение разрядности элементов вектора.Преобразование знаковых данных к меньшей разрядности осуществляется отбрасыванием старших битов. Преобразование знаковых данных к большей разрядности осуществляется c распространением влево старшего (знакового) бита. Преобразование беззнаковых данных к большей разрядности осуществляется добавлением слева старших нулевых битов. Подробнее...

Функции

void | nmppsConvert_1s2s (const nm1 *pSrcVec, nm2s *pDstVec, int nSize)
void | nmppsConvert_1u2u (const nm1 *pSrcVec, nm2u *pDstVec, int nSize)
void | nmppsConvert_1u4u (const nm1 *pSrcVec, nm4u *pDstVec, int nSize)
void | nmppsConvert_2s1s (const nm2s *pSrcVec, nm1 *pDstVec, int nSize)
void | nmppsConvert_2s4s (const nm2s *pSrcVec, nm4s *pDstVec, int nSize)
void | nmppsConvert_2u4u (const nm2u *pSrcVec, nm4u *pDstVec, int nSize)
void | nmppsConvert_4s1s (const nm4s *pSrcVec, nm1 *pDstVec, int nSize)
void | nmppsConvert_4s2s (const nm4s *pSrcVec, nm2s *pDstVec, int nSize)
void | nmppsConvert_4s8s (const nm4s *pSrcVec, nm8s *pDstVec, int nSize)
void | nmppsConvert_4u8u (const nm4u *pSrcVec, nm8u *pDstVec, int nSize)
void | nmppsConvert_8s4s (const nm8s *pSrcVec, nm4s *pDstVec, int nSize)
void | nmppsConvert_8s16s (const nm8s *pSrcVec, nm16s *pDstVec, int nSize)
void | nmppsConvert_8s32s (const nm8s *pSrcVec, nm32s *pDstVec, int nSize)
void | nmppsConvert_8s64s (const nm8s *pSrcVec, nm64s *pDstVec, int nSize)
void | nmppsConvert_8u16u (const nm8u *pSrcVec, nm16u *pDstVec, int nSize)
void | nmppsConvert_8u32u (const nm8u *pSrcVec, nm32u *pDstVec, int nSize)
void | nmppsConvert_8u64u (const nm8u *pSrcVec, nm64u *pDstVec, int nSize)
void | nmppsConvert_16s4s (const nm16s *pSrcVec, nm4s *pDstVec, int nSize)
void | nmppsConvert_16s8s (const nm16s *pSrcVec, nm8s *pDstVec, int nSize)
void | nmppsConvert_16s32s (const nm16s *pSrcVec, nm32s *pDstVec, int nSize)
void | nmppsConvert_16s64s (const nm16s *pSrcVec, nm64s *pDstVec, int nSize)
void | nmppsConvert_16u32u (const nm16u *pSrcVec, nm32u *pDstVec, int nSize)
void | nmppsConvert_16u64u (const nm16u *pSrcVec, nm64u *pDstVec, int nSize)
void | nmppsConvert_32s8s (const nm32s *pSrcVec, nm8s *pDstVec, int nSize)
void | nmppsConvert_32s16s (const nm32s *pSrcVec, nm16s *pDstVec, int nSize)
void | nmppsConvert_32s64s (const nm32s *pSrcVec, nm64s *pDstVec, int nSize)
void | nmppsConvert_32u64u (const nm32u *pSrcVec, nm64u *pDstVec, int nSize)
void | nmppsConvert_64s32s (const nm64s *pSrcVec, nm32s *pDstVec, int nSize)
void | nmppsConvert_64s16s (const nm64s *pSrcVec, nm16s *pDstVec, int nSize)

Подробное описание

Изменение разрядности элементов вектора.

Преобразование знаковых данных к меньшей разрядности осуществляется отбрасыванием старших битов. Преобразование знаковых данных к большей разрядности осуществляется c распространением влево старшего (знакового) бита. Преобразование беззнаковых данных к большей разрядности осуществляется добавлением слева старших нулевых битов.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void

Функции

◆ nmppsConvert_1s2s()

void nmppsConvert_1s2s | ( | const nm1 * | pSrcVec,
 |  | nm2s * | pDstVec,
 |  | int | nSize
 | ) |  |

Restrictions: nSize =[32*64,32*64*2,32*64*3,....]

◆ nmppsConvert_1u2u()

void nmppsConvert_1u2u | ( | const nm1 * | pSrcVec,
 |  | nm2u * | pDstVec,
 |  | int | nSize
 | ) |  |

Restrictions: nSize =[32*64,32*64*2,32*64*3,....]


nmpp: nmppsCopy_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCopy_
Целочисленные функции » Векторные функции » Инициализация и копирование

Копирование вектора. Подробнее...

Функции

void | nmppsCopy_2s (const nm2s *pSrcVec, nm2s *pDstVec, int nSize)
void | nmppsCopy_4s (const nm4s *pSrcVec, nm4s *pDstVec, int nSize)
void | nmppsCopy_8s (const nm8s *pSrcVec, nm8s *pDstVec, int nSize)
void | nmppsCopy_16s (const nm16s *pSrcVec, nm16s *pDstVec, int nSize)
void | nmppsCopy_32s (const nm32s *pSrcVec, nm32s *pDstVec, int nSize)
void | nmppsCopy_64s (const nm64s *pSrcVec, nm64s *pDstVec, int nSize)
__INLINE__ void | nmppsCopy_4u (const nm4u *pSrcVec, nm4u *pDstVec, int nSize)
__INLINE__ void | nmppsCopy_8u (const nm8u *pSrcVec, nm8u *pDstVec, int nSize)
__INLINE__ void | nmppsCopy_16u (const nm16u *pSrcVec, nm16u *pDstVec, int nSize)
__INLINE__ void | nmppsCopy_32u (const nm32u *pSrcVec, nm32u *pDstVec, int nSize)
__INLINE__ void | nmppsCopy_64u (const nm64u *pSrcVec, nm64u *pDstVec, int nSize)
__INLINE__ void | nmppsCopy_64sc (const nm64sc *pSrcVec, nm64sc *pDstVec, int nSize)

Подробное описание

Копирование вектора.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsCopyua_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCopyua_
Целочисленные функции » Векторные функции » Инициализация и копирование

Копирование вектора с невыровненной байтовой позиции в выровненную. Подробнее...

Функции

void nmppsCopyua_8s (const nm8s *pSrcVec, int nSrcOffset, nm8s *pDstVec, int nSize)

Подробное описание

Копирование вектора с невыровненной байтовой позиции в выровненную.

Позиция байта считается выровненной если она совпадает с границей 64р. слов в памяти.

Аргументы
pSrcVec | Входной вектор.
pDstVec | Результирующий вектор.
nSrcOffset | Смещение в элементах относительно начала вектора. nSrcOffset Может принимать любое значение.
nSize | Кол-во копируемых элементов.
Возвращает
void


nmpp: nmppsSwap_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsSwap_
Целочисленные функции » Векторные функции » Инициализация и копирование

Перестановка двух векторов.. Подробнее...

Функции

void nmppsSwap_64s (nm64s *pSrcVec1, nm64s *pSrcVec2, int nSize)

Подробное описание

Перестановка двух векторов.

.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй входной вектор.
nSize | Размер векторов в элементах.
Возвращает
void


nmpp: Vec_ClipRShiftConvert_AddC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_ClipRShiftConvert_AddC
Целочисленные функции » Векторные функции » Инициализация и копирование

Изменение разрядности элементов вектора с клиппированиемПреобразование 32р знаковых данных к восьмиразрядным осуществляется вырезанием битов 16..31.. ,затем клиппированием и вырезанием восьми младших бит реультата. При клиппировании используется глобальая константа типа nm64s с именем _F1CR_16_to_x. По умолчанию, там лежит ff00_ff00_ff00_ff00 соответствующая диапазону результата [-255..256]. К каждому полученному 64р слову результата прибавляется значение глобальной переменной _VR_16_to_x, которая по умолчанию равна нулю. Подробнее...

Функции

void Vec_ClipRShiftConvert_AddC (nm32s *pSrcVec, nm8u *pDstVec, int nSize)

Подробное описание

Изменение разрядности элементов вектора с клиппированием

Преобразование 32р знаковых данных к восьмиразрядным осуществляется вырезанием битов 16..31.. ,затем клиппированием и вырезанием восьми младших бит реультата. При клиппировании используется глобальая константа типа nm64s с именем _F1CR_16_to_x. По умолчанию, там лежит ff00_ff00_ff00_ff00 соответствующая диапазону результата [-255..256]. К каждому полученному 64р слову результата прибавляется значение глобальной переменной _VR_16_to_x, которая по умолчанию равна нулю.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: Арифметические операции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Арифметические операции
Целочисленные функции » Векторные функции

Группы

nmppsAbs
Вычисление абсолютных значений для элементов вектора.
nmppsAbs1
Функция логического вычисления модулей элементов вектора.
nmppsNeg
Изменение знака элементов вектора на противоположный..
nmppsAddC
Добавление к вектору константы.
nmppsAddC_p
Добавление к вектору константы.
nmppsAdd
Сложение двух векторов.
nmppsAdd_AddC
Сложение двух векторов с прибавлением константы.
nmppsSubC
Вычитание константы из вектора.
nmppsSubCRev
Вычитание константы из вектора с переменой знака элементов вектора.
nmppsSub
Вычитание двух вектров.
nmppsAbsDiff
Вычисление вектора модулей разности элементов двух векторов.
nmppsAbsDiff_f
Вычисление вектора модулей разности элементов двух векторов.
nmppsAbsDiff1
Функция логического вычисления модулей разностей элементов двух векторов.
nmppsMulC
Умножение вектора на константу.
nmppsMul_AddC
Поэлементное умножение векторов с прибавлением константы.
nmppsMulC_AddC
Умножение вектора на константу с прибавлением константы.
nmppsRShiftC_MulC_AddC
nmppsMulC_AddV_AddC
Умножение вектора на константу с прибавлением вектора и константы.
nmppsSumN
Сложение нескольких векторов.
nmppsDivC
Деление вектора на константу.
nmppsSum
Возвращает сумму всех элементов вектора.
nmppsSum_1
Возвращает сумму всех элементов вектора.
nmppsDotProd_sm
Скалярное умножение двух векторов.
nmppsDotProd
Скалярное умножение двух векторов.
nmppsWeightedSum
Поэлементное взвешенное суммирование элементов двух векторов

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppsAbs

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAbs
Целочисленные функции » Векторные функции » Арифметические операции

Вычисление абсолютных значений для элементов вектора. Подробнее...

Функции

void | nmppsAbs_4s (const nm4s *pSrcVec, nm4s *pDstVec, int nSize)
void | nmppsAbs_8s (const nm8s *pSrcVec, nm8s *pDstVec, int nSize)
void | nmppsAbs_16s (const nm16s *pSrcVec, nm16s *pDstVec, int nSize)
void | nmppsAbs_32s (const nm32s *pSrcVec, nm32s *pDstVec, int nSize)
void | nmppsAbs_64s (const nm64s *pSrcVec, nm64s *pDstVec, int nSize)

Подробное описание

Вычисление абсолютных значений для элементов вектора.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void

Restrictions:
Значения элементов вектора не должны быть равны минимальному значению для соответствующего типа (т.е. -128, -2^15 и т.д). В противном случае, абсолютное значение для таких элементов вычисляется неверно, давая на выходе то же самое число.


nmpp: nmppsAbs1

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAbs1
Целочисленные функции » Векторные функции » Арифметические операции

Функция логического вычисления модулей элементов вектора. Подробнее...

Функции

void | nmppsAbs1_4s (const nm4s *pSrcVec, nm4s *pDstVec, int nSize)
void | nmppsAbs1_8s (const nm8s *pSrcVec, nm8s *pDstVec, int nSize)
void | nmppsAbs1_16s (const nm16s *pSrcVec, nm16s *pDstVec, int nSize)
void | nmppsAbs1_32s (const nm32s *pSrcVec, nm32s *pDstVec, int nSize)
void | nmppsAbs1_64s (const nm64s *pSrcVec, nm64s *pDstVec, int nSize)

Подробное описание

Функция логического вычисления модулей элементов вектора.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsNeg

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsNeg
Целочисленные функции » Векторные функции » Арифметические операции

Изменение знака элементов вектора на противоположный.. Подробнее...

Функции

void | nmppsNeg_8s (const nm8s *pSrcVec, nm8s *pDstVec, int nSize)
void | nmppsNeg_16s (const nm16s *pSrcVec, nm16s *pDstVec, int nSize)
void | nmppsNeg_32s (const nm32s *pSrcVec, nm32s *pDstVec, int nSize)
void | nmppsNeg_64s (const nm64s *pSrcVec, nm64s *pDstVec, int nSize)

Подробное описание

Изменение знака элементов вектора на противоположный.

.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsAddC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAddC
Целочисленные функции » Векторные функции » Арифметические операции

Добавление к вектору константы. Подробнее...

Функции

void | nmppsAddC_8s (const nm8s *pSrcVec, int8b nVal, nm8s *pDstVec, int nSize)
void | nmppsAddC_16s (const nm16s *pSrcVec, int16b nVal, nm16s *pDstVec, int nSize)
void | nmppsAddC_32s (const nm32s *pSrcVec, int32b nVal, nm32s *pDstVec, int nSize)
void | nmppsAddC_64s (const nm64s *pSrcVec, int64b nVal, nm64s *pDstVec, int nSize)

Подробное описание

Добавление к вектору константы.

Аргументы
pSrcVec | Входной вектор.
nVal | Добавляемая константа.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsAddC_p

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAddC_p
Целочисленные функции » Векторные функции » Арифметические операции

Добавление к вектору константы. Подробнее...

Функции

void nmppsAddC_p64s (const nm64s *pSrcVec, int64b *pnVal, nm64s *pDstVec, int nSize)

Подробное описание

Добавление к вектору константы.

Аргументы
pSrcVec | Входной вектор.
pnVal | Указатель на добавляемую константу.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsAdd

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAdd
Целочисленные функции » Векторные функции » Арифметические операции

Сложение двух векторов. Подробнее...

Функции

void | nmppsAdd_4s (const nm4s *pSrcVec1, const nm4s *pSrcVec2, nm4s *pDstVec, int nSize)
void | nmppsAdd_8s (const nm8s *pSrcVec1, const nm8s *pSrcVec2, nm8s *pDstVec, int nSize)
void | nmppsAdd_16s (const nm16s *pSrcVec1, const nm16s *pSrcVec2, nm16s *pDstVec, int nSize)
void | nmppsAdd_32s (const nm32s *pSrcVec1, const nm32s *pSrcVec2, nm32s *pDstVec, int nSize)
void | nmppsAdd_64s (const nm64s *pSrcVec1, const nm64s *pSrcVec2, nm64s *pDstVec, int nSize)

Подробное описание

Сложение двух векторов.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй входной вектор.
nSize | Размер вектора в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsAdd_AddC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAdd_AddC
Целочисленные функции » Векторные функции » Арифметические операции

Сложение двух векторов с прибавлением константы. Подробнее...

Функции

void nmppsAdd_AddC_32s (nm32s *pSrcVec1, nm32s *pSrcVec2, int nVal, nm32s *pDstVec, int nSize)

Подробное описание

Сложение двух векторов с прибавлением константы.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй входной вектор.
nVal | Добавляемая константа.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsSubC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsSubC
Целочисленные функции » Векторные функции » Арифметические операции

Вычитание константы из вектора. Подробнее...

Функции

void | nmppsSubC_4s (const nm4s *pSrcVec, int4b nVal, nm4s *pDstVec, int nSize)
void | nmppsSubC_8s (const nm8s *pSrcVec, int8b nVal, nm8s *pDstVec, int nSize)
void | nmppsSubC_16s (const nm16s *pSrcVec, int16b nVal, nm16s *pDstVec, int nSize)
void | nmppsSubC_32s (const nm32s *pSrcVec, int32b nVal, nm32s *pDstVec, int nSize)
void | nmppsSubC_64s (const nm64s *pSrcVec, int64b nVal, nm64s *pDstVec, int nSize)

Подробное описание

Вычитание константы из вектора.

Аргументы
pSrcVec | Входной вектор.
nVal | Вычитаемая константа.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsSubCRev

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsSubCRev
Целочисленные функции » Векторные функции » Арифметические операции

Вычитание константы из вектора с переменой знака элементов вектора. Подробнее...

Функции

void | nmppsSubCRev_8s (const nm8s *pSrcVec, int8b nVal, nm8s *pDstVec, int nSize)
void | nmppsSubCRev_16s (const nm16s *pSrcVec, int16b nVal, nm16s *pDstVec, int nSize)
void | nmppsSubCRev_32s (const nm32s *pSrcVec, int32b nVal, nm32s *pDstVec, int nSize)
void | nmppsSubCRev_64s (const nm64s *pSrcVec, int64b nVal, nm64s *pDstVec, int nSize)

Подробное описание

Вычитание константы из вектора с переменой знака элементов вектора.

Аргументы
pSrcVec | Входной вектор.
nVal | Константа.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsSub

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsSub
Целочисленные функции » Векторные функции » Арифметические операции

Вычитание двух вектров. Подробнее...

Функции

void | nmppsSub_4s (const nm4s *pSrcVec1, nm4s *pSrcVec2, nm4s *pDstVec, int nSize)
void | nmppsSub_8s (const nm8s *pSrcVec1, nm8s *pSrcVec2, nm8s *pDstVec, int nSize)
void | nmppsSub_16s (const nm16s *pSrcVec1, nm16s *pSrcVec2, nm16s *pDstVec, int nSize)
void | nmppsSub_32s (const nm32s *pSrcVec1, nm32s *pSrcVec2, nm32s *pDstVec, int nSize)
void | nmppsSub_64s (const nm64s *pSrcVec1, nm64s *pSrcVec2, nm64s *pDstVec, int nSize)

Подробное описание

Вычитание двух вектров.

Аргументы
pSrcVec1 | Уменьшаемый вектор.
pSrcVec2 | Вычитаемый вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsAbsDiff

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAbsDiff
Целочисленные функции » Векторные функции » Арифметические операции

Вычисление вектора модулей разности элементов двух векторов. Подробнее...

Функции

void | nmppsAbsDiff_8s (const nm8s *pSrcVec1, nm8s *pSrcVec2, nm8s *pDstVec, int nSize)
void | nmppsAbsDiff_16s (const nm16s *pSrcVec1, nm16s *pSrcVec2, nm16s *pDstVec, int nSize)
void | nmppsAbsDiff_32s (const nm32s *pSrcVec1, nm32s *pSrcVec2, nm32s *pDstVec, int nSize)
void | nmppsAbsDiff_64s (const nm64s *pSrcVec1, nm64s *pSrcVec2, nm64s *pDstVec, int nSize)

Подробное описание

Вычисление вектора модулей разности элементов двух векторов.

Аргументы
pSrcVec1 | Входной вектор.
pSrcVec2 | Вычитаемый вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void

Restrictions:
Разность элементов векторов не должна быть равна минимальному значению для соответствующего типа (т.е. -128, -2^15 и т.д). В противном случае, абсолютное значение для таких элементов вычисляется не верно, давая на выходе то же самое число.


nmpp: nmppsAbsDiff_f

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAbsDiff_f
Целочисленные функции » Векторные функции » Арифметические операции

Вычисление вектора модулей разности элементов двух векторов. Подробнее...

Функции

void nmppsAbsDiff_32f (const nm32f *pSrcVec1, nm32f *pSrcVec2, nm32f *pDstVec, int nSize)

Подробное описание

Вычисление вектора модулей разности элементов двух векторов.

Аргументы
pSrcVec1 | Входной вектор.
pSrcVec2 | Вычитаемый вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsAbsDiff1

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAbsDiff1
Целочисленные функции » Векторные функции » Арифметические операции

Функция логического вычисления модулей разностей элементов двух векторов. Подробнее...

Функции

void nmppsAbsDiff1_8s (nm8s *pSrcVec1, nm8s *pSrcVec2, nm8s *pDstVec, int nSize)

Подробное описание

Функция логического вычисления модулей разностей элементов двух векторов.

Аргументы
pSrcVec1 | Входной вектор.
pSrcVec2 | Вычитаемый вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void

Restrictions:
Разность элементов векторов не должна быть равна минимальному значению для соответствующего типа (т.е. -128, -2^15 и т.д). В противном случае, абсолютное значение для таких элементов вычисляется не верно, давая на выходе то же самое число.


nmpp: nmppsMulC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMulC
Целочисленные функции » Векторные функции » Арифметические операции

Умножение вектора на константу. Подробнее...

Функции

void | nmppsMulC_8s (const nm8s *pSrcVec, int8b nVal, nm8s *pDstVec, int nSize)
void | nmppsMulC_8s16s (const nm8s *pSrcVec, int16b nVal, nm16s *pDstVec, int nSize)
void | nmppsMulC_16s (const nm16s *pSrcVec, int16b nVal, nm16s *pDstVec, int nSize)
void | nmppsMulC_16s32s (const nm16s *pSrcVec, int32b nVal, nm32s *pDstVec, int nSize)
void | nmppsMulC_32s (const nm32s *pSrcVec, int32b nVal, nm32s *pDstVec, int nSize)
void | nmppsMulC_32s64s (const nm32s *pSrcVec, int64b nVal, nm64s *pDstVec, int nSize)
void | nmppsMulC_64s (const nm64s *pSrcVec, int64b nVal, nm64s *pDstVec, int nSize)
void | nmppsMulC_2s16s (const nm2s *pSrcVec, int16b nVal, nm16s *pDstVec, int nSize)

Подробное описание

Умножение вектора на константу.

Аргументы
pSrcVec | Входной вектор.
nVal | Константа-множитель.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsMul_AddC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMul_AddC
Целочисленные функции » Векторные функции » Арифметические операции

Поэлементное умножение векторов с прибавлением константы. Подробнее...

Функции

void nmppsMul_AddC_64s (const nm64s *pSrcVec1, const nm64s *pSrcVec2, const nm64s *pnVal, nm64s *pDstVec, int nSize)

Подробное описание

Поэлементное умножение векторов с прибавлением константы.

Аргументы
pSrcVec1 | Входной вектор.
pSrcVec2 | Входной вектор.
pnVal | указаель на константу-инкремент.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsMulC_AddC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMulC_AddC
Целочисленные функции » Векторные функции » Арифметические операции

Умножение вектора на константу с прибавлением константы. Подробнее...

Функции

void | nmppsMulC_AddC_32s (const nm32s *pSrcVec, int nMulVal, int nAddVal, nm32s *pDstVec, int nSize)
void | nmppsMulC_AddC_2x32s (int32x2 *dataSparseSrc, int32x2 *mulArg, int32x2 *addArg, int32x2 *dataSparseDst, int size, int stepSparseSrc, int stepSparseDst)
Sparse vector by constant multiplication with addition of constant. Подробнее...

Подробное описание

Умножение вектора на константу с прибавлением константы.

Аргументы
pSrcVec | Входной вектор.
nMulVal | Константа-множитель.
nAddVal | Добавляемая константа.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void

Функции

◆ nmppsMulC_AddC_2x32s()

void nmppsMulC_AddC_2x32s | ( | int32x2 * | dataSparseSrc,
 |  | int32x2 * | mulArg,
 |  | int32x2 * | addArg,
 |  | int32x2 * | dataSparseDst,
 |  | int | size,
 |  | int | stepSparseSrc,
 |  | int | stepSparseDst
 | ) |  |

Sparse vector by constant multiplication with addition of constant.

where K is value of intWxK type

Аргументы
[in] | dataSparseSrc | Input sparse vector of 64-bit packed words
[in] | mulArg | Packed 64-bit word with values to multiply
[in] | addArg | Packed 64-bit word with values to add
[in] | dataSparseDst | Ouput sparse vector of 64-bit packed words
[in] | size | actual amount of 64-bit packed words in sparse vector to be processed
[in] | stepSparseSrc | 64-bit step between input packed words in memory . By default=1 means that input vector is continuous
[in] | stepSparseDst | 64-bit step between output packed words in memory. By default=1 means that output vector is continuous
Возвращает
void


nmpp: nmppsRShiftC_MulC_AddC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsRShiftC_MulC_AddC
Целочисленные функции » Векторные функции » Арифметические операции

Функции

void nmppsRShiftC_MulC_AddC_2x32s (int32x2 *dataSparseSrc, int32x2 *preshiftArg, int32x2 *mulArg, int32x2 *addArg, int32x2 *dataSparseDst, int size, int stepSparseSrc, int stepSparseDst)

Подробное описание

Sparse vector by constant multiplication with addition of constant.

where K is value of intWxK type

Аргументы
[in] | dataSparseSrc | Input sparse vector of 64-bit packed words
[in] | preshiftArg | Packed 64-bit word of values for preshifting of input data = [2,4,6,8...28,30]
[in] | mulArg | Packed 64-bit word with values to multiply
[in] | addArg | Packed 64-bit word with values to add
[in] | dataSparseDst | Ouput sparse vector of 64-bit packed words
[in] | size | actual amount of 64-bit packed words in sparse vector to be processed
[in] | stepSparseSrc | 64-bit step between input packed words in memory . By default=1 means that input vector is continuous
[in] | stepSparseDst | 64-bit step between output packed words in memory. By default=1 means that output vector is continuous
Возвращает
void


nmpp: nmppsMulC_AddV_AddC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMulC_AddV_AddC
Целочисленные функции » Векторные функции » Арифметические операции

Умножение вектора на константу с прибавлением вектора и константы. Подробнее...

Функции

void nmppsMulC_AddV_AddC_32s (nm32s *pSrcVec1, int nMulVal, nm32s *pSrcVec2, int nAddVal, nm32s *pDstVec, int nSize)

Подробное описание

Умножение вектора на константу с прибавлением вектора и константы.

Аргументы
pSrcVec1 | Первый входной вектор.
nMulVal | Константа-множитель.
pSrcVec2 | Второй входной вектор.
nAddVal | Добавляемая константа.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsSumN

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsSumN
Целочисленные функции » Векторные функции » Арифметические операции

Сложение нескольких векторов. Подробнее...

Функции

void | nmppsSumN_8s16s (nm8s **ppSrcVec, nm16s *pDstVec, int nSize, int nNumberOfVectors)
void | nmppsSumN_16s (nm16s **ppSrcVec, nm16s *pDstVec, int nSize, int nNumberOfVectors)

Подробное описание

Сложение нескольких векторов.

Аргументы
ppSrcVec | Массив указателей на суммируемые вектора.
nNumberOfVectors | Число суммируемых векторов.
nSize | Размер векторов в элементах =[32*PACK]
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsDivC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsDivC
Целочисленные функции » Векторные функции » Арифметические операции

Деление вектора на константу. Подробнее...

Функции

void nmppsDivC_32s (nm32s *pSrcVec, int nDivisor, nm32s *pDstVec, int nSize, void *pTmpBuf1, void *pTmpBuf2)

Подробное описание

Деление вектора на константу.

Аргументы
pSrcVec | Входной вектор.
nDivisor | Константа-делитель.
nSize | Размер входного вектора в элементах.
pTmpBuf1 | Временный массив размером nSize 64-х разрядных слов.
pTmpBuf2 | Временный массив размером nSize 64-х разрядных слов.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void

Restrictions:
  • Допустимые значения для элементов входного вектора лежат в диапазоне [-4095,...,4095];
  • Допустимые значения для делителя лежат в диапазоне [1,2,..145].
Заметки
Для коректного использования in-place параметров следует учитывать порядок получения промежуточных результатов:
the order of obtaining intermediate results:
pSrcVec => pTmpBuf1 (1cpl:L<=>G) - 1/x Multiplying (in-place is supported)
pTmpBuf1 => pTmpBuf2 (1cpl:G<=>L) - Scaling down (in-place is supported)
pTmpBuf2 => pDstVec (2cpl:L<=>G) - Result correction (in-place is supported)

Примеры использования in-place параметров:
nmppsDiv_(L0,G0,10240,3,G0,L0);
nmppsDiv_(L0,L0,10240,3,L0,L0);


nmpp: nmppsSum

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsSum
Целочисленные функции » Векторные функции » Арифметические операции

Возвращает сумму всех элементов вектора. Подробнее...

Функции

void | nmppsSum_8s (const nm8s *pSrcVec, int nSize, int32b *pnRes)
void | nmppsSum_16s (const nm16s *pSrcVec, int nSize, int64b *pnRes)
void | nmppsSum_32s (const nm32s *pSrcVec, int nSize, int64b *pnRes)
void | nmppsSum_64s (const nm64s *pSrcVec, int nSize, int64b *pnRes)

Подробное описание

Возвращает сумму всех элементов вектора.

Аргументы
pSrcVec | Входной вектор.
pTmpBuf | Временный массив размера nSize 64-х разрядных слов.
nSize | Размер векторов в элементах.
Возвращает
Сумма элементов вектора.


nmpp: nmppsSum_1

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsSum_1
Целочисленные функции » Векторные функции » Арифметические операции

Возвращает сумму всех элементов вектора. Подробнее...

Функции

void nmppsSum_1 (const nm1 *pSrcVec, int nSize, int32b *pnRes, void *pTmpBuf)

Подробное описание

Возвращает сумму всех элементов вектора.

Аргументы
pSrcVec | Входной вектор.
pTmpBuf | Временный массив размера nSize 64-х разрядных слов.
nSize | Размер векторов в элементах.
Возвращает
Сумма элементов вектора.


nmpp: nmppsDotProd_sm

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsDotProd_sm
Целочисленные функции » Векторные функции » Арифметические операции

Скалярное умножение двух векторов. Подробнее...

Функции

int | nmppsDotProd_8s8sm (const nm8s *pSrcVec1, const nm8s *pSrcVec2, int nSize, int64b *pnRes, nm64s *tmp)
int | nmppsDotProd_8s16sm (const nm8s *pSrcVec1, const nm16s *pSrcVec2, int nSize, int64b *pnRes, nm64s *tmp)
int | nmppsDotProd_8s32sm (const nm8s *pSrcVec1, const nm32s *pSrcVec2, int nSize, int64b *pnRes, nm64s *tmp)
int | nmppsDotProd_16s16sm (const nm16s *pSrcVec1, const nm16s *pSrcVec2, int nSize, int64b *pnRes, nm64s *tmp)
int | nmppsDotProd_16s32sm (const nm16s *pSrcVec1, const nm32s *pSrcVec2, int nSize, int64b *pnRes, nm64s *tmp)
int | nmppsDotProd_32s32sm (const nm32s *pSrcVec1, const nm32s *pSrcVec2, int nSize, int64b *pnRes, nm64s *tmp)

Подробное описание

Скалярное умножение двух векторов.

Аргументы
pSrcVec1 | Первый вектор.
pSrcVec2 | Второй вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pnRes Указатель на результирующее значение.
Возвращает
pTmpBuff Временный массив из nSize элементов.
void


nmpp: nmppsDotProd

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsDotProd
Целочисленные функции » Векторные функции » Арифметические операции

Скалярное умножение двух векторов. Подробнее...

Функции

void | nmppsDotProd_8s64s (const nm8s *pSrcVec1, const nm64s *pSrcVec2, int nSize, int64b *pnRes)
void | nmppsDotProd_16s64s (const nm16s *pSrcVec1, const nm64s *pSrcVec2, int nSize, int64b *pnRes)
void | nmppsDotProd_32s64s (const nm32s *pSrcVec1, const nm64s *pSrcVec2, int nSize, int64b *pnRes)
void | nmppsDotProd_64s64s (const nm64s *pSrcVec1, const nm64s *pSrcVec2, int nSize, int64b *pnRes)

Подробное описание

Скалярное умножение двух векторов.

Аргументы
pSrcVec1 | Первый вектор.
pSrcVec2 | Второй вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pnRes Указатель на результирующее значение.
Возвращает
pTmpBuff Временный массив из nSize элементов.
void


nmpp: nmppsWeightedSum

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsWeightedSum
Целочисленные функции » Векторные функции » Арифметические операции

Поэлементное взвешенное суммирование элементов двух векторов Подробнее...

Функции

void | nmppsWeightedSum_8s16s (nm8s *pSrcVec1, int nW1, nm8s *pSrcVec2, int nW2, nm16s *pDstVec, int nSize)
void | nmppsWeightedSum_16s32s (nm16s *pSrcVec1, int nW1, nm16s *pSrcVec2, int nW2, nm32s *pDstVec, int nSize)
void | nmppsWeightedSum_32s64s (nm32s *pSrcVec1, nm64s nW1, nm32s *pSrcVec2, nm64s nW2, nm64s *pDstVec, int nSize)

Подробное описание

Поэлементное взвешенное суммирование элементов двух векторов

Аргументы
pSrcVec1 | 1-ый входной вектор.
nW1 | 1-ый весовой коэффициент
pSrcVec2 | 2-ой входной вектор.
nW2 | 2-ой весовой коэффициент
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: Логические и бинарные операции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Логические и бинарные операции
Целочисленные функции » Векторные функции

Группы

nmppsNot_
Функция логического "НЕ".
nmppsAndC
Функция логического "И" между вектором и константой.
nmppsAnd
Функция логического "И" между двумя векторами.
nmppsAnd4V_
Функция логического "И" между четырьмя векторами.
nmppsAndNotV_
Функция логического "И-НЕ" между двумя векторами.
nmppsOrC
Функция логического "ИЛИ" между вектором и константой.
nmppsOr
Функция логического "ИЛИ" между двумя векторами.
nmppsOr3V_
Функция логического "ИЛИ" между четырьмя векторами.
nmppsOr4V_
Функция логического "ИЛИ" между четырьмя векторами.
nmppsXorC
Функция логического "Исключающего ИЛИ" между вектором и константой.
nmppsXor
Функция логического "Исключающего ИЛИ" между двумя векторами.
nmppsMaskV_
Функция логического ИЛИ с предварительным маскированием двух векторов.
nmppsRShiftC
Операция арифметического сдвига вправо.
nmppsRShiftC_
Операция логического сдвига.
nmppsRShiftC_AddC_
Операция логического сдвига.
nmppsDisplaceBits
Непрерывное смещение битов внутри бинарного массива в сторону конца массиваФункция смещает биты внутри бинарного массива на несколько позиций (nBits) в сторону конца массива. Внутри 64р. слова младшие биты сдвигаются на старшие позиции того же слова, а старшие биты перемещаются в младшие позиции следующего 64р. слова. Освободившееся место в первом 64р. слове заполняется старшими битами 64р. слова с адреса pnBits. Сдвинутые биты сохраняются в массиве pDst. Пример сдвига на 8 бит :

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppsNot_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsNot_
Целочисленные функции » Векторные функции » Логические и бинарные операции

Функция логического "НЕ". Подробнее...

Функции

void | nmppsNot_2u (const nm2u *pSrcVec, nm2u *pDstVec, int nSize)
void | nmppsNot_4u (const nm4u *pSrcVec, nm4u *pDstVec, int nSize)
void | nmppsNot_8u (const nm8u *pSrcVec, nm8u *pDstVec, int nSize)
void | nmppsNot_16u (const nm16u *pSrcVec, nm16u *pDstVec, int nSize)
void | nmppsNot_32u (const nm32u *pSrcVec, nm32u *pDstVec, int nSize)
void | nmppsNot_64u (const nm64u *pSrcVec, nm64u *pDstVec, int nSize)

Подробное описание

Функция логического "НЕ".

Функция изменяет значения всех битов входного вектора на противоположные.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsAndC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAndC
Целочисленные функции » Векторные функции » Логические и бинарные операции

Функция логического "И" между вектором и константой. Подробнее...

Функции

void | nmppsAndC_4u (const nm4u *pSrcVec, uint4b nVal, nm4u *pDstVec, int nSize)
void | nmppsAndC_8u (const nm8u *pSrcVec, uint8b nVal, nm8u *pDstVec, int nSize)
void | nmppsAndC_16u (const nm16u *pSrcVec, uint16b nVal, nm16u *pDstVec, int nSize)
void | nmppsAndC_32u (const nm32u *pSrcVec, uint32b nVal, nm32u *pDstVec, int nSize)
void | nmppsAndC_64u (const nm64u *pSrcVec, uint64b nVal, nm64u *pDstVec, int nSize)

Подробное описание

Функция логического "И" между вектором и константой.

Аргументы
pSrcVec | Входной вектор.
nVal | Константа.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsAnd

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAnd
Целочисленные функции » Векторные функции » Логические и бинарные операции

Функция логического "И" между двумя векторами. Подробнее...

Функции

void | nmppsAnd_1 (const nm1 *pSrcVec1, const nm1 *pSrcVec2, nm1 *pDstVec, int nSize)
void | nmppsAnd_2u (const nm2u *pSrcVec1, const nm2u *pSrcVec2, nm2u *pDstVec, int nSize)
void | nmppsAnd_4u (const nm4u *pSrcVec1, const nm4u *pSrcVec2, nm4u *pDstVec, int nSize)
void | nmppsAnd_8u (const nm8u *pSrcVec1, const nm8u *pSrcVec2, nm8u *pDstVec, int nSize)
void | nmppsAnd_16u (const nm16u *pSrcVec1, const nm16u *pSrcVec2, nm16u *pDstVec, int nSize)
void | nmppsAnd_32u (const nm32u *pSrcVec1, const nm32u *pSrcVec2, nm32u *pDstVec, int nSize)
void | nmppsAnd_64u (const nm64u *pSrcVec1, const nm64u *pSrcVec2, nm64u *pDstVec, int nSize)

Подробное описание

Функция логического "И" между двумя векторами.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsAnd4V_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAnd4V_
Целочисленные функции » Векторные функции » Логические и бинарные операции

Функция логического "И" между четырьмя векторами. Подробнее...

Функции

void nmppsAnd4V_64u (nm64u *pSrcVec1, nm64u *pSrcVec2, nm64u *pSrcVec3, nm64u *pSrcVec4, nm64u *pDstVec, int nSize)

Подробное описание

Функция логического "И" между четырьмя векторами.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй входной вектор.
pSrcVec3 | Третий входной вектор.
pSrcVec4 | Четвертый входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsAndNotV_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAndNotV_
Целочисленные функции » Векторные функции » Логические и бинарные операции

Функция логического "И-НЕ" между двумя векторами. Подробнее...

Функции

void nmppsAndNotV_64u (nm64u *pSrcVec1, nm64u *pSrcVec2, nm64u *pDstVec, int nSize)

Подробное описание

Функция логического "И-НЕ" между двумя векторами.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsOrC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsOrC
Целочисленные функции » Векторные функции » Логические и бинарные операции

Функция логического "ИЛИ" между вектором и константой. Подробнее...

Функции

void | nmppsOrC_8u (const nm8u *pSrcVec, uint8b nVal, nm8u *pDstVec, int nSize)
void | nmppsOrC_16u (const nm16u *pSrcVec, uint16b nVal, nm16u *pDstVec, int nSize)
void | nmppsOrC_32u (const nm32u *pSrcVec, uint32b nVal, nm32u *pDstVec, int nSize)
void | nmppsOrC_64u (const nm64u *pSrcVec, uint64b nVal, nm64u *pDstVec, int nSize)

Подробное описание

Функция логического "ИЛИ" между вектором и константой.

Аргументы
pSrcVec | Входной вектор.
nVal | Константа.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsOr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsOr
Целочисленные функции » Векторные функции » Логические и бинарные операции

Функция логического "ИЛИ" между двумя векторами. Подробнее...

Функции

void | nmppsOr_1 (const nm1 *pSrcVec1, const nm1 *pSrcVec2, nm1 *pDstVec, int nSize)
void | nmppsOr_2u (const nm2u *pSrcVec1, const nm2u *pSrcVec2, nm2u *pDstVec, int nSize)
void | nmppsOr_4u (const nm4u *pSrcVec1, const nm4u *pSrcVec2, nm4u *pDstVec, int nSize)
void | nmppsOr_8u (const nm8u *pSrcVec1, const nm8u *pSrcVec2, nm8u *pDstVec, int nSize)
void | nmppsOr_16u (const nm16u *pSrcVec1, const nm16u *pSrcVec2, nm16u *pDstVec, int nSize)
void | nmppsOr_32u (const nm32u *pSrcVec1, const nm32u *pSrcVec2, nm32u *pDstVec, int nSize)
void | nmppsOr_64u (const nm64u *pSrcVec1, const nm64u *pSrcVec2, nm64u *pDstVec, int nSize)

Подробное описание

Функция логического "ИЛИ" между двумя векторами.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsOr3V_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsOr3V_
Целочисленные функции » Векторные функции » Логические и бинарные операции

Функция логического "ИЛИ" между четырьмя векторами. Подробнее...

Функции

void nmppsOr3V_64u (nm64u *pSrcVec1, nm64u *pSrcVec2, nm64u *pSrcVec3, nm64u *pDstVec, int nSize)

Подробное описание

Функция логического "ИЛИ" между четырьмя векторами.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй входной вектор.
pSrcVec3 | Третий входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsOr4V_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsOr4V_
Целочисленные функции » Векторные функции » Логические и бинарные операции

Функция логического "ИЛИ" между четырьмя векторами. Подробнее...

Функции

void nmppsOr4V_64u (nm64u *pSrcVec1, nm64u *pSrcVec2, nm64u *pSrcVec3, nm64u *pSrcVec4, nm64u *pDstVec, int nSize)

Подробное описание

Функция логического "ИЛИ" между четырьмя векторами.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй входной вектор.
pSrcVec3 | Третий входной вектор.
pSrcVec4 | Четвертый входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsXorC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsXorC
Целочисленные функции » Векторные функции » Логические и бинарные операции

Функция логического "Исключающего ИЛИ" между вектором и константой. Подробнее...

Функции

void | nmppsXorC_8u (const nm8u *pSrcVec, uint8b nVal, nm8u *pDstVec, int nSize)
void | nmppsXorC_16u (const nm16u *pSrcVec, uint16b nVal, nm16u *pDstVec, int nSize)
void | nmppsXorC_32u (const nm32u *pSrcVec, uint32b nVal, nm32u *pDstVec, int nSize)
void | nmppsXorC_64u (const nm64u *pSrcVec, uint64b nVal, nm64u *pDstVec, int nSize)

Подробное описание

Функция логического "Исключающего ИЛИ" между вектором и константой.

Аргументы
pSrcVec | Входной вектор.
nVal | Константа.
pnVal | Указатель на константу.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsXor

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsXor
Целочисленные функции » Векторные функции » Логические и бинарные операции

Функция логического "Исключающего ИЛИ" между двумя векторами. Подробнее...

Функции

void | nmppsXor_4u (const nm4u *pSrcVec1, const nm4u *pSrcVec2, nm4u *pDstVec, int nSize)
void | nmppsXor_8u (const nm8u *pSrcVec1, const nm8u *pSrcVec2, nm8u *pDstVec, int nSize)
void | nmppsXor_16u (const nm16u *pSrcVec1, const nm16u *pSrcVec2, nm16u *pDstVec, int nSize)
void | nmppsXor_32u (const nm32u *pSrcVec1, const nm32u *pSrcVec2, nm32u *pDstVec, int nSize)
void | nmppsXor_64u (const nm64u *pSrcVec1, const nm64u *pSrcVec2, nm64u *pDstVec, int nSize)

Подробное описание

Функция логического "Исключающего ИЛИ" между двумя векторами.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsMaskV_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMaskV_
Целочисленные функции » Векторные функции » Логические и бинарные операции

Функция логического ИЛИ с предварительным маскированием двух векторов. Подробнее...

Функции

void nmppsMaskV_64u (nm64u *pSrcVec1, nm64u *pSrcVec2, nm64u *pMaskVec, nm64u *pDstVec, int nSize)

Подробное описание

Функция логического ИЛИ с предварительным маскированием двух векторов.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй Входной вектор.
pMaskVec | Вектор маски.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsRShiftC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsRShiftC
Целочисленные функции » Векторные функции » Логические и бинарные операции

Операция арифметического сдвига вправо. Подробнее...

Функции

void | nmppsRShiftC_8s (const nm8s *pSrcVec, int nShift, nm8s *pDstVec, int nSize)
void | nmppsRShiftC_16s (const nm16s *pSrcVec, int nShift, nm16s *pDstVec, int nSize)
void | nmppsRShiftC_32s (const nm32s *pSrcVec, int nShift, nm32s *pDstVec, int nSize)
void | nmppsRShiftC_64s (const nm64s *pSrcVec, int nShift, nm64s *pDstVec, int nSize)

Подробное описание

Операция арифметического сдвига вправо.

Функции реализуют операции арифметического сдвига вправо битов элементов вектора. Освободившиеся биты заполняются знаковым битом - старшим битом.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер вектора в элементах.
nShift | Параметр определяет на сколько позиций нужно сдвинуть биты элементов вектора.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsRShiftC_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsRShiftC_
Целочисленные функции » Векторные функции » Логические и бинарные операции

Операция логического сдвига. Подробнее...

Функции

void | nmppsRShiftC_4u (const nm4u *pSrcVec, int nShift, nm4u *pDstVec, int nSize)
void | nmppsRShiftC_8u (const nm8u *pSrcVec, int nShift, nm8u *pDstVec, int nSize)
void | nmppsRShiftC_16u (const nm16u *pSrcVec, int nShift, nm16u *pDstVec, int nSize)
void | nmppsRShiftC_32u (const nm32u *pSrcVec, int nShift, nm32u *pDstVec, int nSize)
void | nmppsRShiftC_64u (const nm64u *pSrcVec, int nShift, nm64u *pDstVec, int nSize)

Подробное описание

Операция логического сдвига.

Функции реализуют операции логического сдвига вправо битов элементов вектора. Сдвиг осуществляется на число бит, указанных в соответствующем операнде. Освободившиеся биты заполняются нулями.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер векторов в элементах.
nShift | Определяет на сколько позиций нужно сдвинуть биты элемента вектора.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsRShiftC_AddC_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
nmppsRShiftC_AddC_
Целочисленные функции » Векторные функции » Логические и бинарные операции

Операция логического сдвига.

Операция логического сдвига.

Функции реализуют операции логического сдвига вправо битов элементов вектора с прибавлением консанты. Сдвиг осуществляется на число бит, указанных в соответствующем операнде. Освободившиеся биты заполняются нулями.

Аргументы
pSrcVec | Входной вектор.
nAddVal | Константа для суммирования.
nSize | Размер векторов в элементах.
nShift | Определяет на сколько позиций нужно сдвинуть биты элемента вектора.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsDisplaceBits

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsDisplaceBits
Целочисленные функции » Векторные функции » Логические и бинарные операции

Непрерывное смещение битов внутри бинарного массива в сторону конца массиваФункция смещает биты внутри бинарного массива на несколько позиций (nBits) в сторону конца массива. Внутри 64р. слова младшие биты сдвигаются на старшие позиции того же слова, а старшие биты перемещаются в младшие позиции следующего 64р. слова. Освободившееся место в первом 64р. слове заполняется старшими битами 64р. слова с адреса pnBits. Сдвинутые биты сохраняются в массиве pDst. Пример сдвига на 8 бит : Подробнее...

Функции

void nmppsFwdShiftBitstream (const nm64u *pSrcVec, nm64u *pDstVec, nm64u *pnBits, int nBits, int nSize)

Подробное описание

Непрерывное смещение битов внутри бинарного массива в сторону конца массива

Функция смещает биты внутри бинарного массива на несколько позиций (nBits) в сторону конца массива. Внутри 64р. слова младшие биты сдвигаются на старшие позиции того же слова, а старшие биты перемещаются в младшие позиции следующего 64р. слова. Освободившееся место в первом 64р. слове заполняется старшими битами 64р. слова с адреса pnBits. Сдвинутые биты сохраняются в массиве pDst. Пример сдвига на 8 бит :

            pnBits =[AB00000000000000]
            pSrcVec=[0807060504030201][FF0F0E0D0C0B0A09]
            pDstVec=[07060504030201AB][0F0E0D0C0B0A0908]

Последние 8 бит массива pDstVec будут потеряны. Если же указатель pBits установить на последнее 64р. слово в результате получится цикличическое перемещение бит.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер векторов в 64р. элементах.
pnBits | Указатель на 64р-слово, старшие биты которого записываются на освобождающуюся при сдвиге младшую часть первого 64р. слова
nBits | Кол-во позиций на которое происходит смещение бит :nBits=[2,4,6....62].
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: Операции сравнения

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Операции сравнения
Целочисленные функции » Векторные функции

Группы

nmppsMax_
Поиск значения максимального элемента вектора.
nmppsMin
Поиск значения минимального элемента вектора.
nmppsMaxIndx_
Поиск значения максимального элемента вектора и его положения (положений) в векторе.
nmppsMinIndx_
Поиск значения минимального элемента вектора и его положения (положений) в векторе.
nmppsMinIndxVN_
Поиск значения минимального элемента вектора длины N и его положения в векторе.
nmppsFirstZeroIndx
Поиск позиции первого нулевого элемента в векторе .
nmppsFirstNonZeroIndx
Поиск позиции первого ненулевого элемента в векторе .
nmppsLastZeroIndx
Поиск позиции последнего нулевого элемента в векторе .
nmppsLastNonZeroIndx
Поиск позиции последнего ненулевого элемента в векторе .
nmppsMinEvery_
Поэлементный минимум из двух векторов.
nmppsMaxEvery_
Поэлементный максимум из двух векторов.
nmppsMinCmpLtV_
Поэлементный минимум из двух векторов.
nmppsCmpLt0
Сравнивает элементы массива на меньше нуля.
nmppsCmpEq0(Reduced)
Сравнивает элементы массива неполной разрядности на признак равенства нулю.
nmppsCmpGt0
Сравнивает элементы массива на больше нуля.
nmppsMinMaxEvery_
Поэлементное сравнение двух векторов.
nmppsClipPowC_
Функция насыщения.
nmppsClipCC_
Функция насыщения с произвольными порогами.
nmppsThreshold_Lt_Gt_f
Пороговая функция с нижним и верхним порогами
nmppsClipRShiftConvert_AddC_
Сокращение разрядности данных c предварительной их обработкой.
nmppsClipConvert_AddC_
Сокращение разрядности данных c предварительной их обработкой.
nmppsCmpEqC
Сравнивает элементы массива на признак равенства константе.
nmppsCmpNe0
Сравнивает элементы массива на признак неравенства нулю.
nmppsCmpEq0
Сравнивает элементы массива на признак равенства нулю.
nmppsCmpNeC
Сравнивает элементы массива на признак неравенства константе.
nmppsCmpNeC_flag
Сравнивает элементы массива на признак неравенства константе.
nmppsCmpLtC
Функция сравнения элементов массива с константой (меньше)
nmppsCmpGtC
Функция сравнения элементов массива с константой (больше)
nmppsCmpEqV_
Поэлементное сравнение элементов (неполной разрядности) двух вектров на признак равенства.
nmppsCmpNe
Сравнивает элементы массива на признак неравенства константе.
nmppsCmpLt
Функция сравнения элементов массива с константой (меньше)
nmppsCmpNeV_
Поэлементное сравнение элементов двух вектров на признак неравенства.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppsMax_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMax_
Целочисленные функции » Векторные функции » Операции сравнения

Поиск значения максимального элемента вектора. Подробнее...

Функции

void | nmppsMax_8s7b (const nm8s7b *pSrcVec, int nSize, int8b *nMaxValue)
void | nmppsMax_16s15b (const nm16s15b *pSrcVec, int nSize, int16b *nMaxValue)
void | nmppsMax_32s31b (const nm32s31b *pSrcVec, int nSize, int *nMaxValue)
void | nmppsMax_64s63b (const nm64s63b *pSrcVec, int nSize, int64b *nMaxValue)
int | nmppsMax_8sm (const nm8s *srcVec, int size, int8b *maxValue, nm16s *tmp)
int | nmppsMax_16sm (const nm16s *srcVec, int size, int16b *maxValue, nm32s *tmp)
int | nmppsMax_32sm (const nm32s *srcVec, int size, int32b *maxValue, nm64s *tmp)

Подробное описание

Поиск значения максимального элемента вектора.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер вектора в элементах.
Возвращаемые значения
nMaxValue значение максимального элемент вектора.
Возвращает
void
Restrictions:
Ограничения на параметры приводятся в описании каждой из функций.

Функции

◆ nmppsMax_16s15b()

void nmppsMax_16s15b | ( | const nm16s15b * | pSrcVec,
 |  | int | nSize,
 |  | int16b * | nMaxValue
 | ) |  |

Restrictions:
Максимальный и минимальный элементы массива должны отличатся не более чем на 2^15-1.
Примеры допустимых диапазонов входных чисел:

◆ nmppsMax_32s31b()

void nmppsMax_32s31b | ( | const nm32s31b * | pSrcVec,
 |  | int | nSize,
 |  | int * | nMaxValue
 | ) |  |

Restrictions:
Максимальный и минимальный элементы массива должны отличатся не более чем на 2^31-1.
Примеры допустимых диапазонов входных чисел:
[00000000h..7FFFFFFFh]=[ 0..+2^31-1] [FFFFFFFFh..7FFFFFFEh]=[ -1..+2^31-2 ] [C0000000h..3FFFFFFFh]=[ -2^30..+2^30-1 ] [80000000h..00000000h]=[ -2^31..0 ]

◆ nmppsMax_8s7b()

void nmppsMax_8s7b | ( | const nm8s7b * | pSrcVec,
 |  | int | nSize,
 |  | int8b * | nMaxValue
 | ) |  |

Restrictions:
Физический размер вектора должен быть кратен блоку из 32-х 64р. слов

Максимальный и минимальный элементы массива должны отличатся не более чем на 127.
Примеры допустимых диапазонов входных чисел:
[00h..7Fh]=[ 0..+127] [FFh..7Eh]=[ -1..+126] [C0h..3Fh]=[-64..+63] [80h..00h]=[-128..0 ]


nmpp: nmppsMin

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMin
Целочисленные функции » Векторные функции » Операции сравнения

Поиск значения минимального элемента вектора. Подробнее...

Функции

void | nmppsMin_8s7b (const nm8s7b *pSrcVec, int nSize, int8b *nMinValue)
void | nmppsMin_16s15b (const nm16s15b *pSrcVec, int nSize, int16b *nMinValue)
void | nmppsMin_32s31b (const nm32s31b *pSrcVec, int nSize, int *nMinValue)
void | nmppsMin_64s63b (const nm64s63b *pSrcVec, int nSize, int64b *nMinValue)
int | nmppsMin_8sm (const nm8s *srcVec, int size, int8b *minValue, nm16s *tmp)
int | nmppsMin_16sm (const nm16s *srcVec, int size, int16b *minValue, nm32s *tmp)
int | nmppsMin_32sm (const nm32s *srcVec, int size, int32b *minValue, nm64s *tmp)

Подробное описание

Поиск значения минимального элемента вектора.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер вектора в элементах.
Возвращаемые значения
nMinValue значение минимального элемент.
Возвращает
void
Restrictions:
Ограничения на параметры приводятся в описании каждой из функций.

Функции

◆ nmppsMin_16s15b()

void nmppsMin_16s15b | ( | const nm16s15b * | pSrcVec,
 |  | int | nSize,
 |  | int16b * | nMinValue
 | ) |  |

Restrictions:
Максимальный и минимальный элементы массива должны отличатся не более чем на 2^15-1.
Примеры допустимых диапазонов входных чисел:
[0000h..7FFFh]=[ 0..+32767 ] [FFFFh..7FFEh]=[ -1..+32766 ] [C000h..3FFFh]=[-16384..+16383 ] [8000h..0000h]=[-32768..0 ]

◆ nmppsMin_32s31b()

void nmppsMin_32s31b | ( | const nm32s31b * | pSrcVec,
 |  | int | nSize,
 |  | int * | nMinValue
 | ) |  |

Restrictions:
Максимальный и минимальный элементы массива должны отличатся не более чем на 2^31-1.
Примеры допустимых диапазонов входных чисел:
[00000000h..7FFFFFFFh]=[ 0..+2^31-1] [FFFFFFFFh..7FFFFFFEh]=[ -1..+2^31-2 ] [C0000000h..3FFFFFFFh]=[ -2^30..+2^30-1 ] [80000000h..00000000h]=[ -2^31..0 ]

◆ nmppsMin_8s7b()

void nmppsMin_8s7b | ( | const nm8s7b * | pSrcVec,
 |  | int | nSize,
 |  | int8b * | nMinValue
 | ) |  |

Restrictions:
    \~
\~russian Максимальный и минимальный элементы массива должны отличатся не более чем на 127. \n
    Примеры допустимых диапазонов входных чисел:\n
\~english The difference between the maximum and minimum elements of the array should not be more than 127. \n
    Here are some examples of admissible ranges for input numbers: \n
\~
    [00h..7Fh]=[   0..+127]
    [FFh..7Eh]=[  -1..+126]
    [C0h..3Fh]=[-64..+63]
    [80h..00h]=[-128..0 ]


nmpp: nmppsMaxIndx_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMaxIndx_
Целочисленные функции » Векторные функции » Операции сравнения

Поиск значения максимального элемента вектора и его положения (положений) в векторе. Подробнее...

Функции

void | nmppsMaxIndx_8s (nm8s7b *pSrcVec, int nSize, int *nIndex, int8b *nMaxValue, void *pLTmpBuf, void *pGTmpBuf, int nSearchDir)
void | nmppsMaxIndx_16s (nm16s15b *pSrcVec, int nSize, int *nIndex, int16b *nMaxValue, void *pLTmpBuf, void *pGTmpBuf, int nSearchDir)
void | nmppsMaxIndx_32s (nm32s31b *pSrcVec, int nSize, int *nIndex, int32b *nMaxValue, void *pLTmpBuf, void *pGTmpBuf, int nSearchDir)

Подробное описание

Поиск значения максимального элемента вектора и его положения (положений) в векторе.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер вектора в элементах. Занимаемый этим вектором объем памяти должен быть кратен 64 длинным словам (nm64s[64,128,...]).
pLTmpBuf | Временный массив на локальной шине из nSize элементов.
pGTmpBuf | Временный массив на глобальной шине .
nSearchDir Направление поиска максимума.
При nSearchDir = 1, поиск ведется от начала массива.
При nSearchDir = -1, поиск ведется от конца массива.
Значение максимального элемента.
Возвращаемые значения
nIndex Индекс первого найденного максимума среди равных.
Возвращает
void
Restrictions:
Ограничения на параметры приводятся в описании каждой из функций.

Restrictions:
Диапазоны входных элементов могут быть "плавающими"
Например для данных nm16s15b максимальный и минимальный элементы массива должны отличатся не более чем на 2^15-1. Примеры допустимых диапазонов входных чисел для типа nm16s15b :

Here are some examples of admissible ranges for input numbers:
[0000h..7FFFh]=[ 0..+32767 ] [FFFFh..7FFEh]=[ -1..+32766 ] [C000h..3FFFh]=[-16384..+16383 ] [8000h..0000h]=[-32768..0 ]


nmpp: nmppsMinIndx_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMinIndx_
Целочисленные функции » Векторные функции » Операции сравнения

Поиск значения минимального элемента вектора и его положения (положений) в векторе. Подробнее...

Функции

void | nmppsMinIndx_8s (nm8s7b *pSrcVec, int nSize, int *nIndex, int8b *nMinValue, void *pLTmpBuf, void *pGTmpBuf, int nSearchDir)
void | nmppsMinIndx_16s (nm16s15b *pSrcVec, int nSize, int *nIndex, int16b *nMinValue, void *pLTmpBuf, void *pGTmpBuf, int nSearchDir)
void | nmppsMinIndx_32s (nm32s31b *pSrcVec, int nSize, int *nIndex, int32b *nMinValue, void *pLTmpBuf, void *pGTmpBuf, int nSearchDir)

Подробное описание

Поиск значения минимального элемента вектора и его положения (положений) в векторе.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер вектора в элементах. Занимаемый этим вектором объем памяти должен быть кратен 64 длинным словам (nm64s[64,128,...]).
pLTmpBuf | Временный массив на локальной шине .
pGTmpBuf | Временный массив на глобальной шине из nSize элементов.
nSearchDir Направление поиска минимума.
При nSearchDir = 1, поиск ведется от начала массива.
При nSearchDir = -1, поиск ведется от конца массива.
Значение минимального элемента.
Возвращаемые значения
nIndex Индекс первого найденного минимума среди равных.
Возвращает
void
Restrictions:
Ограничения на параметры приводятся в описании каждой из функций.

Restrictions:
Диапазоны входных элементов могут быть "плавающими"
Например для данных nm16s15b максимальный и минимальный элементы массива должны отличатся не более чем на 2^15-1. Примеры допустимых диапазонов входных чисел для типа nm16s15b :

Here are some examples of admissible ranges for input numbers:
[0000h..7FFFh]=[ 0..+32767 ] [FFFFh..7FFEh]=[ -1..+32766 ] [C000h..3FFFh]=[-16384..+16383 ] [8000h..0000h]=[-32768..0 ]


nmpp: nmppsMinIndxVN_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMinIndxVN_
Целочисленные функции » Векторные функции » Операции сравнения

Поиск значения минимального элемента вектора длины N и его положения в векторе. Подробнее...

Функции

int | nmppsMinIndxV9_32s (int *pSrcVec, int nStride, int *nPos)
int | nmppsMinIndxV16_32s (int *pSrcVec, int nStride, int *nPos)
int | nmppsMinIndxV25_32s (int *pSrcVec, int nStride, int *nPos)
int | nmppsMinIndxV256_32s (int *pSrcVec, int nStride, int *nPos)
int | nmppsMinIndxV1024_32s (int *pSrcVec, int nStride, int *nPos)

Подробное описание

Поиск значения минимального элемента вектора длины N и его положения в векторе.

Аргументы
pSrcVec | Массив из N элементов, где N определяется числом в имени функции.
nStride | шаг между элементами в 32р. словах
Возвращаемые значения
Индекс первого найденного минимума.
Возвращает
Значение минимального элемента.

Restrictions:
Вычисления проиводятся на скалярном ядре, поэтому указатель на данные pSrcVec может ссылаться на нечетный адрес.


nmpp: nmppsFirstZeroIndx

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsFirstZeroIndx
Целочисленные функции » Векторные функции » Операции сравнения

Поиск позиции первого нулевого элемента в векторе . Подробнее...

Функции

int nmppsFirstZeroIndx_32s (int *pSrcVec, int nSize)

Подробное описание

Поиск позиции первого нулевого элемента в векторе .

Аргументы
pSrcVec | Входной массив.
nIndex | Размер массива.
Возвращает
Позиция нулевого элемента или -1 в случае если нулевой элемент не найден

Restrictions:
Вычисления проиводятся на скалярном ядре, поэтому указатель на данные pSrcVec может ссылаться на нечетный адрес. Поиск производится до первого нулевого элемента.


nmpp: nmppsFirstNonZeroIndx

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsFirstNonZeroIndx
Целочисленные функции » Векторные функции » Операции сравнения

Поиск позиции первого ненулевого элемента в векторе . Подробнее...

Функции

int nmppsFirstNonZeroIndx_32s (int *pSrcVec, int nSize)

Подробное описание

Поиск позиции первого ненулевого элемента в векторе .

Аргументы
pSrcVec | Входной массив.
nIndex | Размер массива.
Возвращает
Позиция ненулевого элемента или -1 в случае если ненулевой элемент не найден

Restrictions:
Вычисления проиводятся на скалярном ядре, поэтому указатель на данные pSrcVec может ссылаться на нечетный адрес. Поиск производится до первого ненулевого элемента.


nmpp: nmppsLastZeroIndx

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsLastZeroIndx
Целочисленные функции » Векторные функции » Операции сравнения

Поиск позиции последнего нулевого элемента в векторе . Подробнее...

Функции

int nmppsLastZeroIndx_32s (int *pSrcVec, int nSize)

Подробное описание

Поиск позиции последнего нулевого элемента в векторе .

Аргументы
pSrcVec | Входной массив.
nIndex | Размер массива.
Возвращает
Позиция нулевого элемента или -1 в случае если нулевой элемент не найден

Restrictions:
Вычисления проиводятся на скалярном ядре, поэтому указатель на данные pSrcVec может ссылаться на нечетный адрес. Поиск производится с конца до первого нулевого элемента.


nmpp: nmppsLastNonZeroIndx

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsLastNonZeroIndx
Целочисленные функции » Векторные функции » Операции сравнения

Поиск позиции последнего ненулевого элемента в векторе . Подробнее...

Функции

int nmppsLastNonZeroIndx_32s (int *pSrcVec, int nSize)

Подробное описание

Поиск позиции последнего ненулевого элемента в векторе .

Аргументы
pSrcVec | Входной массив.
nIndex | Размер массива.
Возвращает
Позиция нулевого элемента или -1 в случае если нулевой элемент не найден

Restrictions:
Вычисления проиводятся на скалярном ядре, поэтому указатель на данные pSrcVec может ссылаться на нечетный адрес. Поиск производится с конца до первого ненулевого элемента.


nmpp: nmppsMinEvery_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMinEvery_
Целочисленные функции » Векторные функции » Операции сравнения

Поэлементный минимум из двух векторов. Подробнее...

Функции

void | nmppsMinEvery_8s (nm8s7b *pSrcVec1, nm8s7b *pSrcVec2, nm8s7b *pDstMinVec, int nSize)
void | nmppsMinEvery_16s (nm16s15b *pSrcVec1, nm16s15b *pSrcVec2, nm16s15b *pDstMinVec, int nSize)
void | nmppsMinEvery_32s (nm32s31b *pSrcVec1, nm32s31b *pSrcVec2, nm32s31b *pDstMinVec, int nSize)
void | nmppsMinEvery_64s (nm64s63b *pSrcVec1, nm64s63b *pSrcVec2, nm64s63b *pDstMinVec, int nSize)

Подробное описание

Поэлементный минимум из двух векторов.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstMinVec Массив поэлементных минимумов для входных массивов.
Возвращает
void

Restrictions:
Сравниваемые пары чисел двух массивов должны отличатся не более чем на $ 2^{15}-1 $.
Примеры допустимых диапазонов сравниваемых пар чисел:
should not be more than $ 2^{15}-1 $.
Here are some examples of admissible ranges for comparable pairs of numbers:
[0000h..7FFFh]=[ 0..+32767 ]
[FFFFh..7FFEh]=[ -1..+32766 ]
[C000h..3FFFh]=[-16384..+16383 ]
[8000h..0000h]=[-32768..0 ]


nmpp: nmppsMaxEvery_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMaxEvery_
Целочисленные функции » Векторные функции » Операции сравнения

Поэлементный максимум из двух векторов. Подробнее...

Функции

void | nmppsMaxEvery_8s (nm8s7b *pSrcVec1, nm8s7b *pSrcVec2, nm8s7b *pDstMaxVec, int nSize)
void | nmppsMaxEvery_16s (nm16s15b *pSrcVec1, nm16s15b *pSrcVec2, nm16s15b *pDstMaxVec, int nSize)
void | nmppsMaxEvery_32s (nm32s31b *pSrcVec1, nm32s31b *pSrcVec2, nm32s31b *pDstMaxVec, int nSize)
void | nmppsMaxEvery_64s (nm64s63b *pSrcVec1, nm64s63b *pSrcVec2, nm64s63b *pDstMaxVec, int nSize)

Подробное описание

Поэлементный максимум из двух векторов.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstMaxVec Массив поэлементных минимумов для входных массивов.
Возвращает
void

Restrictions:
Сравниваемые пары чисел двух массивов должны отличатся не более чем на $ 2^{15}-1 $.
Примеры допустимых диапазонов сравниваемых пар чисел:
should not be more than $ 2^{15}-1 $.
Here are some examples of admissible ranges for comparable pairs of numbers:
[0000h..7FFFh]=[ 0..+32767 ]
[FFFFh..7FFEh]=[ -1..+32766 ]
[C000h..3FFFh]=[-16384..+16383 ]
[8000h..0000h]=[-32768..0 ]


nmpp: nmppsMinCmpLtV_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMinCmpLtV_
Целочисленные функции » Векторные функции » Операции сравнения

Поэлементный минимум из двух векторов. Подробнее...

Функции

void nmppsMinCmpLtV_16s (nm16s15b *pSrcVec1, nm16s15b *pSrcVec2, nm16s15b *pDstMin, nm16s15b *pDstSignMask, int nSize)

Подробное описание

Поэлементный минимум из двух векторов.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstMin | Массив поэлементных минимумов для входных массивов.
pDstSignMask | Массив знаков поэлементных разностей первого и второго векторов.
Возвращает
void

Restrictions:
Сравниваемые пары чисел двух массивов должны отличатся не более чем на $ 2^{15}-1 $.
Примеры допустимых диапазонов сравниваемых пар чисел:
should not be more than $ 2^{15}-1 $.
Here are some examples of admissible ranges for comparable pairs of numbers:
[0000h..7FFFh]=[ 0..+32767 ]
[FFFFh..7FFEh]=[ -1..+32766 ]
[C000h..3FFFh]=[-16384..+16383 ]
[8000h..0000h]=[-32768..0 ]


nmpp: nmppsCmpLt0

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpLt0
Целочисленные функции » Векторные функции » Операции сравнения

Сравнивает элементы массива на меньше нуля. Подробнее...

Функции

void | nmppsCmpLt0_8s (const nm8s *pSrcVec, nm8s *pDstVec, int nSize)
void | nmppsCmpLt0_16s (const nm16s *pSrcVec, nm16s *pDstVec, int nSize)
void | nmppsCmpLt0_32s (const nm32s *pSrcVec, nm32s *pDstVec, int nSize)
void | nmppsCmpLt0_64s (const nm64s *pSrcVec, nm64s *pDstVec, int nSize)

Подробное описание

Сравнивает элементы массива на меньше нуля.

Если элемент входного вектора меньше 0, во все биты соответствующего элемента выходного вектора записывается 1.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsCmpEq0(Reduced)

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpEq0(Reduced)
Целочисленные функции » Векторные функции » Операции сравнения

Сравнивает элементы массива неполной разрядности на признак равенства нулю. Подробнее...

Функции

void | nmppsCmpEq0_8u7b (nm8u7b *pSrcVec, nm1 *pDstVec, int nSize, int nTrueFlag)
void | nmppsCmpEq0_16u15b (nm16u15b *pSrcVec, nm1 *pDstVec, int nSize, int nTrueFlag)
void | nmppsCmpEq0_32u31b (nm32u31b *pSrcVec, nm1 *pDstVec, int nSize, int nTrueFlag)

Подробное описание

Сравнивает элементы массива неполной разрядности на признак равенства нулю.

\~
Аргументы
pSrcVec | Входной вектор.
nSize | Размер векторов в элементах. Vector size in elements.
nTrueFlag | Младший бит nTrueFlag определяет значение выходного бита при выполнении условия.
Возвращаемые значения
pDstVec Результирующий бинарный вектор.
Возвращает
void

Функции

◆ nmppsCmpEq0_16u15b()

void nmppsCmpEq0_16u15b | ( | nm16u15b * | pSrcVec,
 |  | nm1 * | pDstVec,
 |  | int | nSize,
 |  | int | nTrueFlag
 | ) |  |
Заметки
nSize =[1,2,3,4...]

◆ nmppsCmpEq0_32u31b()

void nmppsCmpEq0_32u31b | ( | nm32u31b * | pSrcVec,
 |  | nm1 * | pDstVec,
 |  | int | nSize,
 |  | int | nTrueFlag
 | ) |  |
Заметки
nSize =[1,2,3,4...]

◆ nmppsCmpEq0_8u7b()

void nmppsCmpEq0_8u7b | ( | nm8u7b * | pSrcVec,
 |  | nm1 * | pDstVec,
 |  | int | nSize,
 |  | int | nTrueFlag
 | ) |  |
Заметки
nSize =[1,2,3,4...]


nmpp: nmppsCmpGt0

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpGt0
Целочисленные функции » Векторные функции » Операции сравнения

Сравнивает элементы массива на больше нуля. Подробнее...

Функции

void | nmppsCmpGt0_8s (const nm8s *pSrcVec, nm8s *pDstVec, int nSize)
void | nmppsCmpGt0_16s (const nm16s *pSrcVec, nm16s *pDstVec, int nSize)
void | nmppsCmpGt0_32s (const nm32s *pSrcVec, nm32s *pDstVec, int nSize)
void | nmppsCmpGt0_64s (const nm64s *pSrcVec, nm64s *pDstVec, int nSize)

Подробное описание

Сравнивает элементы массива на больше нуля.

Если элемент входного вектора больше 0, во все биты соответствующего элемента выходного вектора записывается 1.

Аргументы
pSrcVec | Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsMinMaxEvery_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMinMaxEvery_
Целочисленные функции » Векторные функции » Операции сравнения

Поэлементное сравнение двух векторов. Подробнее...

Функции

void | nmppsMinMaxEvery_8s (nm8s *pSrcVec1, nm8s *pSrcVec2, nm8s *pDstMin, nm8s *pDstMax, int nSize)
void | nmppsMinMaxEvery_16s (nm16s *pSrcVec1, nm16s *pSrcVec2, nm16s *pDstMin, nm16s *pDstMax, int nSize)
void | nmppsMinMaxEvery_32s (nm32s *pSrcVec1, nm32s *pSrcVec2, nm32s *pDstMin, nm32s *pDstMax, int nSize)

Подробное описание

Поэлементное сравнение двух векторов.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstMin | Массив поэлементных минимумов для входных массивов.
pDstMax | Массив поэлементных максимумов для входных массивов.
Возвращает
void

Restrictions:
Сравниваемые пары чисел двух массивов должны отличатся не более чем на $ 2^{15}-1 $.
Примеры допустимых диапазонов сравниваемых пар чисел:
should not be more than $ 2^{15}-1 $.
Here are some examples of admissible ranges for comparable pairs of numbers:
[0000h..7FFFh]=[ 0..+32767 ]
[FFFFh..7FFEh]=[ -1..+32766 ]
[C000h..3FFFh]=[-16384..+16383 ]
[8000h..0000h]=[-32768..0 ]


nmpp: nmppsClipPowC_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsClipPowC_
Целочисленные функции » Векторные функции » Операции сравнения

Функция насыщения. Подробнее...

Функции

void | nmppsClipPowC_8s (nm8s *pSrcVec, int nClipFactor, nm8s *pDstVec, int nSize)
void | nmppsClipPowC_16s (nm16s *pSrcVec, int nClipFactor, nm16s *pDstVec, int nSize)
void | nmppsClipPowC_32s (nm32s *pSrcVec, int nClipFactor, nm32s *pDstVec, int nSize)
void | nmppsClipPowC_64s (nm64s *pSrcVec, int nClipFactor, nm64s *pDstVec, int nSize)

Подробное описание

Функция насыщения.

Аргументы
pSrcVec | Входной вектор.
nClipFactor | Показатель степени, определяющий верхний и нижний пороги насыщения. nClipFactor>0
nSize | Размер вектора в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsClipCC_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsClipCC_
Целочисленные функции » Векторные функции » Операции сравнения

Функция насыщения с произвольными порогами. Подробнее...

Функции

void nmppsClipCC_32s (nm32s30b *pSrcVec, int30b nNegThresh, int30b nPosThresh, nm32s30b *pDstVec, int nSize)

Подробное описание

Функция насыщения с произвольными порогами.

Аргументы
pSrcVec | Входной вектор.
nNegThresh | Нижний порог насыщения.
nPosThresh | Верхний порог насыщения.
nSize | Размер вектора в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void

Restrictions:
  • Диапазон изменения для [image].
  • Диапазон изменения для [image].


nmpp: nmppsThreshold_Lt_Gt_f

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsThreshold_Lt_Gt_f
Целочисленные функции » Векторные функции » Операции сравнения

Пороговая функция с нижним и верхним порогами Подробнее...

Функции

void nmppsThreshold_Lt_Gt_32f (nm32f *pSrcVec, nm32f *pDstVec, float min, float max, int nSize)

Подробное описание

Пороговая функция с нижним и верхним порогами

Аргументы
pSrcVec Входной вектор.
Возвращаемые значения
pDstVec Результирующий вектор.
Аргументы
min | Нижний порог насыщения.
max | Верхний порог насыщения.
nSize | Размер вектора в элементах.
Возвращает
void


nmpp: nmppsClipRShiftConvert_AddC_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsClipRShiftConvert_AddC_
Целочисленные функции » Векторные функции » Операции сравнения

Сокращение разрядности данных c предварительной их обработкой. Подробнее...

Функции

void | nmppsClipRShiftConvertAddC_16s8s (nm16s *pSrcVec, int nClipFactor, int nShift, int8b nAddValue, nm8s *pDstVec, int nSize)
void | nmppsClipRShiftConvertAddC_32s8s (nm32s *pSrcVec, int nClipFactor, int nShift, int8b nAddValue, nm8s *pDstVec, int nSize)

Подробное описание

Сокращение разрядности данных c предварительной их обработкой.

Сокращение разрядности данных выполняется после предварительной обработки и осуществляется путем отбрасывания старших битов.

Аргументы
pSrcVec | Входной вектор.
nClipFactor | Показатель степени, определяющий верхний и нижний пороги насыщения. =[1,2,3...15]
nShift | Параметр определяет на сколько позиций =[2,4,6...14] нужно сдвинуть биты элементов вектора;
nAddValue | Добавляемая константа.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsClipConvert_AddC_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Определения типов | Функции
nmppsClipConvert_AddC_
Целочисленные функции » Векторные функции » Операции сравнения

Сокращение разрядности данных c предварительной их обработкой. Подробнее...

Определения типов

typedef nm64u NmppsWeightState

Функции

void | nmppsClipConvertAddCInitAlloc_16s8s (NmppsWeightState **ppState)
void | nmppsClipConvertAddC_16s8s (nm16s *pSrcVec, int nClipFactor, int8b nAddValue, nm8s *pDstVec, int nSize, NmppsWeightState *pState)
void | nmppsClipConvertAddCFree (NmppsWeightState *pState)

Подробное описание

Сокращение разрядности данных c предварительной их обработкой.

Сокращение разрядности данных выполняется после предварительной обработки и осуществляется путем отбрасывания старших битов.

Аргументы
pSrcVec | Входной вектор.
nClipFactor | Показатель степени, определяющий верхний и нижний пороги насыщения. =[1,2,3...15]
nAddValue | Добавляемая константа.
nSize | Размер векторов в элементах. указатель на матрицу коэфициентов для векторного умножителя. Для ускорения.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsCmpEqC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpEqC
Целочисленные функции » Векторные функции » Операции сравнения

Сравнивает элементы массива на признак равенства константе. Подробнее...

Функции

void | nmppsCmpEqC_16u15b (nm16u15b *pSrcVec, uint15b nCmpVal, nm16s *pDstVec, int nSize, int16b nTrueFlag)
void | nmppsCmpEqC_8u7b (nm8u7b *pSrcVec, uint7b nCmpVal, nm8s *pDstVec, int nSize, int8b nTrueFlag)
void | nmppsCmpEqC_4u3b (nm4u3b *pSrcVec, uint3b nCmpVal, nm4s *pDstVec, int nSize, int4b nTrueFlag)

Подробное описание

Сравнивает элементы массива на признак равенства константе.

\~
Аргументы
pSrcVec | Входной вектор.
nCmpVal | Значение константы для сравнения
nSize | Размер векторов в элементах.
nTrueFlag | Значние флага, устанавливаемого при выполнении условия
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsCmpNe0

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpNe0
Целочисленные функции » Векторные функции » Операции сравнения

Сравнивает элементы массива на признак неравенства нулю. Подробнее...

Функции

void | nmppsCmpNe0_8s (const nm8s *pSrcVec, nm8s *pDstVec, int nSize)
void | nmppsCmpNe0_16s (const nm16s *pSrcVec, nm16s *pDstVec, int nSize)
void | nmppsCmpNe0_32s (const nm32s *pSrcVec, nm32s *pDstVec, int nSize)
void | nmppsCmpNe0_64s (const nm64s *pSrcVec, nm64s *pDstVec, int nSize)

Подробное описание

Сравнивает элементы массива на признак неравенства нулю.

\~
Аргументы
pSrcVec | Входной вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsCmpEq0

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpEq0
Целочисленные функции » Векторные функции » Операции сравнения

Сравнивает элементы массива на признак равенства нулю. Подробнее...

Функции

void nmppsCmpEq0_32s (const nm32s *pSrcVec, nm32s *pDstVec, int nSize)

Подробное описание

Сравнивает элементы массива на признак равенства нулю.

\~
Аргументы
pSrcVec Входной вектор.
Возвращаемые значения
pDstVec Результирующий вектор.
Аргументы
nSize Размер векторов в элементах.
Возвращает
void


nmpp: nmppsCmpNeC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpNeC
Целочисленные функции » Векторные функции » Операции сравнения

Сравнивает элементы массива на признак неравенства константе. Подробнее...

Функции

void | nmppsCmpNeC_8s (const nm8s *pSrcVec, int8b nCmpVal, nm8s *pDstVec, int nSize)
void | nmppsCmpNeC_16s (const nm16s *pSrcVec, int16b nCmpVal, nm16s *pDstVec, int nSize)
void | nmppsCmpNeC_32s (const nm32s *pSrcVec, int32b nCmpVal, nm32s *pDstVec, int nSize)
void | nmppsCmpNeC_64s (const nm64s *pSrcVec, int64b nCmpVal, nm64s *pDstVec, int nSize)

Подробное описание

Сравнивает элементы массива на признак неравенства константе.

\~
Аргументы
pSrcVec | Входной вектор.
nCmpVal | Значение константы для сравнения
nSize | Размер векторов в элементах.
nTrueFlag | Значние флага, устанавливаемого при выполнении условия
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsCmpNeC_flag

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpNeC_flag
Целочисленные функции » Векторные функции » Операции сравнения

Сравнивает элементы массива на признак неравенства константе. Подробнее...

Функции

void | nmppsCmpNeC_8u7b (nm8u7b *pSrcVec, uint7b nCmpVal, nm8s *pDstVec, int nSize, int8b nTrueFlag)
void | nmppsCmpNeC_16u15b (nm16u15b *pSrcVec, uint15b nCmpVal, nm16s *pDstVec, int nSize, int16b nTrueFlag)

Подробное описание

Сравнивает элементы массива на признак неравенства константе.

\~
Аргументы
pSrcVec | Входной вектор.
nCmpVal | Значение константы для сравнения
nSize | Размер векторов в элементах.
nTrueFlag | Значние флага, устанавливаемого при выполнении условия
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsCmpLtC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpLtC
Целочисленные функции » Векторные функции » Операции сравнения

Функция сравнения элементов массива с константой (меньше) Подробнее...

Функции

void | nmppsCmpLtC_8s7b (const nm8s7b *pSrcVec, int8b nCmpVal, nm8s *pDstVec, int nSize)
void | nmppsCmpLtC_16s15b (const nm16s15b *pSrcVec, int16b nCmpVal, nm16s *pDstVec, int nSize)
void | nmppsCmpLtC_32s31b (const nm32s31b *pSrcVec, int32b nCmpVal, nm32s *pDstVec, int nSize)
void | nmppsCmpLtC_64s63b (const nm64s63b *pSrcVec, int64b nCmpVal, nm64s *pDstVec, int nSize)

Подробное описание

Функция сравнения элементов массива с константой (меньше)

Аргументы
pSrcVec | Входной вектор.
nCmpVal | Значение константы для сравнения
Возвращаемые значения
pDstVec Результирующий вектор.
Аргументы
nSize Размер векторов в элементах.
Возвращает
void


nmpp: nmppsCmpGtC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpGtC
Целочисленные функции » Векторные функции » Операции сравнения | Функции с плавающей точкой » Векторные функции » Операции сравнения

Функция сравнения элементов массива с константой (больше) Подробнее...

Функции

void | nmppsCmpGtC_8s7b (const nm8s7b *pSrcVec, int8b nCmpVal, nm8s *pDstVec, int nSize)
void | nmppsCmpGtC_16s15b (const nm16s15b *pSrcVec, int16b nCmpVal, nm16s *pDstVec, int nSize)
void | nmppsCmpGtC_32s31b (const nm32s31b *pSrcVec, int32b nCmpVal, nm32s *pDstVec, int nSize)
void | nmppsCmpGtC_64s63b (const nm64s63b *pSrcVec, int64b nCmpVal, nm64s *pDstVec, int nSize)
void | nmppsCmpGtC_v2nm32f (const v2nm32f *pSrcVec, const v2nm32f *C, nm1 *evenFlags, nm1 *oddFlags, int step, int nSize)

Подробное описание

Функция сравнения элементов массива с константой (больше)

Функция сравнения элементов массива с константой (больше или равно)

Аргументы
pSrcVec | Входной вектор.
nCmpVal | Значение константы для сравнения
Возвращаемые значения
pDstVec Результирующий вектор.
Аргументы
nSize Размер векторов в элементах.
Возвращает
void
Аргументы
[in] | pSrcVec | входной массив (элемент массива представляет собой структура v2nm32f, состоящая из двух чисел float)
[in] | C | константа (два числа float)
Возвращаемые значения
[out] | evenFlags маска полученная после сравнения первого поля из структуры v2nm32f
[out] | oddFlags маска полученная после сравнения второго поля из структуры v2nm32f
Аргументы
[in] | step | шаг, с которым будут браться элементы из pSrcVec
[in] | nSize | размер массива (в v2nm32f)

В структуре v2nm32f два поля. Первое - v0. Второе - v1.


nmpp: nmppsCmpEqV_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpEqV_
Целочисленные функции » Векторные функции » Операции сравнения

Поэлементное сравнение элементов (неполной разрядности) двух вектров на признак равенства. Подробнее...

Функции

void | nmppsCmpEqV_16u15b (nm16u15b *pSrcVec1, nm16u15b *pSrcVec2, nm16s *pDstVec, int nSize, int16b nTrueFlag)
void | nmppsCmpEqV_8u7b (nm8u7b *pSrcVec1, nm8u7b *pSrcVec2, nm8s *pDstVec, int nSize, int8b nTrueFlag)

Подробное описание

Поэлементное сравнение элементов (неполной разрядности) двух вектров на признак равенства.

\~
Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй входной вектор.
nSize | Размер векторов в элементах.
nTrueFlag | Значние флага, устанавливаемого при выполнении условия
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsCmpNe

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpNe
Целочисленные функции » Векторные функции » Операции сравнения

Сравнивает элементы массива на признак неравенства константе. Подробнее...

Функции

void | nmppsCmpNe_8s (const nm8s *pSrcVec1, const nm8s *pSrcVec2, nm8s *pDstVec, int nSize)
void | nmppsCmpNe_16s (const nm16s *pSrcVec1, const nm16s *pSrcVec2, nm16s *pDstVec, int nSize)
void | nmppsCmpNe_32s (const nm32s *pSrcVec1, const nm32s *pSrcVec2, nm32s *pDstVec, int nSize)
void | nmppsCmpNe_64s (const nm64s *pSrcVec1, const nm64s *pSrcVec2, nm64s *pDstVec, int nSize)

Подробное описание

Сравнивает элементы массива на признак неравенства константе.

\~
Аргументы
pSrcVec1 | Входной вектор1
pSrcVec2 | Входной вектор2
nSize | Размер векторов в элементах
Возвращаемые значения
pDstVec Результирующий вектор
Возвращает
void


nmpp: nmppsCmpLt

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpLt
Целочисленные функции » Векторные функции » Операции сравнения

Функция сравнения элементов массива с константой (меньше) Подробнее...

Функции

void | nmppsCmpLt_8s7b (const nm8s *pSrcVec1, const nm8s *pSrcVec2, nm8s *pDstVec, int nSize)
void | nmppsCmpLt_16s15b (const nm16s *pSrcVec1, const nm16s *pSrcVec2, nm16s *pDstVec, int nSize)
void | nmppsCmpLt_32s31b (const nm32s *pSrcVec1, const nm32s *pSrcVec2, nm32s *pDstVec, int nSize)
void | nmppsCmpLt_64s63b (const nm64s *pSrcVec1, const nm64s *pSrcVec2, nm64s *pDstVec, int nSize)

Подробное описание

Функция сравнения элементов массива с константой (меньше)

Аргументы
pSrcVec1 | Входной вектор1
pSrcVec2 | Входной вектор2
Возвращаемые значения
pDstVec Результирующий вектор
Аргументы
nSize Размер векторов в элементах
Возвращает
void


nmpp: nmppsCmpNeV_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpNeV_
Целочисленные функции » Векторные функции » Операции сравнения

Поэлементное сравнение элементов двух вектров на признак неравенства. Подробнее...

Функции

void | nmppsCmpNeV_16u (nm16u15b *pSrcVec1, nm16u15b *pSrcVec2, nm16s *pDstVec, int nSize, int16b nTrueFlag)
void | nmppsCmpNeV_8u (nm8u7b *pSrcVec1, nm8u7b *pSrcVec2, nm8s *pDstVec, int nSize, int8b nTrueFlag)

Подробное описание

Поэлементное сравнение элементов двух вектров на признак неравенства.

\~
Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй входной вектор.
nSize | Размер векторов в элементах.
nTrueFlag | Значние флага, устанавливаемого при выполнении условия
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: Статистические функции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Статистические функции
Целочисленные функции » Векторные функции


nmpp: Переупорядочивание и сортировка

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Переупорядочивание и сортировка
Целочисленные функции » Векторные функции

Группы

VEC_QSort
Сортировка массива по убыванию.
nmppsRemap_
Переупорядочивание элементов вектора по таблице.
nmppSplitTmp
Расщепляет массив на два, группируя по четным и нечетным элементам
nmppSplit
Расщепляет массив на два массива, группируя по четным и нечетным элементам
nmppMerge
Собирает массив из двух, чередуя элементы из каждого. Функция обратная nmppsSplit.
nmppSplit_32fcr
Расщепляет массив на два, группируя по четным и нечетным элементам
nmppsDecimate
Делает выборку элементов из массива c некоторым шагом

Подробное описание

Создано системой doxygen 1.9.5


nmpp: VEC_QSort

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
VEC_QSort
Целочисленные функции » Векторные функции » Переупорядочивание и сортировка

Сортировка массива по убыванию. Подробнее...

Функции

void nmppsQSort_32s (nm32s *pSrcDstVec, int nSize)

Подробное описание

Сортировка массива по убыванию.

Аргументы
pSrcDstVec | Входной и результирующий вектор.
nSize | Размер вектора в элементах.
Возвращает
void

Restrictions:
Функция работает рекурсивно, передавая параметры через стек, поэтому размер стека должен быть больше 4*log2(nSize) 32-битных слов в лучшем случае (элементы массива расположены беспорядочно) и больше 6*nSize 32-битных слов в худшем случае (элементы массива уже упорядочены)


nmpp: nmppsRemap_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsRemap_
Целочисленные функции » Векторные функции » Переупорядочивание и сортировка

Переупорядочивание элементов вектора по таблице. Подробнее...

Функции

void | nmppsRemap_32u (nm32u *pSrcVec, nm32u *pDstVec, nm32s *pRemapTable, int nDstVecSize)
void | nmppsRemap_8u (nm8u *pSrcVec, nm8u *pDstVec, nm32s *pRemapTable, int nSrcVecSize, int nDstVecSize, void *pTmpBuf1, void *pTmpBuf2)

Подробное описание

Переупорядочивание элементов вектора по таблице.

\~
Аргументы
pSrcVec | Входной вектор.
pRemapTable | Таблица новых индексов для переупорядочивания.
nDstVecSize | Размер результирующего вектора в элементах.
pTmpBuf1 | Временный массив nm32u pTmpBuf1[nSrcVecSize].
pTmpBuf2 | Временный массив nm32u pTmpBuf2[nDstVecSize]. Результирующий вектор nm8u pDstVec[nDstVecSize].
Возвращает
void
// Функция
// void nmppsRemap_8u(nm8u* pSrcVec, nm8u* pDstVec, nm32s* pRemapTable, int nSrcVecSize, int nDstVecSize, void* pTmpBuf1, void* pTmpBuf2);
// выполняет следющие действия:
nmppsConvert_8u((nm8u*) pSrcVec, (nm32u*)pTmpBuf1,nSrcVecSize);
nmppsRemap_32u((nm32u*)pTmpBuf1,(nm32u*)pTmpBuf2,RemapTable,DstVecSize);
nmppsConvert_32s((nm32s*)pTmpBuf2,(nm8s*) pDstVec, DstVecSize);
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm32s
int nm32s
Definition: nmtype.h:292
nm32u
unsigned int nm32u
Definition: nmtype.h:509
nm8s
char nm8s
Definition: nmtype.h:167
Заметки
Возможность использования inplace параметров определяется исходя из последовательности процессов чтения/записи:
the folowing sequence of actions :
  • pSrcVec => pTmpBuf1 - inplace запрещен;
  • pTmpBuf1=>pTmpBuf2 - inplace запрещен;
  • pTmpBuf2=>pDstVec - inplace разрешен;


nmpp: nmppSplitTmp

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppSplitTmp
Целочисленные функции » Векторные функции » Переупорядочивание и сортировка

Расщепляет массив на два, группируя по четным и нечетным элементам Подробнее...

Функции

void nmppsSplitTmp_8s (const nm8s *src, nm8s *dst1, nm8s *dst2, int size, nm8s *tmpSizeOfDst)

Подробное описание

Расщепляет массив на два, группируя по четным и нечетным элементам

Аргументы
[in] | src | Входной массив
[out] | dst1 | Выходной массив размера size/2
[out] | dst2 | Выходной массив размера size/2
[in] | size | Размер исходного массива в элементах. Кратность параметра size должна соответствовать двум длинным 64-р. словам.
[in] | tmpSizeOfDst | Временный массив размера size/2
Возвращает

Details Максимальная производительность достигается при размещении входных, выходных и временных массивов в разных банках памяти. Массивы dst1 и dst2 могут находится в одном банке. Макс производительность на 64-р. слово результата = 2.1 такта (при size=10240 байт) и 2.5 такта (при size=4096 байт)


nmpp: nmppSplit

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppSplit
Целочисленные функции » Векторные функции » Переупорядочивание и сортировка

Расщепляет массив на два массива, группируя по четным и нечетным элементам Подробнее...

Функции

void | nmppsSplit_8s (const nm8s *src, nm8s *dst1, nm8s *dst2, int size)
void | nmppsSplit_16s (const nm16s *src, nm16s *dst1, nm16s *dst2, int size)
void | nmppsSplit_32s (const nm32s *src, nm32s *dst1, nm32s *dst2, int size)

Подробное описание

Расщепляет массив на два массива, группируя по четным и нечетным элементам

Аргументы
[in] | src | Входной массив
[out] | dst1 | Выходной массив размера size/2
[out] | dst2 | Выходной массив размера size/2
[in] | size | Размер исходного массива в элементах. Кратность параметра size должна соответствовать двум длинным 64-р. словам.
Возвращает

Details Максимальная производительность достигается при размещении входных, выходных массивов в разных банках памяти. Массивы dst1 и dst2 могут находится в одном банке. Макс производительность на 64-р. слово результата = 2.14 такта (при size=10240 байт) и 2.6 такта (при size=4096 байт)


nmpp: nmppMerge

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppMerge
Целочисленные функции » Векторные функции » Переупорядочивание и сортировка

Собирает массив из двух, чередуя элементы из каждого. Функция обратная nmppsSplit. Подробнее...

Функции

void | nmppsMerge_8s (const nm8s *src0, const nm8s *src1, nm8s *dst, int sizeSrc)
void | nmppsMerge_16s (const nm16s *src0, const nm16s *src1, nm16s *dst, int sizeSrc)
void | nmppsMerge_32s (const nm32s *src0, const nm32s *src1, nm32s *dst, int sizeSrc)

Подробное описание

Собирает массив из двух, чередуя элементы из каждого. Функция обратная nmppsSplit.

Аргументы
[in] | src0 | Входной массив размера sizeSrc
[in] | src1 | Входной массив размера sizeSrc
[out] | dst | Выходной массив размера 2*sizeSrc
[in] | sizeSrc | Размер выходного массива в элементах. Кратность параметра sizeSrc должна соответствовать 64-р. слову.
Возвращает

Details


nmpp: nmppSplit_32fcr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppSplit_32fcr
Целочисленные функции » Векторные функции » Переупорядочивание и сортировка

Расщепляет массив на два, группируя по четным и нечетным элементам Подробнее...

Функции

void nmppsSplit_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec1, nm32fcr *pDstVec, int sizeSrc)

Подробное описание

Расщепляет массив на два, группируя по четным и нечетным элементам

Аргументы
[in] | pSrcVec | Входной массив
[out] | pDstVec1 | Выходной массив размера size/2
[out] | pDstVec2 | Выходной массив размера size/2
[in] | sizeSrc | Размер исходного массива в элементах (должен быть четным)
Возвращает

Details Максимальная производительность достигается при размещении входных, выходных массивов в разных банках памяти. Массивы dst1 и dst2 могут находится в одном банке. Макс производительность на 64-р. слово результата = 1 такт


nmpp: nmppsDecimate

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsDecimate
Целочисленные функции » Векторные функции » Переупорядочивание и сортировка

Делает выборку элементов из массива c некоторым шагом Подробнее...

Функции

void | nmppsDecimate_16s (nm16s *pSrc, int startPos, int step, nm16s *pDst, int nSizeDst)
void | nmppsDecimate_32s (nm32s *pSrc, int startPos, int step, nm32s *pDst, int nSizeDst)

Подробное описание

Делает выборку элементов из массива c некоторым шагом

Аргументы
[in] | pSrc | Входной массив
[in] | startPos | Положение элемента в 64-р. слове
[out] | step | Шаг выборки. Кратность параметра step должна соответствовать длинному 64-р. слову.
[out] | pDst | Выходной массив
[in] | nSizeDst | Размер результирующего массива в элементах. Кратность параметра size должна соответствовать длинному 64-р. слову.
Возвращает

Details Максимальная производительность достигается при размещении входных, выходных массивов в разных банках памяти.


nmpp: Матричные функции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Матричные функции
Целочисленные функции

Группы

Инициализация и копирование
Функции поддержки
Векторно-матричные операции

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Инициализация и копирование

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Инициализация и копирование
Целочисленные функции » Матричные функции

Группы

nmppmCopyua
Копирование подматрицы с невыровненной по границам 64- разрядного слова позиции в выровненную.
MTR_Copyau
Копирование подматрицы с выровненной по границе 64-х разрядных слов позиции в невыровненную позицию.
MTR_Copy
Функции копирования прямоугольных областей памяти между двумерными массивами.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppmCopyua

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppmCopyua
Целочисленные функции » Матричные функции » Инициализация и копирование

Копирование подматрицы с невыровненной по границам 64- разрядного слова позиции в выровненную. Подробнее...

Функции

void | nmppmCopyua_8s (nm8s *pSrcMtr, int nSrcStride, int nSrcOffset, nm8s *pDstMtr, int nDstStride, int nHeight, int nWidth)
void | nmppmCopyua_16s (nm16s *pSrcMtr, int nSrcStride, int nSrcOffset, nm16s *pDstMtr, int nDstStride, int nHeight, int nWidth)
void | nmppmCopyua_32s (nm32s *pSrcMtr, int nSrcStride, int nSrcOffset, nm32s *pDstMtr, int nDstStride, int nHeight, int nWidth)

Подробное описание

Копирование подматрицы с невыровненной по границам 64- разрядного слова позиции в выровненную.

Аргументы
pSrcMtr | Исходная матрица.
nSrcStride | Ширина исходной матрицы в элементах.
nSrcOffset | Смещение в элементах от начала матрицы-источника.
nDstStride | Ширина результирующей матрицы в элементах.
nHeight | Число строк подматрицы.
nWidth | Число столбцов подматрицы.
Возвращаемые значения
pDstMtr Результирующая матрица.
Возвращает
void

Restrictions:
  • Входная и выходная матрицы не должны перекрываться в памяти
  • Число столбцов копируемой подматрицы nWidth должна быть кратно числу элементов в 64-х разрядном слове.


nmpp: MTR_Copyau

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
MTR_Copyau
Целочисленные функции » Матричные функции » Инициализация и копирование

Копирование подматрицы с выровненной по границе 64-х разрядных слов позиции в невыровненную позицию. Подробнее...

Функции

void | nmppmCopyau_8s (nm8s *pSrcMtr, int nSrcStride, nm8s *pDstMtr, int nDstStride, int nDstOffset, int nHeight, int nWidth)
void | nmppmCopyau_16s (nm16s *pSrcMtr, int nSrcStride, nm16s *pDstMtr, int nDstStride, int nDstOffset, int nHeight, int nWidth)
void | nmppmCopyau_32s (nm32s *pSrcMtr, int nSrcStride, nm32s *pDstMtr, int nDstStride, int nDstOffset, int nHeight, int nWidth)

Подробное описание

Копирование подматрицы с выровненной по границе 64-х разрядных слов позиции в невыровненную позицию.

Аргументы
pSrcMtr | Исходная матрица.
nSrcStride | Ширина исходной матрицы в элементах.
Возвращаемые значения
pDstMtr Результирующая матрица.
Аргументы
nDstStride | Ширина результирующей матрицы в элементах.
nDstOffset | Индекс столбца (в элементах) куда производится вставка.
nHeight | Число строк подматрицы.
nWidth | Число столбцов подматрицы.
Возвращает
void

Restrictions:
  • Входная и выходная матрицы не должны перекрываться в памяти
  • Число столбцов копируемой подматрицы nWidth должна быть кратной 64-битам.


nmpp: MTR_Copy

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
MTR_Copy
Целочисленные функции » Матричные функции » Инициализация и копирование

Функции копирования прямоугольных областей памяти между двумерными массивами. Подробнее...

Функции

void | nmppmCopy_1 (nm1 *pSrcMtr, int nSrcStride, nm1 *pDstMtr, int nDstStride, int nHeight, int nWidth)
void | nmppmCopy_2s (nm2s *pSrcMtr, int nSrcStride, nm2s *pDstMtr, int nDstStride, int nHeight, int nWidth)
void | nmppmCopy_4s (nm4s *pSrcMtr, int nSrcStride, nm4s *pDstMtr, int nDstStride, int nHeight, int nWidth)
void | nmppmCopy_8s (nm8s *pSrcMtr, int nSrcStride, nm8s *pDstMtr, int nDstStride, int nHeight, int nWidth)
void | nmppmCopy_16s (nm16s *pSrcMtr, int nSrcStride, nm16s *pDstMtr, int nDstStride, int nHeight, int nWidth)
void | nmppmCopy_32s (nm32s *pSrcMtr, int nSrcStride, nm32s *pDstMtr, int nDstStride, int nHeight, int nWidth)
void | nmppmCopy_64s (nm64s *pSrcMtr, int nSrcStride, nm64s *pDstMtr, int nDstStride, int nHeight, int nWidth)

Подробное описание

Функции копирования прямоугольных областей памяти между двумерными массивами.

Аргументы
pSrcMtr | Исходная матрица.
nSrcStride | Ширина исходной матрицы в элементах.
nDstStride | Ширина результирующей матрицы в элементах.
nHeight | Число строк подматрицы.
nWidth | Число столбцов подматрицы.
Возвращаемые значения
pDstMtr Результирующая матрица.
Возвращает
void

Restrictions:
Выходная матрица не может быть перезаписана (т.е. помещена непосредственно на место входной)


nmpp: Функции поддержки

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Функции поддержки
Целочисленные функции » Матричные функции

Группы

MTR_Malloc
Распределение памяти для матриц библиотеки.Начало и конец распределяемой памяти выравнивается на начало 64-х разрядного слова.
MTR_Free
Освобождение памяти для матриц.
MTR_Addr
Возвращает адрес ячейки памяти, содержащей указанный элемент.Реализация для процессора NeuroMatrix возвращает адрес, выровненный в памяти на 32 бита.
MTR_SetVal
Зыписывате число в элемент марицы.
MTR_GetVal
Считывает значение элемента марицы.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: MTR_Malloc

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
MTR_Malloc
Целочисленные функции » Матричные функции » Функции поддержки

Распределение памяти для матриц библиотеки.Начало и конец распределяемой памяти выравнивается на начало 64-х разрядного слова.

Распределение памяти для матриц библиотеки.

Начало и конец распределяемой памяти выравнивается на начало 64-х разрядного слова.

Аргументы
nHeight | Число строк в матрице.
nWidth | Число столбцов в матрице.
hint | Номер банка памяти. Может принимать значения MEM_LOCAL, MEM_GLOBAL.
Заметки
Память, распределенная с помощью функций MTR_Malloc должна освобождаться с помощью функции MTR_Free.


nmpp: MTR_Free

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
MTR_Free
Целочисленные функции » Матричные функции » Функции поддержки

Освобождение памяти для матриц. Подробнее...

Функции

__INLINE__ void MTR_Free (void *ptr)

Подробное описание

Освобождение памяти для матриц.

Заметки
Данная функция должна вызываться только для векторов, распределенных с помощью функций MTR_Malloc.


nmpp: MTR_Addr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
MTR_Addr
Целочисленные функции » Матричные функции » Функции поддержки

Возвращает адрес ячейки памяти, содержащей указанный элемент.Реализация для процессора NeuroMatrix возвращает адрес, выровненный в памяти на 32 бита. Подробнее...

Функции

__INLINE__ nm1 * | MTR_Addr_1 (nm1 *pMTR, int nWidth, int nY, int nX)
__INLINE__ nm2s * | MTR_Addr_2s (nm2s *pMTR, int nWidth, int nY, int nX)
__INLINE__ nm4s * | MTR_Addr_4s (nm4s *pMTR, int nWidth, int nY, int nX)
__INLINE__ nm8s * | MTR_Addr_8s (nm8s *pMTR, int nWidth, int nY, int nX)
__INLINE__ nm16s * | MTR_Addr_16s (nm16s *pMTR, int nWidth, int nY, int nX)
__INLINE__ nm32s * | MTR_Addr_32s (nm32s *pMTR, int nWidth, int nY, int nX)
__INLINE__ nm64s * | MTR_Addr_64s (nm64s *pMTR, int nWidth, int nY, int nX)
__INLINE__ nm2u * | MTR_Addr_2u (nm2u *pMTR, int nWidth, int nY, int nX)
__INLINE__ nm4u * | MTR_Addr_4u (nm4u *pMTR, int nWidth, int nY, int nX)
__INLINE__ nm8u * | MTR_Addr_8u (nm8u *pMTR, int nWidth, int nY, int nX)
__INLINE__ nm16u * | MTR_Addr_16u (nm16u *pMTR, int nWidth, int nY, int nX)
__INLINE__ nm32u * | MTR_Addr_32u (nm32u *pMTR, int nWidth, int nY, int nX)
__INLINE__ nm64u * | MTR_Addr_64u (nm64u *pMTR, int nWidth, int nY, int nX)

Подробное описание

Возвращает адрес ячейки памяти, содержащей указанный элемент.

Реализация для процессора NeuroMatrix возвращает адрес, выровненный в памяти на 32 бита.

Аргументы
pMtr | Входная матрица.
nWidth | Ширина таблицы в элементах.
nY | Номер строки.
nX | Номер колонки.
Возвращает
Адрес ячейки памяти.
Заметки
Для ускорения работы на PC возможно использование макроса ADDR(ptr, index), который раскрывается на PC как (ptr+index), а на NM как вызов функции MTR_Addr.


nmpp: MTR_SetVal

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
MTR_SetVal
Целочисленные функции » Матричные функции » Функции поддержки

Зыписывате число в элемент марицы. Подробнее...

Функции

__INLINE__ void | MTR_SetVal_1 (nm1 *pMtr, int nWidth, int nY, int nX, int1b nVal)
__INLINE__ void | MTR_SetVal_2s (nm2s *pMtr, int nWidth, int nY, int nX, int2b nVal)
__INLINE__ void | MTR_SetVal_4s (nm4s *pMtr, int nWidth, int nY, int nX, int4b nVal)
__INLINE__ void | MTR_SetVal_8s (nm8s *pMtr, int nWidth, int nY, int nX, int8b nVal)
__INLINE__ void | MTR_SetVal_16s (nm16s *pMtr, int nWidth, int nY, int nX, int16b nVal)
__INLINE__ void | MTR_SetVal_32s (nm32s *pMtr, int nWidth, int nY, int nX, int32b nVal)
__INLINE__ void | MTR_SetVal_64s (nm64s *pMtr, int nWidth, int nY, int nX, int64b nVal)
__INLINE__ void | MTR_SetVal_2u (nm2u *pMtr, int nWidth, int nY, int nX, uint2b nVal)
__INLINE__ void | MTR_SetVal_4u (nm4u *pMtr, int nWidth, int nY, int nX, uint4b nVal)
__INLINE__ void | MTR_SetVal_8u (nm8u *pMtr, int nWidth, int nY, int nX, uint8b nVal)
__INLINE__ void | MTR_SetVal_16u (nm16u *pMtr, int nWidth, int nY, int nX, uint16b nVal)
__INLINE__ void | MTR_SetVal_32u (nm32u *pMtr, int nWidth, int nY, int nX, uint32b nVal)
__INLINE__ void | MTR_SetVal_64u (nm64u *pMtr, int nWidth, int nY, int nX, uint64b nVal)

Подробное описание

Зыписывате число в элемент марицы.

Аргументы
pMtr | Матрица.
nWidth | Ширина матрицы в элементах
nY | Номер строки
nX | Номер столбца
nVal | Значение элемента
Возвращает
void


nmpp: MTR_GetVal

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
MTR_GetVal
Целочисленные функции » Матричные функции » Функции поддержки

Считывает значение элемента марицы. Подробнее...

Функции

__INLINE__ void | MTR_GetVal_1 (nm1 *pMtr, int nWidth, int nY, int nX, int1b *nVal)
__INLINE__ void | MTR_GetVal_2s (nm2s *pMtr, int nWidth, int nY, int nX, int2b *nVal)
__INLINE__ void | MTR_GetVal_4s (nm4s *pMtr, int nWidth, int nY, int nX, int4b *nVal)
__INLINE__ void | MTR_GetVal_8s (nm8s *pMtr, int nWidth, int nY, int nX, int8b *nVal)
__INLINE__ void | MTR_GetVal_16s (nm16s *pMtr, int nWidth, int nY, int nX, int16b *nVal)
__INLINE__ void | MTR_GetVal_32s (nm32s *pMtr, int nWidth, int nY, int nX, int32b *nVal)
__INLINE__ void | MTR_GetVal_64s (nm64s *pMtr, int nWidth, int nY, int nX, int64b *nVal)
__INLINE__ void | MTR_GetVal_2u (nm2u *pMtr, int nWidth, int nY, int nX, uint2b *nVal)
__INLINE__ void | MTR_GetVal_4u (nm4u *pMtr, int nWidth, int nY, int nX, uint4b *nVal)
__INLINE__ void | MTR_GetVal_8u (nm8u *pMtr, int nWidth, int nY, int nX, uint8b *nVal)
__INLINE__ void | MTR_GetVal_16u (nm16u *pMtr, int nWidth, int nY, int nX, uint16b *nVal)
__INLINE__ void | MTR_GetVal_32u (nm32u *pMtr, int nWidth, int nY, int nX, uint32b *nVal)
__INLINE__ void | MTR_GetVal_64u (nm64u *pMtr, int nWidth, int nY, int nX, uint64b *nVal)

Подробное описание

Считывает значение элемента марицы.

Аргументы
pMtr | Матрица.
nWidth | Ширина матрицы в элементах
nY | Номер строки
nX | Номер столбца
Возвращаемые значения
nVal Значение элемента
Возвращает
void


nmpp: Векторно-матричные операции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Векторно-матричные операции
Целочисленные функции » Матричные функции

Группы

nmppmMul_mm
Умножение матрицы на матрицу.
nmppmMul_mv_
Умножение матрицы на вектор.
nmppmMul_mv_8xH
Умножение матрицы на вектор.
nmppmMul_mv__AddC
Умножение матрицы на вектор с добавлением константы.
MTR_ProdUnitV
Умножение матрицы на единичный вектор.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppmMul_mm

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppmMul_mm
Целочисленные функции » Матричные функции » Векторно-матричные операции

Умножение матрицы на матрицу. Подробнее...

Функции

void | nmppmMul_mm_2s64s (nm2s *pSrcMtr1, int nHeight1, int nWidth1, nm64s *pSrcMtr2, nm64s *pDstMtr, int nWidth2)
void | nmppmMul_mm_4s64s (nm4s *pSrcMtr1, int nHeight1, int nWidth1, nm64s *pSrcMtr2, nm64s *pDstMtr, int nWidth2)
void | nmppmMul_mm_8s8s (nm8s *pSrcMtr1, int nHeight1, int nWidth1, nm8s *pSrcMtr2, nm8s *pDstMtr, int nWidth2)
void | nmppmMul_mm_8s16s (nm8s *pSrcMtr1, int nHeight1, int nWidth1, nm16s *pSrcMtr2, nm16s *pDstMtr, int nWidth2)
void | nmppmMul_mm_8s32s (nm8s *pSrcMtr1, int nHeight1, int nWidth1, nm32s *pSrcMtr2, nm32s *pDstMtr, int nWidth2)
void | nmppmMul_mm_8s64s (nm8s *pSrcMtr1, int nHeight1, int nWidth1, nm64s *pSrcMtr2, nm64s *pDstMtr, int nWidth2)
void | nmppmMul_mm_16s16s (nm16s *pSrcMtr1, int nHeight1, int nWidth1, nm16s *pSrcMtr2, nm16s *pDstMtr, int nWidth2)
void | nmppmMul_mm_16s32s (nm16s *pSrcMtr1, int nHeight1, int nWidth1, nm32s *pSrcMtr2, nm32s *pDstMtr, int nWidth2)
void | nmppmMul_mm_16s64s (nm16s *pSrcMtr1, int nHeight1, int nWidth1, nm64s *pSrcMtr2, nm64s *pDstMtr, int nWidth2)
void | nmppmMul_mm_32s32s (nm32s *pSrcMtr1, int nHeight1, int nWidth1, nm32s *pSrcMtr2, nm32s *pDstMtr, int nWidth2)
void | nmppmMul_mm_32s64s (nm32s *pSrcMtr1, int nHeight1, int nWidth1, nm64s *pSrcMtr2, nm64s *pDstMtr, int nWidth2)
void | nmppmMul_mm_64s64s (nm64s *pSrcMtr1, int nHeight1, int nWidth1, nm64s *pSrcMtr2, nm64s *pDstMtr, int nWidth2)
void | nmppmMul_mm_32f (float *pSrcMtr1, int nHeight1, int nStride1, float *pSrcMtr2, int nWidth1, int nStride2, float *pDstMtr, int nWidth2, int nStrideDst, int bPlusDst)
void | nmppmMul_mt_32f (float *pSrcMtr1, int nHeight1, int nStride1, float *pSrcMtr2, int nWidth1, int nStride2, float *pDstMtr, int nWidth2, int nStrideDst, int bPlusDst)

Подробное описание

Умножение матрицы на матрицу.

Аргументы
pSrcMtr1 | Исходная матрица.
pSrcMtr2 | Матрица-множитель.
nHeight1 | Число строк исходной матрицы.
nWidth1 | Число столбцов исходной матрицы.
nWidth2 | Число столбцов матрицы множителя.
nStride | Адресное смещение между строками матрицы.
bPlusDst | Флаг - указание прибавить к произведению прежнее значение Dst
Возвращаемые значения
pDstMtr Результирующая матрица.
Возвращает
void


nmpp: nmppmMul_mv_

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppmMul_mv_
Целочисленные функции » Матричные функции » Векторно-матричные операции

Умножение матрицы на вектор. Подробнее...

Функции

void | nmppmMul_mv_8s64s (nm8s *pSrcMtr, nm64s *pSrcVec, nm64s *pDstVec, int nHeight, int nWidth)
void | nmppmMul_mv_16s64s (nm16s *pSrcMtr, nm64s *pSrcVec, nm64s *pDstVec, int nHeight, int nWidth)
void | nmppmMul_mv_32s64s (nm32s *pSrcMtr, nm64s *pSrcVec, nm64s *pDstVec, int nHeight, int nWidth)

Подробное описание

Умножение матрицы на вектор.

Аргументы
pSrcMtr | Исходная матрица.
pSrcVec | Вектор-множитель.
pSrcVec8 | Вектор-множитель размерности 8.
nHeight | Число строк исходной матрицы.
nWidth | Число столбцов исходной матрицы.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppmMul_mv_8xH

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppmMul_mv_8xH
Целочисленные функции » Матричные функции » Векторно-матричные операции

Умножение матрицы на вектор. Подробнее...

Функции

void | nmppmMul_mv_8s16s_8xH (v8nm8s *pSrcMtr, v8nm16s *pSrcVec, nm16s *pDstVec, int nHeight)
void | nmppmMul_mv_16s16s_8xH (v8nm16s *pSrcMtr, v8nm16s *pSrcVec, nm16s *pDstVec, int nHeight)

Подробное описание

Умножение матрицы на вектор.

Аргументы
pSrcMtr | Исходная матрица.
pSrcVec | Вектор-множитель.
pSrcVec8 | Вектор-множитель размерности 8.
nHeight | Число строк исходной матрицы.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppmMul_mv__AddC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppmMul_mv__AddC
Целочисленные функции » Матричные функции » Векторно-матричные операции

Умножение матрицы на вектор с добавлением константы. Подробнее...

Функции

void nmppmMul_mv__AddC (v2nm32s *pSrcMtr, v2nm32s *pnSrcVec, int nAddVal, nm32s *pDstVec, int nHeight)

Подробное описание

Умножение матрицы на вектор с добавлением константы.

Аргументы
pSrcMtr | Исходная матрица.
pSrcVec | Вектор-множитель.
pSrcVec | Вектор-множитель размерности 2.
nAddVal | Константа.
nHeight | Число строк исходной матрицы. nHeight = [0, 2, 4, ...].
nWidth | Число столбцов исходной матрицы.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: MTR_ProdUnitV

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
MTR_ProdUnitV
Целочисленные функции » Матричные функции » Векторно-матричные операции

Умножение матрицы на единичный вектор. Подробнее...

Функции

void | MTR_ProdUnitV_16s_4xH (v4nm16s *pSrcMtr, nm16s *pDstVec, int nHeight)
void | MTR_ProdUnitV_16s_16xH (v16nm8s *pSrcMtr, nm16s *pDstVec, int nHeight)

Подробное описание

Умножение матрицы на единичный вектор.

Данная функция эквивалентна суммированию столбцов матрицы. Ширины матрицы, для которых имеется реализация данной функции указываются в ее названии.

Аргументы
pSrcMtr | Матрица.
nHeight | Число строк матрицы. nHeight=[128,256,....]
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: Функции обработки сигналов

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Функции обработки сигналов
Целочисленные функции

Группы

Свертка
Масочная фильтрация
Изменение размеров
Быстрое преобразование Фурье

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Свертка

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Свертка
Целочисленные функции » Функции обработки сигналов

Группы

nmppsXCorr_32s
Свертка двух векторов.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppsXCorr_32s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsXCorr_32s
Целочисленные функции » Функции обработки сигналов » Свертка

Свертка двух векторов. Подробнее...

Функции

void | nmppsXCorr_32s_32s (nm32s *pSrcVec, int nSrcVecSize, nm32s *pKernel, int nKernelSize, nm32s *pDstVec, void *pTmpBuf)
void | nmppsXCorr_32s_16s32s (nm16s *pSrcVec, int nSrcVecSize, nm32s *pKernel, int nKernelSize, nm32s *pDstVec, void *pTmpBuf)
void | nmppsXCorr_32s_8s32s (nm8s *pSrcVec, int nSrcVecSize, nm32s *pKernel, int nKernelSize, nm32s *pDstVec, void *pTmpBuf)

Подробное описание

Свертка двух векторов.

Аргументы
pSrcVec
Входной вектор.
pKernel
Вектор коэффициентов окна свертки.
pTmpBuf Указатель на временный буффер размера 2*nKernelSize + 32 32-битных слов;

2*nKernelSize + 32 32-bit words;

Аргументы
nKernelSize | Размер окна свертки [1,2,3,4...nSrcVecSize-1].
nSrcVecSize | Размер входного вектора в элементах .Размер кратен 8,4 или 2 согласно типу данных.
Возвращаемые значения
pDstVec
Результирующий вектор, размером nSrcVecSize-nKernelSize+1. после которого могут записыватсья еще до 7 незначачих 32р слова.
Заметки
По сути функции осушествляют фильтрацию данных окном свертки.


nmpp: Масочная фильтрация

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Масочная фильтрация
Целочисленные функции » Функции обработки сигналов

Группы

nmppcMedian3_32u
Вычисление медианы трех чисел
КИХ-фильтрация
Одномерная КИХ-фильтрация.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppcMedian3_32u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcMedian3_32u
Целочисленные функции » Функции обработки сигналов » Масочная фильтрация

Вычисление медианы трех чисел Подробнее...

Функции

int | nmppcMedian3_32u (int a, int b, int c)
uint32b | nmppcMedian3_32u (uint32b a, uint32b b, uint32b c)

Подробное описание

Вычисление медианы трех чисел

Аргументы
a | Первое число
b | Второе число
c | Третье число
Возвращает
Медианное значение


nmpp: КИХ-фильтрация

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
КИХ-фильтрация
Целочисленные функции » Функции обработки сигналов » Масочная фильтрация

Одномерная КИХ-фильтрация. Подробнее...

Группы

nmppsFIR_Xs
Одномерная КИХ-фильтрация
nmppsFIRInit_Xs
Инициализация функции одномерной фильтрации
nmppsFIRInitAlloc_Xs
Выделение и инициализация служебной структуры для функции одномерной фильтрации
nmppsFIRGetStateSize_Xs
Возвращает размер памяти (в 32р.-словах) необходимый для хранения служебной структуры

nmppsFIRFree
освобождает структуру pState в куче

Подробное описание

Одномерная КИХ-фильтрация.


nmpp: nmppsFIR_Xs

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsFIR_Xs
Целочисленные функции » Функции обработки сигналов » Масочная фильтрация » КИХ-фильтрация

Одномерная КИХ-фильтрация Подробнее...

Функции

void | nmppsFIR_8s (nm8s *pSrc, nm8s *pDst, int srcSize, NmppsFIRState *pState)
void | nmppsFIR_8s16s (nm8s *pSrc, nm16s *pDst, int srcSize, NmppsFIRState *pState)
void | nmppsFIR_8s32s (nm8s *pSrc, nm32s *pDst, int srcSize, NmppsFIRState *pState)
void | nmppsFIR_16s (nm16s *pSrc, nm16s *pDst, int srcSize, NmppsFIRState *pState)
void | nmppsFIR_16s32s (nm16s *pSrc, nm32s *pDst, int srcSize, NmppsFIRState *pState)
void | nmppsFIR_32s (nm32s *pSrc, nm32s *pDst, int srcSize, NmppsFIRState *pState)

Подробное описание

Одномерная КИХ-фильтрация

Аргументы
[in] | pSrc | Входной вектор
[in] | srcSize | Размер входного вектора в элементах. Размер вектора должен быть кратен количеству элементов в 64-р. слове.
[out] | pDst | Результирующий вектор
[in] | NmppsFIRState | Служебная структура, содержащая весовые коэффициенты фильтра во внутреннем формате.
Заметки
Инициализация служебной структуры производится соответствующей функцией nmppsFIRInit_Xs() или nmppsFIRInitAlloc_Xs(). \perf Максимальная производительность достигается при размещении pSrc, pDst и pPstate в разных банках памяти .


nmpp: nmppsFIRInit_Xs

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsFIRInit_Xs
Целочисленные функции » Функции обработки сигналов » Масочная фильтрация » КИХ-фильтрация

Инициализация функции одномерной фильтрации Подробнее...

Функции

int | nmppsFIRInit_8s (NmppsFIRState *pState, int *pTaps, int tapsLen)
int | nmppsFIRInit_8s16s (NmppsFIRState *pState, int *pTaps, int tapsLen)
int | nmppsFIRInit_8s32s (NmppsFIRState *pState, int *pTaps, int tapsLen)
int | nmppsFIRInit_16s (NmppsFIRState *pState, int *pTaps, int tapsLen)
int | nmppsFIRInit_16s32s (NmppsFIRState *pState, int *pTaps, int tapsLen)
int | nmppsFIRInit_32s (NmppsFIRState *pState, int *pTaps, int tapsLen)

Подробное описание

Инициализация функции одномерной фильтрации

Функция преобразует таблицу весовых коэффициентов окна фильтра во внутренний формат

Аргументы
[in] pTaps Указатель на коэффициенты фильтра
[in] | tapsLen | Размер окна фильтра. tapsLen=[3,5,7,9....]
[out] | pState | Указатель на служебную структуру, содержащую весовые коэффициенты фильтра во внутреннем формате. Размер памяти (в 32р.-словах) необходимый для хранения служебной структуры можно получить с помощью функции nmppsFIRGetStateSize_Xs
Возвращает
Размер проинициализированной структуры pState в 32р. словах


nmpp: nmppsFIRInitAlloc_Xs

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsFIRInitAlloc_Xs
Целочисленные функции » Функции обработки сигналов » Масочная фильтрация » КИХ-фильтрация

Выделение и инициализация служебной структуры для функции одномерной фильтрации Подробнее...

Функции

int | nmppsFIRInitAlloc_8s (NmppsFIRState **ppState, int *pTaps, int tapsLen)
int | nmppsFIRInitAlloc_8s16s (NmppsFIRState **ppState, int *pTaps, int tapsLen)
int | nmppsFIRInitAlloc_8s32s (NmppsFIRState **ppState, int *pTaps, int tapsLen)
int | nmppsFIRInitAlloc_16s (NmppsFIRState **ppState, int *pTaps, int tapsLen)
int | nmppsFIRInitAlloc_16s32s (NmppsFIRState **ppState, int *pTaps, int tapsLen)
int | nmppsFIRInitAlloc_32s (NmppsFIRState **ppState, int *pTaps, int tapsLen)

Подробное описание

Выделение и инициализация служебной структуры для функции одномерной фильтрации

Функция выделяет структуру в куче и преобразует таблицу весовых коэффициентов окна фильтра во внутренний формат

Аргументы
[in] | pTaps | Указатель на коэффициенты фильтра
[in] | tapsLen | Размер окна фильтра. nWeights=[3,5,7,9....]
Возвращаемые значения
[out] ppState Возвращает указатель на служебную структуру, содержащую весовые коэффициенты фильтра во внутреннем формате
Возвращает
Размер проинициализированной структуры pState в 32р. словах


nmpp: nmppsFIRGetStateSize_Xs

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsFIRGetStateSize_Xs
Целочисленные функции » Функции обработки сигналов » Масочная фильтрация » КИХ-фильтрация

Возвращает размер памяти (в 32р.-словах) необходимый для хранения служебной структуры
Подробнее...

Функции

int | nmppsFIRGetStateSize_8s (int tapsLen)
int | nmppsFIRGetStateSize_8s16s (int tapsLen)
int | nmppsFIRGetStateSize_8s32s (int tapsLen)
int | nmppsFIRGetStateSize_16s (int tapsLen)
int | nmppsFIRGetStateSize_16s32s (int tapsLen)
int | nmppsFIRGetStateSize_32s (int tapsLen)

Подробное описание

Возвращает размер памяти (в 32р.-словах) необходимый для хранения служебной структуры

Аргументы
[in] tapsLen Размер окна фильтра. tapsLen=[3,5,7,9....]
Возвращает
Возвращает размер памяти (в 32р.-словах), необходимый для хранения служебной структуры NmppsFIRState


nmpp: nmppsFIRFree

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsFIRFree
Целочисленные функции » Функции обработки сигналов » Масочная фильтрация » КИХ-фильтрация

освобождает структуру pState в куче Подробнее...

Функции

void nmppsFIRFree (NmppsFIRState *pState)

Подробное описание

освобождает структуру pState в куче

Аргументы
[in] pState указатель на служебную структуру NmppsFIRState


nmpp: Изменение размеров

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Изменение размеров
Целочисленные функции » Функции обработки сигналов

Группы

nmppsResampleDown2
Уменьшение числа отсчетов в двое.
nmppsResampleUp3Down2
Передискретизации сигнала в 3/2 разаПередискретизации сигнала осуществляется методом Polyphase:
.
nmppsCreateResample
Создание ядра для функции передискретизации nmppsResample().Функции выделяют память и инициализируют таблицы весовых коэффициентов для использования в функциях передискретизации.
nmppsSetResample
Создание ядра для функции передискретизации nmppsResample().Функции инициализируют таблицы весовых коэффициентов для использования в функциях передискретизации.
nmppsResample_perf
Функции для оценки производительности функций фильтрации nmppsResample()Функция эквивалентно следующим псевдоинструкциям:

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppsResampleDown2

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsResampleDown2
Целочисленные функции » Функции обработки сигналов » Изменение размеров

Уменьшение числа отсчетов в двое. Подробнее...

Функции

void | nmppsResampleDown2_8u8u (nm8u7b *pSrcVec, nm8u7b *pDstVec, int nSrcVecSize, nm64s *pKernel)
void | nmppsResampleDown2_16u16u (nm16u15b *pSrcVec, nm16u15b *pDstVec, int nSrcVecSize, nm64s *pKernel)

Подробное описание

Уменьшение числа отсчетов в двое.

Аргументы
pSrcVec
Входной сигнал.
nSize
Размер массива входных данных.
Возвращаемые значения
pDstVec
Результирующий сигнал.
Заметки
Для того чтобы избежать переполнения при усреднении, динамический диапазон исходного изображения должен принадлежать диапазону, определенному типом.


nmpp: nmppsResampleUp3Down2

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsResampleUp3Down2
Целочисленные функции » Функции обработки сигналов » Изменение размеров

Передискретизации сигнала в 3/2 разаПередискретизации сигнала осуществляется методом Polyphase:
. Подробнее...

Функции

void nmppsResampleUp3Down2_8s16s (nm8s *pSrcVec, nm16s *pDstVec, int nSrcVecSize, nm64s *pKernel)

Подробное описание

Передискретизации сигнала в 3/2 раза

Передискретизации сигнала осуществляется методом Polyphase:
.

\~
  • Между отсчетами входного сигнала вставляется по 2 нуля
  • Полученный сигнал пропускается через фильтр ФНЧ. Длина фильтра 17
  • Из полученного сигнала выбирается каждый 2 отсчет
Аргументы
pSrcVec
Входной вектор. Элементы вектора - целые числа со знаком.
nSrcVecSize
Размер входного вектора.
Возвращаемые значения
pDstVec
Результирующий вектор. Элементы вектора возвращаются в формате fixed-point: [12.4] (целая часть-12 бит, дробная -4бита)
Возвращает
void


nmpp: nmppsCreateResample

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCreateResample
Целочисленные функции » Функции обработки сигналов » Изменение размеров

Создание ядра для функции передискретизации nmppsResample().Функции выделяют память и инициализируют таблицы весовых коэффициентов для использования в функциях передискретизации. Подробнее...

Функции

void | nmppsCreateResampleUp3Down2_8s16s (nm64s **pKernel, int nHint)
void | nmppsCreateResampleDown2_8u8u (nm64s **pKernel, int nHint)
void | nmppsCreateResampleDown2_16u16u (nm64s **pKernel, int nHint)

Подробное описание

Создание ядра для функции передискретизации nmppsResample().

Функции выделяют память и инициализируют таблицы весовых коэффициентов для использования в функциях передискретизации.

Аргументы
nHint
Определяет память(Local или Global) в которой создается служебная структура. nHint=[MEM_LOCAL,MEM_GLOBAL].
Возвращаемые значения
pKernel Указатель на служебную структуру, содержащую весовые коэффиценты фильтра во внутреннем формате.
Заметки
Используется перед вызовом функции nmppsFilter.


nmpp: nmppsSetResample

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsSetResample
Целочисленные функции » Функции обработки сигналов » Изменение размеров

Создание ядра для функции передискретизации nmppsResample().Функции инициализируют таблицы весовых коэффициентов для использования в функциях передискретизации. Подробнее...

Функции

int | nmppsSetResampleUp3Down2_8s16s (nm64s *pKernel)
int | nmppsSetResampleDown2_8u8u (nm64s *pKernel)
int | nmppsSetResampleDown2_16u16u (nm64s *pKernel)

Подробное описание

Создание ядра для функции передискретизации nmppsResample().

Функции инициализируют таблицы весовых коэффициентов для использования в функциях передискретизации.

Аргументы
pKernel Указатель на служебную структуру, содержащую весовые коэффиценты фильтра во внутреннем формате.
Возвращает
Размер проинициализированной структуры pKernel в 32р. словах
Заметки
Используется перед вызовом функции nmppsFilter.
Используется перед вызовом функции nmppsResample().


nmpp: nmppsResample_perf

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsResample_perf
Целочисленные функции » Функции обработки сигналов » Изменение размеров

Функции для оценки производительности функций фильтрации nmppsResample()Функция эквивалентно следующим псевдоинструкциям: Подробнее...

Функции

void | nmppsResampleUp3Down2_perf (nm8s *pSrcVec, nm16s *pDstVec, int nSrcVecSize, nm64s *pKernel)
void | nmppsResampleDown2_perf_8u (nm8u7b *pSrcVec, nm8u7b *pDstVec, int nSrcVecSize, nm64s *pKernel)
void | nmppsResampleDown2_perf_16u (nm16u15b *pSrcVec, nm16u15b *pDstVec, int nSrcVecSize, nm64s *pKernel)

Подробное описание

Функции для оценки производительности функций фильтрации nmppsResample()

Функция эквивалентно следующим псевдоинструкциям:

void nmppsResample***_perf(nm16u15b* pSrcVec, nm16u15b* pDstVec, int nSrcVecSize, nm64s* pKernel);
{
nmppsSetResample***_***(pKernel);
clock_t t0,t1;
t0=clock();
nmppsResample***(pSrcVec, pDstVec, nSize,pKernel);
t1=clock();
exit(t1-t0);
}
nm64s
long long nm64s
Definition: nmtype.h:375
nm16u15b
nm16u nm16u15b
Definition: nmtype.h:495
\~
Возвращаемые значения
pKernel Указатель на служебную структуру, содержащую весовые коэффиценты фильтра во внутреннем формате.
Аргументы
pSrcVec
Входной вектор.
nSrcVecSize
Размер входного вектора в элементах.
Возвращаемые значения
pDstVec
Результирующий вектор.
Заметки
Инициализация служебной структуры производится соответсвующей функцией nmppsSetFilter() и nmppsCreateFilter().


nmpp: Быстрое преобразование Фурье

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Быстрое преобразование Фурье
Целочисленные функции » Функции обработки сигналов

Группы

FFT-256
IFFT-256
FFT-512
IFFT-512
FFT-1024
IFFT-1024
FFT-2048
IFFT-2048
FFT-4096
IFFT-4096
FFT-8192
IFFT-8192

Подробное описание

Создано системой doxygen 1.9.5


nmpp: FFT-256

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-256
Целочисленные функции » Функции обработки сигналов » Быстрое преобразование Фурье

Функции

void | FFT_Fwd256Set6bit ()
Устанавливает 6-битную точность вычислений
void | FFT_Fwd256Set7bit ()
Устанавливает 7-битную точность вычислений
void | FFT_Fwd256 (nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-256. Подробнее...

Подробное описание

Функции

◆ FFT_Fwd256()

void FFT_Fwd256 | ( | nm32sc * | GSrcBuffer,
 |  | nm32sc * | LDstBuffer,
 |  | void * | LBuffer,
 |  | void * | GBuffer,
 |  | int | ShiftR = -1
 | ) |  |

Прямое быстрое преобразование Фурье-256.

\~russian   Функция выполняет дискретное комплексное 256-точечное преобразовние Фурье  на базе алгоритма БПФ по основанию 16-16
Аргументы
[in] | GSrcBuffer | Входной массив размером 256 64-р. слов
[out] | LDstBuffer | Результирующий массив размером 256*3 64-р. слов
[in] | LBuffer | Временный массив на локальной шине (Local Bus) размером 256*3 64-р. слов
[in] | GBuffer | Временный массив на глобальной шине (Global Bus) размером 256*2 64-р. слов
[in] | ShiftR | Коэффициент нормализации, выполняет арифметический сдвиг результирующего массива на ShiftR бит вправо для получения нормализованного массива LDstBuffer. При передаче значения по умолчанию (-1) ShiftR автоматически принимается равным 14 если ранее установленна точность 7-бит функцией FFT_Fwd256Set7bit() и 12 - если ранее установлена точность 6-бит функцией FFT_Fwd256Set6bit().
Возвращает
void
Заметки
Использование inplace параметров не допускается ( все указатели должны быть разными)

\perf

   GSrcBuffer| LDstBuffer| LBuffer   | GBuffer   |   ShiftR  |   clocks
   --------------------------------------------------------------------------
       L     |     L     |     L     |     L     |     -1    |     21.54
       L     |     L     |     L     |     G     |     -1    |     16.60
       L     |     L     |     G     |     L     |     -1    |     22.17
       L     |     L     |     G     |     G     |     -1    |     20.98
       L     |     G     |     L     |     L     |     -1    |     20.53
       L     |     G     |     L     |     G     |     -1    |     17.56
       L     |     G     |     G     |     L     |     -1    |     21.17
       L     |     G     |     G     |     G     |     -1    |     21.94
       G     |     L     |     L     |     L     |     -1    |     20.57
       G     |     L     |     L     |     G     |     -1    |     15.64
       G     |     L     |     G     |     L     |     -1    |     21.21
       G     |     L     |     G     |     G     |     -1    |     20.02
       G     |     G     |     L     |     L     |     -1    |     19.57
       G     |     G     |     L     |     G     |     -1    |     16.59
       G     |     G     |     G     |     L     |     -1    |     20.20
       G     |     G     |     G     |     G     |     -1    |     20.97
       L     |     L     |     L     |     L     |     0     |     21.51
       L     |     L     |     L     |     G     |     0     |     16.58
       L     |     L     |     G     |     L     |     0     |     22.15
       L     |     L     |     G     |     G     |     0     |     20.96
       L     |     G     |     L     |     L     |     0     |     20.51
       L     |     G     |     L     |     G     |     0     |     17.53
       L     |     G     |     G     |     L     |     0     |     21.14
       L     |     G     |     G     |     G     |     0     |     21.91
       G     |     L     |     L     |     L     |     0     |     20.55
       G     |     L     |     L     |     G     |     0     |     15.62
       G     |     L     |     G     |     L     |     0     |     21.19
       G     |     L     |     G     |     G     |     0     |     20.00
       G     |     G     |     L     |     L     |     0     |     19.54
       G     |     G     |     L     |     G     |     0     |     16.57
       G     |     G     |     G     |     L     |     0     |     20.18
       G     |     G     |     G     |     G     |     0     |     20.95


nmpp: IFFT-256

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-256
Целочисленные функции » Функции обработки сигналов » Быстрое преобразование Фурье

Функции

void | FFT_Inv256Set6bit ()
Устанавливает 6-битную точность вычислений Подробнее...
void | FFT_Inv256Set7bit ()
Устанавливает 7-битную точность вычислений
void | FFT_Inv256 (nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=8, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-256. Подробнее...

Подробное описание

Функции

◆ FFT_Inv256()

void FFT_Inv256 | ( | nm32sc * | GSrcBuffer,
 |  | nm32sc * | GDstBuffer,
 |  | void * | LBuffer,
 |  | void * | GBuffer,
 |  | int | ShiftR1 = 8,
 |  | int | ShiftR2 = -1
 | ) |  |

Обратное быстрое преобразование Фурье. ОБПФ-256.

Функция выполняет обратное дискретное комплексное 256-точечное быстрое преобразование Фурье на базе алгоритма ОБПФ по онованию 16-16.

Аргументы
[in] | GSrcBuffer | Входной массив размером 256 64-р. слов
[out] | GDstBuffer | Результирующий массив размером 256 64-р. слов
[in] | LBuffer | Временный массив на локальной шине (Local Bus) размером 256*3 64-р. слов
[in] | GBuffer | Временный массив на глобальной шине (Global Bus) размером 256*2 64-р. слов
[in] | ShiftR1 | Промежуточный сдвиг результатов на ShiftR1 бит вправо (первая нормализация). Неоходимо для предовтращения переполнения. По умолчанию равен 8
[in] | ShiftR2 | Заключительный сдвиг результатов на ShiftR2 бит вправо (вторая нормализация) в конце вычисления обратного БПФ. По умолчанию ShiftR2 принимается равным 14 при установленной точности 7-бит с помощью функции FFT_Inv256Set7bit() и 12 - при точности 6-бит, установленной с помощью функции FFT_Inv256Set6bit().
Возвращает
void
Заметки
Использование inplace параметров не допускается ( все указатели должны быть разными)

\perf

   GSrcBuffer| GDstBuffer| LBuffer   |  GBuffer  |  ShiftR1  |  ShiftR2  |     clocks
   ----------------------------------------------------------------------------------
       L     |     L     |     L     |     L     |     8     |     -1    |     26.76
       L     |     L     |     L     |     L     |     0     |     -1    |     26.76
       L     |     L     |     L     |     G     |     8     |     -1    |     19.07
       L     |     L     |     L     |     G     |     0     |     -1    |     19.07
       L     |     L     |     G     |     L     |     8     |     -1    |     22.87
       L     |     L     |     G     |     L     |     0     |     -1    |     22.87
       L     |     L     |     G     |     G     |     8     |     -1    |     20.77
       L     |     L     |     G     |     G     |     0     |     -1    |     20.77
       L     |     G     |     L     |     L     |     8     |     -1    |     25.75
       L     |     G     |     L     |     L     |     0     |     -1    |     25.75
       L     |     G     |     L     |     G     |     8     |     -1    |     18.06
       L     |     G     |     L     |     G     |     0     |     -1    |     18.06
       L     |     G     |     G     |     L     |     8     |     -1    |     23.82
       L     |     G     |     G     |     L     |     0     |     -1    |     23.82
       L     |     G     |     G     |     G     |     8     |     -1    |     21.72
       L     |     G     |     G     |     G     |     0     |     -1    |     21.72
       G     |     L     |     L     |     L     |     8     |     -1    |     25.80
       G     |     L     |     L     |     L     |     0     |     -1    |     25.80
       G     |     L     |     L     |     G     |     8     |     -1    |     18.10
       G     |     L     |     L     |     G     |     0     |     -1    |     18.10
       G     |     L     |     G     |     L     |     8     |     -1    |     21.91
       G     |     L     |     G     |     L     |     0     |     -1    |     21.91
       G     |     L     |     G     |     G     |     8     |     -1    |     19.80
       G     |     L     |     G     |     G     |     0     |     -1    |     19.80
       G     |     G     |     L     |     L     |     8     |     -1    |     24.79
       G     |     G     |     L     |     L     |     0     |     -1    |     24.79
       G     |     G     |     L     |     G     |     8     |     -1    |     17.09
       G     |     G     |     L     |     G     |     0     |     -1    |     17.09
       G     |     G     |     G     |     L     |     8     |     -1    |     22.86
       G     |     G     |     G     |     L     |     0     |     -1    |     22.86
       G     |     G     |     G     |     G     |     8     |     -1    |     20.76
       G     |     G     |     G     |     G     |     0     |     -1    |     20.76
       L     |     L     |     L     |     L     |     8     |     0     |     26.74
       L     |     L     |     L     |     L     |     0     |     0     |     26.74
       L     |     L     |     L     |     G     |     8     |     0     |     19.04
       L     |     L     |     L     |     G     |     0     |     0     |     19.04
       L     |     L     |     G     |     L     |     8     |     0     |     22.85
       L     |     L     |     G     |     L     |     0     |     0     |     22.85
       L     |     L     |     G     |     G     |     8     |     0     |     20.75
       L     |     L     |     G     |     G     |     0     |     0     |     20.75
       L     |     G     |     L     |     L     |     8     |     0     |     25.73
       L     |     G     |     L     |     L     |     0     |     0     |     25.73
       L     |     G     |     L     |     G     |     8     |     0     |     18.03
       L     |     G     |     L     |     G     |     0     |     0     |     18.03
       L     |     G     |     G     |     L     |     8     |     0     |     23.80
       L     |     G     |     G     |     L     |     0     |     0     |     23.80
       L     |     G     |     G     |     G     |     8     |     0     |     21.70
       L     |     G     |     G     |     G     |     0     |     0     |     21.70
       G     |     L     |     L     |     L     |     8     |     0     |     25.77
       G     |     L     |     L     |     L     |     0     |     0     |     25.77
       G     |     L     |     L     |     G     |     8     |     0     |     18.08
       G     |     L     |     L     |     G     |     0     |     0     |     18.08
       G     |     L     |     G     |     L     |     8     |     0     |     21.88
       G     |     L     |     G     |     L     |     0     |     0     |     21.88
       G     |     L     |     G     |     G     |     8     |     0     |     19.78
       G     |     L     |     G     |     G     |     0     |     0     |     19.78
       G     |     G     |     L     |     L     |     8     |     0     |     24.76
       G     |     G     |     L     |     L     |     0     |     0     |     24.76
       G     |     G     |     L     |     G     |     8     |     0     |     17.07
       G     |     G     |     L     |     G     |     0     |     0     |     17.07
       G     |     G     |     G     |     L     |     8     |     0     |     22.83
       G     |     G     |     G     |     L     |     0     |     0     |     22.83
       G     |     G     |     G     |     G     |     8     |     0     |     20.73
       G     |     G     |     G     |     G     |     0     |     0     |     20.73

◆ FFT_Inv256Set6bit()

void FFT_Inv256Set6bit ( )

Устанавливает 6-битную точность вычислений


nmpp: FFT-512

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-512
Целочисленные функции » Функции обработки сигналов » Быстрое преобразование Фурье

Функции

void | FFT_Fwd512Set6bit ()
Устанавливает 6-битную точность вычислений
void | FFT_Fwd512Set7bit ()
Устанавливает 7-битную точность вычислений
void | FFT_Fwd512 (nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-512. Подробнее...

Подробное описание

Функции

◆ FFT_Fwd512()

void FFT_Fwd512 | ( | nm32sc * | GSrcBuffer,
 |  | nm32sc * | GDstBuffer,
 |  | void * | LBuffer,
 |  | void * | GBuffer,
 |  | int | ShiftR = -1
 | ) |  |

Прямое быстрое преобразование Фурье-512.

Функция выполняет дискретное комплексное 512-точечное преобразовние Фурье на базе алгоритма БПФ по основанию 2-16-16

Аргументы
[in] | GSrcBuffer | Входной массив размером 512 64-р. слов
[out] | GDstBuffer | Результирующий массив размером 512 64-р. слов
[in] | LBuffer | Временный массив на локальной шине (Local Bus) размером 512*2 64-р. слов
[in] | GBuffer | Временный массив на глобальной шине (Global Bus) размером 512*3 64-р. слов
[in] | ShiftR | Коэффициент нормализации, выполняет арифметический сдвиг результирующего массива на ShiftR бит вправо для получения нормализованного массива LDstBuffer. При передаче значения по умолчанию (-1) ShiftR автоматически принимается равным 14 если ранее установленна точность 7-бит функцией FFT_Fwd512Set7bit() и 12 - если ранее установлена точность 6-бит функцией FFT_Fwd512Set6bit().
Возвращает
void
Заметки
Использование inplace параметров не допускается ( все указатели должны быть разными)

\perf

   GSrcBuffer| GDstBuffer| LBuffer   |  GBuffer  |  ShiftR   |     clocks
   ------------------------------------------------------------------------
       L     |     L     |     L     |     L     |     -1    |     24.12
       L     |     L     |     L     |     G     |     -1    |     19.29
       L     |     L     |     G     |     L     |     -1    |     22.81
       L     |     L     |     G     |     G     |     -1    |     21.62
       L     |     G     |     L     |     L     |     -1    |     23.10
       L     |     G     |     L     |     G     |     -1    |     18.27
       L     |     G     |     G     |     L     |     -1    |     23.77
       L     |     G     |     G     |     G     |     -1    |     22.58
       G     |     L     |     L     |     L     |     -1    |     23.06
       G     |     L     |     L     |     G     |     -1    |     18.23
       G     |     L     |     G     |     L     |     -1    |     23.79
       G     |     L     |     G     |     G     |     -1    |     22.60
       G     |     G     |     L     |     L     |     -1    |     22.04
       G     |     G     |     L     |     G     |     -1    |     17.21
       G     |     G     |     G     |     L     |     -1    |     24.75
       G     |     G     |     G     |     G     |     -1    |     23.56
       L     |     L     |     L     |     L     |     0     |     24.11
       L     |     L     |     L     |     G     |     0     |     19.28
       L     |     L     |     G     |     L     |     0     |     22.80
       L     |     L     |     G     |     G     |     0     |     21.61
       L     |     G     |     L     |     L     |     0     |     23.09
       L     |     G     |     L     |     G     |     0     |     18.26
       L     |     G     |     G     |     L     |     0     |     23.76
       L     |     G     |     G     |     G     |     0     |     22.57
       G     |     L     |     L     |     L     |     0     |     23.05
       G     |     L     |     L     |     G     |     0     |     18.22
       G     |     L     |     G     |     L     |     0     |     23.78
       G     |     L     |     G     |     G     |     0     |     22.59
       G     |     G     |     L     |     L     |     0     |     22.03
       G     |     G     |     L     |     G     |     0     |     17.20
       G     |     G     |     G     |     L     |     0     |     24.74
       G     |     G     |     G     |     G     |     0     |     23.55


nmpp: IFFT-512

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-512
Целочисленные функции » Функции обработки сигналов » Быстрое преобразование Фурье

Функции

void | FFT_Inv512Set6bit ()
Устанавливает 6-битную точность вычислений
void | FFT_Inv512Set7bit ()
Устанавливает 7-битную точность вычислений
void | FFT_Inv512 (nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=9, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-512. Подробнее...

Подробное описание

Функции

◆ FFT_Inv512()

void FFT_Inv512 | ( | nm32sc * | GSrcBuffer,
 |  | nm32sc * | LDstBuffer,
 |  | void * | LBuffer,
 |  | void * | GBuffer,
 |  | int | ShiftR1 = 9,
 |  | int | ShiftR2 = -1
 | ) |  |

Обратное быстрое преобразование Фурье. ОБПФ-512.

Функция выполняет обратное дискретное комплексное 512-точечное быстрое преобразование Фурье на базе алгоритма ОБПФ по онованию 2-16-16.

Аргументы
[in] | GSrcBuffer | Входной массив размером 512 64-р. слов
[out] | LDstBuffer | Результирующий массив размером 512 64-р. слов
[in] | LBuffer | Временный массив на локальной шине (Local Bus) размером 512*3 64-р. слов
[in] | GBuffer | Временный массив на глобальной шине (Global Bus) размером 512*3 64-р. слов
[in] | ShiftR1 | Промежуточный сдвиг результатов на ShiftR1 бит вправо (первая нормализация). Неоходимо для предовтращения переполнения. По умолчанию равен 9
[in] | ShiftR2 | Заключительный сдвиг результатов на ShiftR2 бит вправо (вторая нормализация) в конце вычисления обратного БПФ. По умолчанию ShiftR2 принимается равным 14 при установленной точности 7-бит с помощью функции FFT_Inv512Set7bit() и 12 - при точности 6-бит, установленной с помощью функции FFT_Inv512Set6bit().
Возвращает
void
Заметки
Использование inplace параметров не допускается ( все указатели должны быть разными)

\perf

   GSrcBuffer| LDstBuffer|  LBuffer  |  GBuffer  |  ShiftR1  |  ShiftR2   |     clocks
   -----------------------------------------------------------------------------------
       L     |     L     |     L     |     L     |     9     |     -1     |     23.41
       L     |     L     |     L     |     L     |     0     |     -1     |     23.40
       L     |     L     |     L     |     G     |     9     |     -1     |     19.39
       L     |     L     |     L     |     G     |     0     |     -1     |     19.38
       L     |     L     |     G     |     L     |     9     |     -1     |     24.86
       L     |     L     |     G     |     L     |     0     |     -1     |     24.86
       L     |     L     |     G     |     G     |     9     |     -1     |     26.47
       L     |     L     |     G     |     G     |     0     |     -1     |     26.46
       L     |     G     |     L     |     L     |     9     |     -1     |     22.39
       L     |     G     |     L     |     L     |     0     |     -1     |     22.38
       L     |     G     |     L     |     G     |     9     |     -1     |     20.35
       L     |     G     |     L     |     G     |     0     |     -1     |     20.34
       L     |     G     |     G     |     L     |     9     |     -1     |     23.84
       L     |     G     |     G     |     L     |     0     |     -1     |     23.84
       L     |     G     |     G     |     G     |     9     |     -1     |     27.43
       L     |     G     |     G     |     G     |     0     |     -1     |     27.42
       G     |     L     |     L     |     L     |     9     |     -1     |     22.35
       G     |     L     |     L     |     L     |     0     |     -1     |     22.34
       G     |     L     |     L     |     G     |     9     |     -1     |     18.34
       G     |     L     |     L     |     G     |     0     |     -1     |     18.33
       G     |     L     |     G     |     L     |     9     |     -1     |     25.84
       G     |     L     |     G     |     L     |     0     |     -1     |     25.84
       G     |     L     |     G     |     G     |     9     |     -1     |     27.45
       G     |     L     |     G     |     G     |     0     |     -1     |     27.44
       G     |     G     |     L     |     L     |     9     |     -1     |     21.33
       G     |     G     |     L     |     L     |     0     |     -1     |     21.33
       G     |     G     |     L     |     G     |     9     |     -1     |     19.30
       G     |     G     |     L     |     G     |     0     |     -1     |     19.29
       G     |     G     |     G     |     L     |     9     |     -1     |     24.83
       G     |     G     |     G     |     L     |     0     |     -1     |     24.82
       G     |     G     |     G     |     G     |     9     |     -1     |     28.41
       G     |     G     |     G     |     G     |     0     |     -1     |     28.41
       L     |     L     |     L     |     L     |     9     |     0     |     23.40
       L     |     L     |     L     |     L     |     0     |     0     |     23.39
       L     |     L     |     L     |     G     |     9     |     0     |     19.38
       L     |     L     |     L     |     G     |     0     |     0     |     19.37
       L     |     L     |     G     |     L     |     9     |     0     |     24.85
       L     |     L     |     G     |     L     |     0     |     0     |     24.85
       L     |     L     |     G     |     G     |     9     |     0     |     26.45
       L     |     L     |     G     |     G     |     0     |     0     |     26.45
       L     |     G     |     L     |     L     |     9     |     0     |     22.38
       L     |     G     |     L     |     L     |     0     |     0     |     22.37
       L     |     G     |     L     |     G     |     9     |     0     |     20.34
       L     |     G     |     L     |     G     |     0     |     0     |     20.33
       L     |     G     |     G     |     L     |     9     |     0     |     23.83
       L     |     G     |     G     |     L     |     0     |     0     |     23.83
       L     |     G     |     G     |     G     |     9     |     0     |     27.41
       L     |     G     |     G     |     G     |     0     |     0     |     27.41
       G     |     L     |     L     |     L     |     9     |     0     |     22.34
       G     |     L     |     L     |     L     |     0     |     0     |     22.33
       G     |     L     |     L     |     G     |     9     |     0     |     18.33
       G     |     L     |     L     |     G     |     0     |     0     |     18.32
       G     |     L     |     G     |     L     |     9     |     0     |     25.83
       G     |     L     |     G     |     L     |     0     |     0     |     25.83
       G     |     L     |     G     |     G     |     9     |     0     |     27.43
       G     |     L     |     G     |     G     |     0     |     0     |     27.43
       G     |     G     |     L     |     L     |     9     |     0     |     21.32
       G     |     G     |     L     |     L     |     0     |     0     |     21.31
       G     |     G     |     L     |     G     |     9     |     0     |     19.29
       G     |     G     |     L     |     G     |     0     |     0     |     19.28
       G     |     G     |     G     |     L     |     9     |     0     |     24.81
       G     |     G     |     G     |     L     |     0     |     0     |     24.81
       G     |     G     |     G     |     G     |     9     |     0     |     28.40
       G     |     G     |     G     |     G     |     0     |     0     |     28.39


nmpp: FFT-1024

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-1024
Целочисленные функции » Функции обработки сигналов » Быстрое преобразование Фурье

Функции

void | FFT_Fwd1024Set6bit ()
Устанавливает 6-битную точность вычислений
void | FFT_Fwd1024Set7bit ()
Устанавливает 7-битную точность вычислений
void | FFT_Fwd1024 (nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-1024. Подробнее...

Подробное описание

Функции

◆ FFT_Fwd1024()

void FFT_Fwd1024 | ( | nm32sc * | GSrcBuffer,
 |  | nm32sc * | LDstBuffer,
 |  | void * | LBuffer,
 |  | void * | GBuffer,
 |  | int | ShiftR = -1
 | ) |  |

Прямое быстрое преобразование Фурье-1024.

Функция выполняет дискретное комплексное 1024-точечное преобразовние Фурье на базе алгоритма БПФ по основанию 2-32-16

Аргументы
[in] | GSrcBuffer | Входной массив размером 1024 64-р. слов
[out] | LDstBuffer | Результирующий массив размером 1024 64-р. слов
[in] | LBuffer | Временный массив на локальной шине (Local Bus) размером 1024*3 64-р. слов
[in] | GBuffer | Временный массив на глобальной шине (Global Bus) размером 1024*3 64-р. слов
[in] | ShiftR | Коэффициент нормализации, выполняет арифметический сдвиг результирующего массива на ShiftR бит вправо для получения нормализованного массива LDstBuffer. При передаче значения по умолчанию (-1) ShiftR автоматически принимается равным 14 если ранее установленна точность 7-бит функцией FFT_Fwd1024Set7bit() и 12 - если ранее установлена точность 6-бит функцией FFT_Fwd1024Set6bit().
Возвращает
void
Заметки
Использование inplace параметров не допускается ( все указатели должны быть разными)

\perf

   GSrcBuffer| LDstBuffer|  LBuffer  |  GBuffer  |  ShiftR   |     clocks
   ------------------------------------------------------------------------
       L     |     L     |     L     |     L     |     -1    |     22.55
       L     |     L     |     L     |     G     |     -1    |     20.52
       L     |     L     |     G     |     L     |     -1    |     26.08
       L     |     L     |     G     |     G     |     -1    |     25.93
       L     |     G     |     L     |     L     |     -1    |     21.53
       L     |     G     |     L     |     G     |     -1    |     21.48
       L     |     G     |     G     |     L     |     -1    |     25.06
       L     |     G     |     G     |     G     |     -1    |     26.89
       G     |     L     |     L     |     L     |     -1    |     21.55
       G     |     L     |     L     |     G     |     -1    |     19.51
       G     |     L     |     G     |     L     |     -1    |     27.03
       G     |     L     |     G     |     G     |     -1    |     26.87
       G     |     G     |     L     |     L     |     -1    |     20.52
       G     |     G     |     L     |     G     |     -1    |     20.48
       G     |     G     |     G     |     L     |     -1    |     26.00
       G     |     G     |     G     |     G     |     -1    |     27.84
       L     |     L     |     L     |     L     |     0     |     22.55
       L     |     L     |     L     |     G     |     0     |     20.51
       L     |     L     |     G     |     L     |     0     |     26.08
       L     |     L     |     G     |     G     |     0     |     25.92
       L     |     G     |     L     |     L     |     0     |     21.52
       L     |     G     |     L     |     G     |     0     |     21.48
       L     |     G     |     G     |     L     |     0     |     25.05
       L     |     G     |     G     |     G     |     0     |     26.89
       G     |     L     |     L     |     L     |     0     |     21.54
       G     |     L     |     L     |     G     |     0     |     19.51
       G     |     L     |     G     |     L     |     0     |     27.02
       G     |     L     |     G     |     G     |     0     |     26.87
       G     |     G     |     L     |     L     |     0     |     20.52
       G     |     G     |     L     |     G     |     0     |     20.47
       G     |     G     |     G     |     L     |     0     |     26.00
       G     |     G     |     G     |     G     |     0     |     27.83


nmpp: IFFT-1024

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-1024
Целочисленные функции » Функции обработки сигналов » Быстрое преобразование Фурье

Функции

void | FFT_Inv1024Set6bit ()
Устанавливает 6-битную точность вычислений
void | FFT_Inv1024Set7bit ()
Устанавливает 7-битную точность вычислений
void | FFT_Inv1024 (nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=10, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-1024. Подробнее...

Подробное описание

Функции

◆ FFT_Inv1024()

void FFT_Inv1024 | ( | nm32sc * | GSrcBuffer,
 |  | nm32sc * | GDstBuffer,
 |  | void * | LBuffer,
 |  | void * | GBuffer,
 |  | int | ShiftR1 = 10,
 |  | int | ShiftR2 = -1
 | ) |  |

Обратное быстрое преобразование Фурье. ОБПФ-1024.

Функция выполняет обратное дискретное комплексное 1024-точечное быстрое преобразование Фурье на базе алгоритма ОБПФ по онованию 2-16-16.

Аргументы
[in] | GSrcBuffer | Входной массив размером 1024 64-р. слов
[out] | GDstBuffer | Результирующий массив размером 1024 64-р. слов
[in] | LBuffer | Временный массив на локальной шине (Local Bus) размером 1024*3 64-р. слов
[in] | GBuffer | Временный массив на глобальной шине (Global Bus) размером 1024*3 64-р. слов
[in] | ShiftR1 | Промежуточный сдвиг результатов на ShiftR1 бит вправо (первая нормализация). Неоходимо для предовтращения переполнения. По умолчанию равен 10
[in] | ShiftR2 | Заключительный сдвиг результатов на ShiftR2 бит вправо (вторая нормализация) в конце вычисления обратного БПФ. По умолчанию ShiftR2 принимается равным 14 при установленной точности 7-бит с помощью функции FFT_Inv1024Set7bit() и 12 - при точности 6-бит, установленной с помощью функции FFT_Inv1024Set6bit().
Возвращает
void
Заметки
Использование inplace параметров не допускается ( все указатели должны быть разными)

\perf

   GSrcBuffer| GDstBuffer|  LBuffer  |  GBuffer  |   ShiftR1  |  ShiftR2 |   clocks
   ----------------------------------------------------------------------------------
       L     |     L     |     L     |     L     |     10    |     -1    |     28.82
       L     |     L     |     L     |     L     |     0     |     -1    |     28.82
       L     |     L     |     L     |     G     |     10    |     -1    |     23.90
       L     |     L     |     L     |     G     |     0     |     -1    |     23.90
       L     |     L     |     G     |     L     |     10    |     -1    |     26.60
       L     |     L     |     G     |     L     |     0     |     -1    |     26.60
       L     |     L     |     G     |     G     |     10    |     -1    |     25.55
       L     |     L     |     G     |     G     |     0     |     -1    |     25.55
       L     |     G     |     L     |     L     |     10    |     -1    |     27.80
       L     |     G     |     L     |     L     |     0     |     -1    |     27.80
       L     |     G     |     L     |     G     |     10    |     -1    |     22.88
       L     |     G     |     L     |     G     |     0     |     -1    |     22.88
       L     |     G     |     G     |     L     |     10    |     -1    |     27.57
       L     |     G     |     G     |     L     |     0     |     -1    |     27.57
       L     |     G     |     G     |     G     |     10    |     -1    |     26.52
       L     |     G     |     G     |     G     |     0     |     -1    |     26.52
       G     |     L     |     L     |     L     |     10    |     -1    |     27.81
       G     |     L     |     L     |     L     |     0     |     -1    |     27.81
       G     |     L     |     L     |     G     |     10    |     -1    |     22.89
       G     |     L     |     L     |     G     |     0     |     -1    |     22.89
       G     |     L     |     G     |     L     |     10    |     -1    |     27.55
       G     |     L     |     G     |     L     |     0     |     -1    |     27.55
       G     |     L     |     G     |     G     |     10    |     -1    |     26.50
       G     |     L     |     G     |     G     |     0     |     -1    |     26.50
       G     |     G     |     L     |     L     |     10    |     -1    |     26.79
       G     |     G     |     L     |     L     |     0     |     -1    |     26.79
       G     |     G     |     L     |     G     |     10    |     -1    |     21.87
       G     |     G     |     L     |     G     |     0     |     -1    |     21.87
       G     |     G     |     G     |     L     |     10    |     -1    |     28.51
       G     |     G     |     G     |     L     |     0     |     -1    |     28.51
       G     |     G     |     G     |     G     |     10    |     -1    |     27.46
       G     |     G     |     G     |     G     |     0     |     -1    |     27.46
       L     |     L     |     L     |     L     |     10    |     0     |     28.82
       L     |     L     |     L     |     L     |     0     |     0     |     28.82
       L     |     L     |     L     |     G     |     10    |     0     |     23.90
       L     |     L     |     L     |     G     |     0     |     0     |     23.90
       L     |     L     |     G     |     L     |     10    |     0     |     26.60
       L     |     L     |     G     |     L     |     0     |     0     |     26.60
       L     |     L     |     G     |     G     |     10    |     0     |     25.54
       L     |     L     |     G     |     G     |     0     |     0     |     25.54
       L     |     G     |     L     |     L     |     10    |     0     |     27.79
       L     |     G     |     L     |     L     |     0     |     0     |     27.79
       L     |     G     |     L     |     G     |     10    |     0     |     22.87
       L     |     G     |     L     |     G     |     0     |     0     |     22.87
       L     |     G     |     G     |     L     |     10    |     0     |     27.56
       L     |     G     |     G     |     L     |     0     |     0     |     27.56
       L     |     G     |     G     |     G     |     10    |     0     |     26.51
       L     |     G     |     G     |     G     |     0     |     0     |     26.51
       G     |     L     |     L     |     L     |     10    |     0     |     27.81
       G     |     L     |     L     |     L     |     0     |     0     |     27.81
       G     |     L     |     L     |     G     |     10    |     0     |     22.89
       G     |     L     |     L     |     G     |     0     |     0     |     22.89
       G     |     L     |     G     |     L     |     10    |     0     |     27.54
       G     |     L     |     G     |     L     |     0     |     0     |     27.54
       G     |     L     |     G     |     G     |     10    |     0     |     26.49
       G     |     L     |     G     |     G     |     0     |     0     |     26.49
       G     |     G     |     L     |     L     |     10    |     0     |     26.78
       G     |     G     |     L     |     L     |     0     |     0     |     26.78
       G     |     G     |     L     |     G     |     10    |     0     |     21.86
       G     |     G     |     L     |     G     |     0     |     0     |     21.86
       G     |     G     |     G     |     L     |     10    |     0     |     28.51
       G     |     G     |     G     |     L     |     0     |     0     |     28.51
       G     |     G     |     G     |     G     |     10    |     0     |     27.46
       G     |     G     |     G     |     G     |     0     |     0     |     27.46


nmpp: FFT-2048

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-2048
Целочисленные функции » Функции обработки сигналов » Быстрое преобразование Фурье

Функции

void | FFT_Fwd2048Set6bit ()
Устанавливает 6-битную точность вычислений
void | FFT_Fwd2048Set7bit ()
Устанавливает 7-битную точность вычислений
void | FFT_Fwd2048 (nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-2048. Подробнее...

Подробное описание

Функции

◆ FFT_Fwd2048()

void FFT_Fwd2048 | ( | nm32sc * | GSrcBuffer,
 |  | nm32sc * | GDstBuffer,
 |  | void * | LBuffer,
 |  | int | ShiftR = -1
 | ) |  |

Прямое быстрое преобразование Фурье-2048.

Функция выполняет дискретное комплексное 2048-точечное преобразовние Фурье на базе алгоритма БПФ по основанию 2-32-32

Аргументы
[in] | GSrcBuffer | Входной массив размером 2048 64-р. слов
[out] | GDstBuffer | Результирующий массив размером 2048 64-р. слов
[in] | LBuffer | Временный массив на локальной шине (Local Bus) размером 2048*4 64-р. слов
[in] | ShiftR | Коэффициент нормализации, выполняет арифметический сдвиг результирующего массива на ShiftR бит вправо для получения нормализованного массива LDstBuffer. При передаче значения по умолчанию (-1) ShiftR автоматически принимается равным 14 если ранее установленна точность 7-бит функцией FFT_Fwd2048Set7bit() и 12 - если ранее установлена точность 6-бит функцией FFT_Fwd2048Set6bit().
Возвращает
void
Заметки
Использование inplace параметров не допускается ( все указатели должны быть разными)

\perf

   GSrcBuffer| GDstBuffer|  LBuffer  |   ShiftR  |     clocks
   -----------------------------------------------------------
       L     |     L     |     L     |     -1    |     26.41
       L     |     L     |     G     |     -1    |     28.97
       L     |     G     |     L     |     -1    |     25.38
       L     |     G     |     G     |     -1    |     29.93
       G     |     L     |     L     |     -1    |     25.38
       G     |     L     |     G     |     -1    |     29.93
       G     |     G     |     L     |     -1    |     24.36
       G     |     G     |     G     |     -1    |     30.89
       L     |     L     |     L     |     0     |     26.40
       L     |     L     |     G     |     0     |     28.96
       L     |     G     |     L     |     0     |     25.38
       L     |     G     |     G     |     0     |     29.93
       G     |     L     |     L     |     0     |     25.38
       G     |     L     |     G     |     0     |     29.93
       G     |     G     |     L     |     0     |     24.35
       G     |     G     |     G     |     0     |     30.89


nmpp: IFFT-2048

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-2048
Целочисленные функции » Функции обработки сигналов » Быстрое преобразование Фурье

Функции

void | FFT_Inv2048Set6bit ()
Устанавливает 6-битную точность вычислений
void | FFT_Inv2048Set7bit ()
Устанавливает 7-битную точность вычислений
void | FFT_Inv2048 (nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=11, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-2048. Подробнее...

Подробное описание

Функции

◆ FFT_Inv2048()

void FFT_Inv2048 | ( | nm32sc * | GSrcBuffer,
 |  | nm32sc * | LDstBuffer,
 |  | void * | LBuffer,
 |  | void * | GBuffer,
 |  | int | ShiftR1 = 11,
 |  | int | ShiftR2 = -1
 | ) |  |

Обратное быстрое преобразование Фурье. ОБПФ-2048.

Функция выполняет обратное дискретное комплексное 2048-точечное быстрое преобразование Фурье на базе алгоритма ОБПФ по онованию 2-32-32.

Аргументы
[in] | GSrcBuffer | Входной массив размером 2048 64-р. слов
[out] | LDstBuffer | Результирующий массив размером 2048 64-р. слов
[in] | LBuffer | Временный массив на локальной шине (Local Bus) размером 2048*4 64-р. слов
[in] | GBuffer | Временный массив на глобальной шине (Global Bus) размером 2048*4 64-р. слов
[in] | ShiftR1 | Промежуточный сдвиг результатов на ShiftR1 бит вправо (первая нормализация). Неоходимо для предовтращения переполнения. По умолчанию равен 11
[in] | ShiftR2 | Заключительный сдвиг результатов на ShiftR2 бит вправо (вторая нормализация) в конце вычисления обратного БПФ. По умолчанию ShiftR2 принимается равным 14 при установленной точности 7-бит с помощью функции FFT_Inv2048Set7bit() и 12 - при точности 6-бит, установленной с помощью функции FFT_Inv2048Set6bit().
Возвращает
void
Заметки
Использование inplace параметров не допускается ( все указатели должны быть разными)

\perf

GSrcBuffer| LDstBuffer|  LBuffer  |  GBuffer  | ShiftR1   |  ShiftR2  |    clocks
---------------------------------------------------------------------------------
    L     |     L     |     L     |     L     |     11    |     -1    |     30.58
    L     |     L     |     L     |     L     |     0     |     -1    |     30.58
    L     |     L     |     L     |     G     |     11    |     -1    |     26.52
    L     |     L     |     L     |     G     |     0     |     -1    |     26.52
    L     |     L     |     G     |     L     |     11    |     -1    |     31.33
    L     |     L     |     G     |     L     |     0     |     -1    |     31.33
    L     |     L     |     G     |     G     |     11    |     -1    |     29.26
    L     |     L     |     G     |     G     |     0     |     -1    |     29.26
    L     |     G     |     L     |     L     |     11    |     -1    |     29.56
    L     |     G     |     L     |     L     |     0     |     -1    |     29.55
    L     |     G     |     L     |     G     |     11    |     -1    |     27.48
    L     |     G     |     L     |     G     |     0     |     -1    |     27.48
    L     |     G     |     G     |     L     |     11    |     -1    |     30.30
    L     |     G     |     G     |     L     |     0     |     -1    |     30.30
    L     |     G     |     G     |     G     |     11    |     -1    |     30.22
    L     |     G     |     G     |     G     |     0     |     -1    |     30.22
    G     |     L     |     L     |     L     |     11    |     -1    |     29.56
    G     |     L     |     L     |     L     |     0     |     -1    |     29.56
    G     |     L     |     L     |     G     |     11    |     -1    |     25.49
    G     |     L     |     L     |     G     |     0     |     -1    |     25.49
    G     |     L     |     G     |     L     |     11    |     -1    |     32.29
    G     |     L     |     G     |     L     |     0     |     -1    |     32.29
    G     |     L     |     G     |     G     |     11    |     -1    |     30.22
    G     |     L     |     G     |     G     |     0     |     -1    |     30.22
    G     |     G     |     L     |     L     |     11    |     -1    |     28.53
    G     |     G     |     L     |     L     |     0     |     -1    |     28.53
    G     |     G     |     L     |     G     |     11    |     -1    |     26.46
    G     |     G     |     L     |     G     |     0     |     -1    |     26.46
    G     |     G     |     G     |     L     |     11    |     -1    |     31.26
    G     |     G     |     G     |     L     |     0     |     -1    |     31.26
    G     |     G     |     G     |     G     |     11    |     -1    |     31.19
    G     |     G     |     G     |     G     |     0     |     -1    |     31.18
    L     |     L     |     L     |     L     |     11    |     0     |     30.58
    L     |     L     |     L     |     L     |     0     |     0     |     30.58
    L     |     L     |     L     |     G     |     11    |     0     |     26.51
    L     |     L     |     L     |     G     |     0     |     0     |     26.51
    L     |     L     |     G     |     L     |     11    |     0     |     31.33
    L     |     L     |     G     |     L     |     0     |     0     |     31.32
    L     |     L     |     G     |     G     |     11    |     0     |     29.25
    L     |     L     |     G     |     G     |     0     |     0     |     29.25
    L     |     G     |     L     |     L     |     11    |     0     |     29.55
    L     |     G     |     L     |     L     |     0     |     0     |     29.55
    L     |     G     |     L     |     G     |     11    |     0     |     27.48
    L     |     G     |     L     |     G     |     0     |     0     |     27.48
    L     |     G     |     G     |     L     |     11    |     0     |     30.30
    L     |     G     |     G     |     L     |     0     |     0     |     30.30
    L     |     G     |     G     |     G     |     11    |     0     |     30.22
    L     |     G     |     G     |     G     |     0     |     0     |     30.22
    G     |     L     |     L     |     L     |     11    |     0     |     29.56
    G     |     L     |     L     |     L     |     0     |     0     |     29.56
    G     |     L     |     L     |     G     |     11    |     0     |     25.49
    G     |     L     |     L     |     G     |     0     |     0     |     25.49
    G     |     L     |     G     |     L     |     11    |     0     |     32.29
    G     |     L     |     G     |     L     |     0     |     0     |     32.29
    G     |     L     |     G     |     G     |     11    |     0     |     30.22
    G     |     L     |     G     |     G     |     0     |     0     |     30.22
    G     |     G     |     L     |     L     |     11    |     0     |     28.53
    G     |     G     |     L     |     L     |     0     |     0     |     28.53
    G     |     G     |     L     |     G     |     11    |     0     |     26.46
    G     |     G     |     L     |     G     |     0     |     0     |     26.46
    G     |     G     |     G     |     L     |     11    |     0     |     31.26
    G     |     G     |     G     |     L     |     0     |     0     |     31.26
    G     |     G     |     G     |     G     |     11    |     0     |     31.18
    G     |     G     |     G     |     G     |     0     |     0     |     31.18


nmpp: FFT-4096

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-4096
Целочисленные функции » Функции обработки сигналов » Быстрое преобразование Фурье

Функции

void FFT_Fwd4096 (nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer)
Прямое быстрое преобразование Фурье-4096. Подробнее...

Подробное описание

Функции

◆ FFT_Fwd4096()

void FFT_Fwd4096 | ( | nm32sc * | GSrcBuffer,
 |  | nm32sc * | GDstBuffer,
 |  | void * | LBuffer,
 |  | void * | GBuffer
 | ) |  |

Прямое быстрое преобразование Фурье-4096.

Функция выполняет дискретное комплексное 4096-точечное преобразовние Фурье на базе алгоритма БПФ по основанию 16-16-16

Аргументы
[in] | GSrcBuffer | Входной массив размером 4096 64-р. слов
[out] | GDstBuffer | Результирующий массив размером 4096 64-р. слов
[in] | LBuffer | Временный массив на локальной шине (Local Bus) размером 4096*2 64-р. слов
[in] | GBuffer | Временный массив на глобальной шине (Global Bus) размером 4096*3 64-р. слов
Возвращает
void
Заметки
Использование inplace параметров не допускается (все указатели должны быть разными) Диапазон входных данных: -4096..4096

\perf

GSrcBuffer | GDstBuffer | LBuffer | GBuffer | Clocks
----------------------------------------------------
     L     |     L      |    L    |    L    | 38.25
     L     |     L      |    L    |    G    | 26.82
     L     |     L      |    G    |    L    | 32.21
     L     |     L      |    G    |    G    | 30.74
     L     |     G      |    L    |    L    | 37.22
     L     |     G      |    L    |    G    | 25.79
     L     |     G      |    G    |    L    | 33.17
     L     |     G      |    G    |    G    | 31.71
     G     |     L      |    L    |    L    | 37.26
     G     |     L      |    L    |    G    | 25.83
     G     |     L      |    G    |    L    | 31.21
     G     |     L      |    G    |    G    | 29.75
     G     |     G      |    L    |    L    | 36.23
     G     |     G      |    L    |    G    | 24.80
     G     |     G      |    G    |    L    | 32.18
     G     |     G      |    G    |    G    | 30.71


nmpp: IFFT-4096

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-4096
Целочисленные функции » Функции обработки сигналов » Быстрое преобразование Фурье

Функции

void FFT_Inv4096 (nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer)
Обратное быстрое преобразование Фурье. ОБПФ-4096. Подробнее...

Подробное описание

Функции

◆ FFT_Inv4096()

void FFT_Inv4096 | ( | nm32sc * | GSrcBuffer,
 |  | nm32sc * | GDstBuffer,
 |  | void * | LBuffer,
 |  | void * | GBuffer
 | ) |  |

Обратное быстрое преобразование Фурье. ОБПФ-4096.

Функция выполняет обратное дискретное комплексное 4096-точечное быстрое преобразование Фурье на базе алгоритма ОБПФ по онованию 16-16-16.

Аргументы
[in] | GSrcBuffer | Входной массив размером 4096 64-р. слов
[out] | GDstBuffer | Результирующий массив размером 4096 64-р. слов
[in] | LBuffer | Временный массив на локальной шине (Local Bus) размером 4096*2 64-р. слов
[in] | GBuffer | Временный массив на глобальной шине (Global Bus) размером 4096*3 64-р. слов
Возвращает
void
Заметки
Использование inplace параметров не допускается (все указатели должны быть разными) Диапазон входных данных: -4096..4096

\perf

GSrcBuffer | GDstBuffer | LBuffer | GBuffer | Clocks
----------------------------------------------------
     L     |     L      |    L    |    L    | 38.25
     L     |     L      |    L    |    G    | 26.82
     L     |     L      |    G    |    L    | 32.21
     L     |     L      |    G    |    G    | 30.74
     L     |     G      |    L    |    L    | 37.22
     L     |     G      |    L    |    G    | 25.79
     L     |     G      |    G    |    L    | 33.17
     L     |     G      |    G    |    G    | 31.71
     G     |     L      |    L    |    L    | 37.26
     G     |     L      |    L    |    G    | 25.83
     G     |     L      |    G    |    L    | 31.21
     G     |     L      |    G    |    G    | 29.75
     G     |     G      |    L    |    L    | 36.23
     G     |     G      |    L    |    G    | 24.80
     G     |     G      |    G    |    L    | 32.18
     G     |     G      |    G    |    G    | 30.71


nmpp: FFT-8192

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-8192
Целочисленные функции » Функции обработки сигналов » Быстрое преобразование Фурье

Функции

void FFT_Fwd8192 (nm32sc *LSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer)
Прямое быстрое преобразование Фурье-8192. Подробнее...

Подробное описание

Функции

◆ FFT_Fwd8192()

void FFT_Fwd8192 | ( | nm32sc * | LSrcBuffer,
 |  | nm32sc * | GDstBuffer,
 |  | void * | LBuffer,
 |  | void * | GBuffer
 | ) |  |

Прямое быстрое преобразование Фурье-8192.

Функция выполняет дискретное комплексное 8192-точечное преобразовние Фурье на базе алгоритма БПФ по основанию 2-16-16-16

Аргументы
[in] | LSrcBuffer | Входной массив размером 8192 64-р. слов
[out] | GDstBuffer | Результирующий массив размером 8192 64-р. слов
[in] | LBuffer | Временный массив на локальной шине (Local Bus) размером 8192 64-р. слов
[in] | GBuffer | Временный массив на глобальной шине (Global Bus) размером 8192*3 64-р. слов
Возвращает
void
Заметки
Использование inplace параметров не допускается (все указатели должны быть разными) Диапазон входных данных: -2048..2048

\perf

LSrcBuffer | GDstBuffer | LBuffer | GBuffer | Clocks
----------------------------------------------------
     L     |     L      |    L    |    L    | 40.70
     L     |     L      |    L    |    G    | 28.89
     L     |     L      |    G    |    L    | 35.55
     L     |     L      |    G    |    G    | 31.88
     L     |     G      |    L    |    L    | 39.67
     L     |     G      |    L    |    G    | 27.86
     L     |     G      |    G    |    L    | 36.52
     L     |     G      |    G    |    G    | 32.85
     G     |     L      |    L    |    L    | 40.17
     G     |     L      |    L    |    G    | 29.40
     G     |     L      |    G    |    L    | 35.02
     G     |     L      |    G    |    G    | 32.39
     G     |     G      |    L    |    L    | 39.14
     G     |     G      |    L    |    G    | 28.37
     G     |     G      |    G    |    L    | 35.99
     G     |     G      |    G    |    G    | 33.36


nmpp: IFFT-8192

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-8192
Целочисленные функции » Функции обработки сигналов » Быстрое преобразование Фурье

Функции

void FFT_Inv8192 (nm32sc *LSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer)
Обратное быстрое преобразование Фурье. ОБПФ-8192. Подробнее...

Подробное описание

Функции

◆ FFT_Inv8192()

void FFT_Inv8192 | ( | nm32sc * | LSrcBuffer,
 |  | nm32sc * | GDstBuffer,
 |  | void * | LBuffer,
 |  | void * | GBuffer
 | ) |  |

Обратное быстрое преобразование Фурье. ОБПФ-8192.

Функция выполняет обратное дискретное комплексное 8192-точечное быстрое преобразование Фурье на базе алгоритма ОБПФ по онованию 2-16-16-16.

Аргументы
[in] | LSrcBuffer | Входной массив размером 8192 64-р. слов
[out] | GDstBuffer | Результирующий массив размером 8192 64-р. слов
[in] | LBuffer | Временный массив на локальной шине (Local Bus) размером 8192 64-р. слов
[in] | GBuffer | Временный массив на глобальной шине (Global Bus) размером 8192*3 64-р. слов
Возвращает
void
Заметки
Использование inplace параметров не допускается (все указатели должны быть разными) Диапазон входных данных: -2048..2048

\perf

GSrcBuffer | GDstBuffer | LBuffer | GBuffer | Clocks
----------------------------------------------------
     L     |     L      |    L    |    L    | 40.70
     L     |     L      |    L    |    G    | 28.89
     L     |     L      |    G    |    L    | 35.55
     L     |     L      |    G    |    G    | 31.88
     L     |     G      |    L    |    L    | 39.67
     L     |     G      |    L    |    G    | 27.86
     L     |     G      |    G    |    L    | 36.52
     L     |     G      |    G    |    G    | 32.85
     G     |     L      |    L    |    L    | 40.17
     G     |     L      |    L    |    G    | 29.40
     G     |     L      |    G    |    L    | 35.02
     G     |     L      |    G    |    G    | 32.39
     G     |     G      |    L    |    L    | 39.14
     G     |     G      |    L    |    G    | 28.37
     G     |     G      |    G    |    L    | 35.99
     G     |     G      |    G    |    G    | 33.36


nmpp: Функции обработки изображений

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Функции обработки изображений
Целочисленные функции

Группы

Floodfill
Исполняет разделение бинарной картинки на односвязные области. Пример вызова: no=VL_FloodFill32b(pSrcImage, Tetr,Image, pTmpBuff, nSrcWidth, nSrcHeight);.
Переупорядочивание изображений
Арифметические действия
Масочная фильтрация
Инициализация и копирование
Изменение размеров
Операции выборки
Функции поддержки

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Floodfill

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Floodfill
Целочисленные функции » Функции обработки изображений

Исполняет разделение бинарной картинки на односвязные области. Пример вызова: no=VL_FloodFill32b(pSrcImage, Tetr,Image, pTmpBuff, nSrcWidth, nSrcHeight);. Подробнее...

Функции

int | nmppiFloodFill (unsigned int *pSrcImage, SegmentInfo *pSegmentInfo, unsigned int *pSegmentImage, int nWidth, int nHeight, unsigned int *pTmpBuff)
int | FloodFill8 (void *src, void *dst, int nWidth, int nHeight, spot_struct *spot, int lenSpot, unsigned *pixels, int mSpot, int dtFull, int dtSpot, int lDiag, int lDropSpot, ds_struct *dropSpot, int nPxlMin, int nPxlMax, int dXYmin, int dXYmax)
Функция FloodFill8 выполняет поиск пятен (сегментов, односвязных областей) во входной 8-битной матрице (изображения в градациях серого от 0 до 255), и строит такие же пятна в выходной матрице, заполняя их одним и тем же значением (цветом, соответствующим номеру пятна). Подробнее...

Подробное описание

Исполняет разделение бинарной картинки на односвязные области. Пример вызова: no=VL_FloodFill32b(pSrcImage, Tetr,Image, pTmpBuff, nSrcWidth, nSrcHeight);.

Аргументы
pSrcImage | Входное изображение
pSegmentInfo | массив структур, где содержатся минимальные и максимальные координаты прямоугольника, описывающего сегментированную область.
nWidth | ширина изображения
nHeight | высота изображения
pTmpBuff | Временный массив. Его размер должен быть 2*nWidth*nHeight
Возвращаемые значения
pSegmentImage Результирующее "изображение", где все точки одного сегмента имеют одинаковое значение (1,...)
Возвращает
Число сегментов на изображении
Заметки
Массив pSegmentImage дожен быть обнулен. Функция изменяет массив pSrcImage.

Функции

◆ FloodFill8()

int FloodFill8 | ( | void * | src,
 |  | void * | dst,
 |  | int | nWidth,
 |  | int | nHeight,
 |  | spot_struct * | spot,
 |  | int | lenSpot,
 |  | unsigned * | pixels,
 |  | int | mSpot,
 |  | int | dtFull,
 |  | int | dtSpot,
 |  | int | lDiag,
 |  | int | lDropSpot,
 |  | ds_struct * | dropSpot,
 |  | int | nPxlMin,
 |  | int | nPxlMax,
 |  | int | dXYmin,
 |  | int | dXYmax
 | ) |  |

Функция FloodFill8 выполняет поиск пятен (сегментов, односвязных областей) во входной 8-битной матрице (изображения в градациях серого от 0 до 255), и строит такие же пятна в выходной матрице, заполняя их одним и тем же значением (цветом, соответствующим номеру пятна).

Аргументы
src входная 8-битная матрица размером nHeight x nWidth.
Внимание. Входная матрица src модифицируется:
  • в целях оптимизации программы обнуляются верхняя и нижняя строки, и крайний левый и крайний правый столбцы (границы матрицы),
  • в процессе обработки найденные пятна обнуляются.
dst результирующая 8-битная матрица того же размера nHeight x nWidth.
Внимание. Перед обращением к функции выходная матрица dst должна быть обнулена.
nWidth ширина входной (и выходной) матрицы в 8-битных элементах.
Ограничения. Ширина матрицы должна быть кратна 32-битным словам: nWidth - положительное, (nWidth & 3) = 0.
nHeight высота входной (и выходной) матрицы.
Ограничения. Высота матрицы не должна превышать 1080 строк: nHeight - положительное, (nHeight <= 1080). Это ограничение можно обойти задав в начале файла FloodFill8.asm вместо 1080 нужное значение константы: const NHEIGHT = 1080;
spot массив, содержащий обобщенную информацию о найденных пятнах – минимально 6 параметров формата int для каждого пятна: Замечание1. Чтобы гарантированно избежать переполнения массива spot в общем случае (когда характер матрицы, количество, размер пятен неизвестны, и не задан параметр mSpot>0), размер массива spot в 32-битных словах должен быть: ( nSpotMax + 1 + [(nSpotMax-1)/255] ) * lenSpot, nSpotMax = [(nHeight-2)*(nWidth-2)/2 + 0.5], при lDiag=0, = [(nHeight-2)/2+0.5] * [(nWidth-2)/2+0.5], при lDiag=1, квадратные скобки [...] обозначают целую часть числа, напомним: 2 строки и 2 солбца входной матрицы обнулены. Замечание2. Если задан параметр mSpot>0, то массив spot достаточно определить для mSpot пятен (mSpot задается с учетом служебного и фиктивных пятен).
lenSpot размер пятна в 32-битных словах, позволяет задать размер пятна более 6 слов, резервируя место для дополнительных параметров пятна довычисляемых другими функциями (например, угол наклона пятна к горизонтальной оси…).
Замечание. Если параметр lenSpot задан некорректно lenSpot<6, то ему присваивается минимальное возможное значение lenSpot=6.
pixels массив координат пикселов, принадлежащих найденным пятнам, каждый элемент массива состоит из одного 32 битного слова, включающего в себя координаты пиксела в матрице src (или dst): unsigned int ij; биты [31..16] - i - номер строки, биты [15..0] - j - номер столбца. (Отсюда ограничение: nHeight, nWidth не могут быть больше 2**16-1 = 65535).
Замечание. В общем случае (когда заранее неизвестно о количестве и размерах пятен в матрице), чтобы гарантированно избежать переполнения массива pixels, его размер должен быть (nHeight-2)*(nWidth-2) 32-битных слов (что почти в 4 раза больше входной 8-битной матрицы, напомним: 2 строки и 2 солбца входной матрицы обнулены).
mSpot число пятен, ограничивающее поиск. Если задано mSpot>0, то после обработки очередного пятна проверяется: достигло ли количество найденных пятен nSpot заданного mSpot (mSpot<=nSpot)? Если «Да», то происходит (принудительный) выход из программы с записью в spot[0].Ymin=2. Если задано mSpot=0, то проверок на количество найденных пятен не производится.
Замечание1. Если задать mSpot<=255, то пятна будут однозначно соответствовать своим номерам, то есть не будет пятен с повторяющимися номерами.
Замечание2. mSpot следует задавать с учетом служебного пятна (с номером 0) и фиктивных пятен (с номерами 256,512,768...), то есть, если поиск надо ограничить нахождением первых mSpotReal>0 пятен, то mSpot = 1 + mSpotReal + [(mSpotReal-1)/255] квадратные скобки [...] обозначают целую часть числа
dtFull время, выделенное на работу программы (в тактах процессора). Если задано dtFull>0, то после обработки очередного пятна (и в конце каждой строки) проверяется: осталось ли время на обработку следующего пятна dtRest<dtSpot? (dtRest=dtFull-(T-T0), T – текущее время, T0 – начало работы программы). Если «Нет», то происходит выход из программы с записью в spot[0].Ymin=1. Если задано dtFull=0, то проверок на достаточность времени на обработку следующего пятна не производится.
Замечание1. Задание dtFull>0 маленьким может значительно сократить время работы программы, однако, не гарантирует корректного завершения программы (например, когда обрабатываемое пятно занимает всю оставшуюся часть матрицы).
Замечание2. При выборе значения dtFull следует учитывать время обработки типового пятна dtSpot.
dtSpot время обработки типового пятна (в тактах процессора). Используется совместно с параметром dtFull при оценке достаточного времени на обработку следующего пятна.
Ограничение. Если задано dtFull>0, то dtSpot должно быть меньше него: dtSpot - неотрицательное, (dtFull>0)&&(dtSpot<dtFull).
lDiag параметр, определяющий связность пятна по диагоналям:
  • lDiag=0 - элементы являются соседними, если они граничат или по вертикали, или по горизонтали (по ходам ладьи, но не по ходам слона),
  • lDiag=1 - элементы являются соседними, если они граничат или по вертикали, или по горизонтали, или по диагоналям (по ходам ферзя).

Замечание. Как показывает практика, результат обработки видеоизображений существенно не зависит от параметра lDiag, но при lDiag=1 значительно увеличивает время работы функции. Если нет особой необходимости, рекомендуется задавать lDiag=0.
lDropSpot параметр, задающий необходимость отбраковки найденных пятен по условиям НЕвхождения числа пикселов или размеров пятна в заданные диапазоны (см. ниже параметры nPxlmin, nPxlmax, dXYmin, dXYmax), статистика по отбракованным пятнам ведется в массиве dropSpot.
lDropSpot=0 – найденные пятна НЕ отбраковываются, то есть все найденные пятна учитываются в массивах spot, pixels и отмечаются в выходной матрице dst,
lDropSpot=1 – пятна с числом пикселов или размеров пятна не попадающими в заданные диапазоны отбраковываются, то есть не учитываются в массивах spot, pixels и не отмечаются в выходной матрице dst, статистика по отбракованным пятнам ведется в массиве dropSpot.
Замечание. Задание параметра lDropSpot=1 приводит к увеличению работы функции и требует выделения памяти для массива dropSpot. Если нет особой необходимости, задавайте lDropSpot=0.
dropSpot – массив, в который опционально собирается статистика по отбракованным пятнам: на каждый из 4 признаков отбраковки: nPxlMin, nPxlMax, dXYmin, dXYmax, - отведено по 3 параметра формата int: dropSpot[4*3] +0 +1 +2
  • 0 – dropSpot(nPxlMin): [ nnSpot, nnPxl, dttSpot]
  • 3 - dropSpot(nPxlMax): [ nnSpot, nnPxl, dttSpot]
  • 6 - dropSpot(dXYmin) : [ nnSpot, nnPxl, dttSpot]
  • 9 - dropSpot(dXYmax) : [ nnSpot, nnPxl, dttSpot]

Перед обращением к функции массив dropSpot (размером 12 int) должен быть обнулен.
При ldropSpot=0 статистика не ведется и массив dropSpot не требуется, то есть вместо него можно задать фиктивный параметр, например, 0.
nPxlMin минимальное число пикселов в пятне,
при lDropSpot=1: пятно отбраковывается, если число его пикселов меньше nPxlMin,
при lDropSpot=0 проверок не производится, параметр можно задать 0.
nPxlMax максимальное число пикселов в пятне,
  • при lDropSpot=1: пятно отбраковывается, если число его пикселов больше nPxlMax,
  • при lDropSpot=0 проверок не производится, параметр можно задать 0.
dXYmin минимальная протяженность пятна по X или по Y в пикселах,
  • при lDropSpot=1: пятно отбраковывается, если его протяженность меньше dXYMax,
  • при lDropSpot=0 проверок не производится, но параметр используется для определения шага поиска по строкам входной матрицы src (и начальной строки поиска): dI = max(1, dXYmin)
    Замечание. Задание dXYmin>1 приводит к просмотру входной матрицы src через каждые dXYmin строк, что может значительно сократить время работы функции, так как пятна меньшего размера, попавшие между строк поиска "обходятся" (однако, не гарантирует этого, например, когда пятно занимает всю матрицу). Поэтому, независимо от парамера lDropSpot надо задавать dXYmin, по возможности, большим.
dXYmax максимальная протяженность пятна по X или по Y в пикселах,
  • при lDropSpot=1: пятно отбраковывается, если его протяженность больше dXYMax,
  • при lDropSpot=0 проверок не производится, параметр можно задать 0.

Ограничения: nPxlMin, nPxlMax, dXYmin, dXYmax - неотрицательные, (nPxlMin <= nPxlMax), (dXYmin <= dXYmax).
Возвращает
Функция возвращает целое число:
  • либо положительное целое, тогда это - nSpot - число найденных пятен,
  • либо отрицательное целое, тогда это - nError - код ошибки.
Число найденных пятен nSpot включает в себя также служебное и фиктивные пятна (с номерами 0,256,512,768...). Таким образом, число реальных пятен равно nSpotReal = nSpot - 1 - [nSpot/256]
Если не найдено ни одного реального пятна, то nSpot=1 – одно служебное пятно.
Код ошибки возвращается, если в начале работы функции при проверке входных данных обнаружится недопустимая комбинация параметров: тогда происходит (принудительный) выход из программы с кодом ошибки:
            dI = max(1,dXYmin);
            if ( (nHeight<=0) || (nHeight < dI +2) || (1080<nHeight) )  return -1;
            if ( (nWidth <=0) || (nWidth  < dI +2) ||((nWidth & 3)!=0)) return -2;
            if ( (dtSpot  <0) || ((dtFull != 0) && (dtFull < dtSpot)) ) return -3;
            if ( (nPxlMin <0) || (nPxlMax < nPxlMin) )  return -4;
            if ( (dXYmin  <0) || (dXYmax  < dXYmin)  )  return -5;
            if   (mSpot   <0)                   return -6;
При нормальном выходе из функции (без ошибок) в параметре Ymin служебного пятна сообщается дополнительный признак завершения программы nExitCode:
  • spot[0].Ymin=0 – вся матрица src просмотрена, найдены все пятна, естественный выход из программы.
  • spot[0].Ymin=1 – принудительный выход из программы по исчерпанию заданного времени работы программы dtFull>0.
  • spot[0].Ymin=2 – принудительный выход из программы по нахождению заданного количества пятен mSpot>0.
Заметки
Предельные случаи
Следует выделить предельные случаи:
  • одно сплошное пятно на всю матрицу - максимальное время работы функции и максимальный размер массива pixels (но минимальный размер массива spot),
  • «шахматная доска» - однопикселные пятна, расположенные по диагоналям - максимальный размер массива spot.
Алгоритм
В процессе поиска координаты всех пикселов каждого пятна сохраняются в массиве pixels:
  • пикселы каждого пятна занимают непрерывную область в массиве pixels,
  • параметр spot[i].noPxl i-го пятна в массиве spot указывает на начальный пиксел (i+1)-го пятна. В начале работы программы устанавливается указатель на начальный пиксел следующего пятна noPxl = 0.
    1. Цикл поиск пятна (осуществляется построчным попиксельным проходом матрицы src),
если очередной пиксел нулевой, то переход к следующему пикселу
иначе (встретился ненулевой пиксел)
2. начало обработки (очередного) пятна:
-   засечь время начала обработки пятна  tSpot0=clock();
-   устанавливаются указатели начала и конца очереди пикселов пятна в массиве  pixels:  noPxl0 = noPxl1 = noPxl.
-   пиксел в матрице src обнуляется,
-   координаты пиксела заносятся в массив pixels, указатель noPxl1  увеличивается на 1
    3. while-цикл обработки пятна:
-   выбирается пиксел noPxl0 из массива pixels, указатель noPxl0  увеличивается на 1
-   просматриваются все его соседние элементы (с учетом параметра lDiag) координаты ненулевых пикселов записываются в массив pixels (с соответствующим увеличением указателя noPxl1)
-   пикселы в матрице src обнуляются
-   если указатели  noPxl0, noPxl1  не равны (не все пикселы пятна и их соседи просмотрены), то переход на начало while-цикла (3):
// пятно найдено! noPxl0=noPxl1 - указывают на начальный пиксел
//следующего пятна в массиве  pixels.
Вычисление минимального прямоугольника (Xmin, Ymin, Xmax, Ymax), объемлющего пятно
Если задан параметр lDropSpot=1, то проверка условий отбраковки пятна по признакам nPxlMin, nPxlMax, dXYmin, dXYmax
если пятно отбраковано, то
формирование записи массива dropSpot по соответствующему признаку,
переход на поиск следующего пятна  (noPxl не изменяется).
Меняется указатель  noPxl=noPxl1.
Формирование параметров данного пятна в массиве spot[i] =
(Xmin, Ymin, Xmax, Ymax, noPxl, 0, 0, 0)
        Если задан параметр вычисления угла наклона пятна (lAngleSpot=1), то
вычисление codeAngle, lBadSpot и запись в spot[i] =
(., ., ., ., ., codeAngle, lBadSpot, .)
Запись dtSpot=clock()-tSpot0 в spot[i] = (., ., ., ., ., ., ., dtSpot).
Выбор следующегл пиксела, переход на начало цикла поиска очередного пятна (1).
4. Конец программы.


nmpp: Переупорядочивание изображений

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Переупорядочивание изображений
Целочисленные функции » Функции обработки изображений

Группы

Блочное переупорядочивание
Блочное перупорядочивание изображений.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Блочное переупорядочивание

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Блочное переупорядочивание
Целочисленные функции » Функции обработки изображений » Переупорядочивание изображений

Блочное перупорядочивание изображений. Подробнее...

Группы

nmppiSplitIntoBlocks
Преобразует изображение в последовательность квадратных блоков.
nmppiMergeFromBlocks
Объединяет последовательность квадратных блоков в изображение.

Подробное описание

Блочное перупорядочивание изображений.


nmpp: nmppiSplitIntoBlocks

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppiSplitIntoBlocks
Целочисленные функции » Функции обработки изображений » Переупорядочивание изображений » Блочное переупорядочивание

Преобразует изображение в последовательность квадратных блоков. Подробнее...

Функции

void nmppiSplitIntoBlocks8x8 (nm8s *pSrcImg, nm8s *pDstBlockSeq, int nWidth, int nHeight)

Подробное описание

Преобразует изображение в последовательность квадратных блоков.

Аргументы
pSrcImg Исходное изображение Выходная последовательность блоков Ширина исходного изображения в пикселах. nWidth =[8,16,24...] Высота исходного изображения в пикселах. nHeight=[8,16,24...] Исходное изображение имеет вид
    [A00|A01|A02|A03|A04|A05|A06|A07|B00|B01|..|B07|C00|....H07]
    [A10|A11|A12|A13|A14|A15|A16|A17|B10|B11|..|B17|C10|....H17]
    [A20|A21|A22|A23|A24|A25|A26|A27|B20|B21|..|B27|C20|....H27]
    [A30|A31|A32|A33|A34|A35|A36|A37|B30|B31|..|B37|C30|....H37]
    ............................................................
    [A70|A71|A72|A73|A74|A75|A76|A77|B70|B71|..|B77|C70|....H77]
    ............................................................
    [I00|I01|I02|I03|I04|I05|I06|I07|J00|J01|..................]
    [I10|I11|I12|I13|I14|I15|I16|I17|J00|I09|...................
    ........................................................Z77]

Выходная последовательность блоков имеет вид

    [A00|A01|A02|...|A06|A07|A20|A21|...|A77|B00|B01|B02|...|B07|B10|...|H77|
    [I00|I01|I02|...|I06|I07]I10|I11|...|I77|J00|J01|J02|...............|Z77|


nmpp: nmppiMergeFromBlocks

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppiMergeFromBlocks
Целочисленные функции » Функции обработки изображений » Переупорядочивание изображений » Блочное переупорядочивание

Объединяет последовательность квадратных блоков в изображение. Подробнее...

Функции

void nmppiMergeFromBlocks8x8 (nm8s *pSrcBlockSeq, nm8s *pDstImg, int nWidth, int nHeight)

Подробное описание

Объединяет последовательность квадратных блоков в изображение.

Аргументы
pSrcBlockSeq Входная последовательность блоков . Результирующее изображение Ширина исходного изображения в пикселах. nWidth=[8,16,24...] Высота исходного изображения в пикселах. nHeight=[8,16,24..] Входная последовательность блоков имеет вид
        [A00|A01|A02|...|A06|A07|A20|A21|...|A77|B00|B01|B02|...|B07|B10|...|H77|
        [I00|I01|I02|...|I06|I07]I10|I11|...|I77|J00|J01|J02|...............|Z77|
Результирующее изображение имеет вид
        [A00|A01|A02|A03|A04|A05|A06|A07|B00|B01|..|B07|C00|....H07]
        [A10|A11|A12|A13|A14|A15|A16|A17|B10|B11|..|B17|C10|....H17]
        [A20|A21|A22|A23|A24|A25|A26|A27|B20|B21|..|B27|C20|....H27]
        [A30|A31|A32|A33|A34|A35|A36|A37|B30|B31|..|B37|C30|....H37]
        ............................................................
        [A70|A71|A72|A73|A74|A75|A76|A77|B70|B71|..|B77|C70|....H77]
        ............................................................
        [I00|I01|I02|I03|I04|I05|I06|I07|J00|J01|..................]
        [I10|I11|I12|I13|I14|I15|I16|I17|J00|I09|...................
        ........................................................Z77]


nmpp: Арифметические действия

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Арифметические действия
Целочисленные функции » Функции обработки изображений


nmpp: Масочная фильтрация

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Масочная фильтрация
Целочисленные функции » Функции обработки изображений

Группы

КИХ-фильтрация
Двумерная КИХ фильтрация

Подробное описание

Создано системой doxygen 1.9.5


nmpp: КИХ-фильтрация

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Переменные
КИХ-фильтрация
Целочисленные функции » Функции обработки изображений » Масочная фильтрация

Двумерная КИХ фильтрация Подробнее...

Переменные

nm32s * | S_nmppiFilterKernel::pDispArray
nm32s * | S_nmppiFilterKernel::pWeightMatrix
int | S_nmppiFilterKernel::nKerWidth
int | S_nmppiFilterKernel::nKerHeight
nm32s * | S_nmppiFilterKernel_32s32s::pDispArray
nm32s * | S_nmppiFilterKernel_32s32s::pWeightMatrix
int | S_nmppiFilterKernel_32s32s::nKerWidth
int | S_nmppiFilterKernel_32s32s::nKerHeight

Подробное описание

Двумерная КИХ фильтрация

<>


nmpp: Инициализация и копирование

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Инициализация и копирование
Целочисленные функции » Функции обработки изображений


nmpp: Изменение размеров

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Изменение размеров
Целочисленные функции » Функции обработки изображений


nmpp: Операции выборки

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Операции выборки
Целочисленные функции » Функции обработки изображений


nmpp: Функции поддержки

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Функции поддержки
Целочисленные функции » Функции обработки изображений

Группы

nmppiRelease
Освобождение блоков памяти, выделенных функиями nmppiCreate***.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppiRelease

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppiRelease
Целочисленные функции » Функции обработки изображений » Функции поддержки

Освобождение блоков памяти, выделенных функиями nmppiCreate***. Подробнее...

Функции

__INLINE__ void nmppiReleaseObject (nm64s *pKernel)

Подробное описание

Освобождение блоков памяти, выделенных функиями nmppiCreate***.


nmpp: Скалярные функции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Скалярные функции
Целочисленные функции

Группы

Инициализация
Integer operations
Fix-point 64
Fix-point 32
Арифметические операции
Функции деинтерлейсинга

Подробное описание

Введение

Назначением данной библиотеки является предоставление базовых операций по работе со скалярными данными для процессора NM6403, NM6404, NM6405.В состав библиотеки входят арифметические, тригонометрические функции, функции для работы с данными в формате с фиксированной точкой.Библиотека предназначена для быстрой разработки эффективных пользовательских программ на языке высокого уровня(С++).Назначением данной библиотеки является предоставление базовых операций обработки изображений для процессора NM6403, NM6404, NM6405. В состав библиотеки входят функции двумерной фильтрации, арифметические действия и цветовые преобразования. Библиотека предназначена для быстрой разработки эффективных пользовательских программ на языке высокого уровня с использованием преимуществ архитектуры данного процессора.Функции библиотеки имеют C++ интерфейс. Большинство функций библиотеки реализованы на языке ассемблера с использованием векторных инструкций и оптимизированы под архитектуру процессора NM6403.Для удобства разработки прикладных программ библиотека содержит аналогичные реализации функций для процессоров серии x86, выполненных на языке С++. Данные реализации позволяют выполнять написанные с использованием данной библиотеки прикладные программы на персональном компьютере.Назначением данной библиотеки является предоставление базовых операций по обработке матриц для процессорах NM6403, NM6404, NM6405. В состав библиотеки входят арифметические операции над матрицами. Библиотека предназначена для быстрой разработки эффективных пользовательских программ как на языке высокого уровня(С++).Функции библиотеки имеют C++ интерфейс. Большинство функций библиотеки реализованы на языке ассемблера с использованием векторных инструкций и оптимизированы под архитектуру процессора NM6403.Для удобства разработки прикладных программ библиотека содержит аналогичные реализации функций для процессоров серии x86, выполненных на языке С++. Данные реализации позволяют выполнять написанные с использованием данной библиотеки прикладные программы на персональном компьютере.Назначением данной библиотеки является предоставление базовых функций по обработке сигналов для процессоров NM6403,NM6404,NM6405. В состав библиотеки входят функции одномерной КИХ фильтрации, нелинейной фильтрации, передискретизации. Библиотека предназначена для быстрой разработки эффективных пользовательских программ как на языке высокого уровня(С++).Функции библиотеки имеют C++ интерфейс. Большинство функций библиотеки реализованы на языке ассемблера с использованием векторных инструкций и оптимизированы под архитектуру процессоров NM6403.Для удобства разработки прикладных программ библиотека содержит аналогичные реализации функций для процессоров серии x86, выполненных на языке С++. Данные реализации позволяют выполнять написанные с использованием данной библиотеки прикладные программы на персональном компьютере.Назначением данной библиотеки является предоставление базовых операций по обработке одномерных массивов (векторов) для процессоров NM6405,NM6406, систем на кристале с ядром NMC.В состав библиотеки входят логические и арифметические функции, операции сравнения, инициализации, копирования, преобразования разрядностей и т.п. Библиотека предназначена для быстрой разработки эффективных пользовательских программ как на языке высокого уровня(С++), так и на языке ассемблера с помощью прилагаемой библиотеки ядра низкоурвневых функций. Функции библиотеки имеют C++ интерфейс.Большинство функций библиотеки реализованы на языке ассемблера с использованием векторных инструкций и оптимизированы под архитектуру процессоров NMC. Для удобства разработки прикладных программ библиотека содержит аналогичные реализации функций для процессоров серии x86, выполненных на языке С++. Данные реализации позволяют выполнять написанные с использованием данной библиотеки прикладные программы на персональном компьютере.Функции векторного ядра библиотекиФункции различных библиотек: nmplv,nmpls, nmpli, nmplm и др. , имеющие С++ интерфейсы, в своей реализации используют вызовы функций ядра. Функции ядра не имеют С++ интерфейса. Их вызов возможен только из ассемблера процессора NeuroMatrix. Передача параметров и настройка функций производится через регистры.Одна и та же функция ядра может использоваться при реализации одной или нескольких функций библиотеки. Функции ядра также могут быть использованы для реализации пользовательских функций. Использование функций ядра позволяет минимизировать время разработки, уменьшить размер кода и получить максимальную производительность.


nmpp: Инициализация

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Инициализация
Целочисленные функции » Скалярные функции

Группы

nmppsRand
Генерация случайного числа с равномерным раcпределением.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppsRand

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsRand
Целочисленные функции » Скалярные функции » Инициализация

Генерация случайного числа с равномерным раcпределением. Подробнее...

Функции

int | nmppcRandMinMaxDiv (int nMin, int nMax, int nDivisible)
int | nmppcRandMinMax (int nMin, int nMax)
int | nmppcRand ()

Подробное описание

Генерация случайного числа с равномерным раcпределением.

Аргументы
nMin
Минимальное возможное значение случайного числа.
nMax
Максимальное возможное значение случайного числа.
nDivisible
Значение, которому будет кратно случайное число.
Возвращает
int Случайное число в диапазоне либо [nMin, nMax]. Для функции без параметров данный диапазон [-2^31; 2^31-1].


nmpp: Integer operations

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Integer operations
Целочисленные функции » Скалярные функции

Группы

nmppcSqrt
Вычисление квадратного корня

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppcSqrt

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcSqrt
Целочисленные функции » Скалярные функции » Integer operations

Вычисление квадратного корня Подробнее...

Функции

unsigned int nmppcSqrt_64u (unsigned long long x)

Подробное описание

Вычисление квадратного корня

Аргументы
x Входное число
Возвращает
Квадратный корень


nmpp: Fix-point 64

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Fix-point 64
Целочисленные функции » Скалярные функции

Группы

nmppcFixSqrt64
Вычисление квадратного корня числа в формате fixed-point (32.32)
nmppcDoubleToFix64
Функция перевода из Fixed-Point 64 в Double.
nmppcFix64ToDouble
Преобразование 64р. числа с фиксированной точкой в число с плвающей точкой типа double.
nmppcFixDiv64
Деление двух целых чисел с записью результата в формате fixed-point.
nmppcFixSinCos64
Вычисление синуса и косинуса от аргумента в формате fixed-point (32.32)
nmppcFixArcTan64
Вычисление арктангенса от аргумента в формате fixed-point (32.32)

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppcFixSqrt64

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFixSqrt64
Целочисленные функции » Скалярные функции » Fix-point 64

Вычисление квадратного корня числа в формате fixed-point (32.32) Подробнее...

Функции

unsigned long nmppcFixSqrt64 (unsigned long x)

Подробное описание

Вычисление квадратного корня числа в формате fixed-point (32.32)

Аргументы
x Входное число с фиксированной точкой в формате (32.32)
Возвращает
Квадратный корень в формате с фиксированной точкой (32.32)


nmpp: nmppcDoubleToFix64

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcDoubleToFix64
Целочисленные функции » Скалярные функции » Fix-point 64

Функция перевода из Fixed-Point 64 в Double. Подробнее...

Функции

long nmppcDoubleToFix64 (double arg, int fixpoint)

Подробное описание

Функция перевода из Fixed-Point 64 в Double.

Аргументы
arg | Входное число с плавающей точкой
fixpoint | позиция двоичной точки
Возвращает
Число с фиксированной точкой


nmpp: nmppcFix64ToDouble

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFix64ToDouble
Целочисленные функции » Скалярные функции » Fix-point 64

Преобразование 64р. числа с фиксированной точкой в число с плвающей точкой типа double. Подробнее...

Функции

double nmppcFix64ToDouble (long arg, int fixpoint)

Подробное описание

Преобразование 64р. числа с фиксированной точкой в число с плвающей точкой типа double.

Аргументы
arg | Входное 64р. число в формате с фиксированной точкой
fixpoint | Позиция двоичной точки
Возвращает
Число с плавающей точкой


nmpp: nmppcFixDiv64

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFixDiv64
Целочисленные функции » Скалярные функции » Fix-point 64

Деление двух целых чисел с записью результата в формате fixed-point. Подробнее...

Функции

void nmppcFixDiv64 (long *nDividend, long *nDivisor, int nFixpoint, long *nQuotient)

Подробное описание

Деление двух целых чисел с записью результата в формате fixed-point.

Аргументы
nDividend | Делимое
nDivisor | Делитель. Делитель должен быть по модулю больше чем делимое.
nFixpoint | Позиция двоичной точки
Возвращаемые значения
nQuotient Частное в формате числа с фиксированной точкой


nmpp: nmppcFixSinCos64

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFixSinCos64
Целочисленные функции » Скалярные функции » Fix-point 64

Вычисление синуса и косинуса от аргумента в формате fixed-point (32.32) Подробнее...

Функции

void nmppcFixSinCos64 (long nArg, long *pnSin, long *pnCos)

Подробное описание

Вычисление синуса и косинуса от аргумента в формате fixed-point (32.32)

Аргументы
nArg Угол в радианах. Угол должен быть в диапазоне от -PI/2 до +PI/2
Возвращаемые значения
pnSin | указатель на синус
pnCos | указатель на косинус


nmpp: nmppcFixArcTan64

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFixArcTan64
Целочисленные функции » Скалярные функции » Fix-point 64

Вычисление арктангенса от аргумента в формате fixed-point (32.32) Подробнее...

Функции

long nmppcFixArcTan64 (long nArg)

Подробное описание

Вычисление арктангенса от аргумента в формате fixed-point (32.32)

Аргументы
nArg Угол в радианах

\retrun Арктангенс


nmpp: Fix-point 32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Fix-point 32
Целочисленные функции » Скалярные функции

Группы

nmppcFixExp32
Вычисление вычисления экспоненты числа в формате fixed-point (16.16)
nmppcFixSinCos32
Вычисление синуса и косинуса от аргумента в формате fixed-point (16.16)
nmppcFixArcTan32
Вычисление арктангенса от аргумента в формате fixed-point (16.16)
nmppcDoubleToFix32
Функция перевода из Fixed-Point (16.16) в Double.
nmppcFix32ToDouble
Преобразование 32р. числа с фиксированной точкой (16.16) в число с плвающей точкой типа double.
nmppcFixSqrt32
Вычисление квадратного корня числа в формате fixed-point (16.16)
nmppcFixMul32
Вычисление произведения двух числе в формате fixed-point (16.16)
nmppcFixInv32
Вычисление обратного значения целого числа с записью результата в формате fixed-point.
nmppcTblFixArcSin32
Вычисление функции arcsin по таблице. Входные и выходные значения задаются в формате fixed-point (16.16)
nmppcTblFixArcCos32
Вычисление функции arccos по таблице. Входные и выходные значения задаются в формате fixed-point (16.16)
nmppcTblFixCos32
Вычисление функции cos по таблице. Входные и выходные значения задаются в формате fixed-point (16.16)
nmppcTblFixSin32
Вычисление функции sin по таблице. Входные и выходные значения задаются в формате fixed-point (16.16)
nmppcFixDivMod32
Вычисление частного и остатка при делении чисел с фиксированной запятой в формате fixed-point (16.16)
nmppcFix64Exp01
Вычисление вычисления экспоненты числа в формате fixed-point (4.60)

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppcFixExp32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFixExp32
Целочисленные функции » Скалярные функции » Fix-point 32

Вычисление вычисления экспоненты числа в формате fixed-point (16.16) Подробнее...

Функции

int nmppcFixExp32 (int nVal)

Подробное описание

Вычисление вычисления экспоненты числа в формате fixed-point (16.16)

Аргументы
nVal Входное число с фиксированной точкой в формату (16.16)
Возвращает
Экспонента числа в формате с фиксрованной точкой (16.16)


nmpp: nmppcFixSinCos32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFixSinCos32
Целочисленные функции » Скалярные функции » Fix-point 32

Вычисление синуса и косинуса от аргумента в формате fixed-point (16.16) Подробнее...

Функции

void nmppcFixSinCos32 (int nArg, int *pnSin, int *pnCos)

Подробное описание

Вычисление синуса и косинуса от аргумента в формате fixed-point (16.16)

Аргументы
nArg Угол в радианах. Угол должен быть в диапазоне от -PI/2 до +PI/2
Возвращаемые значения
pnSin | указатель на синус
pnCos | указатель на косинус


nmpp: nmppcFixArcTan32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFixArcTan32
Целочисленные функции » Скалярные функции » Fix-point 32

Вычисление арктангенса от аргумента в формате fixed-point (16.16) Подробнее...

Функции

int nmppcFixArcTan32 (int nArg)

Подробное описание

Вычисление арктангенса от аргумента в формате fixed-point (16.16)

Аргументы
nArg Угол в радианах
Возвращает
Арктангенс


nmpp: nmppcDoubleToFix32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcDoubleToFix32
Целочисленные функции » Скалярные функции » Fix-point 32

Функция перевода из Fixed-Point (16.16) в Double. Подробнее...

Функции

int nmppcDoubleToFix32 (double arg)

Подробное описание

Функция перевода из Fixed-Point (16.16) в Double.

Аргументы
arg | Входное число с плавающей точкой
fixpoint | позиция двоичной точки
Возвращает
Число с фиксрованной точкой


nmpp: nmppcFix32ToDouble

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFix32ToDouble
Целочисленные функции » Скалярные функции » Fix-point 32

Преобразование 32р. числа с фиксированной точкой (16.16) в число с плвающей точкой типа double. Подробнее...

Функции

double nmppcFix32ToDouble (int arg)

Подробное описание

Преобразование 32р. числа с фиксированной точкой (16.16) в число с плвающей точкой типа double.

Аргументы
arg Входное 32р. число в формате с фиксированной точкой (16.16)
Возвращает
Число с плавающей точкой


nmpp: nmppcFixSqrt32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFixSqrt32
Целочисленные функции » Скалярные функции » Fix-point 32

Вычисление квадратного корня числа в формате fixed-point (16.16) Подробнее...

Функции

unsigned int nmppcFixSqrt32 (unsigned int nVal)

Подробное описание

Вычисление квадратного корня числа в формате fixed-point (16.16)

Аргументы
nVal Входное число с фиксированной точкой в формату (16.16)
Возвращает
Квадратный корень в формате с фиксрованной точкой (16.16)


nmpp: nmppcFixMul32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFixMul32
Целочисленные функции » Скалярные функции » Fix-point 32

Вычисление произведения двух числе в формате fixed-point (16.16) Подробнее...

Функции

int | nmppcFixMul32 (int nX, int nY)
int | nmppcFixDiv32 (int nX, int nY)

Подробное описание

Вычисление произведения двух числе в формате fixed-point (16.16)

Деление двух целых чисел с записью результата в формате fixed-point (16.16)

Аргументы
nX | Первое входное число с фиксированной точкой в формату (16.16)
nY | Второе входное число с фиксированной точкой в формату (16.16)
Возвращает
Произвдение в формате с фиксрованной точкой (16.16)
Аргументы
nX | Делимое
nY | Делитель
Возвращает
Частное от деления в формате с фиксрованной точкой (16.16)


nmpp: nmppcFixInv32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFixInv32
Целочисленные функции » Скалярные функции » Fix-point 32

Вычисление обратного значения целого числа с записью результата в формате fixed-point. Подробнее...

Функции

int nmppcFixInv32 (int nVal, int nFixpoint)

Подробное описание

Вычисление обратного значения целого числа с записью результата в формате fixed-point.

Аргументы
nVal | Делитель
nFixpoint | Позиция бинарной точки в результирющем слове
Возвращает
Частное от деления нав формате с фиксрованной точкой (16.16)


nmpp: nmppcTblFixArcSin32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcTblFixArcSin32
Целочисленные функции » Скалярные функции » Fix-point 32

Вычисление функции arcsin по таблице. Входные и выходные значения задаются в формате fixed-point (16.16) Подробнее...

Функции

int nmppcTblFixArcSin32 (int nArg)

Подробное описание

Вычисление функции arcsin по таблице. Входные и выходные значения задаются в формате fixed-point (16.16)

Аргументы
nArg Входное значение.
Возвращает
Угол в диапазоне от -PI/2 до +PI/2 в формате fixed-point (16.16)


nmpp: nmppcTblFixArcCos32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcTblFixArcCos32
Целочисленные функции » Скалярные функции » Fix-point 32

Вычисление функции arccos по таблице. Входные и выходные значения задаются в формате fixed-point (16.16) Подробнее...

Функции

int nmppcTblFixArcCos32 (int nArg)

Подробное описание

Вычисление функции arccos по таблице. Входные и выходные значения задаются в формате fixed-point (16.16)

Аргументы
nArg Входное значение.
Возвращает
Угол в диапазоне от 0 до PI в формате fixed-point (16.16)


nmpp: nmppcTblFixCos32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcTblFixCos32
Целочисленные функции » Скалярные функции » Fix-point 32

Вычисление функции cos по таблице. Входные и выходные значения задаются в формате fixed-point (16.16) Подробнее...

Функции

int nmppcTblFixCos32 (int nArg)

Подробное описание

Вычисление функции cos по таблице. Входные и выходные значения задаются в формате fixed-point (16.16)

Аргументы
nArg Угол в диапазоне от 0 до PI в формате fixed-point (16.16)
Возвращает
значение cos в формате fixed-point (16.16)


nmpp: nmppcTblFixSin32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcTblFixSin32
Целочисленные функции » Скалярные функции » Fix-point 32

Вычисление функции sin по таблице. Входные и выходные значения задаются в формате fixed-point (16.16) Подробнее...

Функции

int nmppcTblFixSin32 (int nArg)

Подробное описание

Вычисление функции sin по таблице. Входные и выходные значения задаются в формате fixed-point (16.16)

Аргументы
nArg Угол в диапазоне от -PI/2 до +PI/2 в формате fixed-point (16.16)
Возвращает
значение sin в формате fixed-point (16.16)


nmpp: nmppcFixDivMod32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFixDivMod32
Целочисленные функции » Скалярные функции » Fix-point 32

Вычисление частного и остатка при делении чисел с фиксированной запятой в формате fixed-point (16.16) Подробнее...

Функции

void | nmppcFixDivMod32 (int nDividend, int nDivisor, int *pnQuotient, int *pnReminder)
void | nmppcFixDivPosMod32 (unsigned int nDividend, unsigned int nDivisor, int *pnQuotient, int *pnReminder)

Подробное описание

Вычисление частного и остатка при делении чисел с фиксированной запятой в формате fixed-point (16.16)

Аргументы
nDividend | Делимое в формате fixed-point (16.16)
nDivisor | Делитель в формате fixed-point (16.16)
Возвращаемые значения
pnQuotient | Частное от деления в формате fixed-point (16.16)
pnReminder | Остаток от деления в формате fixed-point (16.16)


nmpp: nmppcFix64Exp01

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcFix64Exp01
Целочисленные функции » Скалярные функции » Fix-point 32

Вычисление вычисления экспоненты числа в формате fixed-point (4.60) Подробнее...

Функции

long nmppcFix64Exp01 (long nArg)

Подробное описание

Вычисление вычисления экспоненты числа в формате fixed-point (4.60)

Аргументы
nVal Входное число с фиксированной точкой в формате (4.60)
Возвращает
Экспонента числа в формате с фиксированной точкой (4.60)


nmpp: Арифметические операции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Арифметические операции
Целочисленные функции » Скалярные функции

Группы

nmppcDivC
частное двух комплексных чисел
nmppcProdC
произведение двух комплексных чисел.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppcDivC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcDivC
Целочисленные функции » Скалярные функции » Арифметические операции

частное двух комплексных чисел Подробнее...

Функции

void nmppcDivC (nm64sc *pnSrcA, nm64s *pnSrcB, nm64sc *Dst)

Подробное описание

частное двух комплексных чисел

<>

Аргументы
*pnSrcA указатель на делимое. указатель на делитель. указатель на частное.


nmpp: nmppcProdC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppcProdC
Целочисленные функции » Скалярные функции » Арифметические операции

произведение двух комплексных чисел. Подробнее...

Функции

void nmppcProdC (nm64sc *pnSrcA, nm64sc *pnSrcB, nm64sc *Dst)

Подробное описание

произведение двух комплексных чисел.

Аргументы
*pnSrcA указатель на первый множитель. указатель на второй множитель. указатель на произведение.


nmpp: Функции деинтерлейсинга

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Функции деинтерлейсинга
Целочисленные функции » Скалярные функции

Функции

void | nmppiDeinterlaceSplit (nm8u *pSrcImg, int nSrcWidth, int nSrcHeight, nm8u *pDstEven, nm8u *pDstOdd)
void | nmppiDeinterlaceBlend (nm8u *pSrcEven, nm8u *pSrcOdd, int nSrcWidth, int nSrcHeight, nm8u *pDst)

Подробное описание

Функции

◆ nmppiDeinterlaceBlend()

void nmppiDeinterlaceBlend | ( | nm8u * | pSrcEven,
 |  | nm8u * | pSrcOdd,
 |  | int | nSrcWidth,
 |  | int | nSrcHeight,
 |  | nm8u * | pDst
 | ) |  |

Функция объединяет два полукдра в один полный кадр.

Аргументы
pSrcEven | указатель на четный полукадр.
nSrcOdd | указатель на нечетный полукадр.
nSrcWidth | ширина исходых полукадров в пикселях.
pSrcHeight | высота исходых полукадров в пикселях.
pDst | указатель на буфер результирующего кадр
Возвращает
void

◆ nmppiDeinterlaceSplit()

void nmppiDeinterlaceSplit | ( | nm8u * | pSrcImg,
 |  | int | nSrcWidth,
 |  | int | nSrcHeight,
 |  | nm8u * | pDstEven,
 |  | nm8u * | pDstOdd
 | ) |  |

Функция разделяет кадр на два полукадра.

Аргументы
pSrcImg | указатель на исходный кадр.
nSrcWidth | ширина исходного кадра в пикселях.
nSrcHeight | высота исходого кадра в пикселях.
pDstEven | указатель на буфер четного полукадра
pDstOdd | указатель на буфер нечетного полукадра
Возвращает
void


nmpp: Базовые регистровые функции библиотеки

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Базовые регистровые функции библиотеки
Целочисленные функции

Группы

Элементарные функции
функции взвешенного суммирования
Целевые функции

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Элементарные функции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Элементарные функции
Целочисленные функции » Базовые регистровые функции библиотеки

Группы

Vec_0_sub_data
Vec_activate_data
Vec_activate_data_add_0
Vec_activate_data_xor_data
Vec_activate_data_add_ram
Vec_afifo
Vec_data
Vec_data_add_ram
Vec_data_and_ram
Vec_data_or_ram
Vec_data_sub_ram
Vec_data_xor_ram
Vec_And
Vec_Or
Vec_Xor
Vec_Add
Vec_Sub
Vec_not_data
Vec_ram
Vec_ram_sub_data
Vec_vsum_activate_data_0
void vec_Mask (nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar2, nmreg gr2, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

Функции

◆ vec_Mask()

void vec_Mask | ( | nmreg | ar0,
 |  | nmreg | gr0,
 |  | nmreg | ar1,
 |  | nmreg | gr1,
 |  | nmreg | ar2,
 |  | nmreg | gr2,
 |  | nmreg | gr5,
 |  | nmreg | ar6,
 |  | nmreg | gr6
 | ) |  |
\~
\defgroup vec_Mask

  \~russian Ядро функции nmppsMaskV_().
  \~english nmppsMaskV_() function core.

\~
  \~russian Действие функции эквивалентно следующим псевдоинструкциям:
  \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N ram =[ar0++gr0];
rep N data=[ar1++gr1] with data;
rep N data=[ar2++gr2] with mask data,ram,afifo;
rep N [ar6++gr6]=afifo;
Аргументы
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1 | указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
ar2 | указатель на столбец SrcMtr2 (маска)
gr2 | SrcMtr3 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на результирующий столбец
gr6 | межстрочный шаг для ar6

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar2,ar6.


nmpp: Vec_0_sub_data

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_0_sub_data
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_0_sub_data (nmreg nb1, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Ядро функции nmppsNeg().
\~english nmppsNeg() function core.

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with 0-data;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_activate_data

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_activate_data
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_activate_data (nmreg f1cr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

Ядро функции nmppsCmpLt0_().

Действие функции эквивалентно следующим псевдоинструкциям:

rep N data=[ar0++gr0] with activate data;
rep N [ar6++gr6]=afifo;
Аргументы
f1cr | задает функцию активации
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_activate_data_add_0

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_activate_data_add_0
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_activate_data_add_0 (nmreg f1cr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

Функция производит арифметическую активацию.

Ядро функции nmppsClipPowC_().

Действие функции эквивалентныо следующим псевдоинструкциям:

rep N data=[ar0++gr0] with activate data + 0;
rep N [ar6++gr6]=afifo;
Аргументы
f1cr | задает функцию активации
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_activate_data_xor_data

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_activate_data_xor_data
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_activate_data_xor_data (nmreg f1cr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Функция позволяет вычислить приближенное значение модуля.
\~english The function allow calculate approximate absolute value.

\~
\~russian Ядро функции nmppsAbs1().
\~english nmppsAbs1() function core.
\~

Действие функции эквивалентныо следующим псевдоинструкциям:

rep N data=[ar0++gr0] with activate data xor data;
rep N [ar6++gr6]=afifo;
Аргументы
f1cr | задает функцию активации
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_activate_data_add_ram

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_activate_data_add_ram
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_activate_data_add_ram (nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Функция выполняет арифметическую активацию с прибавлением константы.
\~english The function executes arithmetic activation with adding a constant.

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N ram =[ar1]
rep N data=[ar0++gr0] with activate data+ram;
rep N [ar6++gr6] = afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
f1cr | задает функцию активации
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на 64р. слово
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_afifo

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_afifo
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_afifo (nmreg ar0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Функция служит для заполнения массива константой.
\~english The function serves for filling an array with a constant.

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep 1 data=[ar0] with data;
rep 1*N [ar6++gr6]=afifo with afifo;
Аргументы
ar0 | указатель на 64р. слово
gr5 | Высота матриц N = [0,1,2...31,32,33,...]
ar6 указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_data

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_data
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_data (nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Ядро функции nmppsCopy_().
\~english Core of nmppsCopy_() function.

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with data;
rep N [ar6++gr6]=afifo;
Аргументы
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6 | указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_data_add_ram

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_data_add_ram
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_data_add_ram (nmreg nb1, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsAddC().
 \~english Core of nmppsAddC() function.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N ram=[ar1];
rep N data=[ar0++gr0] with data+ram;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr stride
ar1 | указатаель на 64р. слово-константу
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6 | указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_data_and_ram

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_data_and_ram
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_data_and_ram (nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsAndC_().
 \~english Core of nmppsAndC_() function.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N ram =[ar1];
rep N data=[ar0++gr0] with data and ram;
rep N [ar6++gr6]=afifo;
Аргументы
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1 | указатаель на 64р. слово-константу
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6 | указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_data_or_ram

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_data_or_ram
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_data_or_ram (nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsOrC_().
 \~english Core of nmppsOrC_() function.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N ram =[ar1];
rep N data=[ar0++gr0] with data or ram;
rep N [ar6++gr6]=afifo;
Аргументы
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1 | указатаель на 64р. слово-константу
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6 | указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_data_sub_ram

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_data_sub_ram
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_data_sub_ram (nmreg nb1, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsSubC().
 \~english Core of nmppsSubC() function.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N ram=[ar1];
rep N data=[ar0++gr0] with data-ram;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
ar0 | указатель на столбец SrcMtr
gr0 | SrcMtr stride
ar1 | указатаель на 64р. слово-константу
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6 | указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_data_xor_ram

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_data_xor_ram
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_data_xor_ram (nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Ядро функции nmppsXorC_().
\~english Core of nmppsXorC_() function.

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
\code
    rep N ram = [ar1];
    rep N data = [ar0++gr0] with data xor ram;
    rep N [ar6++gr6] = afifo;
\endcode
Аргументы
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1 | указатель на 64р. слово-константу
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6 | указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_And

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_And
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_And (nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~russian Ядро функции nmppsAnd_().
\~english nmppsAnd_() function core.

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with data;
rep N data=[ar1++gr1] with data and afifo;
rep N [ar6++gr6]=afifo;
Аргументы
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1 | указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на результирующий столбец
gr6 | межстрочный шаг для ar6

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar6.


nmpp: Vec_Or

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_Or
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_Or (nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Ядро функции nmppsOr_().
\~english nmppsOr_() function core.

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with data;
rep N data=[ar1++gr1] with data or afifo;
rep N [ar6++gr6]=afifo;
Аргументы
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1 | указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на результирующий столбец
gr6 | межстрочный шаг для ar6

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar6.


nmpp: Vec_Xor

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_Xor
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_Xor (nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsXor_().
 \~english nmppsXor_() function core.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with data;
rep N data=[ar1++gr1] with data xor afifo;
rep N [ar6++gr6]=afifo;
Аргументы
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1 | указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на результирующий столбец
gr6 | межстрочный шаг для ar6

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar6.


nmpp: Vec_Add

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_Add
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_Add (nmreg nb1, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsAdd().
 \~english nmppsAdd() function core.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with data;
rep N data=[ar1++gr1] with data + afifo;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на результирующий столбец
gr6 | межстрочный шаг для ar6

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar6.


nmpp: Vec_Sub

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_Sub
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_Sub (nmreg nb1, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsSub().
 \~english nmppsSub() function core.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with data;
rep N data=[ar1++gr1] with data - afifo;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar6.


nmpp: Vec_not_data

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_not_data
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_not_data (nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Ядро функции nmppsNot_( ).
\~english nmppsNot_( ) function core.

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with not data;
rep N [ar6++gr6]=afifo;
Аргументы
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar6.


nmpp: Vec_ram

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_ram
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_ram (nmreg ar0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsSet_().
 \~english nmppsSet_() function core.

\~
 \~russian Функция служит для заполнения массива константой.
 \~english the function serves for filling an array with a constant.
\~

Действие функции эквивалентно следующим псевдоинструкциям:

rep N ram=[ar0] with data;
rep N [ar6++gr6]=afifo;
Аргументы
ar0
указатель на столбец SrcMtr1
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_ram_sub_data

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_ram_sub_data
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_ram_sub_data (nmreg nb1, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsSubCRev().
 \~english nmppsSubCRev() function core.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N ram=[ar1];
rep N data=[ar0++gr0] with ram-data;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
ar0
указатель на столбец SrcMtr
gr0 | SrcMtr stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_vsum_activate_data_0

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_vsum_activate_data_0
Целочисленные функции » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_vsum_activate_data_0 (nmreg nb1, nmreg sb, nmreg f1cr, nmreg woper, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with vsum ,activate,0;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 8 строк
f1cr | задает функцию активации
woper | в рабочей матрице должны быть загружены весовые коэффициенты
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: функции взвешенного суммирования

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
функции взвешенного суммирования
Целочисленные функции » Базовые регистровые функции библиотеки

Группы

Vec_ClipMul2D2W8_AddVr
Vec_ClipMulNDNW2_AddVr
Vec_ClipMulNDNW4_AddVr
Vec_ClipMulNDNW8_AddVr
Vec_Mul2D2W1_AddVr
Vec_Mul2D2W2_AddVr
Vec_Mul2D2W4_AddVr
Vec_Mul2D2W8_AddVr
Vec_Mul3D3W2_AddVr
Vec_Mul3D3W8_AddVr
Vec_Mul4D4W2_AddVr
Vec_MulVN_AddVN
Vec_vsum_data_0
Vec_vsum_data_vr
Vec_vsum_shift_data_0
Vec_vsum_shift_data_vr
Vec_vsum_shift_data_afifo

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Vec_ClipMul2D2W8_AddVr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_ClipMul2D2W8_AddVr
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_ClipMul2D2W8_AddVr (nmreg nb1, nmreg sb, nmreg f1cr, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

 \~russian Взвешенное умножение двух массивов с накоплением и активацей
 \~english Weighted multiplication of two arrays with accumulation and activation

\~
 \~russian Ядро функции nmppsClipPowC_RShift_Convert_AddС_().
 \~english nmppsClipPowC_RShift_Convert_AddС_() function core.
\~

Действие функции эквивалентно следующим псевдоинструкциям:

rep 8 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,activate data,vr;
rep 8 wfifo=[ar4++],ftw,wtw;
rep N data =[ar1++gr1] with vsum ,activate data,afifo;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки
sb
задает разбиение на 8 строк
f1cr | задает функцию активации
vr | константа для суммирования
ar0 SrcMtr1
gr0 | SrcMtr1 stride
ar1 SrcMtr2
gr1 | SrcMtr2 stride
ar4
2 матрицы весовых коэффициентов по 8 64р. слов
gr4
дублирует nb1
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на результирующий столбец
gr6 | межстрочный шаг для ar6

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar6,gr7.


nmpp: Vec_ClipMulNDNW2_AddVr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_ClipMulNDNW2_AddVr
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_ClipMulNDNW2_AddVr (nmreg nb1, nmreg sb, nmreg f1cr, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Взвешенное умножение нескольких массивов с накоплением и активацей
 \~english Weighted multiplication of several arrays with accumulation and activation

\~
 \~russian Ядро функции SIG_Filter().
 \~english nmppsFilter_() function core.
\~

Действие функции эквивалентно следующим псевдоинструкциям:

ar2=ar0;
gr2=[ar1++];
ar0=ar2+gr2;
rep 2 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,activate data,vr;
.repeat K-1;
gr2=[ar1++];
ar0=ar2+gr2;
rep 2 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,activate data,afifo;
.endrepeat;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки
sb
задает разбиение на 2 строки (sb=2)
f1cr | задает функцию активации
vr | константа для суммирования
ar0 задает базовый адрес для входных массивов (как правило адрес первого массива)
gr0 | шаг чтения входного масиива stride for input arrays
ar1
массив адресных смещений входных массивов относительно ar0
gr1 | количество массив - K
ar4
массив из K матриц весовых коэффициентов по 2 64р. слов
gr4
дублирует nb1
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на результирующий столбец
gr6 | межстрочный шаг для ar6

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0,ar1,gr1,ar2,gr2,ar3,gr3,ar4,ar6,gr7.


nmpp: Vec_ClipMulNDNW4_AddVr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_ClipMulNDNW4_AddVr
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_ClipMulNDNW4_AddVr (nmreg nb1, nmreg sb, nmreg f1cr, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Взвешенное умножение нескольких массивов с накоплением и активацей
 \~english Weighted multiplication of several arrays with accumulation and activation

\~
 \~russian Ядро функции SIG_Filter().
 \~english nmppsFilter_() function core.
\~

Действие функции эквивалентно следующим псевдоинструкциям:

ar2=ar0;
gr2=[ar1++];
ar0=ar2+gr2;
rep 4 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,activate data,vr;
.repeat K-1;
gr2=[ar1++];
ar0=ar2+gr2;
rep 4 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,activate data,afifo;
.endrepeat;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки
sb
задает разбиение на 4 строки (sb=20002h)
f1cr | задает функцию активации
vr | константа для суммирования
ar0 задает базовый адрес для входных массивов (как правило адрес первого массива)
gr0 | stride for input arrays
ar1
массив адресных смещений входных массивов относительно ar0
gr1 | количество массив - K
ar4
массив из K матриц весовых коэффициентов по 4 64р. слов
gr4
дублирует nb1
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на результирующий столбец
gr6 | межстрочный шаг для ar6

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0,ar1,gr1,ar2,gr2,ar3,gr3,ar4,ar6,gr7.


nmpp: Vec_ClipMulNDNW8_AddVr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_ClipMulNDNW8_AddVr
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_ClipMulNDNW8_AddVr (nmreg nb1, nmreg sb, nmreg f1cr, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Взвешенное умножение нескольких массивов с накоплением и активацей
 \~english Weighted multiplication of several arrays with accumulation and activation

\~
 \~russian Ядро функции SIG_Filter().
 \~english nmppsFilter_() function core.
\~

Действие функции эквивалентно следующим псевдоинструкциям:

ar2=ar0;
gr2=[ar1++];
ar0=ar2+gr2;
rep 8 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,activate data,vr;
.repeat K-1;
gr2=[ar1++];
ar0=ar2+gr2;
rep 8 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,activate data,afifo;
.endrepeat;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки
sb
задает разбиение на 8 строки (sb=2020202h)
f1cr | задает функцию активации
vr | константа для суммирования
ar0 \ задает базовый адрес для входных массивов (как правило адрес первого массива)
\ set base address for input arrays
gr0 | stride for input arrays
ar1
массив адресных смещений входных массивов относительно ar0
gr1 | \ количество массив - K \ number of arrays - K
ar4
массив из K матриц весовых коэффициентов по 8 64р. слов
gr4
дублирует nb1
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на результирующий столбец
gr6 | межстрочный шаг для ar6

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0,ar1,gr1,ar2,gr2,ar3,gr3,ar4,ar6,gr7.


nmpp: Vec_Mul2D2W1_AddVr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_Mul2D2W1_AddVr
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_Mul2D2W1_AddVr (nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsConvert_64s(nm64s* ,nm32s* ,int ).
 \~english nmppsConvert_64s(nm64s* ,nm32s* ,int ) function core.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep 1 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,data,vr;
rep 1 wfifo=[ar4++],ftw,wtw;
rep N data =[ar1++gr1] with vsum ,data,afifo;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение в 1 строку
vr
константа для суммирования
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
ar4
указатель на 2 матрицы весовых коэффициентов по 2 строки в каждой
gr4
дублирует nb1
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar6,gr7.


nmpp: Vec_Mul2D2W2_AddVr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_Mul2D2W2_AddVr
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_Mul2D2W2_AddVr (nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Ядро функции nmppsConvert_32s(nm32s* ,nm16s* ,int ).
\~english nmppsConvert_32s(nm32s* ,nm16s* ,int ) function core.

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep 2 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,data,vr;
rep 2 wfifo=[ar4++],ftw,wtw;
rep N data =[ar1++gr1] with vsum ,data,afifo;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 2 строки
vr
константа для суммирования
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
ar4
указатель на 2 матрицы весовых коэффициентов по 2 строки в каждой
gr4
дублирует nb1
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar6,gr7.


nmpp: Vec_Mul2D2W4_AddVr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_Mul2D2W4_AddVr
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_Mul2D2W4_AddVr (nmreg nb1, nmreg sb, nmreg f1cr, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsConvert_16s(nm16s* pSrcVec, nm8s* pDstVec, int nSize).
 \~english nmppsConvert_16s(nm16s* pSrcVec, nm8s* pDstVec, int nSize) function core.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep 4 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,data,vr;
rep 4 wfifo=[ar4++],ftw,wtw;
rep N data =[ar1++gr1] with vsum ,data,afifo;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 4 строки
f1cr | задает функцию активации
vr
константа для суммирования
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
ar4
указатель на 2 матрицы весовых коэффициентов по 4 строки в каждой
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar6,gr7.


nmpp: Vec_Mul2D2W8_AddVr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_Mul2D2W8_AddVr
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_Mul2D2W8_AddVr (nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Применяется в MTR_Copyua().
\~english It is used in MTR_Copyua().

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep 8 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,data,vr;
rep 8 wfifo=[ar4++],ftw,wtw;
rep N data =[ar1++gr1] with vsum ,data,afifo;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 8 строк
vr
константа для суммирования
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
ar4
указатель на 2 матрицы весовых коэффициентов по 8 строк в каждой
gr4
дублирует nb1
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar6,gr7.


nmpp: Vec_Mul3D3W2_AddVr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_Mul3D3W2_AddVr
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_Mul3D3W2_AddVr (nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar2, nmreg gr2, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian
 \~english

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep 2 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,data,vr;
rep 2 wfifo=[ar4++],ftw,wtw;
rep N data =[ar1++gr1] with vsum ,data,afifo;
rep 2 wfifo=[ar4++],ftw,wtw;
rep N data =[ar2++gr2] with vsum ,data,afifo;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 2 строки
vr
константа для суммирования
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
ar2
указатель на столбец SrcMtr3
gr2 | SrcMtr3 stride
ar4 | указатель на 3 матрицы весовых коэффициентов по 2 строки в каждой
gr4
дублирует nb1
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar2,ar6,gr7.


nmpp: Vec_Mul3D3W8_AddVr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_Mul3D3W8_AddVr
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_Mul3D3W8_AddVr (nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar2, nmreg gr2, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian
\~english

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep 8 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,data,vr;
rep 8 wfifo=[ar4++],ftw,wtw;
rep N data =[ar1++gr1] with vsum ,data,afifo;
rep 8 wfifo=[ar4++],ftw,wtw;
rep N data =[ar2++gr2] with vsum ,data,afifo;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 8 строк
vr
константа для суммирования
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
ar2
указатель на столбец SrcMtr3
gr2 | SrcMtr3 stride
ar4 | указатель на 3 матрицы весовых коэффициентов по 8 строк в каждой
gr4
дублирует nb1
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar2,ar6,gr7.


nmpp: Vec_Mul4D4W2_AddVr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_Mul4D4W2_AddVr
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_Mul4D4W2_AddVr (nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar2, nmreg gr2, nmreg ar3, nmreg gr3, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsConvert_32s(nm32s* pSrcVec, nm8s* pDstVec, int nSize).
 \~english nmppsConvert_32s(nm32s* pSrcVec, nm8s* pDstVec, int nSize) function core.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep 2 wfifo=[ar4++],ftw,wtw;
rep N data =[ar0++gr0] with vsum ,data,vr;
rep 2 wfifo=[ar4++],ftw,wtw;
rep N data =[ar1++gr1] with vsum ,data,afifo;
rep 2 wfifo=[ar4++],ftw,wtw;
rep N data =[ar2++gr2] with vsum ,data,afifo;
rep 2 wfifo=[ar4++],ftw,wtw;
rep N data =[ar3++gr3] with vsum ,data,afifo;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 2 строки
vr
константа для суммирования
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
ar2
указатель на столбец SrcMtr3
gr2 | SrcMtr3 stride
ar3
указатель на столбец SrcMtr4
gr3 | SrcMtr4 stride
ar4 | указатель на 4 матрицы весовых коэффициентов по 2 строки в каждой
gr4
дублирует nb1
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar2,ar3,ar6,gr7.


nmpp: Vec_MulVN_AddVN

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_MulVN_AddVN
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_MulVN_AddVN (nmreg nb1, nmreg sb, nmreg f1cr, nmreg woper, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции MTR_MulC_AddVsVc( ).
 \~english MTR_MulC_AddVsVc( ) function core.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with vsum ,data, vr;
rep N data=[ar1++gr1] with afifo+data;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 8 строк
f1cr | задает функцию активации
woper | в рабочей матрице должны быть загружены весовые коэффициенты
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar6.


nmpp: Vec_vsum_data_0

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_vsum_data_0
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_vsum_data_0 (nmreg nb1, nmreg sb, nmreg woper, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with vsum ,data,0;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 8 строк
woper | в рабочей матрице должны быть загружены весовые коэффициенты
ar0
указатель на столбец SrcMtr
gr0 | SrcMtr stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_vsum_data_vr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_vsum_data_vr
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_vsum_data_vr (nmreg nb1, nmreg sb, nmreg woper, nmreg vr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with vsum ,data,vr;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 8 строк
f1cr | задает функцию активации
woper | в рабочей матрице должны быть загружены весовые коэффициенты
vr
константа для суммирования
ar0
указатель на столбец SrcMtr
gr0 | SrcMtr stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_vsum_shift_data_0

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_vsum_shift_data_0
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_vsum_shift_data_0 (nmreg nb1, nmreg sb, nmreg woper, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with vsum ,shift data,0;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 8 строк
woper | в рабочей матрице должны быть загружены весовые коэффициенты
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_vsum_shift_data_vr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_vsum_shift_data_vr
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_vsum_shift_data_vr (nmreg nb1, nmreg sb, nmreg woper, nmreg vr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with vsum ,shift data, vr;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 8 строк
woper | в рабочей матрице должны быть загружены весовые коэффициенты
vr
константа для суммирования
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_vsum_shift_data_afifo

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_vsum_shift_data_afifo
Целочисленные функции » Базовые регистровые функции библиотеки » функции взвешенного суммирования

Функции

void vec_vsum_shift_data_afifo (nmreg nb1, nmreg sb, nmreg f1cr, nmreg woper, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6)

Подробное описание

\~

 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep 1 data=vfalse;
rep 1*N data=[ar0++gr0] with vsum , shift data,afifo; (rep1 N times)
rep 1 [ar6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 8 строк
f1cr | задает функцию активации
woper | в рабочей матрице должны быть загружены весовые коэффициенты
ar0
указатель на столбец SrcMtr
gr0 | SrcMtr stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0.


nmpp: Целевые функции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Целевые функции
Целочисленные функции » Базовые регистровые функции библиотеки

Группы

<br>
Vec_data_add_afifo
Vec_FilterCoreRow2
Vec_FilterCoreRow4
Vec_FilterCoreRow8
Vec_Abs
Vec_ClipExt
Vec_IncNeg
Vec_SubAbs
Vec_SubVN_Abs
Vec_Swap
Vec_MUL_2V4toW8_shift
Vec_MUL_2V8toW16_shift
Vec_vsum_data_afifo
Vec_CompareMinV
Поэлементный поиск минимальногоДействие функции эквивалентно следующим псевдоинструкциям:
Vec_CompareMaxV
Поэлементный поиск максимальногоДействие функции эквивалентно следующим псевдоинструкциям:
Vec_DupValueInVector8
Размножение 8-ми битового значения по всему вектору.Действие функции эквивалентно следующим псевдоинструкциям:
Vec_DupValueInVector16
Размножение 16-ти битового значения по всему вектору.Действие функции эквивалентно следующим псевдоинструкциям:
Vec_BuildDiagWeights8
Построение диагональной матрицы весовых коеффициентов (8x8).
Vec_BuildDiagWeights16
Построение диагональной матрицы весовых коеффициентов (16x16).
Vec_MaxVal_v8nm8s
Поиск максимума в 8 байтах
Vec_MaxVal_v4nm16s
Поиск максимума в 4-х 16р. элементах
Vec_MaxVal
Поиск максимумов в колонках матрицы SrcMtr1.

Vec_MinVal_v8nm8s
Поиск минимума в 8 байтах
Vec_MinVal_v4nm16s
Поиск минимума в 4-х 16р. элементах
Vec_MinVal
Поиск минимумов в колонках матрицы SrcMtr1.

Vec_AccMul1D1W32_AddVr
Умножение с накоплениемДействие функции эквивалентно следующим псевдоинструкциям:

Подробное описание

Создано системой doxygen 1.9.5


nmpp: <br>

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
<br>
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_Add_VV_shift (nmreg nb1, nmreg sb, nmreg woper, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Функция служит для суммирования двух массивов со сдвигом результата на 1 бит вправо.
\~english The function serves for two arrays summation with shifting the result for 1 bit to the right.

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N ram = [ar4];
rep N data = [ar0++gr0] with data + 0;
rep N data = [ar1++gr1] with data + afifo;
rep N with mask ram,shift afifo,0;
rep N [ar6++gr6] = afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на строки
woper | в рабочей матрице должны быть загружены весовые коэффициенты
ar0 указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1 указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
ar4 | указатель на 64р. слово (маска)
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar2,ar6,gr2,gr5.


nmpp: Vec_data_add_afifo

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_data_add_afifo
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_data_add_afifo (nmreg nb1, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6)

Подробное описание

\~

\~russian Ядро функции nmppsSum().
\~english Core of nmppsSum() function.

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep 1 data=vfalse;
.repeat N;
rep 1 data=[ar0++gr0] with data + afifo; (rep1 N times)
.endrepeat;
rep 1 [ar6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
ar0 | указатель на столбец SrcMtr
gr0 | SrcMtr stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6 | указатель на 64р. слово

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0.


nmpp: Vec_FilterCoreRow2

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_FilterCoreRow2
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_FilterCoreRow2 (nmreg ar0, nmreg ar4, nmreg ar6, nmreg gr1, nmreg gr4, nmreg gr6)

Подробное описание

\~


nmpp: Vec_FilterCoreRow4

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_FilterCoreRow4
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_FilterCoreRow4 (nmreg ar0, nmreg ar4, nmreg ar6, nmreg gr1, nmreg gr4, nmreg gr6)

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Vec_FilterCoreRow8

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_FilterCoreRow8
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_FilterCoreRow8 (nmreg ar0, nmreg ar4, nmreg ar6, nmreg gr1, nmreg gr4, nmreg gr6)

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Vec_Abs

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_Abs
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_Abs (nmreg nb1, nmreg sb, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsAbs().
 \~english nmppsAbs() function core.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N ram =[ar0++gr0] with activate data;
rep N with vsum afifo,ram,ram;
rep N [ar6++gr6]= afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 8 строк
f1cr | задает функцию активации
ar0
указатель на столбец SrcMtr
gr0 | SrcMtr stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на результирующий столбец
gr6 | межстрочный шаг для ar6

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_ClipExt

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_ClipExt
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_ClipExt (nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg ar2, nmreg ar3, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции nmppsClipCC_().
 \~english nmppsClipCC_() function core.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N ram = [ar1];
rep N data = [ar0++gr0] with data-ram;
rep N data = [ar2] with activate afifo+data;
rep N data = [ar3] with activate afifo-data;
rep N [ar6++gr6] = afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
f1cr | задает функцию активации
ar0
указатель на столбец SrcMtr
gr0 | SrcMtr stride
ar1
указатаель на 64р. слово-константу
ar2
указатаель на 64р. слово-константу
ar3
указатаель на 64р. слово-константу
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на результирующий столбец
gr6 | межстрочный шаг для ar6

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.

nmppsClipCC_


nmpp: Vec_IncNeg

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_IncNeg
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_IncNeg (nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Увеличивает отрицательные числа на 1.
 \~english It increases negative numbers by 1.

\~
 \~russian Применяется в nmppsDivC().
 \~english It is used in nmppsDivC().
\~

Действие функции эквивалентно следующим псевдоинструкциям:

rep N ram = [ar0++gr0] with activate data;
rep N with ram - afifo;
rep N [ar6++gr6] = afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
f1cr | задает функцию активации
ar0
указатель на столбец SrcMtr
gr0 | SrcMtr stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_SubAbs

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_SubAbs
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_SubAbs (nmreg nb1, nmreg sb, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Ядро функции nmppsAbsDiff().
\~english nmppsAbsDiff() function core.

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N data=[ar0++gr0] with data
rep N data=[ar1++gr1] with afifo-data;
rep N [ar4],ram =afifo with activate afifo;
rep N with vsum afifo,ram,ram;
rep N [ar6++gr6]= afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 8 строк
f1cr | задает функцию активации
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
ar4
указатель на временный буфер (1 64р. слово)
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_SubVN_Abs

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_SubVN_Abs
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_SubVN_Abs (nmreg nb1, nmreg sb, nmreg f1cr, nmreg woper, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

\~russian Ядро функции mtr_SubMV_Abs().
\~english mtr_SubMV_Abs() function core.

\~
\~russian Действие функции эквивалентно следующим псевдоинструкциям:
\~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N ram=[ar1]
rep N data=[ar0++gr0] with data-ram;
rep N [ar2++]=afifo with activate afifo;
// ar2,ar5- internal pointers to temporary buffer size of long[32]
rep N data=[ar5++] with vsum afifo,data,data;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 8 строк
f1cr | задает функцию активации
woper | в рабочей матрице должны быть загружены весовые коэффициенты
ar0
указатель на столбец SrcMtr
gr0 | SrcMtr stride
ar1
указатель на на маску (1 64р. слово)
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0,ar6.


nmpp: Vec_Swap

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_Swap
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_Swap (nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~russian Ядро функции mtr_SubVN_Abs().
\~english mtr_SubVN_Abs() function core.
\~

Функция осуществляет два одноыременных копирования:
[ar0++gr0] => [ar4++gr4]
[ar1++gr1] => [ar6++gr6]
если ar6=ar0,gr6=gr0, ar4=ar1,gr4=gr1
то выполняется перестановка двух векторов
Действие функции эквивалентно следующим псевдоинструкциям:

rep N ram =[ar0++gr0];
rep N data=[ar1++gr1] with data;
rep N [ar6++gr6]=afifo with ram;
rep N [ar4++gr4]=afifo;
Аргументы
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
ar4
указатель на столбец DstMtr1
gr4 | DstVec1 stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr2
gr6 | DstVec2 stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar4,ar6.


nmpp: Vec_MUL_2V4toW8_shift

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_MUL_2V4toW8_shift
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_MUL_2V4toW8_shift (nmreg nb1, nmreg sb, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar3, nmreg gr4, nmreg ar5, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции SIG_ResizeDown2(nm8u7b* pSrcVec, nm8u7b* pDstVec, int nSize).
 \~english SIG_ResizeDown2(nm8u7b* pSrcVec, nm8u7b* pDstVec, int nSize) function core.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N ram=[ar3];
rep 8 wfifo=[ar5++],ftw,wtw;
rep N data =[ar0++gr0],ftw,wtw with vsum ,data,0;
rep N data =[ar1++gr1] with vsum ,data,afifo;
rep N with mask ram,shift afifo,0;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки
sb
задает разбиение на 4 строки
ar0
указатель на столбец SrcMtr
gr0 | SrcMtr stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
ar3
указатель на 64р. маску
gr4
дублирует nb1
ar5
указатель на матрицу весовых коэффициентов (16 64р.слов)
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar2,ar4,ar6,gr2,gr5.


nmpp: Vec_MUL_2V8toW16_shift

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_MUL_2V8toW16_shift
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_MUL_2V8toW16_shift (nmreg nb1, nmreg sb, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar3, nmreg gr4, nmreg ar5, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

\~

 \~russian Ядро функции SIG_ResizeDown2(nm16u15b* pSrcVec, nm16u15b* pDstVec, int nSize).
 \~english SIG_ResizeDown2(nm16u15b* pSrcVec, nm16u15b* pDstVec, int nSize) function core.

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep N ram=[ar3];
rep 16 wfifo=[ar5++],ftw,wtw;
rep N data =[ar0++gr0],ftw,wtw with vsum ,data,0;
rep N data =[ar1++gr1] with vsum ,data,afifo;
rep N with mask ram,shift afifo,0;
rep N [ar6++gr6]=afifo;
Аргументы
nb1
задает разбиение на колонки
sb
задает разбиение на 2 строки
ar0
указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1
указатель на столбец SrcMtr2
gr1 | SrcMtr2 stride
ar3
указатель на 64р. маску
gr4
дублирует nb1
ar5
указатель на матрицу весовых коэффициентов (16 64р.слов)
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr
gr6 | DstMtr stride

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar2,ar4,ar6,gr2,gr5.


nmpp: Vec_vsum_data_afifo

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_vsum_data_afifo
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Функции

void vec_vsum_data_afifo (nmreg nb1, nmreg sb, nmreg woper, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6)

Подробное описание

\~

 \~russian Используется в nmppsSum(nm1* pSrcVec, void* pTmpBuf, int nSize)
 \~english It is used in nmppsSum(nm1* pSrcVec,  void* pTmpBuf, int nSize)

\~
 \~russian Действие функции эквивалентно следующим псевдоинструкциям:
 \~english The function operation is equivalent to the following pseudoinstructions:
\~
\~
rep 1 data=vfalse;
.repeat N;
rep 1 data=[ar0++gr0] with vsum ,data,afifo;
.endrepeat;
rep 1 [ar6]=afifo;
Аргументы
nb1
задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на строки
woper | в рабочей матрице должны быть загружены весовые коэффициенты
ar0
указатель на столбец SrcMtr
gr0 | SrcMtr stride
gr5
Высота матриц N = [0,1,2...31,32,33,...]
ar6
указатель на столбец DstMtr

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0.


nmpp: Vec_CompareMinV

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_CompareMinV
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Поэлементный поиск минимальногоДействие функции эквивалентно следующим псевдоинструкциям: Подробнее...

Функции

void vec_CompareMinV (nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar3, nmreg gr3, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

Поэлементный поиск минимального

Действие функции эквивалентно следующим псевдоинструкциям:

\~
rep N ram=[ar0++gr0];
rep N data=[ar1++gr1] with ram-data;
rep N with activate afifo;
rep N data=[ar3++gr3] with mask afifo, ram, data;
rep N [ar6++gr6]=afifo;
Аргументы
nb1 | задает разбиение на колонки (необходимо wtw)
f1cr | задает функцию активации
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1,ar3 | указатель на столбец SrcMtr2
gr1,gr3 | SrcMtr2 stride
gr5 | Высота матриц N = [0,1,2...31,32,33,...]
ar6 | указатель на столбец DstMtr
gr6 DstMtr stride
Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar3,ar6.


nmpp: Vec_CompareMaxV

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_CompareMaxV
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Поэлементный поиск максимальногоДействие функции эквивалентно следующим псевдоинструкциям: Подробнее...

Функции

void vec_CompareMaxV (nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar3, nmreg gr3, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

Поэлементный поиск максимального

Действие функции эквивалентно следующим псевдоинструкциям:

\~
rep N ram=[ar0++gr0];
rep N data=[ar1++gr1] with ram-data;
rep N with activate afifo;
rep N data=[ar3++gr3] with mask afifo, data, ram;
rep N [ar6++gr6]=afifo;
Аргументы
nb1 | задает разбиение на колонки (необходимо wtw)
f1cr | задает функцию активации
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr1 stride
ar1,ar3 | указатель на столбец SrcMtr2
gr1,gr3 | SrcMtr2 stride
gr5 | Высота матриц N = [0,1,2...31,32,33,...]
ar6 | указатель на столбец DstMtr
gr6 DstMtr stride
Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0,ar1,ar3,ar6.


nmpp: Vec_DupValueInVector8

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_DupValueInVector8
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Размножение 8-ми битового значения по всему вектору.Действие функции эквивалентно следующим псевдоинструкциям: Подробнее...

Функции

void vec_DupValueInVector8 (nmreg ar1, nmreg gr1)

Подробное описание

Размножение 8-ми битового значения по всему вектору.

Действие функции эквивалентно следующим псевдоинструкциям:

\~
gr1 = gr1 and 0FFh;
[ar1] = gr1 + (gr1 << 8) + (gr1 << 16) + (gr1 << 24) +
(gr1 << 32) + (gr1 << 40) + (gr1 << 48) + (gr1 << 56).
ar1 += 2;
Аргументы
ar1 | Адрес 64-х битового вектора.
gr1 | Значение (8 бит).

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar1, gr1.


nmpp: Vec_DupValueInVector16

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_DupValueInVector16
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Размножение 16-ти битового значения по всему вектору.Действие функции эквивалентно следующим псевдоинструкциям: Подробнее...

Функции

void vec_DupValueInVector16 (nmreg ar1, nmreg gr1)

Подробное описание

Размножение 16-ти битового значения по всему вектору.

Действие функции эквивалентно следующим псевдоинструкциям:

\~
gr1 = gr1 and 0FFFFh;
[ar1] = gr1 + (gr1 << 16) + (gr1 << 32) + (gr1 << 48).
ar1 += 2;
Аргументы
ar1 | Адрес 64-х битового вектора.
gr1 | Значение (8 бит).

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar1, gr1.


nmpp: Vec_BuildDiagWeights8

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_BuildDiagWeights8
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Построение диагональной матрицы весовых коеффициентов (8x8). Подробнее...

Функции

void vec_BuildDiagWeights8 (nmreg ar1, nmreg gr1)

Подробное описание

Построение диагональной матрицы весовых коеффициентов (8x8).

\~
Аргументы
ar1 | Адрес 64-х буфера весовых коеффициентов (8x64 бит).
gr1 | Значение (8 бит).

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar1, gr1.


nmpp: Vec_BuildDiagWeights16

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_BuildDiagWeights16
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Построение диагональной матрицы весовых коеффициентов (16x16). Подробнее...

Функции

void vec_BuildDiagWeights16 (nmreg ar1, nmreg gr1)

Подробное описание

Построение диагональной матрицы весовых коеффициентов (16x16).

\~
Аргументы
ar1 | Адрес 64-х буфера весовых коеффициентов (4x64 бит).
gr1 | Значение (16 бит).

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar1, gr1.


nmpp: Vec_MaxVal_v8nm8s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_MaxVal_v8nm8s
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Поиск максимума в 8 байтах Подробнее...

Функции

void vec_MaxVal_v8nm8s (nmreg ar0, nmreg gr7)

Подробное описание

Поиск максимума в 8 байтах

\~
Аргументы
ar0 Адрес 64р. слова
Возвращаемые значения
gr7 Максимум из 8 байт

Restrictions:
При выходе из функции изменяется содержимое регистров: gr0, gr1, gr2, gr3, ar5, gr5, gr7.


nmpp: Vec_MaxVal_v4nm16s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_MaxVal_v4nm16s
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Поиск максимума в 4-х 16р. элементах Подробнее...

Функции

void vec_MaxVal_v4nm16s (nmreg ar0, nmreg gr7)

Подробное описание

Поиск максимума в 4-х 16р. элементах

\~
Аргументы
ar0 Адрес 64р. слова
Возвращаемые значения
gr7 Максимум из 8 байт

Restrictions:
При выходе из функции изменяется содержимое регистров: gr0, gr1, gr2, gr3, ar5, gr5, gr7.


nmpp: Vec_MaxVal

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_MaxVal
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Поиск максимумов в колонках матрицы SrcMtr1.
Подробнее...

Функции

void vec_MaxVal (nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar4, nmreg gr5, nmreg ar6)

Подробное описание

Поиск максимумов в колонках матрицы SrcMtr1.

\~
Аргументы
nb1 | задает разбиение на колонки (необходимо wtw)
f1cr | задает функцию активации
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr stride
ar4 | указатель на временный массив размером nm64s[64]
gr5 | Высота матрицы SrcMtr1 N = [32,64,...]
Возвращаемые значения
ar6 указатель на 64р. слово результатов (максимумов)

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0,gr0,ar4,ar3,ar6,gr7.


nmpp: Vec_MinVal_v8nm8s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_MinVal_v8nm8s
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Поиск минимума в 8 байтах Подробнее...

Функции

void vec_MinVal_v8nm8s (nmreg ar0, nmreg gr7)

Подробное описание

Поиск минимума в 8 байтах

\~
Аргументы
ar0 Адрес 64р. слова
Возвращаемые значения
gr7 Максимум из 8 байт

Restrictions:
При выходе из функции изменяется содержимое регистров: gr0, gr1, gr2, gr3, ar5, gr5, gr7.


nmpp: Vec_MinVal_v4nm16s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_MinVal_v4nm16s
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Поиск минимума в 4-х 16р. элементах Подробнее...

Функции

void vec_MinVal_v4nm16s (nmreg ar0, nmreg gr7)

Подробное описание

Поиск минимума в 4-х 16р. элементах

\~
Аргументы
ar0 Адрес 64р. слова
Возвращаемые значения
gr7 Максимум из 8 байт

Restrictions:
При выходе из функции изменяется содержимое регистров: gr0, gr1, gr2, gr3, ar5, gr5, gr7.


nmpp: Vec_MinVal

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_MinVal
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Поиск минимумов в колонках матрицы SrcMtr1.
Подробнее...

Функции

void vec_MinVal (nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar4, nmreg gr5, nmreg ar6)

Подробное описание

Поиск минимумов в колонках матрицы SrcMtr1.

\~
Аргументы
nb1 | задает разбиение на колонки (необходимо wtw)
f1cr | задает функцию активации
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr stride
ar4 | указатель на временный массив размером nm64s[64]
gr5 | Высота матрицы SrcMtr1 N = [32,64,...]
Возвращаемые значения
ar6 указатель на 64р. слово результатов (максимумов)

Restrictions: <br>
При выходе из функции изменяется содержимое регистров: ar0,gr0,ar4,ar3,ar6,gr7.


nmpp: Vec_AccMul1D1W32_AddVr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_AccMul1D1W32_AddVr
Целочисленные функции » Базовые регистровые функции библиотеки » Целевые функции

Умножение с накоплениемДействие функции эквивалентно следующим псевдоинструкциям: Подробнее...

Функции

void vec_AccMul1D1W32_AddVr (nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6)

Подробное описание

Умножение с накоплением

Действие функции эквивалентно следующим псевдоинструкциям:

\~
rep 32 wfifo=[ar4++],ftw,wtw;
rep 32 wfifo data = [ar0++gr0] with vsum ,data,vr;
with gr5--;
with gr5--;
<Loop>
rep 32 wfifo=[ar4++],ftw,wtw;
rep 32 data=[ar0++gr0] with vsum ,data,afifo;
if <>0 goto Loop with gr5--;
rep 32 [ar6++gr6]=afifo;
Аргументы
nb1 | задает разбиение на колонки (необходимо wtw)
sb
задает разбиение на 32 строки
vr
константа для суммирования
ar0 | указатель на столбец SrcMtr1
gr0 | SrcMtr stride
ar4
матрицы весовых коэффициентов
gr4
дублирует nb1
gr5 | кол-во итераций умножений с накоплением
Возвращаемые значения
ar6 указатель на столбец DstMtr, сосотоящий из 32 длинных слов
Аргументы
gr6 DstMtr stride


nmpp: implement

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
implement
Целочисленные функции

Группы

контроль переполнения

Подробное описание

Создано системой doxygen 1.9.5


nmpp: контроль переполнения

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Структуры данных | Макросы | Функции
контроль переполнения
Целочисленные функции » implement

Структуры данных

class | tcube< T >
class | nmmtr< T >
class | nmmtrpack< T >
class | nmvecpack< T >
class | vec< T >

Макросы

#define GetVec getvec

Функции

__INLINE__ ostream & operator<< (ostream &s, mtr< unsigned char > &mtr)

Подробное описание

определяет классы, предназначенные для контроля переполнения при реализации библиотеки на PC.

–реализации библиотеки на PC производит контроль переполнения с выдачей сообщения об ошибке пользователю библиотеки. Для этой цели определены шаблонные классы для вектора, матрицы и скалярного числа, позволяющие производить базовые операции над их элементами.

Макросы

◆ GetVec

#define GetVec getvec

Класс матриц.

Примеры:
int Test[10]={1,125,3,4,5,6,7,8,9,10};
int Res [10];
mtr<int> AA0(3,3);
vec<int> A0(3);
scalar<int> a0(2);
mtr<int> BB0(3,3);
mtr<int> CC0(3,3);
vec<int> C0(3);
BB0.SetData(Test);
BB0=AA0;
A0 =AA0[2];
a0 =AA0[2][2];
CC0=AA0+BB0;
CC0=AA0*a0;
C0 =AA0*A0;
CC0=AA0*BB0;
mtr
Definition: tmatrix.h:88
vec
Definition: tvector.h:80

Функции

◆ operator<<()

__INLINE__ ostream & operator<< | ( | ostream & | s,
 |  | mtr< unsigned char > & | mtr
 | ) |  |

Класс матриц.

Примеры:
int Test[10]={1,125,3,4,5,6,7,8,9,10};
int Res [10];
mtr<int> AA0(3,3);
vec<int> A0(3);
scalar<int> a0(2);
mtr<int> BB0(3,3);
mtr<int> CC0(3,3);
vec<int> C0(3);
BB0.SetData(Test);
BB0=AA0;
A0 =AA0[2];
a0 =AA0[2][2];
CC0=AA0+BB0;
CC0=AA0*a0;
C0 =AA0*A0;
CC0=AA0*BB0;


nmpp: Шаблон класса tcube< T >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных | Защищенные данные
Шаблон класса tcube< T >
Целочисленные функции » implement » контроль переполнения

#include <tnmcube.h>

Открытые члены

tcube (tcube< T > &cube)
tcube (int Height, int Width, int Depth, int WStride=0, int CStride=0)
tcube (T *data, int Height, int Width, int Depth, int WStride=0, int CStride=0)
tcube< T > & | operator= (tcube< T > &cube)
tmtr< T > | operator[] (int y) const
T * | data ()
void | printChannel (int ch)
void | fill (T value)

Поля данных

int | m_height
int | m_width
int | m_depth
int | m_ystride
int | m_wstride
int | m_cstride
T * | m_data

Защищенные данные

T * m_container

Подробное описание

template<class T>
class tcube< T >

класс матриц.

Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmtl/tnmcube.h


nmpp: Шаблон класса nmmtr< T >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных | Защищенные данные
Шаблон класса nmmtr< T >
Целочисленные функции » implement » контроль переполнения

#include <tnmmtr.h>

Открытые члены

nmmtr (int Height, int Width, int Border=0)
nmvec< T > | operator[] (int y) const
nmmtr (nmmtr< T > &mtr)
nmmtr (T *Data, int Height, int Width, int Stride=0)
nmmtr (const T *Data, int Height, int Width, int Stride=0)
nmmtr< T > & | operator= (const nmmtr< T > &mtr)
nmmtr< T > & | operator*= (const nmint< T > &val)
template<class T2 >
nmmtr< T2 > | operator* (const nmint< T2 > &val)
template<class T2 >
nmvec< T2 > | operator* (const nmvec< T2 > &vec)
template<class T2 >
nmmtr< T2 > | operator* (const nmmtr< T2 > &mtr)
nmvec< T > & | operator+= (const nmint< T > &val)
nmmtr< T > & | operator+= (const nmmtr< T > &mtr)
nmmtr< T > | operator+ (const nmmtr< T > &mtr) const
nmmtr< T > & | operator-= (const nmmtr< T > &mtr)
nmmtr< T > | operator- (const nmmtr< T > &mtr) const
nmmtr< T > | operator- () const
nmmtr< T > & | operator/= (const T val)
nmmtr< T > | operator/ (const nmint< T > val) const
nmmtr< T > & | operator>>= (const int shr)
nmmtr< T > | operator>> (const int shr) const
nmmtr< T > & | operator<<= (const int shl)
nmmtr< T > | operator<< (const int shl) const
nmmtr< T > & | operator|= (const nmmtr< T > &mtr)
nmmtr< T > | operator| (const nmmtr< T > &mtr) const
nmmtr< T > & | operator&= (const nmmtr< T > &mtr)
nmmtr< T > | operator& (const nmmtr< T > &mtr) const
nmmtr< T > & | operator^= (const nmint< T > &val)
nmmtr< T > | operator^ (const nmint< T > &val) const
nmmtr< T > | operator~ () const
T * | addr (int y, int x)
nmvec< T > | vec (int y)
void | fill (nmint< T > &nVal)
nmmtr< T > | transpose ()
template<class T2 >
void | set (nmmtr< T2 > &mSrcMtr) const
template<class T2 >
void | set (mtr< T2 > &Mtr)
void | set (const T val)
void | reset ()

Поля данных

int | m_height
int | m_width
int | m_size
int | m_stride
int | m_border
T * | m_data

Защищенные данные

T * m_container

Подробное описание

template<class T>
class nmmtr< T >

класс матриц.

Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmtl/tnmmtr.h


nmpp: Шаблон класса nmmtrpack< T >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных | Защищенные данные
Шаблон класса nmmtrpack< T >
Целочисленные функции » implement » контроль переполнения

#include <tnmmtrpack.h>

Открытые члены

nmmtrpack (int Height, int Width, int Border=0)
__INLINE__ nmvecpack< T > | operator[] (int y) const
nmmtrpack (const nmmtrpack< T > &mtr)
nmmtrpack (T *Data, int Height, int Width, int Stride=0)
nmmtrpack (const T *Data, int Height, int Width, int Stride=0)
nmmtrpack< T > & | operator= (const nmmtrpack< T > &mtr)
nmmtrpack< T > & | operator*= (const nmint< T > &val)
template<class T2 >
nmmtrpack< T2 > | operator* (const nmint< T2 > &val)
template<class T2 >
nmvec< T2 > | operator* (const nmvec< T2 > &vec)
template<class T2 >
nmmtrpack< T2 > | operator* (const nmmtrpack< T2 > &mtr)
nmvec< T > & | operator+= (const nmint< T > &val)
nmmtrpack< T > & | operator+= (const nmmtrpack< T > &mtr)
nmmtrpack< T > | operator+ (const nmmtrpack< T > &mtr) const
nmmtrpack< T > & | operator-= (const nmmtrpack< T > &mtr)
nmmtrpack< T > | operator- (const nmmtrpack< T > &mtr) const
nmmtrpack< T > | operator- () const
nmmtrpack< T > & | operator/= (const T val)
nmmtrpack< T > | operator/ (const nmint< T > val) const
nmmtrpack< T > & | operator>>= (const int shr)
nmmtrpack< T > | operator>> (const int shr) const
nmmtrpack< T > & | operator<<= (const int shl)
nmmtrpack< T > | operator<< (const int shl) const
nmmtrpack< T > & | operator|= (const nmmtrpack< T > &mtr)
nmmtrpack< T > | operator| (const nmmtrpack< T > &mtr) const
nmmtrpack< T > & | operator&= (const nmmtrpack< T > &mtr)
nmmtrpack< T > | operator& (const nmmtrpack< T > &mtr) const
nmmtrpack< T > & | operator^= (const nmint< T > &val)
nmmtrpack< T > | operator^ (const nmint< T > &val) const
nmmtrpack< T > | operator~ () const
__INLINE__ nmvec< T > | GetVec (int y)
__INLINE__ nmvec< T > | GetVec (int y, int x, int len)
__INLINE__ nmmtrpack< T > & | SetMtr (int y, int x, nmmtrpack< T > &mSrc)
__INLINE__ nmmtrpack< T > & | GetMtr (int y, int x, nmmtrpack< T > &mRes)
__INLINE__ nmmtrpack< T > | GetMtr (int y, int x, int height, int width)
__INLINE__ T * | Addr (int y, int x)
template<class T2 >
void | Set (nmmtrpack< T2 > &mSrcMtr) const
void | InitConst (nmint< T > &nVal)
nmmtrpack< T > | transpose ()
void | reset ()

Поля данных

int | m_height
int | m_width
int | m_size
int | m_stride
int | m_border
T * | m_data

Защищенные данные

T * | m_container
bool | m_flag_new

Подробное описание

template<class T>
class nmmtrpack< T >

класс матриц.

Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmtl/tnmmtrpack.h


nmpp: Шаблон класса nmvecpack< T >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных | Защищенные данные
Шаблон класса nmvecpack< T >
Целочисленные функции » implement » контроль переполнения

#include <tnmvecpack.h>

Открытые члены

nmvecpack (void *Data, int Size, int Border=0)
nmvecpack (int Size, int Border=0)
nmvecpack (const nmvecpack< T > &vec)
nmvecpack< T > & | operator= (const nmvecpack< T > &vec)
__INLINE__ nmintpack< T > | operator[] (int idx)
template<class T2 >
nmvecpack< T2 > & | operator*= (const nmint< T2 > val)
template<class T2 >
nmvecpack< T2 > | operator* (const nmint< T2 > &val) const
template<class T2 >
nmint< T2 > | operator* (const nmvecpack< T2 > &vec) const
nmvecpack< T > & | operator+= (const nmint< T > &val)
nmvecpack< T > & | operator+= (const nmvecpack< T > &vec)
nmvecpack< T > | operator+ (const nmint< T > &val) const
nmvecpack< T > | operator+ (const nmvecpack< T > &vec) const
nmvecpack< T > & | operator-= (const nmint< T > &val)
nmvecpack< T > & | operator-= (const nmvecpack< T > &vec)
nmvecpack< T > | operator- () const
nmvecpack< T > | operator- (const nmint< T > &val) const
nmvecpack< T > | operator- (const nmvecpack< T > &vec) const
nmvecpack< T > & | operator/= (const nmint< T > val)
nmvecpack< T > | operator/ (const T val) const
nmvecpack< T > & | operator>>= (const int shr)
nmvecpack< T > | operator>> (const int shr) const
nmvecpack< T > & | operator<<= (const int shl)
nmvecpack< T > | operator<< (const int shl) const
nmvecpack< T > & | operator|= (const nmint< T > &val)
nmvecpack< T > & | operator|= (const nmvecpack< T > &vec)
nmvecpack< T > | operator| (const nmint< T > &val) const
nmvecpack< T > | operator| (const nmvecpack< T > &vec) const
nmvecpack< T > & | operator&= (const nmint< T > &val)
nmvecpack< T > & | operator&= (const nmvecpack< T > &vec)
nmvecpack< T > | operator& (const nmint< T > &val) const
nmvecpack< T > | operator& (const nmvecpack< T > &vec) const
nmvecpack< T > & | operator^= (const nmint< T > &val)
nmvecpack< T > & | operator^= (const nmvecpack< T > &vec)
nmvecpack< T > | operator^ (const nmint< T > &val) const
nmvecpack< T > | operator^ (const nmvecpack< T > &vec) const
nmvecpack< T > & | operator~ () const
bool | operator== (const nmvecpack< T > &vec) const
bool | operator!= (const nmvecpack< T > &vec) const
template<class T2 >
void | SetData (T2 *Data)
template<class T2 >
void | GetData (T2 *Data)
void | reset ()

Поля данных

int | m_size
T * | m_data

Защищенные данные

T * | m_container
int | m_border

Подробное описание

template<class T>
class nmvecpack< T >

Класс векторов.

Примеры:
int Test[10]={1,125,3,4,5,6,7,8,9,10};
int Res [10];
nmvecpack<int> A0(3);
nmvecpack<int> B0(3);
nmvecpack<int> C0(3);
nmvecpack
Definition: tnmvecpack.h:138
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmtl/tnmvecpack.h


nmpp: Шаблон класса vec< T >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных | Защищенные данные
Шаблон класса vec< T >
Целочисленные функции » implement » контроль переполнения

#include <tvector.h>

Открытые члены

void | resize (int Size, int Border=0)
vec (T *Data, int Size, int Border=0)
vec (int Size, int Border=0)
vec (const vec< T > &vect)
void | reset ()
vec< T > & | InitRamp (T StartValue, T Increment)
int | MaxPos (T &maxval)
int | MinPos (T &minval)
double | Mean ()
T & | CustomMax ()
vec< T > & | operator= (const T &val)
vec< T > & | operator= (const vec< T > &vect)
T * | addr (int idx)
T & | operator[] (size_t idx)
vec< T > & | operator*= (const T &val)
vec< T > | operator* (const T &val) const
T | operator* (const vec< T > &vect) const
vec< T > | operator* (const mtr< T > matr) const
vec< T > & | operator+= (const T &val)
vec< T > & | operator+= (const vec< T > &vect)
vec< T > | operator+ (const T &val) const
vec< T > | operator+ (const vec< T > &vect) const
vec< T > & | operator-= (const T &val)
vec< T > & | operator-= (const vec< T > &vect)
vec< T > | operator- (const vec< T > &vect) const
vec< T > | operator- () const
vec< T > & | operator/= (const T val)
vec< T > | operator/ (const T val) const
vec< T > & | operator>>= (const int shr)
vec< T > | operator>> (const int shr) const
vec< T > & | operator<<= (const int shl)
vec< T > | operator<< (const int shl) const
vec< T > & | operator&= (const T &val)
vec< T > & | operator&= (const vec< T > &vect)
vec< T > | operator& (const T &val) const
vec< T > | operator& (const vec< T > &vect) const
vec< T > & | operator|= (const T &val)
vec< T > & | operator|= (const vec< T > &vect)
vec< T > | operator| (const T &val) const
vec< T > | operator| (const vec< T > &vect) const
vec< T > & | operator^= (const T &val)
vec< T > & | operator^= (const vec< T > &vect)
vec< T > | operator^ (const T &val) const
vec< T > | operator^ (const vec< T > &vect) const
int | sum ()
bool | operator== (const vec< T > &vect)
bool | operator!= (const vec< T > &vect)

Поля данных

int | m_border
int | size
T * | m_data

Защищенные данные

T * m_container

Подробное описание

template<class T>
class vec< T >

Класс векторов.

Примеры:
int Test[10]={1,125,3,4,5,6,7,8,9,10};
int Res [10];
vec<int> A0(3);
vec<int> B0(3);
vec<int> C0(3);
scalar<int> a0(2);
A0[0]=1;
A0[1]=2;
A0[2]=3;
B0.SetData(Test);
B0=A0;
a0=A0[1];
C0=A0+B0;
C0=A0*a0;
a0=A0*A0;
vec
Definition: tvector.h:80
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmtl/tvector.h


nmpp: Функции с плавающей точкой

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Функции с плавающей точкой

Группы

Векторные функции
Матричные функции
Функции обработки сигналов
Базовые регистровые функции библиотеки
nmblas

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Векторные функции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Векторные функции
Функции с плавающей точкой

Группы

Инициализация и копирование
Арифметические операции
Операции сравнения
Элементарные математические функции

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Инициализация и копирование

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Инициализация и копирование
Функции с плавающей точкой » Векторные функции

Группы

nmppsRandUniform
Инициализация массива случайными числами.
nmppsConvert
Изменение разрядности элементов вектора. Входной вектор.
nmppsConvert_rounding
Функции конвертации вектора чисел с плавающей точкой одинарной точности в вектор целых 32-битных чисел с разной степенью округления
nmppsMerge
Функция соединяет 2 массива 32-х чисел с плавающей точкой (float) в один. Результирующий массив { pSrcVec1[0], pSrcVec2[0], pSrcVec1[1], pSrcVec2[1], pSrcVec1[2], pSrcVec2[2] и т.д. }.
nmppsConvertRisc
Функциии изменения разрядности чисел входного вектора
nmppsCopy
Копирование массива чисел с плавающей точкой одинарной точности (с любого на любой адрес)
nmppsCopyOddToOdd_32f
Копирование массива чисел с плавающей точкой одинарной точности (с нечетного на нечетный адрес)
nmppsCopyEvenToOdd_32f
Копирование массива чисел с плавающей точкой одинарной точности (с четного на нечетный адрес)
nmppsCopyOddToEven_32f
Копирование массива чисел с плавающей точкой одинарной точности (с нечетного на четный адрес)
nmppsCopyEvenToEven_32f
Копирование массива чисел с плавающей точкой одинарной точности (с четного на четный адрес)
nmppsCopyRisc
Копирование массива

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppsRandUniform

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsRandUniform
Функции с плавающей точкой » Векторные функции » Инициализация и копирование

Инициализация массива случайными числами. Подробнее...

Функции

void | nmppsRandUniform_64f (nm64f *pDstVec, int nSize, double low, double hi)
void | nmppsRand_32f (nm32f *pDstVec, int nSize, float low, float hi)
void | nmppsRandUniform_32f_integer (nm32f *pDstVec, int nSize, int hi, int low)

Подробное описание

Инициализация массива случайными числами.

/ru Инициализация массива 64-разрядными случайными числами. /en Random initialization of 64-bit buffer /~

Аргументы
nSize Размер вектора.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsConvert

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsConvert
Функции с плавающей точкой » Векторные функции » Инициализация и копирование

Изменение разрядности элементов вектора. Входной вектор. Подробнее...

Функции

void | nmppsConvert_32u32fcr (const nm32u *pSrcVec, nm32fcr *pDstVec, int nSize)
void | nmppsConvert_32s32fcr (const nm32s *pSrcVec, nm32fcr *pDstVec, int nSize)
void | nmppsConvert_32f32fcr (const nm32f *pSrcVec, nm32fcr *pDstVec, int nSize)
void | nmppsConvert_32sc32fcr (const nm32sc *pSrcVec, nm32fcr *pDstVec, int nSize)
void | nmppsConvert_32s32f (const nm32s *pSrcVec, nm32f *pDstVec, int nSize)
void | nmppsConvert_32f64f (const nm32f *pSrcVec, nm64f *pDstVec, int nSize)
void | nmppsConvert_64f32f (const nm64f *pSrcVec, nm32f *pDstVec, int nSize)

Подробное описание

Изменение разрядности элементов вектора. Входной вектор.

Аргументы
nSize Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void

Функции выполняются на сопроцессоре (NM6407) с плавающей точкой с использованием переупаковщика данных


nmpp: nmppsConvert_rounding

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsConvert_rounding
Функции с плавающей точкой » Векторные функции » Инициализация и копирование

Функции конвертации вектора чисел с плавающей точкой одинарной точности в вектор целых 32-битных чисел с разной степенью округления Подробнее...

Функции

void | nmppsConvert_32f32s_rounding (const nm32f *pSrcVec, nm32s *pDstVec, int scale, int nSize)
void | nmppsConvert_32f32f_ceiling (const nm32f *pSrcVec, nm32f *pDstVec, int scale, int nSize)
void | nmppsConvert_32f32s_ceiling (const nm32f *pSrcVec, nm32s *pDstVec, int scale, int nSize)
void | nmppsConvert_32f32s_floor (const nm32f *pSrcVec, nm32s *pDstVec, int scale, int nSize)
void | nmppsConvert_32f32s_truncate (const nm32f *pSrcVec, nm32s *pDstVec, int scale, int nSize)

Подробное описание

Функции конвертации вектора чисел с плавающей точкой одинарной точности в вектор целых 32-битных чисел с разной степенью округления

Аргументы
pSrcVec | указатель на входной вектор
pDstVec | указатель на выходной вектор
scale | степень двойки (умножение каждого элемента выходного вектора на 2^scale), может быть отрицательной
nSize | число элементов во входном векторе (может быть только четным)

Функция выполняется на сопроцессоре (процессор 1879ВМ6Я) с плавающей точкой с использованием переупаковщика данных

nmppsConvert_32f32s_rounding округляет все дробные числа из pSrcVec до ближайших целых (например, 1.5 будет округлено до 2, 1.7 до 2, а 1.4 до 1)

nmppsConvert_32f32s_ceiling округляет все дробные числа из pSrcVec к большему целому (например, 0=>0 , 0.1=>1 , 0.9=>1 , 1=>1 , 1.1=>2 1.5 =>2, 1.7=> 2, а -1.1 => -1)


nmpp: nmppsMerge

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMerge
Функции с плавающей точкой » Векторные функции » Инициализация и копирование

Функция соединяет 2 массива 32-х чисел с плавающей точкой (float) в один. Результирующий массив { pSrcVec1[0], pSrcVec2[0], pSrcVec1[1], pSrcVec2[1], pSrcVec1[2], pSrcVec2[2] и т.д. }. Подробнее...

Функции

void nmppsMerge_32f (const nm32f *pSrcVec1, const nm32f *pSrcVec2, nm32f *pDstVec, int nSize)

Подробное описание

Функция соединяет 2 массива 32-х чисел с плавающей точкой (float) в один. Результирующий массив { pSrcVec1[0], pSrcVec2[0], pSrcVec1[1], pSrcVec2[1], pSrcVec1[2], pSrcVec2[2] и т.д. }.

Аргументы
pSrcVec1 | указатель на входной массив чисел float
pSrcVec2 | указатель на входной массив чисел float
pDstVec | указатель на выходной массив чисел float
nSize | количество элементов в массиве pSrcVec (в массиве pDstVec элементов будет в 2 раза больше)


nmpp: nmppsConvertRisc

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsConvertRisc
Функции с плавающей точкой » Векторные функции » Инициализация и копирование

Функциии изменения разрядности чисел входного вектора Подробнее...

Функции

void | nmppsConvertRisc_8u32u (const nm8u *pSrcVec, nm32u *pDstVec, int nSize)
void | nmppsConvertRisc_32u8u (const nm32u *pSrcVec, nm8u *pDstVec, int nSize)

Подробное описание

Функциии изменения разрядности чисел входного вектора

Аргументы
pSrcVec | указатель на входной вектор
pDstVec | указатель на выходной вектор
nSize | число элементов во входном векторе (должно быть кратно 8 и не может быть меньше 8)

Функция выполняется на RISC-процессоре


nmpp: nmppsCopy

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCopy
Функции с плавающей точкой » Векторные функции » Инициализация и копирование

Копирование массива чисел с плавающей точкой одинарной точности (с любого на любой адрес) Подробнее...

Функции

void nmppsCopy_32f (const float *pSrcVec, float *pDstVec, int size)

Подробное описание

Копирование массива чисел с плавающей точкой одинарной точности (с любого на любой адрес)

Аргументы
pSrcVec | указатель на входной массив чисел (адрес может быть как четным, так и нечетным)
pDstVec | указатель на выходной массив чисел (адрес может быть как четным, так и нечетным)
size | количество элементов в массиве pSrcVec (может быть любым неотрицательным, кроме 0)


nmpp: nmppsCopyOddToOdd_32f

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCopyOddToOdd_32f
Функции с плавающей точкой » Векторные функции » Инициализация и копирование

Копирование массива чисел с плавающей точкой одинарной точности (с нечетного на нечетный адрес) Подробнее...

Функции

void nmppsCopyOddToOdd_32f (const float *pSrcVec, float *pDstVec, int size)

Подробное описание

Копирование массива чисел с плавающей точкой одинарной точности (с нечетного на нечетный адрес)

Аргументы
pSrcVec | указатель на входной массив чисел (адрес может быть только нечетным)
pDstVec | указатель на выходной массив чисел (адрес может быть только нечетным)
size | количество элементов в массиве pSrcVec (может быть любым неотрицательным, кроме 0)


nmpp: nmppsCopyEvenToOdd_32f

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCopyEvenToOdd_32f
Функции с плавающей точкой » Векторные функции » Инициализация и копирование

Копирование массива чисел с плавающей точкой одинарной точности (с четного на нечетный адрес) Подробнее...

Функции

void nmppsCopyEvenToOdd_32f (const float *pSrcVec, float *pDstVec, int size)

Подробное описание

Копирование массива чисел с плавающей точкой одинарной точности (с четного на нечетный адрес)

Аргументы
pSrcVec | указатель на входной массив чисел (адрес может быть только четным)
pDstVec | указатель на выходной массив чисел (адрес может быть только нечетным)
size | количество элементов в массиве pSrcVec (может быть любым неотрицательным, кроме 0)


nmpp: nmppsCopyOddToEven_32f

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCopyOddToEven_32f
Функции с плавающей точкой » Векторные функции » Инициализация и копирование

Копирование массива чисел с плавающей точкой одинарной точности (с нечетного на четный адрес) Подробнее...

Функции

void nmppsCopyOddToEven_32f (const float *pSrcVec, float *pDstVec, int size)

Подробное описание

Копирование массива чисел с плавающей точкой одинарной точности (с нечетного на четный адрес)

Аргументы
pSrcVec | указатель на входной массив чисел (адрес может быть только нечетным)
pDstVec | указатель на выходной массив чисел (адрес может быть только четным)
size | количество элементов в массиве pSrcVec (может быть любым неотрицательным, кроме 0)


nmpp: nmppsCopyEvenToEven_32f

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCopyEvenToEven_32f
Функции с плавающей точкой » Векторные функции » Инициализация и копирование

Копирование массива чисел с плавающей точкой одинарной точности (с четного на четный адрес) Подробнее...

Функции

void nmppsCopyEvenToEven_32f (const float *pSrcVec, float *pDstVec, int size)

Подробное описание

Копирование массива чисел с плавающей точкой одинарной точности (с четного на четный адрес)

Аргументы
pSrcVec | указатель на входной массив чисел (адрес может быть только четным)
pDstVec | указатель на выходной массив чисел (адрес может быть только четным)
size | количество элементов в массиве pSrcVec (может быть любым неотрицательным)


nmpp: nmppsCopyRisc

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCopyRisc
Функции с плавающей точкой » Векторные функции » Инициализация и копирование

Копирование массива Подробнее...

Функции

void nmppsCopyRisc_32f (const float *pSrcVec, float *pDstVec, int nSize)

Подробное описание

Копирование массива

Аргументы
pSrcVec | указатель на входной массив чисел
pDstVec | указатель на выходной массив чисел
size | количество элементов в массиве pSrcVec


nmpp: Арифметические операции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Арифметические операции
Функции с плавающей точкой » Векторные функции

Группы

nmppsAddC
Добавление к вектору константы.
nmppsAdd
Сложение двух векторов.
nmppsSubC
Вычитание константы из вектора.
nmppsSubCRev
Вычитание вектора из константы.
nmppsSub
Вычитание двух вектров.
nmppsMulC
Умножение вектора на константу.
nmppsMul_Mul_Add
Умножение двух пар векторов с последующим суммированием результатов (pDstVec = pSrcVec1 * pSrcVec2 + pSrcVec3 * pSrcVec4)
nmppsMul_Add
Умножение с накоплением
nmppsMul_ConjMul_Add
Умножение пары векторов (вектор pSrcVec4 комплексно-сопряженный) с последующим суммированием результата (pDstVec[i] = pSrcVec1[i] * pSrcVec2[i] + pSrcVec3[i] * Conj(pSrcVec4[i]))
nmppsMulC_AddC
Умножает вектор на констану с прибавлением другой константы (pDstVec[i] = nMulC * pSrcVec[i] + nAddC)
nmppsMulC_AddV_AddC
Умножение вектора на константу с прибавлением вектора и константы (pDstVec[i] = nMulC * pSrcVec[i] + pVecAdd[i] + nAddC)
nmppsMul
Умножение векторов (pDstVec[i] = pSrcVec1[i] * pSrcVec1[i])
nmppsConjMul
Умножение вектора на комлексно-сопряженный вектор(pDstVec[i] = pSrcVec1[i] * Conj(pSrcVec1[i]))
nmppsMul_Mul_Sub
Умножение пары векторов с последующим вычитанием результатов (pDstVec[i] = pSrcVec1[i] * pSrcVec2[i] - pSrcVec3[i] * pSrcVec4[i])
nmppsMulC_Add
Умножение вектора на константу с накоплением (pDstVec[i] = pSrcVec1[i] * С + pSrcVec2[i])
nmppsMul_AddC
Поэлементное умножение векторов с прибавлением константы.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppsAddC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAddC
Функции с плавающей точкой » Векторные функции » Арифметические операции

Добавление к вектору константы. Подробнее...

Функции

void | nmppsAddC_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, float nVal, int nSize)
void | nmppsAddC_32f (const nm32f *pSrcVec, nm32f *pDstVec, float C, int nSize)

Подробное описание

Добавление к вектору константы.

Сложение вектора с константой.

Аргументы
pSrcVec | Входной вектор.
nVal | Добавляемая константа.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void

Аргументы
pSrcVec Входной вектор.
Возвращаемые значения
pDstVec Результирующий вектор.
Аргументы
C | Складываемая константа.
nSize | Размер векторов в элементах.
Возвращает
void


nmpp: nmppsAdd

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsAdd
Функции с плавающей точкой » Векторные функции » Арифметические операции

Сложение двух векторов. Подробнее...

Функции

void nmppsAdd_32f (const nm32f *pSrcVec1, const nm32f *pSrcVec2, nm32f *pDstVec, int nSize)

Подробное описание

Сложение двух векторов.

Аргументы
pSrcVec1 | Первый входной вектор.
pSrcVec2 | Второй входной вектор.
nSize | Размер вектора в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsSubC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsSubC
Функции с плавающей точкой » Векторные функции » Арифметические операции

Вычитание константы из вектора. Подробнее...

Функции

void nmppsSubC_32f (const nm32f *pSrcVec, nm32f *pDstVec, float C, int nSize)

Подробное описание

Вычитание константы из вектора.

Аргументы
pSrcVec Входной вектор.
Возвращаемые значения
pDstVec Результирующий вектор.
Аргументы
C | Вычитаемая константа.
nSize | Размер векторов в элементах.
Возвращает
void


nmpp: nmppsSubCRev

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsSubCRev
Функции с плавающей точкой » Векторные функции » Арифметические операции

Вычитание вектора из константы. Подробнее...

Функции

void nmppsSubCRev_32f (const nm32f *pSrcVec, nm32f *pDstVec, float C, int nSize)

Подробное описание

Вычитание вектора из константы.

Аргументы
pSrcVec Входной вектор.
Возвращаемые значения
pDstVec Результирующий вектор.
Аргументы
C | Вычитаемая константа.
nSize | Размер векторов в элементах.
Возвращает
void


nmpp: nmppsSub

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsSub
Функции с плавающей точкой » Векторные функции » Арифметические операции

Вычитание двух вектров. Подробнее...

Функции

void nmppsSub_32f (const nm32f *pSrcVec1, const nm32f *pSrcVec2, nm32f *pDstVec, int nSize)

Подробное описание

Вычитание двух вектров.

Аргументы
pSrcVec1 | Уменьшаемый вектор.
pSrcVec2 | Вычитаемый вектор.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsMulC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMulC
Функции с плавающей точкой » Векторные функции » Арифметические операции

Умножение вектора на константу. Подробнее...

Функции

void nmppsMulC_32f (const nm32f *pSrcVec, nm32f *pDstVec, float C, int nSize)

Подробное описание

Умножение вектора на константу.

Аргументы
pSrcVec | Входной вектор.
nVal | Константа-множитель.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: nmppsMul_Mul_Add

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMul_Mul_Add
Функции с плавающей точкой » Векторные функции » Арифметические операции

Умножение двух пар векторов с последующим суммированием результатов (pDstVec = pSrcVec1 * pSrcVec2 + pSrcVec3 * pSrcVec4) Подробнее...

Функции

void | nmppsMul_Mul_Add_32f (const nm32f *pSrcVec1, const nm32f *pSrcVec2, const nm32f *pSrcVec3, const nm32f *pSrcVec4, nm32f *pDstVec, int nSize)
void | nmppsMul_Mul_Add_32fcr (const nm32fcr *pSrcVec1, const nm32fcr *pSrcVec2, const nm32fcr *pSrcVec3, const nm32fcr *pSrcVec4, nm32fcr *pDstVec, int nSize)
void | nmppsMul_Mul_Add_64f (const nm64f *pSrcVec1, const nm64f *pSrcVec2, const nm64f *pSrcVec3, const nm64f *pSrcVec4, nm64f *pDstVec, int nSize)

Подробное описание

Умножение двух пар векторов с последующим суммированием результатов (pDstVec = pSrcVec1 * pSrcVec2 + pSrcVec3 * pSrcVec4)

Аргументы
pSrcVec1 | Входной вектор1
pSrcVec2 | Входной вектор2
pSrcVec3 | Входной вектор3
pSrcVec4 | Входной вектор4
nSize | Размер векторов в элементах
Возвращаемые значения
pDstVec Результирующий вектор
Возвращает
void


nmpp: nmppsMul_Add

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMul_Add
Функции с плавающей точкой » Векторные функции » Арифметические операции

Умножение с накоплением Подробнее...

Функции

void | nmppsMul_Add_32f (const nm32f *pSrcVec1, const nm32f *pSrcVec2, const nm32f *pSrcVecAdd, nm32f *pDstVec, int nSize)
void | nmppsMul_Add_64f (const nm64f *pSrcVec1, const nm64f *pSrcVec2, const nm64f *pSrcVecAdd, nm64f *pDstVec, int nSize)
void | nmppsMul_Add_32fcr (const nm32fcr *pSrcVec1, const nm32fcr *pSrcVec2, const nm32fcr *pSrcVecAdd, nm32fcr *pDstVec, int nSize)

Подробное описание

Умножение с накоплением

Аргументы
pSrcVec1 | Входной вектор1
pSrcVec2 | Входной вектор2
pSrcVecAdd | Входной вектор
nSize | Размер векторов в элементах
Возвращаемые значения
pDstVec Результирующий вектор
Возвращает
void


nmpp: nmppsMul_ConjMul_Add

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMul_ConjMul_Add
Функции с плавающей точкой » Векторные функции » Арифметические операции

Умножение пары векторов (вектор pSrcVec4 комплексно-сопряженный) с последующим суммированием результата (pDstVec[i] = pSrcVec1[i] * pSrcVec2[i] + pSrcVec3[i] * Conj(pSrcVec4[i])) Подробнее...

Функции

void nmppsMul_ConjMul_Add_32fcr (const nm32fcr *pSrcVec1, const nm32fcr *pSrcVec2, const nm32fcr *pSrcVec3, const nm32fcr *pSrcVec4, nm32fcr *pDstVec, int nSize)

Подробное описание

Умножение пары векторов (вектор pSrcVec4 комплексно-сопряженный) с последующим суммированием результата (pDstVec[i] = pSrcVec1[i] * pSrcVec2[i] + pSrcVec3[i] * Conj(pSrcVec4[i]))

Аргументы
pSrcVec1 | Входной вектор1
pSrcVec2 | Входной вектор2
pSrcVec3 | Входной вектор3
pSrcVec4 | Входной вектор4
nSize | Размер векторов в элементах
Возвращаемые значения
pDstVec Результирующий вектор
Возвращает
void


nmpp: nmppsMulC_AddC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMulC_AddC
Функции с плавающей точкой » Векторные функции » Арифметические операции

Умножает вектор на констану с прибавлением другой константы (pDstVec[i] = nMulC * pSrcVec[i] + nAddC) Подробнее...

Функции

void nmppsMulC_AddC_32f (const nm32f *pSrcVec, float nMulC, float nAddC, nm32f *pDstVec, int nSize)

Подробное описание

Умножает вектор на констану с прибавлением другой константы (pDstVec[i] = nMulC * pSrcVec[i] + nAddC)

Аргументы
pSrcVec | Входной вектор
nMulC | Константа
nAddC | Константа
nSize | Размер векторов в элементах
Возвращаемые значения
pDstVec Результирующий вектор
Возвращает
void


nmpp: nmppsMulC_AddV_AddC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMulC_AddV_AddC
Функции с плавающей точкой » Векторные функции » Арифметические операции

Умножение вектора на константу с прибавлением вектора и константы (pDstVec[i] = nMulC * pSrcVec[i] + pVecAdd[i] + nAddC) Подробнее...

Функции

void nmppsMulC_AddV_AddC_32f (nm32f *pSrcVec, float nMulC, nm32f *pVecAdd, float nAddC, nm32f *pDstVec, int nSize)

Подробное описание

Умножение вектора на константу с прибавлением вектора и константы (pDstVec[i] = nMulC * pSrcVec[i] + pVecAdd[i] + nAddC)

Аргументы
pSrcVec | Входной вектор
nMulC | Константа
pVecAdd | Входной вектор
nAddC | Константа
nSize | Размер векторов в элементах
Возвращаемые значения
pDstVec Результирующий вектор
Возвращает
void


nmpp: nmppsMul

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMul
Функции с плавающей точкой » Векторные функции » Арифметические операции

Умножение векторов (pDstVec[i] = pSrcVec1[i] * pSrcVec1[i]) Подробнее...

Функции

void | nmppsMul_32f (const nm32f *pSrcVec1, const nm32f *pSrcVec2, nm32f *pDstVec, int nSize)
void | nmppsMul_32fcr (const nm32fcr *pSrcVec1, const nm32fcr *pSrcVec2, nm32fcr *pDstVec, int nSize)

Подробное описание

Умножение векторов (pDstVec[i] = pSrcVec1[i] * pSrcVec1[i])

Аргументы
pSrcVec1 | Входной вектор1
pSrcVec2 | Входной вектор2
nSize | Размер векторов в элементах
Возвращаемые значения
pDstVec Результирующий вектор
Возвращает
void


nmpp: nmppsConjMul

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsConjMul
Функции с плавающей точкой » Векторные функции » Арифметические операции

Умножение вектора на комлексно-сопряженный вектор(pDstVec[i] = pSrcVec1[i] * Conj(pSrcVec1[i])) Подробнее...

Функции

void nmppsConjMul_32fcr (const nm32fcr *pSrcVec1, const nm32fcr *pSrcVec2, nm32fcr *pDstVec, int nSize)

Подробное описание

Умножение вектора на комлексно-сопряженный вектор(pDstVec[i] = pSrcVec1[i] * Conj(pSrcVec1[i]))

Аргументы
pSrcVec1 | Входной вектор1
pSrcVec2 | Входной вектор2
nSize | Размер векторов в элементах
Возвращаемые значения
pDstVec Результирующий вектор
Возвращает
void


nmpp: nmppsMul_Mul_Sub

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMul_Mul_Sub
Функции с плавающей точкой » Векторные функции » Арифметические операции

Умножение пары векторов с последующим вычитанием результатов (pDstVec[i] = pSrcVec1[i] * pSrcVec2[i] - pSrcVec3[i] * pSrcVec4[i]) Подробнее...

Функции

void nmppsMul_Mul_Sub_32f (const nm32f *pSrcVec1, const nm32f *pSrcVec2, const nm32f *pSrcVec3, const nm32f *pSrcVec4, nm32f *pDstVec, int nSize)

Подробное описание

Умножение пары векторов с последующим вычитанием результатов (pDstVec[i] = pSrcVec1[i] * pSrcVec2[i] - pSrcVec3[i] * pSrcVec4[i])

Аргументы
pSrcVec1 | Входной вектор1
pSrcVec2 | Входной вектор2
pSrcVec3 | Входной вектор1
pSrcVec4 | Входной вектор4
nSize | Размер векторов в элементах
Возвращаемые значения
pDstVec Результирующий вектор
Возвращает
void


nmpp: nmppsMulC_Add

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMulC_Add
Функции с плавающей точкой » Векторные функции » Арифметические операции

Умножение вектора на константу с накоплением (pDstVec[i] = pSrcVec1[i] * С + pSrcVec2[i]) Подробнее...

Функции

void nmppsMulC_AddV_32f (const nm32f *pSrcVec1, const nm32f *pSrcVec2, nm32f *pDstVec, float C, int nSize)

Подробное описание

Умножение вектора на константу с накоплением (pDstVec[i] = pSrcVec1[i] * С + pSrcVec2[i])

Аргументы
pSrcVec1 | Входной вектор1
pSrcVec2 | Входной вектор2
nSize | Размер векторов в элементах
Возвращаемые значения
pDstVec Результирующий вектор
Возвращает
void


nmpp: nmppsMul_AddC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsMul_AddC
Функции с плавающей точкой » Векторные функции » Арифметические операции

Поэлементное умножение векторов с прибавлением константы. Подробнее...

Функции

void nmppsMul_AddC_32f (const nm32f *pSrcVec1, const nm32f *pSrcVec2, float nValueAddC, nm32f *pDstVec, int nSize)

Подробное описание

Поэлементное умножение векторов с прибавлением константы.

Аргументы
pSrcVec1 | Входной вектор.
pSrcVec2 | Входной вектор.
nValueAddC | указаель на константу-инкремент.
nSize | Размер векторов в элементах.
Возвращаемые значения
pDstVec Результирующий вектор.
Возвращает
void


nmpp: Операции сравнения

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Операции сравнения
Функции с плавающей точкой » Векторные функции

Группы

nmppsCmpLteC
Функция сравнения элементов массива с константой (меньше или равно)
nmppsCmpLtC
Функция сравнения элементов массива с константой (меньше или равно)
nmppsCmpGteC
Функция сравнения элементов массива с константой (больше или равно)
nmppsCmpGtC
Функция сравнения элементов массива с константой (больше)

Подробное описание

Создано системой doxygen 1.9.5


nmpp: nmppsCmpLteC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpLteC
Функции с плавающей точкой » Векторные функции » Операции сравнения

Функция сравнения элементов массива с константой (меньше или равно) Подробнее...

Функции

void nmppsCmpLteC_v2nm32f (const v2nm32f *pSrcVec, const v2nm32f *C, nm1 *evenFlags, nm1 *oddFlags, int step, int nSize)

Подробное описание

Функция сравнения элементов массива с константой (меньше или равно)

Аргументы
[in] | pSrcVec | входной массив (элемент массива представляет собой структура v2nm32f, состоящая из двух чисел float)
[in] | C | константа (два числа float)
Возвращаемые значения
[out] | evenFlags маска полученная после сравнения первого поля из структуры v2nm32f
[out] | oddFlags маска полученная после сравнения второго поля из структуры v2nm32f
Аргументы
[in] | step | шаг, с которым будут браться элементы из pSrcVec
[in] | nSize | размер массива (в v2nm32f)

В структуре v2nm32f два поля. Первое - v0. Второе - v1.


nmpp: nmppsCmpLtC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpLtC
Функции с плавающей точкой » Векторные функции » Операции сравнения

Функция сравнения элементов массива с константой (меньше или равно) Подробнее...

Функции

void nmppsCmpLtC_v2nm32f (const v2nm32f *pSrcVec, const v2nm32f *C, nm1 *evenFlags, nm1 *oddFlags, int step, int nSize)

Подробное описание

Функция сравнения элементов массива с константой (меньше или равно)

Аргументы
[in] | pSrcVec | входной массив (элемент массива представляет собой структура v2nm32f, состоящая из двух чисел float)
[in] | C | константа (два числа float)
Возвращаемые значения
[out] | evenFlags маска полученная после сравнения первого поля из структуры v2nm32f
[out] | oddFlags маска полученная после сравнения второго поля из структуры v2nm32f
Аргументы
[in] | step | шаг, с которым будут браться элементы из pSrcVec
[in] | nSize | размер массива (в v2nm32f)

В структуре v2nm32f два поля. Первое - v0. Второе - v1.


nmpp: nmppsCmpGteC

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppsCmpGteC
Функции с плавающей точкой » Векторные функции » Операции сравнения

Функция сравнения элементов массива с константой (больше или равно) Подробнее...

Функции

void nmppsCmpGteC_v2nm32f (const v2nm32f *pSrcVec, const v2nm32f *C, nm1 *evenFlags, nm1 *oddFlags, int step, int nSize)

Подробное описание

Функция сравнения элементов массива с константой (больше или равно)

Аргументы
[in] | pSrcVec | входной массив (элемент массива представляет собой структура v2nm32f, состоящая из двух чисел float)
[in] | C | константа (два числа float)
Возвращаемые значения
[out] | evenFlags маска полученная после сравнения первого поля из структуры v2nm32f
[out] | oddFlags маска полученная после сравнения второго поля из структуры v2nm32f
Аргументы
[in] | step | шаг, с которым будут браться элементы из pSrcVec
[in] | nSize | размер массива (в v2nm32f)

В структуре v2nm32f два поля. Первое - v0. Второе - v1.


nmpp: Элементарные математические функции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Элементарные математические функции
Функции с плавающей точкой » Векторные функции

Группы

Тригонометрические функции
Функция, вычисляющая синус/косинус над каждым элементом вектора чисел с плавающей точкой одинарной точности (32f)
Функция деления векторов
Функция, вычисляющая x/y (pSrcVec1 / pSrcVec2), где x и y (делимые числа и делители) это вектора чисел с плавающей точкой одинарной
Экспонента
Функция, вычисляющая экспоненту над каждым элементом вектора чисел с плавающей точкой одинарной точности (32f)
Натуральный логарифм
Функция, вычисляющая натуральный логарифм над каждым элементом вектора чисел с плавающей точкой одинарной точности (32f)
Возведение в степень
Функция возводит в степень (Deg) каждый элемент вектора чисел с плавающей точкой двойной точности (64f)
Вычисление квадратного корня
Функция вычисляет квадратный корень от каждого элемента входного вектора чисел с плавающей точкой

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Тригонометрические функции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Тригонометрические функции
Функции с плавающей точкой » Векторные функции » Элементарные математические функции

Функция, вычисляющая синус/косинус над каждым элементом вектора чисел с плавающей точкой одинарной точности (32f) Подробнее...

Функции

void | nmppsSin_32f (const nm32f *pSrcVec, nm32f *pDstVec, int nSize)
void | nmppsCos_32f (const nm32f *pSrcVec, nm32f *pDstVec, int nSize)

Подробное описание

Функция, вычисляющая синус/косинус над каждым элементом вектора чисел с плавающей точкой одинарной точности (32f)

Аргументы
[in] pSrcVec входной вектор чисел с плавающей точкой
Возвращаемые значения
[out] pDstVec выходной вектор чисел с плавающей точкой
Аргументы
[in] nSize число элементов в векторе

Функции совместимы ТОЛЬКО с NMC-GCC-SDK и входит в состав библиотеки libnmpp-nmc4f.a


nmpp: Функция деления векторов

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Функция деления векторов
Функции с плавающей точкой » Векторные функции » Элементарные математические функции

Функция, вычисляющая x/y (pSrcVec1 / pSrcVec2), где x и y (делимые числа и делители) это вектора чисел с плавающей точкой одинарной Подробнее...

Функции

void nmppsDiv_32f (const nm32f *pSrcVec1, const nm32f *pSrcVec2, nm32f *pDstVec, int nSize)

Подробное описание

Функция, вычисляющая x/y (pSrcVec1 / pSrcVec2), где x и y (делимые числа и делители) это вектора чисел с плавающей точкой одинарной

Аргументы
[in] | pSrcVec1 | входной вектор делимых чисел с плавающей точкой одинарной точности
[in] | pSrcVec2 | входной вектор делителей с плавающей точкой одинарной точности
Возвращаемые значения
[out] pDstVec выходной вектор частных с плавающей точкой одинарной точности
Аргументы
[in] nSize число элементов в векторе

Функция совместима ТОЛЬКО с NMC-GCC-SDK и входит в состав библиотеки libnmpp-nmc4f.a


nmpp: Экспонента

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Экспонента
Функции с плавающей точкой » Векторные функции » Элементарные математические функции

Функция, вычисляющая экспоненту над каждым элементом вектора чисел с плавающей точкой одинарной точности (32f) Подробнее...

Функции

void | nmppsExp_32f (const nm32f *pSrcVec, nm32f *pDstVec, int nSize)
void | nmppsExp_64f (const nm64f *pSrcVec, nm64f *pDstVec, int nSize)

Подробное описание

Функция, вычисляющая экспоненту над каждым элементом вектора чисел с плавающей точкой одинарной точности (32f)

Аргументы
[in] pSrcVec входной вектор чисел с плавающей точкой одинарной точности
Возвращаемые значения
[out] pDstVec выходной вектор чисел с плавающей точкой одинарной точности
Аргументы
[in] nSize число элементов в векторе

Функция совместима ТОЛЬКО с NMC-GCC-SDK и входит в состав библиотеки libnmpp-nmc4f.a


nmpp: Натуральный логарифм

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Натуральный логарифм
Функции с плавающей точкой » Векторные функции » Элементарные математические функции

Функция, вычисляющая натуральный логарифм над каждым элементом вектора чисел с плавающей точкой одинарной точности (32f) Подробнее...

Функции

void | nmppsLn_32f (const nm32f *pSrcVec, nm32f *pDstVec, int nSize)
void | nmppsLn_64f (const nm64f *pSrcVec, nm64f *pDstVec, int nSize)

Подробное описание

Функция, вычисляющая натуральный логарифм над каждым элементом вектора чисел с плавающей точкой одинарной точности (32f)

Аргументы
[in] pSrcVec входной вектор чисел с плавающей точкой одинарной точности
Возвращаемые значения
[out] pDstVec выходной вектор чисел с плавающей точкой одинарной точности
Аргументы
[in] nSize число элементов в векторе

Функция совместима ТОЛЬКО с NMC-GCC-SDK и входит в состав библиотеки libnmpp-nmc4f.a


nmpp: Возведение в степень

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Возведение в степень
Функции с плавающей точкой » Векторные функции » Элементарные математические функции

Функция возводит в степень (Deg) каждый элемент вектора чисел с плавающей точкой двойной точности (64f) Подробнее...

Функции

void nmppsPowx_64f (const nm64f *pSrcVec, nm64f *pDstVec, nm32u Deg, int nSize)

Подробное описание

Функция возводит в степень (Deg) каждый элемент вектора чисел с плавающей точкой двойной точности (64f)

Аргументы
[in] pSrcVec входной вектор чисел с плавающей точкой двойной точности
Возвращаемые значения
[out] pDstVec выходной вектор чисел с плавающей точкой двойной точности
Аргументы
[in] | Deg | степень, в которую возводится каждый элемент входного вектора
[in] | nSize | число элементов в векторе

Функция совместима ТОЛЬКО с NMC-GCC-SDK и входит в состав библиотеки libnmpp-nmc4f.a


nmpp: Вычисление квадратного корня

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Вычисление квадратного корня
Функции с плавающей точкой » Векторные функции » Элементарные математические функции

Функция вычисляет квадратный корень от каждого элемента входного вектора чисел с плавающей точкой Подробнее...

Функции

void nmppsSqrt_32f (const nm32f *pSrcVec, nm32f *pDstVec, int nSize)

Подробное описание

Функция вычисляет квадратный корень от каждого элемента входного вектора чисел с плавающей точкой

Аргументы
[in] pSrcVec входной вектор чисел с плавающей точкой
Возвращаемые значения
[out] pDstVec выходной вектор чисел с плавающей точкой
Аргументы
[in] nSize число элементов в векторе

Функция совместима ТОЛЬКО с NMC-GCC-SDK и входит в состав библиотеки libnmpp-nmc4f.a


nmpp: Матричные функции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Матричные функции
Функции с плавающей точкой

Группы

Обращение матрицы

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Обращение матрицы

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Обращение матрицы
Функции с плавающей точкой » Матричные функции

Группы

MTR_fpResolve_Gauss
Решение системы линейных уравнений методом Гаусса.
MTR_fpResolve_PivotGauss
Решение системы линейных уравнений методом Гаусса с выбором ведущего элемента.
nmppmLUDecomp
LU-разложение матрицы
nmppmLUResolve
Решение системы линейных уравнений из LU-разложения L*y = b; U*x = y.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: MTR_fpResolve_Gauss

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
MTR_fpResolve_Gauss
Функции с плавающей точкой » Матричные функции » Обращение матрицы

Решение системы линейных уравнений методом Гаусса. Подробнее...

Функции

void MTR_fpResolve_Gauss (double *pSrcMtrA, double *pSrcVecB, double *pDstVecX, int nSize)

Подробное описание

Решение системы линейных уравнений методом Гаусса.

Аргументы
pSrcMtrA | Квадтратная матрица уравнения A.
pSrcVecB | Свободный вектор.
nSize | Размер матрицы.
Возвращаемые значения
pDstVecX Вектор решения x.
Возвращает
void

Restrictions:
Выбор ведущего элемента не производится - возможно деление на нуль.
Заметки
Функция в данный момент не оптимизирована.


nmpp: MTR_fpResolve_PivotGauss

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
MTR_fpResolve_PivotGauss
Функции с плавающей точкой » Матричные функции » Обращение матрицы

Решение системы линейных уравнений методом Гаусса с выбором ведущего элемента. Подробнее...

Функции

void MTR_fpResolve_PivotGauss (double *pSrcMtrAB, double *pDstVecX, int nSize)

Подробное описание

Решение системы линейных уравнений методом Гаусса с выбором ведущего элемента.

Аргументы
pSrcMtrAB | Матрица уравнения A, дополненная справа вектором B.
nSize | Высота матрицы.
Возвращаемые значения
pDstVecX Вектор решения X.
Возвращает
void


nmpp: nmppmLUDecomp

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppmLUDecomp
Функции с плавающей точкой » Матричные функции » Обращение матрицы

LU-разложение матрицы Подробнее...

Функции

void nmppmLUDecomp_64f (const double *A, double *L, double *U, int N)

Подробное описание

LU-разложение матрицы

Аргументы
[in] | A | Матрица A
[out] | L | Левая диагональная матрица L
[out] | U | верхняя диагональная матрица U
[in] | N | Размерность матрицы


nmpp: nmppmLUResolve

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
nmppmLUResolve
Функции с плавающей точкой » Матричные функции » Обращение матрицы

Решение системы линейных уравнений из LU-разложения L*y = b; U*x = y. Подробнее...

Функции

void nmppmLUResolve_64f (const double *L, const double *U, const double *b, double *x, double *y, int N)

Подробное описание

Решение системы линейных уравнений из LU-разложения L*y = b; U*x = y.

Аргументы
[in] | L | Левая диагональная матрица L
[in] | U | верхняя диагональная матрица U
[in] | b | вектор b
[out] | x | вектор x
[out] | y | вектор y
[in] | N | размер

More details


nmpp: Функции обработки сигналов

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Функции обработки сигналов
Функции с плавающей точкой

Группы

Быстрое преобразование Фурье

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Быстрое преобразование Фурье

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы | Функции
Быстрое преобразование Фурье
Функции с плавающей точкой » Функции обработки сигналов

Группы

FFTFwdInitAlloc
Функции инициализации структур коэффициентов, необходимых для вычисления прямого БПФ
FFTInvInitAlloc
Функции инициализации структур коэффициентов, необходимых для вычисления обратного БПФ
DFT-8
Функция для вычисления прямого ДПФ с плавающей точкой над вектором, состоящим из 8 комплексных чисел
FFT-16
Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 16 комплексных чисел
FFT-32
Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 32 комплексных чисел
FFT-64
Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 64 комплексных чисел
FFT-128
Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 128 комплексных чисел
FFT-256
Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 256 комплексных чисел
FFT-512
Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 512 комплексных чисел
FFT-1024
Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 1024 комплексных чисел
FFT-2048
Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 2048 комплексных чисел
FFT-4096
Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 4096 комплексных чисел
IDFT-8
Функция для вычисления обратного ДПФ с плавающей точкой над вектором, состоящим из 8 комплексных чисел
IFFT-16
Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 16 комплексных чисел
IFFT-32
Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 32 комплексных чисел
IFFT-64
Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 64 комплексных чисел
IFFT-128
Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 128 комплексных чисел
IFFT-256
Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 256 комплексных чисел
IFFT-512
Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 512 комплексных чисел
IFFT-1024
IFFT-2048
Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 2048 комплексных чисел
IFFT-4096
Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 4096 комплексных чисел
FFT-Common

Функции

int nmppsFFTFree_32fcr (NmppsFFTSpec_32fcr *spec)
Функция инициализации структуры коэффициентов, необходимых для вычисления обратного БПФ с плавающей точкой над вектором длины от 8 до 2048. Подробнее...

Подробное описание

Функции

◆ nmppsFFTFree_32fcr()

int nmppsFFTFree_32fcr ( NmppsFFTSpec_32fcr * spec )

Функция инициализации структуры коэффициентов, необходимых для вычисления обратного БПФ с плавающей точкой над вектором длины от 8 до 2048.

Аргументы
[in] | spec | двойной указатель на структуру коэффициентов
[in] | order | размерность БПФ, которое нужно вычислить, например, для БПФ256 этот параметр равен 8 (т.к. 2^8 = 256)
Возвращает
Функция возвращают 0 в случае успешной инициализации и отрицательное число (от -1 и меньше) в случае ошибок

Функция освобождает память, выделенную под коэффициенты, необходимые для вычисления БПФ определенного размера

Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления обратного БПФ определенного размера
Возвращает
Функция возвращают 0 в случае успешной инициализации и отрицательное число (от -1 и меньше) в случае ошибок


nmpp: FFTFwdInitAlloc

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFTFwdInitAlloc
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функции инициализации структур коэффициентов, необходимых для вычисления прямого БПФ Подробнее...

Функции

int | nmppsFFT16FwdInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT32FwdInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT64FwdInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT128FwdInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT256FwdInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT512FwdInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT1024FwdInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT2048FwdInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT4096FwdInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)

Подробное описание

Функции инициализации структур коэффициентов, необходимых для вычисления прямого БПФ

Аргументы
[in] addr двойной указатель на структуру коэффициентов
Возвращает
Функции возвращают 0 в случае успешной инициализации и число, отличное от нуля, в случае ошибок


nmpp: FFTInvInitAlloc

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFTInvInitAlloc
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функции инициализации структур коэффициентов, необходимых для вычисления обратного БПФ Подробнее...

Функции

int | nmppsFFT16InvInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT32InvInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT64InvInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT128InvInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT256InvInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT512InvInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT1024InvInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT2048InvInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)
int | nmppsFFT4096InvInitAlloc_32fcr (NmppsFFTSpec_32fcr **addr)

Подробное описание

Функции инициализации структур коэффициентов, необходимых для вычисления обратного БПФ

Аргументы
[in] addr двойной указатель на структуру коэффициентов
Возвращает
Функции возвращают 0 в случае успешной инициализации и число, отличное от нуля, в случае ошибок


nmpp: DFT-8

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
DFT-8
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления прямого ДПФ с плавающей точкой над вектором, состоящим из 8 комплексных чисел Подробнее...

Функции

void nmppsDFT8Fwd_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)
Функция для вычисления прямого ДПФ с плавающей точкой над вектором, состоящим из 8 комплексных чисел Подробнее...

Подробное описание

Функция для вычисления прямого ДПФ с плавающей точкой над вектором, состоящим из 8 комплексных чисел

Функции

◆ nmppsDFT8Fwd_32fcr()

void nmppsDFT8Fwd_32fcr | ( | const nm32fcr * | pSrcVec,
 |  | nm32fcr * | pDstVec,
 |  | NmppsFFTSpec_32fcr * | spec
 | ) |  |

Функция для вычисления прямого ДПФ с плавающей точкой над вектором, состоящим из 8 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления прямого БПФ определенного размера


nmpp: FFT-16

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-16
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 16 комплексных чисел Подробнее...

Функции

void nmppsFFT16Fwd_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 16 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления прямого БПФ определенного размера


nmpp: FFT-32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-32
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 32 комплексных чисел Подробнее...

Функции

void nmppsFFT32Fwd_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 32 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления прямого БПФ определенного размера


nmpp: FFT-64

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-64
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 64 комплексных чисел Подробнее...

Функции

void nmppsFFT64Fwd_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 64 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления прямого БПФ определенного размера


nmpp: FFT-128

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-128
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 128 комплексных чисел Подробнее...

Функции

void nmppsFFT128Fwd_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 128 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления прямого БПФ определенного размера


nmpp: FFT-256

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-256
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 256 комплексных чисел Подробнее...

Функции

void nmppsFFT256Fwd_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 256 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления прямого БПФ определенного размера

Для достижения максимальной производительности (1763 такта) необходимо положить входной вектор в 1-ый банк, выходной вектор в 5-ый банк


nmpp: FFT-512

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-512
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 512 комплексных чисел Подробнее...

Функции

void nmppsFFT512Fwd_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 512 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления прямого БПФ определенного размера

Для достижения максимальной производительности (3675 такта) необходимо положить входной вектор в 2-ый банк, выходной вектор в 5-ый банк


nmpp: FFT-1024

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-1024
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 1024 комплексных чисел Подробнее...

Функции

void nmppsFFT1024Fwd_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 1024 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления прямого БПФ определенного размера

Для достижения максимальной производительности (8655 такта) необходимо положить входной вектор в 6-ый банк, выходной вектор в 5-ый банк


nmpp: FFT-2048

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-2048
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 2048 комплексных чисел Подробнее...

Функции

void nmppsFFT2048Fwd_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 2048 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления прямого БПФ определенного размера

Для достижения максимальной производительности (19504 такта) необходимо положить входной вектор в 5-ый банк, выходной вектор в 5-ый банк


nmpp: FFT-4096

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
FFT-4096
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 4096 комплексных чисел Подробнее...

Функции

void nmppsFFT4096Fwd_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления прямого БПФ с плавающей точкой над вектором, состоящим из 4096 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления прямого БПФ определенного размера

Для достижения максимальной производительности (54258 такта) необходимо положить входной вектор в 5-ый банк, выходной вектор в 5-ый банк


nmpp: IDFT-8

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IDFT-8
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления обратного ДПФ с плавающей точкой над вектором, состоящим из 8 комплексных чисел Подробнее...

Функции

void nmppsDFT8Inv_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления обратного ДПФ с плавающей точкой над вектором, состоящим из 8 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления обратного БПФ определенного размера


nmpp: IFFT-16

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-16
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 16 комплексных чисел Подробнее...

Функции

void nmppsFFT16Inv_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 16 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления обратного БПФ определенного размера


nmpp: IFFT-32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-32
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 32 комплексных чисел Подробнее...

Функции

void nmppsFFT32Inv_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 32 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления обратного БПФ определенного размера


nmpp: IFFT-64

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-64
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 64 комплексных чисел Подробнее...

Функции

void nmppsFFT64Inv_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 64 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления обратного БПФ определенного размера


nmpp: IFFT-128

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-128
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 128 комплексных чисел Подробнее...

Функции

void nmppsFFT128Inv_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 128 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления обратного БПФ определенного размера


nmpp: IFFT-256

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-256
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 256 комплексных чисел Подробнее...

Функции

void nmppsFFT256Inv_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 256 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления обратного БПФ определенного размера

Для достижения максимальной производительности (1763 такта) необходимо положить входной вектор в 1-ый банк, выходной вектор в 5-ый банк


nmpp: IFFT-512

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-512
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 512 комплексных чисел Подробнее...

Функции

void nmppsFFT512Inv_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 512 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления обратного БПФ определенного размера

Для достижения максимальной производительности (3675 такта) необходимо положить входной вектор в 2-ый банк, выходной вектор в 5-ый банк


nmpp: IFFT-1024

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-1024
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функции

void nmppsFFT1024Inv_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)
Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 1024 комплексных чисел Подробнее...

Подробное описание

Функции

◆ nmppsFFT1024Inv_32fcr()

void nmppsFFT1024Inv_32fcr | ( | const nm32fcr * | pSrcVec,
 |  | nm32fcr * | pDstVec,
 |  | NmppsFFTSpec_32fcr * | spec
 | ) |  |

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 1024 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления обратного БПФ определенного размера

Для достижения максимальной производительности (8655 такта) необходимо положить входной вектор в 6-ый банк, выходной вектор в 5-ый банк


nmpp: IFFT-2048

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-2048
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 2048 комплексных чисел Подробнее...

Функции

void nmppsFFT2048Inv_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 2048 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления обратного БПФ определенного размера

Для достижения максимальной производительности (19504 такта) необходимо положить входной вектор в 5-ый банк, выходной вектор в 5-ый банк


nmpp: IFFT-4096

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
IFFT-4096
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 4096 комплексных чисел Подробнее...

Функции

void nmppsFFT4096Inv_32fcr (const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)

Подробное описание

Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 4096 комплексных чисел

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления обратного БПФ определенного размера

Для достижения максимальной производительности (54258 такта) необходимо положить входной вектор в 5-ый банк, выходной вектор в 5-ый банк


nmpp: FFT-Common

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
FFT-Common
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье

Группы

IFFT-Common
Функция для вычисления прямого БПФ с плавающей точкой над вектором длины от 8 до 2048.

Подробное описание

Создано системой doxygen 1.9.5


nmpp: IFFT-Common

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
IFFT-Common
Функции с плавающей точкой » Функции обработки сигналов » Быстрое преобразование Фурье » FFT-Common

Функция для вычисления прямого БПФ с плавающей точкой над вектором длины от 8 до 2048.

Функция для вычисления прямого БПФ с плавающей точкой над вектором длины от 8 до 2048.

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления прямого БПФ определенного размера

Функция инициализации структуры коэффициентов, необходимых для вычисления прямого БПФ с плавающей точкой над вектором длины от 8 до 2048

Аргументы
[in] | spec | двойной указатель на структуру коэффициентов
[in] | order | размерность БПФ, которое нужно вычислить, например, для БПФ256 этот параметр равен 8 (т.к. 2^8 = 256)
Возвращает
Функция возвращают 0 в случае успешной инициализации и отрицательное число (от -1 и меньше) в случае ошибок

Функция для вычисления обратного БПФ с плавающей точкой над вектором длины от 8 до 2048

Аргументы
[in] pSrcVec входной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Возвращаемые значения
[out] pDstVec выходной вектор комплексных чисел (на мнимая и действительная части имеют тип float)
Аргументы
[in] spec структра, содержащая необходимые коэффициенты, для вычисления обратного БПФ определенного размера


nmpp: Базовые регистровые функции библиотеки

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Базовые регистровые функции библиотеки
Функции с плавающей точкой

Группы

Элементарные функции

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Элементарные функции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Элементарные функции
Функции с плавающей точкой » Базовые регистровые функции библиотеки

Группы

Vec_copyEvenToEven_32f
Vec_CopyOddToEven_32f

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Vec_copyEvenToEven_32f

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_copyEvenToEven_32f
Функции с плавающей точкой » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_CopyEvenToEven_32f (nmreg ar0, nmreg ar6, nmreg gr5)

Подробное описание

\~russian Ядро функций nmppsCopyEvenToEven_32f и nmppsCopyOddToOdd_32f.
\~english Core of nmppsCopyEvenToEven_32f and nmppsCopyOddToOdd_32f functions.

\~russian Функция копирует числа с плавающей точкой одинарной точности, лежащие с четного адреса, на четный:
\~english The function copies single-precision floating-point numbers from an even address to an even address
\~
\~
Аргументы
ar0 | указатель (может быть только четным) на входной массив чисел с плавающей точкой одинарной точности
ar6 | указатель (может быть только четным) на выходной массив чисел с плавающей точкой одинарной точности
gr5
размер (может быть любой) входного массива size = [0, 1, 2 ... 31, 32, 33 ...]

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0, ar6.


nmpp: Vec_CopyOddToEven_32f

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
Vec_CopyOddToEven_32f
Функции с плавающей точкой » Базовые регистровые функции библиотеки » Элементарные функции

Функции

void vec_CopyOddToEven_32f (nmreg ar0, nmreg ar6, nmreg gr5)

Подробное описание

\~russian Ядро функций nmppsCopyOddToEven_32f и nmppsCopyEvenToOdd_32f.
\~english Core of nmppsCopyOddToEven_32f and nmppsCopyEvenToOdd_32f functions.

\~russian Функция копирует числа с плавающей точкой одинарной точности, лежащие с нечетного адреса, на четный:
\~english The function copies single-precision floating-point numbers from an odd address to an even address
\~
\~
Аргументы
ar0 | указатель (может быть только нечетным) на входной массив чисел с плавающей точкой одинарной точности
ar6 | указатель (может быть только четным) на выходной массив чисел с плавающей точкой одинарной точности
gr5
размер (может быть любой кроме 0) входного массива size = [1, 2 ... 31, 32, 33 ...]

Restrictions:
При выходе из функции изменяется содержимое регистров: ar0, ar6.


nmpp: nmblas

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
nmblas
Функции с плавающей точкой

Группы

BLASS-LEVEL1
BLASS-LEVEL2
BLASS-LEVEL3

Подробное описание

Создано системой doxygen 1.9.5


nmpp: BLASS-LEVEL1

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Функции
BLASS-LEVEL1
Функции с плавающей точкой » nmblas

Функции

double | nmblas_dasum (const int N, const double *X, const int INCX)
takes the sum of the absolute values <> Подробнее...
void | nmblas_daxpy (const int N, const double A, const double *X, const int INCX, double *Y, const int INCY)
constant times a vector plus a vector <> Подробнее...
void | nmblas_dcopy (const int N, const double *X, const int INCX, double *Y, const int INCY)
copies a vector, X, to a vector, Y Подробнее...
double | nmblas_ddot (const int N, const double *X, const int INCX, const double *Y, const int INCY)
forms the dot product of two vectors. Подробнее...
double | nmblas_dnrm2 (const int N, const double *x, const int INCX)
returns the euclidean norm of a vector via the function name, so that SCNRM2 := sqrt( x**H*x ) Подробнее...
void | nmblas_drot (const int N, double *X, const int INCX, double *Y, const int INCY, const double C, const double S)
applies a plane rotation <> Подробнее...
void | nmblas_drotg (double *A, double *B, double *C, double *S)
construct givens plane rotation <> Подробнее...
void | nmblas_drotm (const int N, double *X, const int INCX, double *Y, const int INCY, double *param)
Apply a Given's rotation constructed by DROTMG. <> Подробнее...
void | nmblas_dscal (const int N, const double ALPHA, double *X, const int INCX)
scales a vector by a constant <> Подробнее...
double | nmblas_dsdot (const int N, const float *X, const int INCX, const float *Y, const int INCY)
Compute the inner product of two vectors with double precision accumulation. <> Подробнее...
void | nmblas_dswap (const int N, double *X, const int INCX, double *Y, const int INCY)
interchanges two vectors <> Подробнее...
double | nmblas_dznrm2 (const int N, const double *X, const int INCX)
returns the euclidean norm of a vector via the function name, so that DZNRM2 := sqrt( x**H*x ) <> Подробнее...
int | nmblas_idamax (const int N, const double *X, const int INCX)
finds the index of the first element having maximum absolute value. Подробнее...
int | nmblas_isamax (const int N, const float *X, const int INCX)
finds the index of the first element having maximum absolute value. Подробнее...
float | nmblas_sasum (const int N, const float *X, const int INCX)
takes the sum of the absolute values Подробнее...
void | nmblas_saxpy (int N, const float A, const float *X, const int INCX, float *Y, const int INCY)
constant times a vector plus a vector Подробнее...
float | nmblas_scnrm2 (const int N, const float *X, const int INCX)
returns the euclidean norm of a vector via the function name, so that SCNRM2 := sqrt( x**H*x ) Подробнее...
void | nmblas_scopy (const int N, const float *X, const int INCX, float *Y, const int INCY)
copies a vector, X, to a vector, Y Подробнее...
float | nmblas_sdot (const int N, const float *X, const int INCX, const float *Y, const int INCY)
SDOT forms the dot product of two vectors. Подробнее...
float | nmblas_sdsdot (const int N, const float B, const float *X, const int INCX, const float *Y, const int INCY)
Compute the inner product of two vectors with double precision accumulation. <> Подробнее...
float | nmblas_snrm2 (const int N, const float *X, const int INCX)
SNRM2 returns the euclidean norm of a vector via the function name, so that SNRM2 := sqrt( x'*x ). <> Подробнее...
void | nmblas_srot (const int N, float *X, const int INCX, float *Y, const int INCY, const float C, const float S)
applies a plane rotation <> Подробнее...
void | nmblas_srotm (const int N, float *X, const int INCX, float *Y, const int INCY, float *param)
Apply a Given's rotation constructed by SROTMG. <> Подробнее...
void | nmblas_sscal (const int N, const float A, const float *X, const int INCX)
scales a vector by a constant <> Подробнее...
void | nmblas_sswap (const int N, const float *X, const int INCX, const float *Y, const int INCY)
interchanges two vectors <> Подробнее...

Подробное описание

Функции

◆ nmblas_dasum()

double nmblas_dasum | ( | const int | N,
 |  | const double * | X,
 |  | const int | INCX
 | ) |  |

takes the sum of the absolute values <>

Аргументы
[in] | N | number of elements in input vector
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX )
[in] | INCX | storage spacing between elements of X
Возвращает
the sum of the absolute values.

◆ nmblas_daxpy()

void nmblas_daxpy | ( | const int | N,
 |  | const double | A,
 |  | const double * | X,
 |  | const int | INCX,
 |  | double * | Y,
 |  | const int | INCY
 | ) |  |

constant times a vector plus a vector <>

Аргументы
[in] | N | number of elements in input vector
[in] | A | specifies the scalar alpha
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX )
[in] | INCX | storage spacing between elements of X
[in,out] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y

◆ nmblas_dcopy()

void nmblas_dcopy | ( | const int | N,
 |  | const double * | X,
 |  | const int | INCX,
 |  | double * | Y,
 |  | const int | INCY
 | ) |  |

copies a vector, X, to a vector, Y

Аргументы
[in] | N | number of elements in input vector
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX )
[in] | INCX | storage spacing between elements of X
[out] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y

◆ nmblas_ddot()

double nmblas_ddot | ( | const int | N,
 |  | const double * | X,
 |  | const int | INCX,
 |  | const double * | Y,
 |  | const int | INCY
 | ) |  |

forms the dot product of two vectors.

Аргументы
[in] | N | number of elements in input vector
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX )
[in] | INCX | storage spacing between elements of X
[in] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y
Возвращает
Return dot product of two vectors

◆ nmblas_dnrm2()

double nmblas_dnrm2 | ( | const int | N,
 |  | const double * | x,
 |  | const int | INCX
 | ) |  |

returns the euclidean norm of a vector via the function name, so that SCNRM2 := sqrt( x**H*x )

Аргументы
[in] | N | number of elements in input vector
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX )
[in] | INCX | storage spacing between elements of X
Возвращает
euclidean norm

◆ nmblas_drot()

void nmblas_drot | ( | const int | N,
 |  | double * | X,
 |  | const int | INCX,
 |  | double * | Y,
 |  | const int | INCY,
 |  | const double | C,
 |  | const double | S
 | ) |  |

applies a plane rotation <>

Аргументы
[in] | N | number of elements in input vector
[in,out] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX ) )
[in] | INCX | storage spacing between elements of X
[in,out] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y
[in] | C
[in] | S

◆ nmblas_drotg()

void nmblas_drotg | ( | double * | A,
 |  | double * | B,
 |  | double * | C,
 |  | double * | S
 | ) |  |

construct givens plane rotation <>

Аргументы
[in] | A
[in] | B
[in] | C
[out] | S

◆ nmblas_drotm()

void nmblas_drotm | ( | const int | N,
 |  | double * | X,
 |  | const int | INCX,
 |  | double * | Y,
 |  | const int | INCY,
 |  | double * | param
 | ) |  |

Apply a Given's rotation constructed by DROTMG. <>

Аргументы
[in] | N | number of elements in input vector
[in,out] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX ) )
[in] | INCX | storage spacing between elements of X
[in,out] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y
[in] | param | array, dimension (5). The rotation values constructed by SROTMG

◆ nmblas_dscal()

void nmblas_dscal | ( | const int | N,
 |  | const double | ALPHA,
 |  | double * | X,
 |  | const int | INCX
 | ) |  |

scales a vector by a constant <>

Аргументы
[in] | N | number of elements in input vector
[in] | A | specifies the scalar alpha.
[in,out] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX ) )
[in] | INCX | storage spacing between elements of X

◆ nmblas_dsdot()

double nmblas_dsdot | ( | const int | N,
 |  | const float * | X,
 |  | const int | INCX,
 |  | const float * | Y,
 |  | const int | INCY
 | ) |  |

Compute the inner product of two vectors with double precision accumulation. <>

Аргументы
[in] | N | number of elements in input vector
[in] | B | single precision scalar to be added to inner product
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) single precision vector with N elementsr
[in] | INCX | storage spacing between elements of X
[in] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y
Возвращает
Returns D.P. dot product accumulated in D.P., for S.P. SX and SY DSDOT = sum for I = 0 to N-1 of SX(LX+I*INCX) * SY(LY+I*INCY), where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is defined in a similar way using INCY.

◆ nmblas_dswap()

void nmblas_dswap | ( | const int | N,
 |  | double * | X,
 |  | const int | INCX,
 |  | double * | Y,
 |  | const int | INCY
 | ) |  |

interchanges two vectors <>

Аргументы
[in] | N | number of elements in input vector
[in,out] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX ) )
[in] | INCX | storage spacing between elements of X
[in,out] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y
Возвращает

◆ nmblas_dznrm2()

double nmblas_dznrm2 | ( | const int | N,
 |  | const double * | X,
 |  | const int | INCX
 | ) |  |

returns the euclidean norm of a vector via the function name, so that DZNRM2 := sqrt( x**H*x ) <>

Аргументы
[in] | N | number of elements in input vector
[in] | X | COMPLEX*16 array of DIMENSION at least ( 1 + ( m - 1 )*abs( INCX ) )
[in] | INCX | storage spacing between elements of X
Возвращает
euclidean norm

◆ nmblas_idamax()

int nmblas_idamax | ( | const int | N,
 |  | const double * | X,
 |  | const int | INCX
 | ) |  |

finds the index of the first element having maximum absolute value.

Аргументы
[in] | N | number of elements in input vector
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX ))
[in] | INCX | storage spacing between elements of X
Возвращает
index of the first element having maximum absolute value.

◆ nmblas_isamax()

int nmblas_isamax | ( | const int | N,
 |  | const float * | X,
 |  | const int | INCX
 | ) |  |

finds the index of the first element having maximum absolute value.

Аргументы
[in] | N | number of elements in input vector
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX )
[in] | INCX | storage spacing between elements of X
Возвращает
index of the first element having maximum absolute value.

◆ nmblas_sasum()

float nmblas_sasum | ( | const int | N,
 |  | const float * | X,
 |  | const int | INCX
 | ) |  |

takes the sum of the absolute values

Аргументы
[in] | N | number of elements in input vector
[in] | A | specifies the scalar alpha
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX )
Возвращает
sum of the absolute values

◆ nmblas_saxpy()

void nmblas_saxpy | ( | int | N,
 |  | const float | A,
 |  | const float * | X,
 |  | const int | INCX,
 |  | float * | Y,
 |  | const int | INCY
 | ) |  |

constant times a vector plus a vector

Аргументы
[in] | N | number of elements in input vector
[in] | A | specifies the scalar alpha
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX )
[in] | INCX | storage spacing between elements of X
[in,out] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y

◆ nmblas_scnrm2()

float nmblas_scnrm2 | ( | const int | N,
 |  | const float * | X,
 |  | const int | INCX
 | ) |  |

returns the euclidean norm of a vector via the function name, so that SCNRM2 := sqrt( x**H*x )

Аргументы
[in] | N | number of elements in input vector
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX )
[in] | INCX | storage spacing between elements of X
Возвращает
euclidean norm

◆ nmblas_scopy()

void nmblas_scopy | ( | const int | N,
 |  | const float * | X,
 |  | const int | INCX,
 |  | float * | Y,
 |  | const int | INCY
 | ) |  |

copies a vector, X, to a vector, Y

Аргументы
[in] | N | number of elements in input vector
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX )
[in] | INCX | storage spacing between elements of X
[out] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y

◆ nmblas_sdot()

float nmblas_sdot | ( | const int | N,
 |  | const float * | X,
 |  | const int | INCX,
 |  | const float * | Y,
 |  | const int | INCY
 | ) |  |

SDOT forms the dot product of two vectors.

Аргументы
[in] | N | number of elements in input vector
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX )
[in] | INCX | storage spacing between elements of X
[in] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y
Возвращает
Return dot product of two vectors

◆ nmblas_sdsdot()

float nmblas_sdsdot | ( | const int | N,
 |  | const float | B,
 |  | const float * | X,
 |  | const int | INCX,
 |  | const float * | Y,
 |  | const int | INCY
 | ) |  |

Compute the inner product of two vectors with double precision accumulation. <>

Аргументы
[in] | N | number of elements in input vector
[in] | B | single precision scalar to be added to inner product
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) single precision vector with N elementsr
[in] | INCX | storage spacing between elements of X
[in] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y
Возвращает
Returns S.P. result with dot product accumulated in D.P. SDSDOT = SB + sum for I = 0 to N-1 of SX(LX+I*INCX)*SY(LY+I*INCY), where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is defined in a similar way using INCY.

◆ nmblas_snrm2()

float nmblas_snrm2 | ( | const int | N,
 |  | const float * | X,
 |  | const int | INCX
 | ) |  |

SNRM2 returns the euclidean norm of a vector via the function name, so that SNRM2 := sqrt( x'*x ). <>

Аргументы
[in] | N | number of elements in input vector
[in] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX ) )
[in] | INCX | storage spacing between elements of X
Возвращает
euclidean norm

◆ nmblas_srot()

void nmblas_srot | ( | const int | N,
 |  | float * | X,
 |  | const int | INCX,
 |  | float * | Y,
 |  | const int | INCY,
 |  | const float | C,
 |  | const float | S
 | ) |  |

applies a plane rotation <>

Аргументы
[in] | N | number of elements in input vector
[in,out] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX ) )
[in] | INCX | storage spacing between elements of X
[in,out] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y
[in] | C
[in] | S

◆ nmblas_srotm()

void nmblas_srotm | ( | const int | N,
 |  | float * | X,
 |  | const int | INCX,
 |  | float * | Y,
 |  | const int | INCY,
 |  | float * | param
 | ) |  |

Apply a Given's rotation constructed by SROTMG. <>

Аргументы
[in] | N | number of elements in input vector
[in,out] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX ) )
[in] | INCX | storage spacing between elements of X
[in,out] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y
[in] | param | array, dimension (5). The rotation values constructed by SROTMG

◆ nmblas_sscal()

void nmblas_sscal | ( | const int | N,
 |  | const float | A,
 |  | const float * | X,
 |  | const int | INCX
 | ) |  |

scales a vector by a constant <>

Аргументы
[in] | N | number of elements in input vector
[in] | A | specifies the scalar alpha.
[in,out] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX ) )
[in] | INCX | storage spacing between elements of X

◆ nmblas_sswap()

void nmblas_sswap | ( | const int | N,
 |  | const float * | X,
 |  | const int | INCX,
 |  | const float * | Y,
 |  | const int | INCY
 | ) |  |

interchanges two vectors <>

Аргументы
[in] | N | number of elements in input vector
[in,out] | X | array, dimension ( 1 + ( N - 1 )*abs( INCX ) )
[in] | INCX | storage spacing between elements of X
[in,out] | Y | array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
[in] | INCY | storage spacing between elements of Y


nmpp: BLASS-LEVEL2

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
BLASS-LEVEL2
Функции с плавающей точкой » nmblas
void | nmblas_sgemv (const enum nm_trans TRANS, const int M, const int N, const float ALPHA, const float *A, const int LDA, const float *X, const int INCX, const float BETA, float *Y, const int INCY)
 | performs one of the matrix-vector operations y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, where alpha and beta are scalars, x and y are vectors and A is an m by n matrix. Подробнее...
void | nmblas_dgemv (const enum nm_trans TRANS, const int M, const int N, const double ALPHA, const double *A, const int LDA, const double *X, const int INCX, const double BETA, double *Y, const int INCY)
 | performs one of the matrix-vector operations y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, where alpha and beta are scalars, x and y are vectors and A is an m by n matrix. Подробнее...
void | nmblas_sger (const int M, const int N, const float ALPHA, const float *X, const int INCX, const float *Y, const int INCY, float *A, const int LDA)
 | perform the rank 1 operation A := alpha*x*y' + A, where alpha is a scalar, x is an m element vector, y is an n element vector and A is an m by n matrix. Подробнее...

Подробное описание

Функции

◆ nmblas_dgemv()

void nmblas_dgemv | ( | const enum nm_trans | TRANS,
 |  | const int | M,
 |  | const int | N,
 |  | const double | ALPHA,
 |  | const double * | A,
 |  | const int | LDA,
 |  | const double * | X,
 |  | const int | INCX,
 |  | const double | BETA,
 |  | double * | Y,
 |  | const int | INCY
 | ) |  |

performs one of the matrix-vector operations y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, where alpha and beta are scalars, x and y are vectors and A is an m by n matrix.

Аргументы
[in] TRANS is CHARACTER*1 On entry, TRANS specifies the operation to be performed as follows:

TRANS = 'N' or 'n' y := alpha*A*x + beta*y.

TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.

TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y.

Аргументы
[in] | M | specifies the number of rows of the matrix A. M must be at least zero.
[in] | N | specifies the number of columns of the matrix A. N must be at least zero.
[in] | ALPHA | LPHA specifies the scalar alpha
[in] | A | array, dimension ( LDA, N ) Before entry, the leading m by n part of the array A must contain the matrix of coefficients
[in] | LDA | specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, m ).
[in] | X | array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( m - 1 )*abs( INCX ) ) otherwise. Before entry, the incremented array X must contain the vector x.
[in] | INCX | INCX specifies the increment for the elements of X. INCX must not be zero.
[in] | BETA | specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input.
[in,out] | Y | is REAL array, dimension at least ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( n - 1 )*abs( INCY ) ) otherwise. Before entry with BETA non-zero, the incremented array Y must contain the vector y. On exit, Y is overwritten by the updated vector y.
[in] | INCY | specifies the increment for the elements of Y. INCY must not be zero.
Возвращает

◆ nmblas_sgemv()

void nmblas_sgemv | ( | const enum nm_trans | TRANS,
 |  | const int | M,
 |  | const int | N,
 |  | const float | ALPHA,
 |  | const float * | A,
 |  | const int | LDA,
 |  | const float * | X,
 |  | const int | INCX,
 |  | const float | BETA,
 |  | float * | Y,
 |  | const int | INCY
 | ) |  |

performs one of the matrix-vector operations y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, where alpha and beta are scalars, x and y are vectors and A is an m by n matrix.

Аргументы
[in] TRANS is CHARACTER*1 On entry, TRANS specifies the operation to be performed as follows:

TRANS = 'N' or 'n' y := alpha*A*x + beta*y.

TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.

TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y.

Аргументы
[in] | M | specifies the number of rows of the matrix A. M must be at least zero.
[in] | N | specifies the number of columns of the matrix A. N must be at least zero.
[in] | ALPHA | LPHA specifies the scalar alpha
[in] | A | array, dimension ( LDA, N ) Before entry, the leading m by n part of the array A must contain the matrix of coefficients
[in] | LDA | specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, m ).
[in] | X | array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( m - 1 )*abs( INCX ) ) otherwise. Before entry, the incremented array X must contain the vector x.
[in] | INCX | INCX specifies the increment for the elements of X. INCX must not be zero.
[in] | BETA | specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input.
[in,out] | Y | is REAL array, dimension at least ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n' and at least ( 1 + ( n - 1 )*abs( INCY ) ) otherwise. Before entry with BETA non-zero, the incremented array Y must contain the vector y. On exit, Y is overwritten by the updated vector y.
[in] | INCY | specifies the increment for the elements of Y. INCY must not be zero.
Возвращает

◆ nmblas_sger()

void nmblas_sger | ( | const int | M,
 |  | const int | N,
 |  | const float | ALPHA,
 |  | const float * | X,
 |  | const int | INCX,
 |  | const float * | Y,
 |  | const int | INCY,
 |  | float * | A,
 |  | const int | LDA
 | ) |  |

perform the rank 1 operation A := alpha*x*y' + A, where alpha is a scalar, x is an m element vector, y is an n element vector and A is an m by n matrix.

Аргументы
[in] | M | M is INTEGER On entry, M specifies the number of rows of the matrix A. M must be at least zero.
[in] | N | N is INTEGER On entry, N specifies the number of columns of the matrix A. N must be at least zero.
[in] | ALPHA | ALPHA is REAL On entry, ALPHA specifies the scalar alpha.
[in] | X | X is REAL array, dimension at least ( 1 + ( m - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the m element vector x.
[in] | INCX | INCX is INTEGER On entry, INCX specifies the increment for the elements of X. INCX must not be zero.
[in] | Y | Y is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y.
[in] | INCY | INCY is INTEGER On entry, INCY specifies the increment for the elements of Y. INCY must not be zero.
[in] | INCX | INCX specifies the increment for the elements of X. INCX must not be zero.
[in,out] | A | A is REAL array, dimension ( LDA, N ) Before entry, the leading m by n part of the array A must contain the matrix of coefficients. On exit, A is overwritten by the updated matrix.
[in] | LDA | LDA is INTEGER On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, m ).
Возвращает


nmpp: BLASS-LEVEL3

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Файлы
BLASS-LEVEL3
Функции с плавающей точкой » nmblas

Файлы

файл nmblas_sgemm.h
part of nmblas library, sgemm function implementation

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Файл g:/nmpp/include/nmblas/nmblas_sgemm.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmblas
Файл nmblas_sgemm.h
Функции с плавающей точкой » nmblas » BLASS-LEVEL3

part of nmblas library, sgemm function implementation Подробнее...

См. исходные тексты.

Подробное описание

part of nmblas library, sgemm function implementation

single precision matrix multiplication implementation

C = alpha*A*B + beta*C

see blas\cblas docs for detailed description

limitations: M, N, K, ld* must be all even, all matrix rows must be even aligned

limitations: row major (C order, not Fortran) only

limitations: TransA is not supported yet

Автор
leshabirukov
Версия
1.0
Дата
2018-07-26
Аргументы
[in] | TransA | transpose first multiplicand (A) flag
[in] | TransB | transpose second multiplicand (B) flag
[in] | M | number of rows of the matrix A and C
[in] | N | number of columns of the matrix B and C
[in] | K | number of rows of the matrix B and of columns of the matrix C
[in] | alpha | specifies the scalar alpha
[in] | A | pointer to the first multiplicand
[in] | lda | A stride, first dimension of A holder
[in] | B | pointer to the second multiplicand
[in] | ldb | B stride, first dimension of B holder
[in] | beta | specifies the scalar beta
[in,out] | C | pointer to accumulator matrix
[in] | ldc | C stride, first dimension of C holder
Предупреждения
Авторство
(c) RC Module Inc.


nmpp: Типы данных

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Группы
Типы данных

Группы

Типы векторных данных
Типы скалярных данных

Подробное описание

Создано системой doxygen 1.9.5


nmpp: Типы векторных данных

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Структуры данных | Определения типов
Типы векторных данных
Типы данных

Структуры данных

struct | v16nm4s
struct | v4nm8s
struct | s_v8nm8s
struct | s_v16nm8s
struct | s_v4nm16s
struct | s_v8nm16s
struct | s_v16nm16s
struct | s_v2nm32s
struct | s_v4nm32s
struct | s_v8nm32s
struct | s_v16nm32s
struct | s_v16nm4u
struct | s_v4nm8u
struct | s_v8nm8u
struct | s_v16nm8u
struct | s_v4nm16u
struct | s_v8nm16u
struct | s_v16nm16u
struct | s_v2nm32u
struct | s_v4nm32u
struct | s_v8nm32u
struct | s_v16nm32u

Определения типов

typedef int | nm1
typedef void | nm2s
typedef void | nm4s
typedef char | nm8s
typedef nm8s | nm8s7b
typedef short | nm16s
typedef nm16s | nm16s15b
typedef int | nm32s
typedef int | nm32s31b
typedef int | nm32s30b
typedef long long | nm64s
typedef nm64s | nm64s63b
typedef void | nm2u
typedef void | nm4u
typedef nm4u | nm4u3b
typedef unsigned char | nm8u
typedef nm8u | nm8u7b
typedef unsigned short | nm16u
typedef nm16u | nm16u15b
typedef unsigned int | nm32u
typedef unsigned int | nm32u31b
typedef unsigned long long | nm64u
typedef struct s_v8nm8s | v8nm8s
typedef struct s_v16nm8s | v16nm8s
typedef struct s_v4nm16s | v4nm16s
typedef struct s_v8nm16s | v8nm16s
typedef struct s_v16nm16s | v16nm16s
typedef struct s_v2nm32s | v2nm32s
typedef struct s_v4nm32s | v4nm32s
typedef struct s_v8nm32s | v8nm32s
typedef struct s_v16nm32s | v16nm32s
typedef v16nm8s | v16nm8s7b
typedef struct s_v16nm4u | v16nm4u
typedef struct s_v4nm8u | v4nm8u
typedef struct s_v8nm8u | v8nm8u
typedef struct s_v16nm8u | v16nm8u
typedef struct s_v4nm16u | v4nm16u
typedef struct s_v8nm16u | v8nm16u
typedef struct s_v16nm16u | v16nm16u
typedef struct s_v2nm32u | v2nm32u
typedef struct s_v4nm32u | v4nm32u
typedef struct s_v8nm32u | v8nm32u
typedef struct s_v16nm32u | v16nm32u
typedef v16nm4u | v16nm4b3u

Подробное описание

В данном разделе описываются типы векторных данных с которыми могут работать функции библиотеки, задействующие векторный узел. Также рассматриваюся соглашения о передаче параметров.
Поскольку векторный узел работает с данными произвольной разрядности, упакованными в 64-разрядные слова, то это накладывает следующие ограничения на работу с массивами данных и их типами:

  1. Указатель на векторные данные всегда являтся четным адресом. Т.е. выровнен в памяти по границе 64р. слов.
  2. Размер массива, передаваемый на вход функций, как правило, исчисляется в отдельных элементах, составляющих этот массив.
    Кратность этого размера по умолчанию определяется кол-вом чисел, упакованных в 64р. слово.
    Например:
    для nm8s кратность-8
    для nm16s кратность-4
    для nm32s кратность-2
    для nm64s кратность-1
    Если в описании указаны другие условия крaтности, как например [32,64,96,128...], то это означает, что допустимые размеры могут только из этого диапазона с кратностью 32.
  3. Типы nm8s , nm16s, nm32s... хоть и созданы для обозначания разрядности упакованных данных, но с точки зрения С++ таковыми не являются , так как определяются через typedef как производные от стандартных типов char, short и int, которые все три в свою очередь являются 32-разрядными типами в архитектуре NeuroMatrix. Поэтому эти векторные типы можно использовать только с оператором * (nm8s*,nm16s*,... ). Операции же sizeof() к массивам этих типов будут выполянться некорректно.

Расшифровка мнемоники в названии типа:

  1. Префикс nm - означет что данные являются векторными ,упакованными в 64р слова (nm8s,nm8u,nm16s.... ).
  2. Разрядность данных указывается после префикса nm (nm8s,nm8u - байтовые массивы, nm16s,nm16u - 16р. массивы ).
  3. суфикс s или u оначает знаковый или беззнаковый тип данных.
  4. Для работы некоторых функций во избежании переполнения требуется суженный диапазон возможных значений, чем позволяет разрядность. Такие даные имеют суффикс в виде кол-ва значащих бит в слове и символом b. (nm8s7b)

Типы

◆ nm1

typedef int nm1
\~

Большинство функций библиотеки получают и возвращают массивы упакованных чисел. Обращение к элементам данных массивов должно производится с помощью функций доступа к элементам Getval() and Setval().

\~

Тип характеризует векторные данные как массив одноразрядных чисел.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 64.

Диапазон значений:

◆ nm16s

typedef short nm16s

Тип характеризует векторные данные как массив 16-ти разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 4.

Диапазон значений:

.

◆ nm16s15b

typedef nm16s nm16s15b

Тип характеризует векторные данные как массив 16-ти разрядных чисел со знаком с ограниченным диапазоном принимаемых значений.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 4.

Диапазон значений:

◆ nm16u

typedef unsigned short nm16u

Тип характеризует векторные данные как массив 16-ти разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 4.

Диапазон значений:

.

◆ nm16u15b

typedef nm16u nm16u15b

Тип характеризует векторные данные как массив 16-ти разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 4.

Диапазон значений:

.

◆ nm2s

typedef void nm2s

Тип характеризует векторные данные как массив 2-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 32.

Диапазон значений:

◆ nm2u

typedef void nm2u

Тип характеризует векторные данные как массив 2-х разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 32.

Диапазон значений:

◆ nm32s

typedef int nm32s

Тип характеризует векторные данные как массив 32-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 2.

Диапазон значений:

.

◆ nm32s30b

typedef int nm32s30b

Тип характеризует векторные данные как массив 32-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 2.

Диапазон значений:

.

◆ nm32s31b

typedef int nm32s31b

Тип характеризует векторные данные как массив 32-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 2.

Диапазон значений:

.

◆ nm32u

typedef unsigned int nm32u

Тип характеризует векторные данные как массив 32-х разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 2.

Диапазон значений

.

◆ nm32u31b

typedef unsigned int nm32u31b

Тип характеризует векторные данные как массив 32-х разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 2.

Диапазон значений

.

◆ nm4s

typedef void nm4s

Тип характеризует векторные данные как массив 4-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 16.

Диапазон значений:

◆ nm4u

typedef void nm4u

Тип характеризует векторные данные как массив 4-х разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 16.

Диапазон значений:

◆ nm4u3b

typedef nm4u nm4u3b

Тип характеризует векторные данные как массив 4-х разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 16.

Диапазон значений:

◆ nm64s

typedef long long nm64s

Тип характеризует векторные данные как массив 64-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
По умолчанию размер массива произвольный .

Диапазон значений:

◆ nm64s63b

typedef nm64s nm64s63b

Тип характеризует векторные данные как массив 64-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
По умолчанию размер массива произвольный .

Диапазон значений:

◆ nm64u

typedef unsigned long long nm64u

Тип характеризует векторные данные как массив 64-х разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
По умолчанию размер массива произвольный .

Диапазон значений

.

◆ nm8s

typedef char nm8s

Тип характеризует векторные данные как массив 8-ми разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 8.

Диапазон значений:

◆ nm8s7b

typedef nm8s nm8s7b

Тип характеризует векторные данные как массив 8-ми разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 8.

Диапазон значений:

◆ nm8u

typedef unsigned char nm8u

Тип характеризует векторные данные как массив 8-ми разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 8.

Диапазон значений:

◆ nm8u7b

typedef nm8u nm8u7b

Тип характеризует векторные данные как массив 8-ми разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 8.

Диапазон значений:

◆ v16nm16s

typedef struct s_v16nm16s v16nm16s
\~

Тип векторной структуры, состоящей из 16-ти 16р. чисел со знаком.

◆ v16nm16u

typedef struct s_v16nm16u v16nm16u
\~

Тип векторной структуры, состоящей из 16-ти 16р. чисел без знака.

◆ v16nm32s

typedef struct s_v16nm32s v16nm32s
\~

Тип векторной структуры, состоящей из 16-ти 32р. чисел со знаком.

◆ v16nm32u

typedef struct s_v16nm32u v16nm32u
\~

Тип векторной структуры, состоящей из 16-ти 32р. чисел без знака.

◆ v16nm4b3u

typedef v16nm4u v16nm4b3u
\~

Тип векторной структуры, состоящей из 16-ти 32р. чисел со знаком.

Диапазон значений элементов структуры:

◆ v16nm4u

typedef struct s_v16nm4u v16nm4u

Тип векторной структуры, состоящей из 16-ти 4-р. чисел без знака.

◆ v16nm8s

typedef struct s_v16nm8s v16nm8s
\~

Тип векторной структуры, состоящей из 16-ти 8р. чисел со знаком.

◆ v16nm8s7b

typedef v16nm8s v16nm8s7b
\~

Тип векторной структуры, состоящей из 16-ти 32р. чисел со знаком.

Диапазон значений элементов структуры:

◆ v16nm8u

typedef struct s_v16nm8u v16nm8u
\~

Тип векторной структуры, состоящей из 16-ти 8р. чисел без знака.

◆ v2nm32s

typedef struct s_v2nm32s v2nm32s
\~

Тип векторной структуры, состоящей из 2-х 32р. чисел со знаком.

◆ v2nm32u

typedef struct s_v2nm32u v2nm32u
\~

Тип векторной структуры, состоящей из 2-х 32р. чисел без знака.

◆ v4nm16s

typedef struct s_v4nm16s v4nm16s
\~

Тип векторной структуры, состоящей из 4-х 16р. чисел со знаком.

◆ v4nm16u

typedef struct s_v4nm16u v4nm16u
\~

Тип векторной структуры, состоящей из 4-х 16р. чисел без знака.

◆ v4nm32s

typedef struct s_v4nm32s v4nm32s
\~

Тип векторной структуры, состоящей из 4-х 32р. чисел со знаком.

◆ v4nm32u

typedef struct s_v4nm32u v4nm32u
\~

Тип векторной структуры, состоящей из 4-х 32р. чисел без знака.

◆ v4nm8u

typedef struct s_v4nm8u v4nm8u
\~

Тип векторной структуры, состоящей из 4-х 8р. чисел без знака.

◆ v8nm16s

typedef struct s_v8nm16s v8nm16s
\~

Тип векторной структуры, состоящей из 8-ми 16р. чисел со знаком.

◆ v8nm16u

typedef struct s_v8nm16u v8nm16u
\~

Тип векторной структуры, состоящей из 8-ми 16р. чисел без знака.

◆ v8nm32s

typedef struct s_v8nm32s v8nm32s
\~

Тип векторной структуры, состоящей из 8-ми 32р. чисел со знаком.

◆ v8nm32u

typedef struct s_v8nm32u v8nm32u
\~

Тип векторной структуры, состоящей из 8-ми 32р. чисел без знака.

◆ v8nm8s

typedef struct s_v8nm8s v8nm8s
\~

Тип векторной структуры, состоящей из 8-ми 8р. чисел со знаком.

◆ v8nm8u

typedef struct s_v8nm8u v8nm8u
\~

Тип векторной структуры, состоящей из 8-ми 8р. чисел без знака.


nmpp: Структура v16nm4s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура v16nm4s
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [1]

Подробное описание

Тип векторной структуры, состоящей из 16-ти 4-р. чисел со знаком.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура v4nm8s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура v4nm8s
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [1]

Подробное описание

\~

Тип векторной структуры, состоящей из 4-х 8р. чисел со знаком.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v8nm8s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v8nm8s
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [1]

Подробное описание

\~

Тип векторной структуры, состоящей из 8-ми 8р. чисел со знаком.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v16nm8s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v16nm8s
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [2]

Подробное описание

\~

Тип векторной структуры, состоящей из 16-ти 8р. чисел со знаком.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v4nm16s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v4nm16s
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [1]

Подробное описание

\~

Тип векторной структуры, состоящей из 4-х 16р. чисел со знаком.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v8nm16s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v8nm16s
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [2]

Подробное описание

\~

Тип векторной структуры, состоящей из 8-ми 16р. чисел со знаком.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v16nm16s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v16nm16s
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [4]

Подробное описание

\~

Тип векторной структуры, состоящей из 16-ти 16р. чисел со знаком.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v2nm32s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v2nm32s
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [1]

Подробное описание

\~

Тип векторной структуры, состоящей из 2-х 32р. чисел со знаком.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v4nm32s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v4nm32s
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [2]

Подробное описание

\~

Тип векторной структуры, состоящей из 4-х 32р. чисел со знаком.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v8nm32s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v8nm32s
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [4]

Подробное описание

\~

Тип векторной структуры, состоящей из 8-ми 32р. чисел со знаком.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v16nm32s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v16nm32s
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [8]

Подробное описание

\~

Тип векторной структуры, состоящей из 16-ти 32р. чисел со знаком.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v16nm4u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v16nm4u
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [1]

Подробное описание

Тип векторной структуры, состоящей из 16-ти 4-р. чисел без знака.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v4nm8u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v4nm8u
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [1]

Подробное описание

\~

Тип векторной структуры, состоящей из 4-х 8р. чисел без знака.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v8nm8u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v8nm8u
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [1]

Подробное описание

\~

Тип векторной структуры, состоящей из 8-ми 8р. чисел без знака.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v16nm8u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v16nm8u
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [2]

Подробное описание

\~

Тип векторной структуры, состоящей из 16-ти 8р. чисел без знака.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v4nm16u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v4nm16u
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [1]

Подробное описание

\~

Тип векторной структуры, состоящей из 4-х 16р. чисел без знака.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v8nm16u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v8nm16u
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [2]

Подробное описание

\~

Тип векторной структуры, состоящей из 8-ми 16р. чисел без знака.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v16nm16u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v16nm16u
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [4]

Подробное описание

\~

Тип векторной структуры, состоящей из 16-ти 16р. чисел без знака.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v2nm32u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v2nm32u
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [1]

Подробное описание

\~

Тип векторной структуры, состоящей из 2-х 32р. чисел без знака.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v4nm32u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v4nm32u
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [2]

Подробное описание

\~

Тип векторной структуры, состоящей из 4-х 32р. чисел без знака.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v8nm32u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v8nm32u
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [4]

Подробное описание

\~

Тип векторной структуры, состоящей из 8-ми 32р. чисел без знака.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v16nm32u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v16nm32u
Типы данных » Типы векторных данных

#include <nmtype.h>

Поля данных

unsigned long long vec [8]

Подробное описание

\~

Тип векторной структуры, состоящей из 16-ти 32р. чисел без знака.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Типы скалярных данных

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
Определения типов
Типы скалярных данных
Типы данных

Определения типов

typedef int | int1b
typedef int | int2b
typedef int | int3b
typedef int | int4b
typedef int | int7b
typedef int | int8b
typedef int | int15b
typedef int | int16b
typedef int | int30b
typedef int | int31b
typedef int | int32b
typedef INT64 | int63b
typedef INT64 | int64b
typedef unsigned int | uint1b
typedef unsigned int | uint2b
typedef unsigned int | uint3b
typedef unsigned int | uint4b
typedef unsigned int | uint7b
typedef unsigned int | uint8b
typedef unsigned int | uint15b
typedef unsigned int | uint16b
typedef unsigned int | uint31b
typedef unsigned int | uint32b
typedef UINT64 | uint63b
typedef nm64u | uint64b

Подробное описание

Назначением данной библиотеки является предоставление базовых операций по обработке одномерных массивов (векторов) для процессоров семейства NeroMatrix.

В состав библиотеки входят логические и арифметические функции, операции сравнения, инициализации, копирования, преобразования разрядностей и т.п. Библиотека предназначена для быстрой разработки эффективных пользовательских программ как на языке высокого уровня(С++), так и на языке ассемблера с помощью прилагаемой библиотеки ядра низкоурвневых функций. Функции библиотеки имеют C++ интерфейс.

Большинство функций библиотеки реализованы на языке ассемблера с использованием векторных инструкций и оптимизированы под архитектуру процессоров семейства NeuroMatrix. Для удобства разработки прикладных программ библиотека содержит аналогичные реализации функций для процессоров серии x86, выполненных на языке С++. Данные реализации позволяют выполнять написанные с использованием данной библиотеки прикладные программы на персональном компьютере.

Типы

◆ int15b

typedef int int15b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ int16b

typedef int int16b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ int1b

typedef int int1b

Тип для 32-разрядных скалярных переменных с ограниченным диапазоном значений.

Диапазон значений:

◆ int2b

typedef int int2b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ int30b

typedef int int30b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ int31b

typedef int int31b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ int32b

typedef int int32b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ int3b

typedef int int3b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ int4b

typedef int int4b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ int63b

typedef INT64 int63b

Тип для 64-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ int64b

typedef INT64 int64b

Тип для 64-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ int7b

typedef int int7b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ int8b

typedef int int8b

Тип для 32-разрядных скалярных переменных с ограниченным диапазоном значений.

Диапазон значений:

◆ uint15b

typedef unsigned int uint15b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ uint16b

typedef unsigned int uint16b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ uint1b

typedef unsigned int uint1b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ uint2b

typedef unsigned int uint2b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ uint31b

typedef unsigned int uint31b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ uint32b

typedef unsigned int uint32b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ uint3b

typedef unsigned int uint3b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ uint4b

typedef unsigned int uint4b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ uint63b

typedef UINT64 uint63b

Тип для 64-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ uint64b

typedef nm64u uint64b

Тип для 64-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ uint7b

typedef unsigned int uint7b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:

◆ uint8b

typedef unsigned int uint8b

Тип для 32-разрядных скалярных переменных с ограниченным допустимым диапазоном значений.

Диапазон значений:


nmpp: Структуры данных

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Структуры данных
Структуры данных с их кратким описанием.
C C_2DSubPixelMinPosition |
C C_2DTrigSubPixelMinPosition |
C C_Allocator32 |
C C_BoxImg |
C C_BoxVec |
C C_Heap | класс - куча
C C_Img |
C C_MultiHeap |
C C_PlessyCornerDetector |
C C_PlessyCornerDetector_16s |
C C_PlessyCornerDetector_32f |
C C_RingBuffer |
C C_RingBufferRemote |
C Cplx_float |
C ds_struct |
C EnterHardMode |
C I_2DSubPixelMinPosition |
C I_PlessyCornerDetector |
C int15in16x4 |
C int30in32x2 |
C int31in32x2 |
C mtr |
C nm16sc |
C nmchar |
C nmchar1D |
C nmchar2D |
C nmintpack |
C nmmtr |
C nmmtrpack |
C NmppsFFTSpec |
C NmppsFFTSpec_32fcr |
C NmppsFrame_16s |
C NmppsFrame_16u |
C NmppsFrame_32s |
C NmppsFrame_32u |
C NmppsFrame_64s |
C NmppsFrame_64u |
C NmppsFrame_8s |
C NmppsFrame_8u |
C NmppsMallocSpec |
C NmppsTmpSpec |
C nmreg |
C nmshort |
C nmshort2D |
C nmvecpack |
C RGB24_nm8u |
C RGB32_nm10s |
C RGB32_nm10u |
C RGB32_nm8s |
C RGB32_nm8u |
C RoundShift |
C RPoint |
C S_BufferInfo | класс буфер - заголовок в начале выделяемой данамической памяти
C s_int32x2 |
C s_nm32fc |
C s_nm32fcr |
C s_nm32sc |
C s_nm64sc |
C S_nmppiFilterKernel |
C S_nmppiFilterKernel_32s32s |
C s_v16nm16s |
C s_v16nm16u |
C s_v16nm32s |
C s_v16nm32u |
C s_v16nm4u |
C s_v16nm8s |
C s_v16nm8u |
C s_v2nm32f |
C s_v2nm32s |
C s_v2nm32u |
C s_v4nm16s |
C s_v4nm16u |
C s_v4nm32f |
C s_v4nm32s |
C s_v4nm32u |
C s_v4nm64f |
C s_v4nm8u |
C s_v8nm16s |
C s_v8nm16u |
C s_v8nm32s |
C s_v8nm32u |
C s_v8nm8s |
C s_v8nm8u |
C SpecTmp1 |
C spot_struct |
C tagSegmentInfo |
C tcube |
C tfixpoint |
C Tmp2BuffSpec |
C tmtr |
C uint16ptr |
C uint8ptr |
C v16nm4s |
C v4nm8s |
C vec |
C Wi_4096_fixed |


nmpp: Класс C_2DSubPixelMinPosition

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены
Класс C_2DSubPixelMinPosition

Открытые члены

virtual void | Find (float *S9, float &dx, float &dy)
virtual void | Release ()
virtual void | Find (float *S9, float &dx, float &dy)=0
virtual void | Release ()=0
Граф наследования:C_2DSubPixelMinPosition:
I_2DSubPixelMinPosition

Методы

◆ Find()

virtual void C_2DSubPixelMinPosition::Find | ( | float * | S9,
 |  | float & | dx,
 |  | float & | dy
 | ) |  |
virtual

Замещает I_2DSubPixelMinPosition.

◆ Release()

virtual void C_2DSubPixelMinPosition::Release ( )
virtual

Замещает I_2DSubPixelMinPosition.

Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmpli/isubpixel2dimpl.h


nmpp: Класс C_2DTrigSubPixelMinPosition

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Защищенные члены | Защищенные данные
Класс C_2DTrigSubPixelMinPosition

Открытые члены

virtual void | Find (float *S9, float &dx, float &dy)
virtual void | Release ()
virtual void | Find (float *S9, float &dx, float &dy)=0
virtual void | Release ()=0

Защищенные члены

float S9Interpolation (float x, float y, float *S9)

Защищенные данные

float Teta [8]
Граф наследования:C_2DTrigSubPixelMinPosition:
I_2DSubPixelMinPosition

Методы

◆ Find()

virtual void C_2DTrigSubPixelMinPosition::Find | ( | float * | S9,
 |  | float & | dx,
 |  | float & | dy
 | ) |  |
virtual

Замещает I_2DSubPixelMinPosition.

◆ Release()

virtual void C_2DTrigSubPixelMinPosition::Release ( )
virtual

Замещает I_2DSubPixelMinPosition.

Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmpli/isubpixel2dimpl.h


nmpp: Класс C_Allocator32

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены
Класс C_Allocator32

Открытые члены

void * | Allocate ()
int | Release ()
Граф наследования:C_Allocator32:
C_MultiHeap
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/multiheap.h


nmpp: Шаблон класса C_BoxImg< T >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Шаблон класса C_BoxImg< T >

Открытые члены

C_BoxImg (C_MultiHeap &MultiHeap, int Width, int Height, int BorderHeight=0, int FillMode=BOX_nmppiFILL_FF)
void | Lock ()
void | Unlock ()
void | Fill (int FillMode)
C_BoxImg (T *Data, int Width, int Height, int BorderHeight=0)
void | Init (T *Data, int Width, int Height, int BorderHeight=0)
T * | Addr (int y, int x)
T * | Allocate (C_MultiHeap &MultiHeap, int Width, int Height, int BorderHeight=0)
T * | Allocate (C_MultiHeap &MultiHeap)
int | Release ()
__INLINE__ T * | operator[] (int idx)

Поля данных

int | nWidth
int | nHeight
int | sizeBox
int | sizeData
int | nBorder
T * | pBox
T * | pData
C_MultiHeap * | pHeap
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/multiheap.h


nmpp: Шаблон класса C_BoxVec< T >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Шаблон класса C_BoxVec< T >

Открытые члены

C_BoxVec (T *Data, int SizeData, int SizeBorder=0)
C_BoxVec (C_MultiHeap &MultiHeap, int SizeData, int Border=0)
T * | Addr (int idx)
int | Assign (T *Data, int SizeData, int SizeBorder=0)
T * | Allocate (C_MultiHeap &MultiHeap, int SizeData, int Border=0)
T * | Allocate (C_MultiHeap &MultiHeap)
int | Release ()

Поля данных

int | sizeData
int | sizeBox
int | nBorder
T * | pBox
T * | pData
C_MultiHeap * | pHeap
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/multiheap.h


nmpp: Класс C_Heap

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Класс C_Heap

класс - куча Подробнее...

#include <multiheap.h>

Открытые члены

C_Heap (void *addrHeap, size_t32 size32Heap)
конструктор - создает кучу в указанной памяти
void | Create (void *addrHeap, size_t32 size32Heap)
создает кучу в указанной памяти
int | IsMine (void *addr)
устанавливает принадлежность к куче
size_t32 | AllocateMaxAvail ()
Возвращает объем свободной памяти в пуле в 32р. словах Подробнее...
int * | Allocate (size_t32 size32Buffer)
Выделяет буфер в куче
int | ReleaseBuffer (S_BufferInfo *pDelBuffer)
удаляет структуру буфера из списка
int | Release (void *p)
осообождат память по адресу
void | Lock (void *p)
блокирует указатель от удаления через Release
void | LockAll ()
блокирует все указатели от удаления через Release
void | UnlockAll ()
разблокирует все указатели для удаления через Release
void | Unlock (void *p)
разблокирует все указатели для удаления через Release
void | ReleaseAll ()
удаляет все указатели из кучи
void | LockHeap ()
Запрещает операции с кучей
void | UnlockHeap ()
Разрещает операции с кучей
int | Check ()

Поля данных

S_BufferInfo * | pZeroBuffer
< указатель на нулевой буфер в списке (c нулевым размером)
int * | pHeapEnd
< указатель на слово следуюшее за концом кучи
int | size32HeapAvail
< размер общей свободной памяти в куче
bool | isHeapLocked
< запрещает операции с кучей
int | status

Подробное описание

класс - куча

Методы

◆ AllocateMaxAvail()

size_t32 C_Heap::AllocateMaxAvail ( )
inline

Возвращает объем свободной памяти в пуле в 32р. словах

Возвращает максимальный размер буфера в 32р. словах, который можно выделить в куче

Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/multiheap.h


nmpp: Шаблон класса C_Img< T >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Шаблон класса C_Img< T >

#include <iSupport.h>

Открытые члены

C_Img (int nWidth, int nHeight, int nStride, int nBorder, void *(*allocator32)(int))
C_Img (T *pData, int nWidth, int nHeight, int nStride, int nBorder)
void Fill (T color)

Поля данных

int | m_nBorder
T * | m_pContainer
T * | m_pData
int | m_nWidth
int | m_nHeight
int | m_nStride
int | m_nSize

Подробное описание

template<class T>
class C_Img< T >
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmpli/iSupport.h


nmpp: Класс C_MultiHeap

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Класс C_MultiHeap

Открытые члены

C_MultiHeap (int Mode=ALLOCATE_FORWARD)
int | Error ()
void | Mode (int mode, void **legend=0)
unsigned | Rand ()
Генератор случайных чисел
unsigned | Rand (unsigned min, unsigned max)
C_Heap & | operator[] (int idxHeap)
int | CreateHeap (void *addrHeap, size_t32 size32Heap)
создает кучу по адресууказанного размера (полный размер со служебными данными)
void * | Allocate (size_t32 size32Buffer)
обходит кучи в заднном в AllocateMode порядке и выделяет память заданного размера
void * | Allocate (size_t32 size32Buffer, int nPriorHeap0, int nPriorHeap1=-1, int nPriorHeap2=-1, int nPriorHeap3=-1, int nPriorHeap4=-1, int nPriorHeap5=-1)
обходит кучи в заднном порядке и выделяет память заданного размера
void * | AllocateWith (size_t32 size32Buffer, void *addrInTheSameHeap)
выделяет массив в той же куче где и указатель
int | Which (void *addr)
Возвращает номер кучи к которой принадлежит адрес
void | Lock (void *addr)
int | Unlock (void *addr)
int | LockAll ()
int | UnlockAll ()
int | Release (void *addr)
void | ReleaseAll ()
Удваляет все назаблокированные указатели из куч
void | LockHeap (int idxHeap)
Запрещает операции Allocate и Release с кучей
void | UnlockHeap (int idxHeap)
Разрещает операции Allocate и Release с кучей
int | Check ()
- Открытые члены унаследованные от C_Allocator32
void * | Allocate ()
int | Release ()

Поля данных

C_Heap | pHeap [MAX_NUM_BANKS]
массив куч
unsigned | numHeaps
число проининицализированных куч
unsigned | numAllocateFails
число ошибок выделения куч
unsigned | AllocateMode
порядок обхода куч при поиске свободного места
void ** | pAllocateLegend
история номеров куч использованных в последних 8 Allocate
unsigned | idxAllocateLegend
long long | allocateHistory
Граф наследования:C_MultiHeap:
C_Allocator32
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/multiheap.h


nmpp: Класс C_PlessyCornerDetector

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Защищенные члены | Защищенные данные
Класс C_PlessyCornerDetectorabstract

Открытые члены

virtual void | Allocate (int w, int h, int ww)
virtual void | DeAllocate ()
virtual void | FindCorners (unsigned char *Picture, int w, int h, int ww, float *px, float *py, int &nc)
virtual void | Release ()
virtual void | SetThreshold (float _threshold)=0
virtual void | Allocate (int w, int h, int ww)=0
virtual void | DeAllocate ()=0
virtual void | FindCorners (unsigned char *Picture, int w, int h, int ww, float *px, float *py, int &nc)=0
virtual void | Release ()=0
virtual void | SetThreshold (float _threshold)=0

Защищенные члены

virtual void | CountDer (unsigned char *Picture, int w, int h, int ww)
virtual void | CountPlessy (int w, int h, int ww)

Защищенные данные

I_2DSubPixelMinPosition * | SubPixelMinPosition
short * | fxi
short * | fyi
short * | Picture16
float * | SumSxxSyy
float * | Subxy
float | S9 [9]
float | threshold
unsigned char * | cres
Граф наследования:C_PlessyCornerDetector:
I_PlessyCornerDetector C_PlessyCornerDetector_16s C_PlessyCornerDetector_32f

Методы

◆ Allocate()

virtual void C_PlessyCornerDetector::Allocate | ( | int | w,
 |  | int | h,
 |  | int | ww
 | ) |  |
virtual

Замещает I_PlessyCornerDetector.

◆ DeAllocate()

virtual void C_PlessyCornerDetector::DeAllocate ( )
virtual

Замещает I_PlessyCornerDetector.

◆ FindCorners()

virtual void C_PlessyCornerDetector::FindCorners | ( | unsigned char * | Picture,
 |  | int | w,
 |  | int | h,
 |  | int | ww,
 |  | float * | px,
 |  | float * | py,
 |  | int & | nc
 | ) |  |
virtual

Замещает I_PlessyCornerDetector.

◆ Release()

virtual void C_PlessyCornerDetector::Release ( )
virtual

Замещает I_PlessyCornerDetector.

◆ SetThreshold()

virtual void C_PlessyCornerDetector::SetThreshold ( float _threshold )
pure virtual

Замещает I_PlessyCornerDetector.

Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmpli/iPlessyDetector.h


nmpp: Класс C_PlessyCornerDetector_16s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Защищенные члены | Защищенные данные
Класс C_PlessyCornerDetector_16s

Открытые члены

virtual void | Allocate (int w, int h, int ww)
virtual void | DeAllocate ()
virtual void | SetThreshold (float _threshold)
- Открытые члены унаследованные от C_PlessyCornerDetector
virtual void | Allocate (int w, int h, int ww)
virtual void | DeAllocate ()
virtual void | FindCorners (unsigned char *Picture, int w, int h, int ww, float *px, float *py, int &nc)
virtual void | Release ()
virtual void | SetThreshold (float _threshold)=0
virtual void | Allocate (int w, int h, int ww)=0
virtual void | DeAllocate ()=0
virtual void | FindCorners (unsigned char *Picture, int w, int h, int ww, float *px, float *py, int &nc)=0
virtual void | Release ()=0
virtual void | SetThreshold (float _threshold)=0

Защищенные члены

virtual void | CountPlessy (int w, int h, int ww)
- Защищенные члены унаследованные от C_PlessyCornerDetector
virtual void | CountDer (unsigned char *Picture, int w, int h, int ww)
virtual void | CountPlessy (int w, int h, int ww)

Защищенные данные

short * | sxxi
short * | sxyi
short * | syyi
short * | Sxxi
short * | Sxyi
short * | Syyi
short * | Sxxit
short * | Syyit
short * | SumSxxSyyi
short * | MulSxxSyyi
short * | MulSxySxyi
short * | Subxyi
short * | cSubxyi
short | threshold
- Защищенные данные унаследованные от C_PlessyCornerDetector
I_2DSubPixelMinPosition * | SubPixelMinPosition
short * | fxi
short * | fyi
short * | Picture16
float * | SumSxxSyy
float * | Subxy
float | S9 [9]
float | threshold
unsigned char * | cres
Граф наследования:C_PlessyCornerDetector_16s:
C_PlessyCornerDetector I_PlessyCornerDetector

Методы

◆ Allocate()

virtual void C_PlessyCornerDetector_16s::Allocate | ( | int | w,
 |  | int | h,
 |  | int | ww
 | ) |  |
virtual

Переопределяет метод предка C_PlessyCornerDetector.

◆ CountPlessy()

virtual void C_PlessyCornerDetector_16s::CountPlessy | ( | int | w,
 |  | int | h,
 |  | int | ww
 | ) |  |
protectedvirtual

Переопределяет метод предка C_PlessyCornerDetector.

◆ DeAllocate()

virtual void C_PlessyCornerDetector_16s::DeAllocate ( )
virtual

Переопределяет метод предка C_PlessyCornerDetector.

◆ SetThreshold()

virtual void C_PlessyCornerDetector_16s::SetThreshold ( float _threshold )
virtual

Замещает C_PlessyCornerDetector.

Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmpli/iPlessyDetector.h


nmpp: Класс C_PlessyCornerDetector_32f

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Защищенные члены | Защищенные данные
Класс C_PlessyCornerDetector_32f

Открытые члены

virtual void | Allocate (int w, int h, int ww)
virtual void | DeAllocate ()
virtual void | SetThreshold (float _threshold)
- Открытые члены унаследованные от C_PlessyCornerDetector
virtual void | Allocate (int w, int h, int ww)
virtual void | DeAllocate ()
virtual void | FindCorners (unsigned char *Picture, int w, int h, int ww, float *px, float *py, int &nc)
virtual void | Release ()
virtual void | SetThreshold (float _threshold)=0
virtual void | Allocate (int w, int h, int ww)=0
virtual void | DeAllocate ()=0
virtual void | FindCorners (unsigned char *Picture, int w, int h, int ww, float *px, float *py, int &nc)=0
virtual void | Release ()=0
virtual void | SetThreshold (float _threshold)=0

Защищенные члены

virtual void | CountPlessy (int w, int h, int ww)
virtual void | CountDer (unsigned char *Picture, int w, int h, int ww)
virtual void | CountDer (unsigned char *Picture, int w, int h, int ww)
virtual void | CountPlessy (int w, int h, int ww)

Защищенные данные

float * | fx
float * | fy
float * | sxx
float * | sxy
float * | syy
float * | Sxx
float * | Sxy
float * | Syy
float * | MulSxxSyy
float * | MulSxySxy
float * | cSubxy
float | threshold
- Защищенные данные унаследованные от C_PlessyCornerDetector
I_2DSubPixelMinPosition * | SubPixelMinPosition
short * | fxi
short * | fyi
short * | Picture16
float * | SumSxxSyy
float * | Subxy
float | S9 [9]
float | threshold
unsigned char * | cres
Граф наследования:C_PlessyCornerDetector_32f:
C_PlessyCornerDetector I_PlessyCornerDetector

Методы

◆ Allocate()

virtual void C_PlessyCornerDetector_32f::Allocate | ( | int | w,
 |  | int | h,
 |  | int | ww
 | ) |  |
virtual

Переопределяет метод предка C_PlessyCornerDetector.

◆ CountDer()

virtual void C_PlessyCornerDetector_32f::CountDer | ( | unsigned char * | Picture,
 |  | int | w,
 |  | int | h,
 |  | int | ww
 | ) |  |
protectedvirtual

Переопределяет метод предка C_PlessyCornerDetector.

◆ CountPlessy()

virtual void C_PlessyCornerDetector_32f::CountPlessy | ( | int | w,
 |  | int | h,
 |  | int | ww
 | ) |  |
protectedvirtual

Переопределяет метод предка C_PlessyCornerDetector.

◆ DeAllocate()

virtual void C_PlessyCornerDetector_32f::DeAllocate ( )
virtual

Переопределяет метод предка C_PlessyCornerDetector.

◆ SetThreshold()

virtual void C_PlessyCornerDetector_32f::SetThreshold ( float _threshold )
virtual

Замещает C_PlessyCornerDetector.

Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmpli/iPlessyDetector.h


nmpp: Шаблон класса C_RingBuffer< T >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Шаблон класса C_RingBuffer< T >

Открытые члены

void | Sleep (clock_t msec)
C_RingBuffer (T *buffer, size_t count, t_bytecpy pushmemcpy, t_bytecpy popmemcpy)
bool | Init (T *buffer, size_t count, t_bytecpy pushmemcpy, t_bytecpy popmemcpy)
__INLINE__ bool | IsFull ()
__INLINE__ bool | IsEmpty ()
__INLINE__ size_t | PushAvail ()
__INLINE__ size_t | PopAvail ()
T * | Head ()
T * | Tail ()
bool | MoveHead (int numElements)
bool | MoveTail (int numElements)
size_t | Push (T *pSrcElements, size_t numElements, int ExitMode=EXIT_ON_COMPLETED)
size_t | Push (T pSrcElement)
void | PushRequest (T *pSrcElements, size_t numElements)
bool | isPushCompleted ()
size_t | Pop (T *pDstElements, size_t numElements, int ExitMode=EXIT_ON_COMPLETED)

Поля данных

T * | data
физический адрес кольцевого буфера входных данных
size_t | size
размер кольцевого буфера входных данных (в элементах; гарантируется что это степень двойки)
size_t | head
сколько элементов ОТ НАЧАЛА ПОТОКА код MASTER уже записал в буфер входных данных [заполняется MASTER]
size_t | tail
сколько элементов ОТ НАЧАЛА ПОТОКА код SLAVE уже прочитал (обработал) [заполняется SLAVE]
size_t * | head_addr
size_t * | tail_addr
size_t | id
t_bytecpy | push_memcpy
t_bytecpy | pop_memcpy
memcpy_ptr | dma_init
size_t(* | dma_check )()
T * | dma_ptr
size_t | dma_left
size_t | dma_size
unsigned | timeout
unsigned | time2sleep
int | pad [16-3-5 *sizeof(memcpy_ptr)/sizeof(int)]
резервные поля

Методы

◆ PushRequest()

template<class T >
void C_RingBuffer< T >::PushRequest | ( | T * | pSrcElements,
 |  | size_t | numElements
 | ) |  |
inline

!!! Head or head ??

Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/ringbuffer_.h


nmpp: Шаблон класса C_RingBufferRemote< T >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Шаблон класса C_RingBufferRemote< T >

Открытые члены

C_RingBufferRemote (size_t ringbuffer_addr, t_bytecpy push_memcopy, t_bytecpy pop_memcopy)
size_t | GetHead ()
size_t | GetTail ()
void | SetHead ()
void | SetTail ()
bool | Init (size_t ringbuffer_addr, t_bytecpy push_memcopy, t_bytecpy pop_memcopy)
__INLINE__ bool | IsFull ()
__INLINE__ bool | IsEmpty ()
__INLINE__ size_t | GetWriteAvail ()
__INLINE__ size_t | GetReadAvail ()
bool | Push (int numElements)
bool | Pop (int numElements)
size_t | Push (T *pSrcElements, size_t numElements, int ExitMode=EXIT_ON_COMPLETED)
size_t | Pop (T *pDstElements, size_t numElements, int ExitMode=EXIT_ON_COMPLETED)
size_t | View (T *pDstElements, size_t numElements, int ExitMode=EXIT_ON_COMPLETED)

Поля данных

size_t | data_addr
физический адрес кольцевого буфера входных данных
size_t | head_addr
сколько элементов ОТ НАЧАЛА ПОТОКА код MASTER уже записал в буфер входных данных [заполняется MASTER]
size_t | tail_addr
сколько элементов ОТ НАЧАЛА ПОТОКА код SLAVE уже прочитал (обработал) [заполняется SLAVE]
size_t | size
размер кольцевого буфера входных данных (в элементах; гарантируется что это степень двойки)
size_t | head
сколько элементов ОТ НАЧАЛА ПОТОКА код MASTER уже записал в буфер входных данных [заполняется MASTER]
size_t | tail
сколько элементов ОТ НАЧАЛА ПОТОКА код SLAVE уже прочитал (обработал) [заполняется SLAVE]
size_t | id
сколько элементов ОТ НАЧАЛА ПОТОКА код SLAVE уже прочитал (обработал) [заполняется SLAVE]
bool | isConnected
t_bytecpy | push_memcpy
t_bytecpy | pop_memcpy
t_memcpy | dma_init
size_t(* | dma_check )()
T * | dma_ptr
size_t | dma_left
size_t | dma_size
unsigned | timeout
unsigned | time2sleep
int | pad [16-3-5 *sizeof(t_bytecpy)/sizeof(int)]
резервные поля
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/ringremote.h


nmpp: Класс Cplx_float

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Класс Cplx_float

Поля данных

double | Re
double | Im
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmpls/fftext.h


nmpp: Структура ds_struct

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура ds_struct

Поля данных

int | nnSpot
общее число отбракованных пятен (по данному признаку)
int | nnPxl
суммарное число пикселов в отбракованных пятнах
int | dttSpot
общее время обработки отбракованных пятен (в тактах процессора)
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmpli/iFloodFill.h


nmpp: Класс EnterHardMode

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Класс EnterHardMode
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/macros_fpu.h


nmpp: Класс I_2DSubPixelMinPosition

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены
Класс I_2DSubPixelMinPositionabstract

Открытые члены

virtual void | Find (float *S9, float &dx, float &dy)=0
virtual void | Release ()=0
Граф наследования:I_2DSubPixelMinPosition:
C_2DSubPixelMinPosition C_2DTrigSubPixelMinPosition
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmpli/isubpixel2d.h


nmpp: Класс I_PlessyCornerDetector

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены
Класс I_PlessyCornerDetectorabstract

Открытые члены

virtual void | Allocate (int w, int h, int ww)=0
virtual void | DeAllocate ()=0
virtual void | FindCorners (unsigned char *Picture, int w, int h, int ww, float *px, float *py, int &nc)=0
virtual void | Release ()=0
virtual void | SetThreshold (float _threshold)=0
Граф наследования:I_PlessyCornerDetector:
C_PlessyCornerDetector C_PlessyCornerDetector_16s C_PlessyCornerDetector_32f
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmpli/iPlessy.h


nmpp: Структура int15in16x4

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура int15in16x4

Поля данных

signed short item [4]
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура int30in32x2

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура int30in32x2

Поля данных

int item [2]
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура int31in32x2

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура int31in32x2

Поля данных

int item [2]
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Шаблон класса mtr< T >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных | Защищенные данные
Шаблон класса mtr< T >

Открытые члены

void | origin (int y, int x)
void | setval (int y, int x, const T &val)
void | setvalx (int y, int x, const T &val)
T | getval (int y, int x) const
T | getvalx (int y, int x) const
mtr (int nHeight, int nWidth, int nBorder=0)
void | resize (int nHeight, int nWidth, int nBorder=0)
mtr (const mtr< T > &matr)
void | assign (T *Data, int nHeight, int nWidth, int nStride=0)
mtr (T *Data, int nHeight, int nWidth, int nStride=0)
mtr< T > & | operator= (mtr< T > &matr)
mtr< T > & | operator= (T &val)
T * | operator[] (int row) const
T & | index (int idx)
mtr< T > & | operator*= (const T val)
mtr< T > | operator* (const T &val) const
vec< T > | operator* (const vec< T > &vect)
mtr< T > | operator* (const mtr< T > &matr)
mtr< T > & | operator+= (const T &val)
mtr< T > & | operator+= (const mtr< T > &matr)
mtr< T > | operator+ (const mtr< T > &matr) const
mtr< T > & | operator-= (const mtr< T > &matr)
mtr< T > & | operator-= (const T &val)
mtr< T > | operator- (const mtr< T > &matr) const
mtr< T > | operator- () const
mtr< T > & | operator/= (const T val)
mtr< T > | operator/ (const T val) const
mtr< T > & | operator>>= (const int shr)
mtr< T > | operator>> (const int shr) const
mtr< T > & | operator<<= (const int shl)
mtr< T > | operator<< (const int shl) const
mtr< T > & | operator&= (const T &val)
mtr< T > & | operator&= (const mtr< T > &matr)
mtr< T > | operator& (const mtr< T > &matr) const
mtr< T > & | operator|= (const mtr< T > &matr)
mtr< T > | operator| (const mtr< T > &matr) const
mtr< T > & | operator^= (const mtr< T > &matr)
mtr< T > & | operator^= (const T &val)
mtr< T > | operator^ (const mtr< T > &matr) const
mtr< T > | operator^ (const T &val) const
mtr< T > | operator~ ()
void | set (const T val)
mtr< T > | transpose ()
mtr< T > & | diag (T val)
T * | addr (int y, int x)
void | reset ()
int | sum ()
vec< T > | getvec (int y) const
vec< T > | getcol (int x) const
T | minpos (int &ypos, int &xpos)
T | maxpos (int &ypos, int &xpos)
void | CopyTo (T *pData)
void | CopyFrom (T *pData)
template<class T2 >
void | ConvertTo (T2 *pData)
template<class T2 >
void | ConvertFrom (T2 *pData)
mtr< double > & | operator<<= (const int Shl)

Поля данных

int | m_border
int | m_stride
int | m_height
int | m_width
int | m_size
int | m_x0
int | m_y0
T * | m_data

Защищенные данные

T * m_container
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmtl/tmatrix.h


nmpp: Структура nm16sc

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура nm16sc

Поля данных

signed short | r
signed short | c
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Класс nmchar

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Класс nmchar

Открытые члены

nmchar (unsigned int *p, int offset)
nmchar (nmchar &ch)
nmchar & | operator= (nmchar ch)
unsigned int | operator+ (nmchar &ch)
nmchar & | operator&= (unsigned int val)
nmchar & | operator|= (unsigned int val)
nmchar & | operator= (unsigned int val)
operator unsigned char ()
uint8ptr | operator& ()

Поля данных

unsigned int * | adr
int | idx
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmchar.h


nmpp: Шаблон класса nmchar1D< N >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Шаблон класса nmchar1D< N >

Открытые члены

nmchar & | operator[] (int idx)
operator uint8ptr ()
unsigned int * | ptr ()

Поля данных

nmchar | deref
unsigned int | data [(N+3)/4]
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmchar.h


nmpp: Шаблон класса nmchar2D< Y, X >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Шаблон класса nmchar2D< Y, X >

Открытые члены

uint8ptr & | operator[] (int idx)
unsigned int * | ptr ()

Поля данных

uint8ptr | arr
unsigned int | data [Y *X/4]
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmchar.h


nmpp: Шаблон класса nmintpack< T >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Шаблон класса nmintpack< T >

#include <tnmvecpack.h>

Открытые члены

nmintpack (T *base, int idx)
nmintpack< T > & | operator= (const nmintpack< T > &val)
nmintpack< T > & | operator= (const int &val)
operator int (void) const
__INLINE__ int | intdisp (int indx)
__INLINE__ int | bitdisp (int indx)

Поля данных

T * | m_container
int | m_disp

Подробное описание

template<class T>
class nmintpack< T >
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmtl/tnmvecpack.h


nmpp: Структура NmppsFFTSpec

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура NmppsFFTSpec

Поля данных

nm32sc * | buffer [FFT_SPEC_NUM_BUFFERS]
void * | fftTable [FFT_SPEC_NUM_TABLES]
RoundShift | norm [4]
int | shift [FFT_SPEC_NUM_SHIFTS]
int | amp [FFT_SPEC_NUM_AMPLITUDES]
int | round [8]
Free32Func * | free
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmpls/fft.h


nmpp: Структура NmppsFFTSpec_32fcr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура NmppsFFTSpec_32fcr

Поля данных

nm32fcr * | Buffers [NUMBUFF1]
nm32fcr * | Buffs [NUMBUFF2]
int | order
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/fft_32fcr.h


nmpp: Структура NmppsFrame_16s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура NmppsFrame_16s

Поля данных

void * | pull
nm16s * | data
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/malloc32.h


nmpp: Структура NmppsFrame_16u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура NmppsFrame_16u

Поля данных

void * | pull
nm16u * | data
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/malloc32.h


nmpp: Структура NmppsFrame_32s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура NmppsFrame_32s

Поля данных

void * | pull
nm32s * | data
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/malloc32.h


nmpp: Структура NmppsFrame_32u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура NmppsFrame_32u

Поля данных

void * | pull
nm32u * | data
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/malloc32.h


nmpp: Структура NmppsFrame_64s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура NmppsFrame_64s

Поля данных

void * | pull
nm64s * | data
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/malloc32.h


nmpp: Структура NmppsFrame_64u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура NmppsFrame_64u

Поля данных

void * | pull
nm64u * | data
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/malloc32.h


nmpp: Структура NmppsFrame_8s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура NmppsFrame_8s

Поля данных

void * | pull
nm8s * | data
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/malloc32.h


nmpp: Структура NmppsFrame_8u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура NmppsFrame_8u

Поля данных

void * | pull
nm8u * | data
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/malloc32.h


nmpp: Структура NmppsMallocSpec

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура NmppsMallocSpec

Поля данных

Malloc32Func * | allocator [4]
enum MALLOC32_MODE | mode
uint32 | random
fseq32 | priority
uint32 | status
uint32 | time
uint32 | timeBest
uint32 | routePos
fseq64 | route [NMPPS_MALLOC_LIMIT/16]
fseq64 | bestRoute [NMPPS_MALLOC_LIMIT/16]
void * | allocHistory [NMPPS_MALLOC_LIMIT]
void * | freeHistory [NMPPS_MALLOC_LIMIT]
uint32 | allocHistoryPos
uint32 | freeHistoryPos
uint32 | firstPass
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/malloc32.h


nmpp: Структура NmppsTmpSpec

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура NmppsTmpSpec

Поля данных

void * | buffer0
void * | buffer1
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/malloc32.h


nmpp: Структура nmreg

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура nmreg

#include <nmtype.h>

Поля данных

int nVal

Подробное описание

\~

NM регистр.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Класс nmshort

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Класс nmshort

Открытые члены

__INLINE__ | nmshort (nmshort &ch)
__INLINE__ nmshort & | operator= (nmshort ch)
__INLINE__ unsigned int | operator+ (nmshort &ch)
__INLINE__ nmshort & | operator= (unsigned int val)
__INLINE__ | operator unsigned char ()
__INLINE__ uint16ptr | operator& ()

Поля данных

unsigned int * | adr
int | idx
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmshort.h


nmpp: Шаблон класса nmshort2D< Y, X >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Шаблон класса nmshort2D< Y, X >

Открытые члены

uint16ptr & | operator[] (int idx)
unsigned int * | ptr ()

Поля данных

uint16ptr | arr
unsigned int | data [Y *X/2]
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmshort.h


nmpp: Структура RGB24_nm8u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура RGB24_nm8u

#include <iDef.h>

Поля данных

unsigned char | nB:8
unsigned char | nG:8
unsigned char | nR:8

Подробное описание

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmpli/iDef.h


nmpp: Структура RGB32_nm10s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура RGB32_nm10s

Поля данных

int | nB:10
int | nG:10
int | nR:10
int | nA:2
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmpli/iDef.h


nmpp: Структура RGB32_nm10u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура RGB32_nm10u

Поля данных

unsigned int | nB:10
unsigned int | nG:10
unsigned int | nR:10
unsigned int | nA:2
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmpli/iDef.h


nmpp: Структура RGB32_nm8s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура RGB32_nm8s

Поля данных

int | nB:8
int | nG:8
int | nR:8
int | nA:8
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmpli/iDef.h


nmpp: Структура RGB32_nm8u

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура RGB32_nm8u

Поля данных

unsigned int | nB:8
unsigned int | nG:8
unsigned int | nR:8
unsigned int | nA:8
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmpli/iDef.h


nmpp: Структура RoundShift

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура RoundShift

Поля данных

int | round
int | shift
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmpls/fft.h


nmpp: Класс RPoint

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Класс RPoint

#include <iCellTexture.h>

Открытые члены

RPoint (const RPoint &p)
RPoint (double _x, double _y)
RPoint & operator= (const RPoint &p)

Поля данных

double | x
double | y

Подробное описание

Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmpli/iCellTexture.h


nmpp: Структура S_BufferInfo

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Структура S_BufferInfo

класс буфер - заголовок в начале выделяемой данамической памяти Подробнее...

#include <multiheap.h>

Открытые члены

int * | DataBegin ()
Возвращает указатель на данные в буфере
int * | DataEnd ()
Возвращает указатель на конец данных в буфере (следу)
int * | EndGuardBits ()
Возвращает указатель на конечные защитные поля (2 слова)
unsigned | CheckGuardBits ()

Поля данных

int | guardInfoBits0
size_t32 | size32Buffer
< размер массива данных в буфере в 32-р словах
S_BufferInfo * | pPrevBuffer
< указатель на предыдущий буфер в списке
S_BufferInfo * | pNextBuffer
< указатель на следующий буфер в списке
bool | isLocked
< флаг блокировки буфера, запрещаюий его удаление с помощью Release()
int | guardInfoBits1

Подробное описание

класс буфер - заголовок в начале выделяемой данамической памяти

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/multiheap.h


nmpp: Структура s_int32x2

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_int32x2

Поля данных

int | hi
int | lo
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_nm32fc

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_nm32fc

Поля данных

float | re
float | im
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_nm32fcr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_nm32fcr

Поля данных

float | im
float | re
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_nm32sc

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_nm32sc

Поля данных

nm32s | re
nm32s | im
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_nm64sc

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_nm64sc

Поля данных

long long | re
long long | im

Поля

◆ im

long long s_nm64sc::im

Мнимая часть комплексного числа.

◆ re

long long s_nm64sc::re

Вещественная часть комплексоного числа.

Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура S_nmppiFilterKernel

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура S_nmppiFilterKernel

Поля данных

nm32s * | pDispArray
nm32s * | pWeightMatrix
int | nKerWidth
int | nKerHeight
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmpli/iFilter.h


nmpp: Структура S_nmppiFilterKernel_32s32s

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура S_nmppiFilterKernel_32s32s

Поля данных

nm32s * | pDispArray
nm32s * | pWeightMatrix
int | nKerWidth
int | nKerHeight
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmpli/iFilter.h


nmpp: Структура s_v2nm32f

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v2nm32f

Поля данных

float | v0
float | v1
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v4nm32f

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v4nm32f

Поля данных

float vec [4]
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура s_v4nm64f

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура s_v4nm64f

Поля данных

double vec [4]
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Структура SpecTmp1

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура SpecTmp1

Поля данных

void * | buffer
int | status
int | mode
fseq64 | route
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/malloc32.h


nmpp: Структура spot_struct

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура spot_struct

Поля данных

int | Xmin
коородинаты минимального прямоугольника, содержащего пятно
int | Ymin
коородинаты минимального прямоугольника, содержащего пятно
int | Xmax
коородинаты минимального прямоугольника, содержащего пятно
int | Ymax
коородинаты минимального прямоугольника, содержащего пятно
int | noPxl
номер начального пиксела следующего пятна в массиве pixels
int | dtSpot
время обработки пятна (в тактах процессора)
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmpli/iFloodFill.h


nmpp: Структура tagSegmentInfo

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура tagSegmentInfo

Поля данных

int | xMin
int | yMin
int | xMax
int | yMax
int | N
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmpli/iFloodFill.h


nmpp: Шаблон класса tfixpoint< T, point >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Шаблон класса tfixpoint< T, point >

Открытые члены

INLINE | tfixpoint (const int val)
INLINE | tfixpoint (const float val)
INLINE | tfixpoint (const double val)
INLINE tfixpoint< T, point > & | operator= (const int val)
INLINE tfixpoint< T, point > & | operator= (const float val)
tfixpoint< T, point > & | operator= (const double val)
INLINE tfixpoint< T, point > & | operator= (const tfixpoint< T, point > &val)
INLINE tfixpoint< T, point > & | operator-= (const tfixpoint< T, point > &val)
INLINE tfixpoint< T, point > & | operator+= (const tfixpoint< T, point > &val)
INLINE tfixpoint< T, point > | operator- (const tfixpoint< T, point > &val) const
INLINE tfixpoint< T, point > | operator+ (const tfixpoint< T, point > &val) const
INLINE tfixpoint< T, point > & | operator++ (int)
INLINE tfixpoint< T, point > & | operator-- (int)
template<class T2 , int point2>
INLINE tfixpoint< T, point > & | operator*= (const tfixpoint< T2, point2 > val)
INLINE tfixpoint< T, point > & | operator*= (const int val)
INLINE tfixpoint< T, point > & | operator*= (const float val)
INLINE tfixpoint< T, point > & | operator*= (const double val)
template<int point2>
INLINE tfixpoint< T, point > | operator* (const tfixpoint< T, point2 > val) const
INLINE tfixpoint< T, point > | operator* (const int val) const
INLINE tfixpoint< T, point > & | operator/= (const tfixpoint< T, point > val)
INLINE tfixpoint< T, point > | operator/ (const tfixpoint< T, point > val) const
INLINE tfixpoint< T, point > & | operator>>= (const int y)
INLINE tfixpoint< T, point > | operator>> (const int y) const
INLINE tfixpoint< T, point > & | operator<<= (const int y)
INLINE tfixpoint< T, point > | operator<< (const int n) const
INLINE tfixpoint< T, point > & | operator^= (tfixpoint< T, point > &val)
INLINE tfixpoint< T, point > | operator^ (tfixpoint< T, point > &val) const
INLINE tfixpoint< T, point > | operator- () const
bool | operator> (const tfixpoint< T, point > &y) const
bool | operator>= (const tfixpoint< T, point > &y) const
bool | operator< (const tfixpoint< T, point > &y) const
bool | operator<= (const tfixpoint< T, point > &y) const
bool | operator== (const tfixpoint< T, point > &y) const
bool | operator!= (const tfixpoint< T, point > &y) const
float | flt ()

Поля данных

T m_value
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmtl/tfixpoint.h


nmpp: Структура Tmp2BuffSpec

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Структура Tmp2BuffSpec

Поля данных

void * | buffer0
void * | buffer1
fseq64 | route
int | mode
int | status
Объявления и описания членов структуры находятся в файле:
  • g:/nmpp/include/nmtype.h


nmpp: Шаблон класса tmtr< T >

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных | Защищенные данные
Шаблон класса tmtr< T >

Открытые члены

tmtr (tmtr< T > &mtr)
tmtr (int nHeight, int nWidth, int nStride=0)
tmtr (T *Data, int nHeight, int nWidth, int nStride=0)
T * | ref (int y, int x)
T * | operator[] (int row) const
void | fill (T &value)

Поля данных

int | m_stride
int | m_height
int | m_width
T * | m_data

Защищенные данные

T * m_container
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmtl/tnmcube.h


nmpp: Класс uint16ptr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Класс uint16ptr

Открытые члены

__INLINE__ unsigned char * | x86addr ()
__INLINE__ | uint16ptr (void *p)
__INLINE__ | uint16ptr (unsigned short *p)
__INLINE__ | uint16ptr (short *p)
__INLINE__ | uint16ptr (const uint16ptr &p)
__INLINE__ | uint16ptr (unsigned int *p)
__INLINE__ | uint16ptr (unsigned int *p, int offset)
__INLINE__ nmshort & | operator[] (int idx)
__INLINE__ uint16ptr & | operator= (unsigned int *ptr)
__INLINE__ bool | operator< (uint16ptr ptr)
__INLINE__ bool | operator>= (uint16ptr ptr)
__INLINE__ int | operator- (uint16ptr ptr)
__INLINE__ uint16ptr & | operator= (const uint16ptr &p)
__INLINE__ unsigned int * | ptr ()
__INLINE__ nmshort & | operator* ()
__INLINE__ uint16ptr | operator+ (int idx)
__INLINE__ uint16ptr | operator- (int idx)
__INLINE__ uint16ptr & | operator+= (int idx)
__INLINE__ uint16ptr & | operator-= (int idx)
__INLINE__ uint16ptr | operator++ (int)
__INLINE__ uint16ptr & | operator++ ()
__INLINE__ unsigned int | operator== (unsigned int N)
__INLINE__ bool | operator== (uint16ptr ptr)

Поля данных

unsigned int * | addr
int | indx
nmshort | arref
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmshort.h


nmpp: Класс uint8ptr

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Открытые члены | Поля данных
Класс uint8ptr

Открытые члены

unsigned char * | x86addr ()
uint8ptr (const void *p)
uint8ptr (const unsigned char *p)
uint8ptr (const char *p)
uint8ptr (const uint8ptr &p)
uint8ptr (unsigned int *p)
uint8ptr (unsigned int *p, int offset)
nmchar & | operator[] (int idx)
uint8ptr & | operator= (unsigned int *ptr)
bool | operator< (uint8ptr ptr)
bool | operator> (uint8ptr ptr)
bool | operator>= (uint8ptr ptr)
int | operator- (uint8ptr ptr)
uint8ptr & | operator= (const uint8ptr &p)
unsigned int * | ptr ()
nmchar & | operator* ()
uint8ptr | operator+ (int idx)
uint8ptr | operator- (int idx)
uint8ptr & | operator+= (int idx)
uint8ptr & | operator-= (int idx)
uint8ptr | operator++ (int)
uint8ptr & | operator++ ()
bool | operator== (uint8ptr ptr)

Поля данных

unsigned int * | addr
int | indx
nmchar | arref
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmchar.h


nmpp: Класс Wi_4096_fixed

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Поля данных
Класс Wi_4096_fixed

Поля данных

char | Re
char | Im
Объявления и описания членов класса находятся в файле:
  • g:/nmpp/include/nmpls/fftext.h


nmpp: Алфавитный указатель структур данных

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Алфавитный указатель структур данных
C | D | E | I | M | N | R | S | T | U | V | W
C
C_2DSubPixelMinPosition
C_2DTrigSubPixelMinPosition
C_Allocator32
C_BoxImg
C_BoxVec
C_Heap
C_Img
C_MultiHeap
C_PlessyCornerDetector
C_PlessyCornerDetector_16s
C_PlessyCornerDetector_32f
C_RingBuffer
C_RingBufferRemote
Cplx_float
D
ds_struct
E
EnterHardMode
I
I_2DSubPixelMinPosition
I_PlessyCornerDetector
int15in16x4
int30in32x2
int31in32x2
M
mtr
N
nm16sc
nmchar
nmchar1D
nmchar2D
nmintpack
nmmtr
nmmtrpack
NmppsFFTSpec
NmppsFFTSpec_32fcr
NmppsFrame_16s
NmppsFrame_16u
NmppsFrame_32s
NmppsFrame_32u
NmppsFrame_64s
NmppsFrame_64u
NmppsFrame_8s
NmppsFrame_8u
NmppsMallocSpec
NmppsTmpSpec
nmreg
nmshort
nmshort2D
nmvecpack
R
RGB24_nm8u
RGB32_nm10s
RGB32_nm10u
RGB32_nm8s
RGB32_nm8u
RoundShift
RPoint
S
S_BufferInfo
s_int32x2
s_nm32fc
s_nm32fcr
s_nm32sc
s_nm64sc
S_nmppiFilterKernel
S_nmppiFilterKernel_32s32s
s_v16nm16s
s_v16nm16u
s_v16nm32s
s_v16nm32u
s_v16nm4u
s_v16nm8s
s_v16nm8u
s_v2nm32f
s_v2nm32s
s_v2nm32u
s_v4nm16s
s_v4nm16u
s_v4nm32f
s_v4nm32s
s_v4nm32u
s_v4nm64f
s_v4nm8u
s_v8nm16s
s_v8nm16u
s_v8nm32s
s_v8nm32u
s_v8nm8s
s_v8nm8u
SpecTmp1
spot_struct
T
tagSegmentInfo
tcube
tfixpoint
Tmp2BuffSpec
tmtr
U
uint16ptr
uint8ptr
V
v16nm4s
v4nm8s
vec
W
Wi_4096_fixed


nmpp: Иерархия классов

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
Иерархия классов
Иерархия классов.
[уровень детализации 123]
▼C C_Allocator32 |
C C_MultiHeap |
C C_BoxImg< T > |
C C_BoxVec< T > |
C C_Heap | класс - куча
C C_Img< T > |
C C_RingBuffer< T > |
C C_RingBufferRemote< T > |
C Cplx_float |
C ds_struct |
C EnterHardMode |
▼C I_2DSubPixelMinPosition |
C C_2DSubPixelMinPosition |
C C_2DTrigSubPixelMinPosition |
▼C I_PlessyCornerDetector |
▼C C_PlessyCornerDetector |
C C_PlessyCornerDetector_16s |
C C_PlessyCornerDetector_32f |
C int15in16x4 |
C int30in32x2 |
C int31in32x2 |
C mtr< T > |
C nm16sc |
C nmchar |
C nmchar1D< N > |
C nmchar2D< Y, X > |
C nmintpack< T > |
C nmmtr< T > |
C nmmtrpack< T > |
C NmppsFFTSpec |
C NmppsFFTSpec_32fcr |
C NmppsFrame_16s |
C NmppsFrame_16u |
C NmppsFrame_32s |
C NmppsFrame_32u |
C NmppsFrame_64s |
C NmppsFrame_64u |
C NmppsFrame_8s |
C NmppsFrame_8u |
C NmppsMallocSpec |
C NmppsTmpSpec |
C nmreg |
C nmshort |
C nmshort2D< Y, X > |
C nmvecpack< T > |
C RGB24_nm8u |
C RGB32_nm10s |
C RGB32_nm10u |
C RGB32_nm8s |
C RGB32_nm8u |
C RoundShift |
C RPoint |
C S_BufferInfo | класс буфер - заголовок в начале выделяемой данамической памяти
C s_int32x2 |
C s_nm32fc |
C s_nm32fcr |
C s_nm32sc |
C s_nm64sc |
C S_nmppiFilterKernel |
C S_nmppiFilterKernel_32s32s |
C s_v16nm16s |
C s_v16nm16u |
C s_v16nm32s |
C s_v16nm32u |
C s_v16nm4u |
C s_v16nm8s |
C s_v16nm8u |
C s_v2nm32f |
C s_v2nm32s |
C s_v2nm32u |
C s_v4nm16s |
C s_v4nm16u |
C s_v4nm32f |
C s_v4nm32s |
C s_v4nm32u |
C s_v4nm64f |
C s_v4nm8u |
C s_v8nm16s |
C s_v8nm16u |
C s_v8nm32s |
C s_v8nm32u |
C s_v8nm8s |
C s_v8nm8u |
C SpecTmp1 |
C spot_struct |
C tagSegmentInfo |
C tcube< T > |
C tfixpoint< T, point > |
C Tmp2BuffSpec |
C tmtr< T > |
C uint16ptr |
C uint8ptr |
C v16nm4s |
C v4nm8s |
C vec< T > |
C Wi_4096_fixed |


nmpp: Поля структур

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
  • Указатель
  • Функции
  • Переменные
  • a
  • c
  • d
  • e
  • h
  • i
  • l
  • n
  • p
  • r
  • s
  • t
  • u
  • w
  • x
  • y
Список всех документированных членов структур данных со ссылками на документацию по структуре для каждого члена.

- a -

  • Allocate() : C_Heap, C_MultiHeap
  • AllocateMaxAvail() : C_Heap
  • AllocateMode : C_MultiHeap
  • AllocateWith() : C_MultiHeap

- c -

  • C_Heap() : C_Heap
  • Create() : C_Heap
  • CreateHeap() : C_MultiHeap

- d -

  • data : C_RingBuffer< T >
  • data_addr : C_RingBufferRemote< T >
  • DataBegin() : S_BufferInfo
  • DataEnd() : S_BufferInfo
  • dtSpot : spot_struct
  • dttSpot : ds_struct

- e -

  • EndGuardBits() : S_BufferInfo

- h -

  • head : C_RingBuffer< T >, C_RingBufferRemote< T >
  • head_addr : C_RingBufferRemote< T >

- i -

  • id : C_RingBufferRemote< T >
  • im : s_nm64sc
  • isHeapLocked : C_Heap
  • isLocked : S_BufferInfo
  • IsMine() : C_Heap

- l -

  • Lock() : C_Heap
  • LockAll() : C_Heap
  • LockHeap() : C_Heap, C_MultiHeap

- n -

  • nnPxl : ds_struct
  • nnSpot : ds_struct
  • noPxl : spot_struct
  • numAllocateFails : C_MultiHeap
  • numHeaps : C_MultiHeap

- p -

  • pad : C_RingBuffer< T >, C_RingBufferRemote< T >
  • pAllocateLegend : C_MultiHeap
  • pHeap : C_MultiHeap
  • pHeapEnd : C_Heap
  • pNextBuffer : S_BufferInfo
  • pPrevBuffer : S_BufferInfo
  • PushRequest() : C_RingBuffer< T >
  • pZeroBuffer : C_Heap

- r -

  • Rand() : C_MultiHeap
  • re : s_nm64sc
  • Release() : C_Heap
  • ReleaseAll() : C_Heap, C_MultiHeap
  • ReleaseBuffer() : C_Heap

- s -

  • size : C_RingBuffer< T >, C_RingBufferRemote< T >
  • size32Buffer : S_BufferInfo
  • size32HeapAvail : C_Heap

- t -

  • tail : C_RingBuffer< T >, C_RingBufferRemote< T >
  • tail_addr : C_RingBufferRemote< T >

- u -

  • Unlock() : C_Heap
  • UnlockAll() : C_Heap
  • UnlockHeap() : C_Heap, C_MultiHeap

- w -

  • Which() : C_MultiHeap

- x -

  • Xmax : spot_struct
  • Xmin : spot_struct

- y -

  • Ymax : spot_struct
  • Ymin : spot_struct


nmpp: Поля структур - Функции

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
  • Указатель
  • Функции
  • Переменные
  • Allocate() : C_Heap, C_MultiHeap
  • AllocateMaxAvail() : C_Heap
  • AllocateWith() : C_MultiHeap
  • C_Heap() : C_Heap
  • Create() : C_Heap
  • CreateHeap() : C_MultiHeap
  • DataBegin() : S_BufferInfo
  • DataEnd() : S_BufferInfo
  • EndGuardBits() : S_BufferInfo
  • IsMine() : C_Heap
  • Lock() : C_Heap
  • LockAll() : C_Heap
  • LockHeap() : C_Heap, C_MultiHeap
  • PushRequest() : C_RingBuffer< T >
  • Rand() : C_MultiHeap
  • Release() : C_Heap
  • ReleaseAll() : C_Heap, C_MultiHeap
  • ReleaseBuffer() : C_Heap
  • Unlock() : C_Heap
  • UnlockAll() : C_Heap
  • UnlockHeap() : C_Heap, C_MultiHeap
  • Which() : C_MultiHeap


nmpp: Поля структур - Переменные

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Структуры данных
  • Алфавитный указатель структур данных
  • Иерархия классов
  • Поля структур
  • Указатель
  • Функции
  • Переменные
  • a
  • d
  • h
  • i
  • n
  • p
  • r
  • s
  • t
  • x
  • y

- a -

  • AllocateMode : C_MultiHeap

- d -

  • data : C_RingBuffer< T >
  • data_addr : C_RingBufferRemote< T >
  • dtSpot : spot_struct
  • dttSpot : ds_struct

- h -

  • head : C_RingBuffer< T >, C_RingBufferRemote< T >
  • head_addr : C_RingBufferRemote< T >

- i -

  • id : C_RingBufferRemote< T >
  • im : s_nm64sc
  • isHeapLocked : C_Heap
  • isLocked : S_BufferInfo

- n -

  • nnPxl : ds_struct
  • nnSpot : ds_struct
  • noPxl : spot_struct
  • numAllocateFails : C_MultiHeap
  • numHeaps : C_MultiHeap

- p -

  • pad : C_RingBuffer< T >, C_RingBufferRemote< T >
  • pAllocateLegend : C_MultiHeap
  • pHeap : C_MultiHeap
  • pHeapEnd : C_Heap
  • pNextBuffer : S_BufferInfo
  • pPrevBuffer : S_BufferInfo
  • pZeroBuffer : C_Heap

- r -

  • re : s_nm64sc

- s -

  • size : C_RingBuffer< T >, C_RingBufferRemote< T >
  • size32Buffer : S_BufferInfo
  • size32HeapAvail : C_Heap

- t -

  • tail : C_RingBuffer< T >, C_RingBufferRemote< T >
  • tail_addr : C_RingBufferRemote< T >

- x -

  • Xmax : spot_struct
  • Xmin : spot_struct

- y -

  • Ymax : spot_struct
  • Ymin : spot_struct


nmpp: Файлы

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
Файлы
Полный список документированных файлов.
[уровень детализации 123]
▼ include |
► nmblas |
nmblas_sgemm.h | Part of nmblas library, sgemm function implementation
► nmplc |
cArithmetic.h |
cfixpnt32.h |
cfixpnt64.h |
cInit.h |
cInteger.h |
nmplc.h |
► nmpli |
filter.h |
iArithmetics.h |
iCellTexture.h |
iConvert.h |
iDef.h |
iDeinterlace.h |
iFilter.h |
iFiltration.h |
iFloodFill.h |
iPlessy.h |
iPlessyDetector.h |
iPrint.h |
iReodering.h |
iResample.h |
iSelect.h |
isubpixel2d.h |
isubpixel2dimpl.h |
iSupport.h |
nmpli.h |
warpimg.h |
► nmplm |
mInit.h |
mInverse.h |
mMatrixVector.h |
mMatrixVectorDev.h |
mStat.h |
mSupport.h |
nmplm.h |
► nmpls |
fft.h |
fft_old.h |
fftext.h |
fftref.h |
nmpls.h |
sConvolution.h |
sCorrelation.h |
sFiltration.h |
sfir.h |
sResample.h |
► nmplv |
nmplv.h |
nmtl.h |
sElementary.h |
vArithmetics.h |
vArithmeticsDev.h |
vBitwise.h |
vInit.h |
vSelect.h |
vStat.h |
vSupport.h |
vSupport_.h |
vTransform.h |
► nmtl |
nmtl.h |
nmtlio.h |
tcmplx.h |
tcmplx_spec.h |
tfixpoint.h |
tfixpointmath.h |
tmatrix.h |
tmatrix_spec.h |
tnmcube.h |
tnmcvec.h |
tnmint.h |
tnmmtr.h |
tnmmtrpack.h |
tnmvec.h |
tnmvecpack.h |
tvector.h |
► nmvcore |
vCore.h |
► rpc |
rpc-host.h |
rpc-nmc-func.h |
rpc-nmc.h |
crtdbg2.h |
fft.h |
fft_32fcr.h |
fftexp.h |
macros_fpu.h |
malloc32.h |
metric.h |
minrep.h |
multiheap.h |
nmblas.h | Nmblas (NeuroMatrix Basic Linear Algebra Subroutines)
nmchar.h |
nmdef.h |
nmplc.h |
nmpli.h |
nmplm.h |
nmpls.h |
nmplv.h |
nmpp-cpp.h |
nmpp.h |
nmshort.h |
nmtl.h |
nmtype.h |
ownmalloc.h |
ringbuffer_.h |
ringremote.h |
test.h |
tfixpoint.h |


nmpp: Содержание директории g:/nmpp/include

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
Содержание директории include

Директории

директория | nmblas
директория | nmplc
директория | nmpli
директория | nmplm
директория | nmpls
директория | nmplv
директория | nmtl
директория | nmvcore
директория | rpc

Файлы

файл | crtdbg2.h [Исходные тексты]
файл | fft.h [Исходные тексты]
файл | fft_32fcr.h [Исходные тексты]
файл | fftexp.h [Исходные тексты]
файл | macros_fpu.h [Исходные тексты]
файл | malloc32.h [Исходные тексты]
файл | metric.h [Исходные тексты]
файл | minrep.h [Исходные тексты]
файл | multiheap.h [Исходные тексты]
файл | nmblas.h [Исходные тексты]
nmblas (NeuroMatrix Basic Linear Algebra Subroutines)
файл | nmchar.h [Исходные тексты]
файл | nmdef.h [Исходные тексты]
файл | nmplc.h [Исходные тексты]
файл | nmpli.h [Исходные тексты]
файл | nmplm.h [Исходные тексты]
файл | nmpls.h [Исходные тексты]
файл | nmplv.h [Исходные тексты]
файл | nmpp-cpp.h [Исходные тексты]
файл | nmpp.h [Исходные тексты]
файл | nmshort.h [Исходные тексты]
файл | nmtl.h [Исходные тексты]
файл | nmtype.h [Исходные тексты]
файл | ownmalloc.h [Исходные тексты]
файл | ringbuffer_.h [Исходные тексты]
файл | ringremote.h [Исходные тексты]
файл | test.h [Исходные тексты]
файл | tfixpoint.h [Исходные тексты]


nmpp: Содержание директории g:/nmpp/include/nmblas

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmblas
Содержание директории nmblas

Файлы

файл nmblas_sgemm.h [Исходные тексты]
part of nmblas library, sgemm function implementation


nmpp: Содержание директории g:/nmpp/include/nmplc

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplc
Содержание директории nmplc

Файлы

файл | cArithmetic.h [Исходные тексты]
файл | cfixpnt32.h [Исходные тексты]
файл | cfixpnt64.h [Исходные тексты]
файл | cInit.h [Исходные тексты]
файл | cInteger.h [Исходные тексты]
файл | nmplc.h [Исходные тексты]


nmpp: Исходный файл g:/nmpp/include/nmplc/cArithmetic.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplc
cArithmetic.h
1#ifndef _CARITHMETIC_H_INCLUDED_
2#define _CARITHMETIC_H_INCLUDED_
3
4#include "nmtype.h"
5
6
7
27void nmppcDivC(nm64sc *pnSrcA, nm64s *pnSrcB, nm64sc *Dst);
29
49void nmppcProdC(nm64sc *pnSrcA, nm64sc *pnSrcB, nm64sc *Dst);//ASM
51
52#endif
nm64s
long long nm64s
Definition: nmtype.h:375
nmtype.h
s_nm64sc
Definition: nmtype.h:1364


nmpp: Исходный файл g:/nmpp/include/nmplc/cfixpnt32.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplc
cfixpnt32.h
1//***************************************************************************/
2//* */
3//* Neuroprocessor NM3203 SDK v.1.2 */
4//* */
5//* Заголовочный файл fixpoint32 функций */
6//* 1999 (c) RC Module Inc., Moscow, Russia */
7//* */
8//* */
9//* Date:28.12.99 */
10//***************************************************************************/
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15
16//=============================================================================
42
43int nmppcFixExp32( int nVal);
45//=============================================================================
77
78void nmppcFixSinCos32(int nArg, int* pnSin, int* pnCos);
80
81//=============================================================================
107
108 int nmppcFixArcTan32(int nArg);
110
111
112//=============================================================================
143
144int nmppcDoubleToFix32(double arg);
146
147
148//=============================================================================
149
150
177double nmppcFix32ToDouble(int arg);
179//=============================================================================
205
206 unsigned int nmppcFixSqrt32( unsigned int nVal );
208
209//=============================================================================
210
242 int nmppcFixMul32(int nX, int nY);
244
245//=============================================================================
276
277 int nmppcFixDiv32(int nX, int nY);
279//=============================================================================
315
316 int nmppcFixInv32(int nVal, int nFixpoint);
318
319//=============================================================================
320
347 int nmppcTblFixArcSin32(int nArg);
349//=============================================================================
350
377 int nmppcTblFixArcCos32(int nArg);
379
380
381//=============================================================================
382
409 int nmppcTblFixCos32(int nArg);
411
412//=============================================================================
413
440 int nmppcTblFixSin32(int nArg);
442
443//=============================================================================
444
482 void nmppcFixDivMod32(int nDividend, int nDivisor, int* pnQuotient, int* pnReminder);
483 void nmppcFixDivPosMod32(unsigned int nDividend, unsigned int nDivisor, int* pnQuotient, int* pnReminder);
485#ifdef __cplusplus
486 };
487#endif
488


nmpp: Исходный файл g:/nmpp/include/nmplc/cfixpnt64.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplc
cfixpnt64.h
1//***************************************************************************/
2//* */
3//* Neuroprocessor NM6403 SDK v.1.2 */
4//* */
5//* Заголовочный файл fixpoint64 функций */
6//* 1999 (c) RC Module Inc., Moscow, Russia */
7//* */
8//* */
9//* Date:28.12.99 */
10//***************************************************************************/
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15
16//=============================================================================
42
43 unsigned long nmppcFixSqrt64(unsigned long x);
45//=============================================================================
77
78long nmppcDoubleToFix64(double arg, int fixpoint);
80
81
82//=============================================================================
83
84
117double nmppcFix64ToDouble(long arg , int fixpoint );
119//=============================================================================
120
121
161void nmppcFixDiv64(long* nDividend, long* nDivisor, int nFixpoint, long* nQuotient);
163 // Функция деления A/B для целых чисел со знаком 2*abs(A)<abs(B)
164
165//=============================================================================
197
198 void nmppcFixSinCos64(long nArg, long* pnSin, long *pnCos);
200//=============================================================================
226
227 long nmppcFixArcTan64(long nArg);
229
230 //=============================================================================
256
257 long nmppcFix64Exp01(long nArg);
259
260 long nmppcFrExp(double nArg);
261
262#ifdef __cplusplus
263 };
264#endif
265


nmpp: Исходный файл g:/nmpp/include/nmplc/cInit.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplc
cInit.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: cInit. $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/01/12 14:01:21 $
10//
19//------------------------------------------------------------------------
20#ifndef _CINIT_H_INCLUDED_
21#define _CINIT_H_INCLUDED_
22
23#ifdef __cplusplus
24 extern "C" {
25#endif
26
27//*****************************************************************************
28
29//*****************************************************************************
30
83int nmppcRandMinMaxDiv(int nMin, int nMax, int nDivisible);
84int nmppcRandMinMax(int nMin, int nMax);
85int nmppcRand();
87
88#ifdef __cplusplus
89 };
90#endif
91
92#endif // _CINIT_H_INCLUDED_


nmpp: Исходный файл g:/nmpp/include/nmplc/cInteger.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplc
cInteger.h
1//***************************************************************************/
2//* */
3//* Neuroprocessor NM6403 SDK v.1.2 */
4//* */
5//* Заголовочный файл fixpoint64 функций */
6//* 1999 (c) RC Module Inc., Moscow, Russia */
7//* */
8//* */
9//* Date:28.12.99 */
10//***************************************************************************/
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16//=============================================================================
17
44 unsigned int nmppcSqrt_64u(unsigned long long x);
45//unsigned int nmppcSqrt_32u(unsigned int x);
47//=============================================================================
48
49// Функция деления A/B для целых чисел со знаком 2*abs(A)<abs(B)
50void IDivInv64(
51 long* Dividend, // делимое
52 long* Divisor, // делитель
53 const int DivIterations, // кол-во итераций при пошаговом(побитовом) делении
54 long* Quotient // частное
55 );
56long Fix64Exp01(long arg);
57
58
59
60
61#ifdef __cplusplus
62 };
63#endif


nmpp: Исходный файл g:/nmpp/include/nmplc/nmplc.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplc
nmplc.h
1
2#ifndef INCLUDED_nmplc
3#define INCLUDED_nmplc
4
5#include "nmtype.h"
6#include "nmdef.h"
7
8
9
43#include "cInit.h"
44
45
55#include "cInteger.h"
56
66#include "cfixpnt64.h"
76#include "cfixpnt32.h"
77
78#include "cfixpnt64.h"
88#include "cArithmetic.h"
89
90
91
92
93#endif
nmtype.h


nmpp: Содержание директории g:/nmpp/include/nmpli

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
Содержание директории nmpli

Файлы

файл | filter.h [Исходные тексты]
файл | iArithmetics.h [Исходные тексты]
файл | iCellTexture.h [Исходные тексты]
файл | iConvert.h [Исходные тексты]
файл | iDef.h [Исходные тексты]
файл | iDeinterlace.h [Исходные тексты]
файл | iFilter.h [Исходные тексты]
файл | iFiltration.h [Исходные тексты]
файл | iFloodFill.h [Исходные тексты]
файл | iPlessy.h [Исходные тексты]
файл | iPlessyDetector.h [Исходные тексты]
файл | iPrint.h [Исходные тексты]
файл | iReodering.h [Исходные тексты]
файл | iResample.h [Исходные тексты]
файл | iSelect.h [Исходные тексты]
файл | isubpixel2d.h [Исходные тексты]
файл | isubpixel2dimpl.h [Исходные тексты]
файл | iSupport.h [Исходные тексты]
файл | nmpli.h [Исходные тексты]
файл | warpimg.h [Исходные тексты]


nmpp: Исходный файл g:/nmpp/include/nmpli/filter.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
filter.h
1/*
2#ifdef __cplusplus
3 extern "C" {
4#endif
5#include "nmtype.h"
6#define NmppiFilterState nm64s
7
8void nmppiFilter_8s16s( nm8s * pSrcImg, nm16s* pDstImg, int nWidth, int nHeight, NmppiFilterState* pKernel);
9int nmppiFilterInit_8s16s(int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, NmppiFilterState* pKernel);
10int nmppiFilterInitAlloc_8s16s(NmppiFilterState** ppState, int* pKernel, int kerWidth, int kerHeight, int imgWidth);
11
12void nmppiFilter_16s32s( nm16s * pSrcImg, nm32s* pDstImg, int nWidth, int nHeight, NmppiFilterState* pKernel);
13int nmppiFilterInit_16s32s(int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, NmppiFilterState* pKernel);
14int nmppiFilterInitAlloc_16s32s(NmppiFilterState** ppState, int* pKernel, int kerWidth, int kerHeight, int imgWidth);
15
16void nmppiFilterFree(NmppiFilterState* pState);
17
18
19
20
21
22#ifdef __cplusplus
23 };
24#endif
25*/


nmpp: Исходный файл g:/nmpp/include/nmpli/iArithmetics.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iArithmetics.h
1 #ifndef __IARITHMETICS_H
2#define __IARITHMETICS_H
3#ifdef ARITHM
4#include "iDef.h"
5
6
7//*****************************************************************************
8
100void nmppiAddConvertRShiftI(nm16s* pSrcDstImg, int nSrcDstStride, nm32s* pSrcImg, int nSrcStride, int nShift, int nWidth, int nHeight);
102
103//*****************************************************************************
104
196
197void nmppiSubConvertRShiftI(nm16s * pSrcDstImg, int nSrcDstStride, nm32s * pSrcImg, int nSrcStride, int nShift, int nWidth, int nHeight);
199
200//*****************************************************************************
201
282
283void nmppiAdd_16s(nm16s* pSrcDstImg, int nSrcDstStride, nm16s *pSrcImg, int nSrcStride, int nWidth, int nHeight);
285
286//*****************************************************************************
287
371
372void nmppiSub_16s(nm16s* pSrcDstImg, int nSrcDstStride, nm16s *pSrcImg, int nSrcStride, int nWidth, int nHeight);
373
375
376//*****************************************************************************
377
471
472void nmppiHalfsum(nm16s* pSrcMtr1, int nSrcStride1, nm16s* pSrcMtr2,
473 int nSrcStride2, nm16s* pDstMtr, int nDstStride, int nWidth,int nHeight);
474
476
477
534void nmppiWAdd2I(RGB32_nm10s* pSrcImg1, int nMulVal1, RGB32_nm10s* pSrcImg2, int nMulVal2, int nAddVal, RGB32_nm10s* pDstImg, int nSize);
536
537
573void nmppiRsh2(RGB32_nm10u* pSrcImg, RGB32_nm10u* pDstImg, int nSize);
575#endif
576#endif
nm32s
int nm32s
Definition: nmtype.h:292
nm16s
short nm16s
Definition: nmtype.h:243
RGB32_nm10s
Definition: iDef.h:60
RGB32_nm10u
Definition: iDef.h:52


nmpp: Исходный файл g:/nmpp/include/nmpli/iCellTexture.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iCellTexture.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: CellTexture.h $
4//
5// <Название библиотеки>
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/02/10 12:36:38 $
10//
19//------------------------------------------------------------------------
20#ifndef __CELLTEXTURE_H
21#define __CELLTEXTURE_H
22
23
24//Класс определяет точку на плоскости
25class RPoint {
26 public:
27 double x;
28 double y;
29
30
31 //virtual ~RPoint() {};
32
33
34 RPoint() : x(0), y(0)
35 {
36 }
37
38 RPoint(const RPoint &p) : x(p.x), y(p.y)
39 {
40 }
41
42 RPoint (double _x, double _y) :x(_x), y(_y)
43 {
44 }
45
46 RPoint &operator= (const RPoint &p)
47 {
48 x = p.x; y = p.y;
49 return (*this);
50 }
51
52
53};
54
55
56
57
85void nmppiCreateCellTexture(unsigned char *texture_img, int width, int height);
86void nmppiCreateRandomCellTexture(unsigned char *texture_img, int width, int height);
87void nmppiCreateComplexTexture(unsigned char *texture_img, int width, int height);
89
90
110//int PointInRectangle(RPoint& p, RPoint *borders);
112
113#endif
RPoint
Definition: iCellTexture.h:25


nmpp: Исходный файл g:/nmpp/include/nmpli/iConvert.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iConvert.h
1//#ifndef __ICONVERT_H
2//#define __ICONVERT_H
3//
5//#include "nmtype.h"
6//#include "iDef.h"
7//
8//
9//#ifdef __cplusplus
10// extern "C" {
11//#endif
12//
14//
15// /**
16// \internal
17// \defgroup nmppiRShiftConvert nmppiRShiftConvert
18// \ingroup iInit
19// \brief
20// \ru Преобразование типов для элементов изображения.
21// \en Conversion of types for image elements.
22//
23// \~
24//
25// \f[
26// pDst(x,y) = Convert(pSrcImg(x,y) >> nShift)
27// \f]
28//
29// \f[ x = \overline{0 \ldots nWidth-1}, \quad
30// y = \overline{0 \ldots nHeight-1}
31// \f]
32//
33// \ru Функция преобразует тип элементов путем отсечения верхних разрядов.
34// \en The function converts a type of elements by means of most significant bits truncation.
35//
36// \~
37// \~
38// \param pSrcImg
39// \ru Указатель на первый элемент ROI для исходного изображения.
40// \en Pointer to the first ROI element for the source image.
41// \~
42// \param nSrcStride \ru Межстроковое смещение для исходного изображения
43// (измеряется в 32-х разрядных словах).
44// \en Row-to-row shift for the source image \n
45// (measured in 32-bit words).
46// \param pDstImg
47// \ru Указатель на первый элемент ROI для результирующего изображения.
48// \en Pointer to the first ROI element for the result image.
49// \~
50// \param nDstStride \ru Межстроковое смещение для результирующего изображения
51// (измеряется в 32-х разрядных словах).
52// \en Row-to-row shift for the result image \n
53// (measured in 32-bit words).
54// \param nShift
55// \ru Определяет число бит на которое предварительно сдвигается исходное
56// изображение.
57// \en Defines for how many bits the source image is preliminary shifted.
58// \~
59// \param nWidth
60// \ru Ширина ROI (измеряется в пикселях).
61// \en ROI width (measured in pixels).
62// \~
63// \param nHeight
64// \ru Высота ROI (измеряется в пикселях).
65// \en ROI height (measured in pixels).
66//
67// \~
68// \return \e void
69//
70// \restr
71// \ru
72// - Указатели на первый элемент ROI должны быть выровнены
73// в памяти на границу 64-х разрядного слова;
74// - Ширина ROI должна быть кратна числу пикселей результирующего изображения
75// в 64-х разрядном слове;
76// - Межстроковые смещения должны быть кратны двум.
77// - Значение параметра nShift должно быть кратно 2.
78// \en
79// - Pointers to the first ROI element should be aligned
80// in memory by the 64-bit word boundary;
81// - ROI width should be divisible by the number of pixels of the result image
82// in a 64-bit word;
83// - Row-to-row shifts should be divisible by two;
84// - nShift parameter value should be divisible by two.
85//
86// \par
87// \xmlonly
88// <testperf>
89// <param name="pSrcImg"> im0 im1 </param>
90// <param name="nSrcStride"> 128 </param>
91// <param name="nShift"> 2 </param>
92// <param name="pDstImg"> im0 im1 </param>
93// <param name="nDstStride"> 64 </param>
94// <param name="nHeight"> 128 </param>
95// <param name="nWidth"> 128 </param>
96// <size> nWidth*nHeight </size>
97// </testperf>
98// <testperf>
99// <param name="pSrcImg"> im0 </param>
100// <param name="nSrcStride"> 128 </param>
101// <param name="nShift"> 2 </param>
102// <param name="pDstImg"> im1 </param>
103// <param name="nDstStride"> 64 </param>
104// <param name="nHeight"> 128 </param>
105// <param name="nWidth"> 8 32 128 </param>
106// <size> nWidth*nHeight </size>
107// </testperf>
108// \endxmlonly
109// */
110// //! \{
111//void nmppiRShiftConvert(nm32s* pSrcImg, int nSrcStride, nm16s* pDstImg, int nDstStride, int nShift, int nWidth, int nHeight);
112// //! \}
113//
114//
128//
129// /**
130// \defgroup nmppiConvert nmppiConvert
131// \ingroup iInit
132// \brief
133// \ru Преобразование типов для элементов изображения.
134// \en Conversion of types for image elements.
135//
136// \~
137// \ru Функция конвертирует элементы RGB между 8-м разрядным представлением
138// и 10-ти разрядным.
139// \en Function converts RGB elements between 8-bits presentation and 10-bits.
140//
141// \~
142// \~
143// \param pSrcImg
144// \ru Указатель на первый элемент исходного изображения.
145// \en Pointer to the first element of the source image.
146// \~
147// \param pDstImg
148// \ru Указатель на первый элемент результирующего изображения.
149// \en Pointer to the first element of the result image.
150// \~
151// \param nSize
152// \ru Количество элементов в изображении.
153// \en Quantity of elements.
154//
155// \~
156// \return \e void
157//
158// \restr
159// \ru
160// - Указатели на изображения должны быть выровнены
161// в памяти на границу 64-х разрядного слова;
162// \en
163// - Pointers to the images should be aligned in memory
164// by the 64-bit word boundary;
165//
166// \par
167// \xmlonly
168// <testperf>
169// <param name="pSrcImg"> im0 im1 </param>
170// <param name="pDstImg"> im0 im1 </param>
171// <param name="nSize"> 128 </param>
172// <size> nSize </size>
173// </testperf>
174// <testperf>
175// <param name="pSrcImg"> im0 </param>
176// <param name="pDstImg"> im1 </param>
177// <param name="nSize"> 8 32 128 </param>
178// <size> nSize </size>
179// </testperf>
180// \endxmlonly
181// */
182// //! \{
183//void nmppiConvertRGB32_8u10u(RGB32_nm8u* pSrcImg, RGB32_nm10u* pDstImg, int nSize);
184//void nmppiConvertRGB32_10u8u(RGB32_nm10u* pSrcImg, RGB32_nm8u* pDstImg, int nSize);
185// //! \}
186//
187//
188//
205//
206// /**
207// \defgroup nmppiRGB32ToGray nmppiRGB32ToGray
208// \ingroup iInit
209// \brief
210// \ru Преобразование пикселей из RGB в яркость
211// \en
212//
213// \~
214// \param pRGB
215// \ru Вход, по 4 байта на пиксель. Порядок байтов B, G, R, 0.
216// \en
217// \param pDstGray
218// \ru Результат в виде 32 битных целых чисел, в которых
219// полезные данные занимают младшие 24 бита. Для получения
220// восьмибитовых пикселей неоходимо вырезать биты 16..23,
221// например, с помощью
222// nmppsClipRShiftConvert_Add_32s(nm32s* pSrcVec, int nClipFactor,int nShift, nm64u* nAddValue,nm8s* pDstVec, int nSize);
223// с параметрами nClipFactor=24, nShift=16.
224// \en
225// \param nSize
226// \ru Количество пикселей на входе и выходе. nSize=[64,128,192,...]
227// \en
228// \param pTmpBuf
229// \ru Временный массив размером nm32s[nSize] .
230// \en Temporary array with size of nm32s[nSize].
231//
232// \~
233// \par
234// \xmlonly
235// <testperf>
236// <param name="pRGB"> im0 im1 </param>
237// <param name="pDstGray"> im0 im1 </param>
238// <param name="pTmpBuf"> im0 im1 </param>
239// <param name="nSize"> 128 </param>
240// <size> nSize </size>
241// </testperf>
242// <testperf>
243// <param name="pRGB"> im0 </param>
244// <param name="pDstGray"> im1 </param>
245// <param name="pTmpBuf"> im2 </param>
246// <param name="nSize"> 8 32 128 </param>
247// <size> nSize </size>
248// </testperf>
249// \endxmlonly
250//
251// */
252// //! \{
253//void nmppiRGB32ToGray_8u32u(RGB32_nm8u* pRGB, nm32u* pDstGray, int nSize);
254//void nmppiRGB32ToGray_8u32s(RGB32_nm8u* pRGB, nm32s* pDstGray, int nSize);
255//void nmppiRGB32ToGray_8u8s(RGB32_nm8u* pRGB, nm8s* pDstGray, int nSize, void *pTmpBuf);
256//
257//void nmppiRGB32ToGray_10s32s(RGB32_nm10s* pRGB, nm32s* pDstGray, int nSize);
258//void nmppiRGB32ToGray_10s32u(RGB32_nm10s* pRGB, nm32u* pDstGray, int nSize);
259//void nmppiRGB32ToGray_10s8s(RGB32_nm10s* pRGB, nm8s* pDstGray, int nSize, void *pTmpBuf);
260// //! \}
261//
262//
263//
264//
265//
266//
267// /**
268// \internal
269// \defgroup nmppiGrayToRGB242424242424242424 nmppiGrayToRGB242424242424242424
270// \ingroup iInit
271// \brief
272// \ru преобразование из чернобелого формата в RGB24
273// \en Gray to RGB24 conversion
274// \~
275// \~
276// \param pSrcImg
277// \ru Входное изображение
278// \en Input image
279// \~
280// \param pDstImg
281// \ru Выходное изображение
282// \en Output image
283// \~
284// \param nSize
285// \ru Размер изображение в пикселях
286// \en Size of image in pixels
287// \~
288// */
289// //! \{
290//void nmppiGrayToRGB242424242424242424(nm8u* pSrcImg, RGB24_nm8u* pDstImg, int nSize);
291//void nmppiRGB24ToGray(RGB24_nm8u* pRGB, nm8u* pDstGray, int nSize);
292// //! \}
293// #ifdef __cplusplus
294// };
295// #endif
296//#endif
297//


nmpp: Исходный файл g:/nmpp/include/nmpli/iDef.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iDef.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: C_Frame.h $
4//
5// FRC Library component
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/02/10 12:36:38 $
10//
19//------------------------------------------------------------------------
20
21#ifndef _IDEF_H_
22#define _IDEF_H_
23
24//#ifdef __NM__
25//typedef void RGB24_nm8u;
26//#else
27struct RGB24_nm8u
28{
29 unsigned char nB:8;
30 unsigned char nG:8;
31 unsigned char nR:8;
32};
33//#endif
34
35struct RGB32_nm8u
36{
37 unsigned int nB:8;
38 unsigned int nG:8;
39 unsigned int nR:8;
40 unsigned int nA:8;
41};
42
43struct RGB32_nm8s
44{
45 int nB:8;
46 int nG:8;
47 int nR:8;
48 int nA:8;
49};
50
51struct RGB32_nm10u
52{
53 unsigned int nB:10;
54 unsigned int nG:10;
55 unsigned int nR:10;
56 unsigned int nA:2;
57};
58
59struct RGB32_nm10s
60{
61 int nB:10;
62 int nG:10;
63 int nR:10;
64 int nA:2;
65};
66
67//struct RGB64_nm16u
68//{
69// unsigned int nB:16;
70// unsigned int nG:16;
71// unsigned int nR:16;
72// unsigned int nA:16;
73//};
74
75#endif
RGB24_nm8u
Definition: iDef.h:28
RGB32_nm10s
Definition: iDef.h:60
RGB32_nm10u
Definition: iDef.h:52
RGB32_nm8s
Definition: iDef.h:44
RGB32_nm8u
Definition: iDef.h:36


nmpp: Исходный файл g:/nmpp/include/nmpli/iDeinterlace.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iDeinterlace.h
1#include "nmpp.h"
2#include "nmpli.h"
3
4#ifdef __cplusplus
5 extern "C" {
6#endif
7
8
19void nmppiDeinterlaceSplit(nm8u* pSrcImg, int nSrcWidth, int nSrcHeight, nm8u* pDstEven, nm8u* pDstOdd);
20
28void nmppiDeinterlaceBlend(nm8u* pSrcEven, nm8u* pSrcOdd, int nSrcWidth, int nSrcHeight, nm8u* pDst);
29
31
32#ifdef __cplusplus
33 };
34#endif
nmppiDeinterlaceBlend
void nmppiDeinterlaceBlend(nm8u *pSrcEven, nm8u *pSrcOdd, int nSrcWidth, int nSrcHeight, nm8u *pDst)
nmppiDeinterlaceSplit
void nmppiDeinterlaceSplit(nm8u *pSrcImg, int nSrcWidth, int nSrcHeight, nm8u *pDstEven, nm8u *pDstOdd)
nm8u
unsigned char nm8u
Definition: nmtype.h:448


nmpp: Исходный файл g:/nmpp/include/nmpli/iFilter.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iFilter.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: iFiltration.h $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/02/10 12:36:38 $
10//
19//------------------------------------------------------------------------
20
21#ifndef _IFILTER_H_INCLUDED_
22#define _IFILTER_H_INCLUDED_
23
24#define NmppiFilterState nm64s
25#include "nmtype.h"
26
27#ifdef __cplusplus
28 extern "C" {
29#endif
30
31
32struct S_nmppiFilterKernel {
33#ifdef __NM__
34 nm32s* pDispArray;
35 nm32s* pWeightMatrix;
36#else
37 nm32s* pDispArray;
38 nm32s* pWeightMatrix;
39 int nKerWidth;
40 int nKerHeight;
41#endif
42};
43
44
45struct S_nmppiFilterKernel_32s32s {
46#ifdef __NM__
47 nm32s* pDispArray;
48 nm32s* pWeightMatrix;
49 int nKerWidth;
50 int nKerHeight;
51#else
52 nm32s* pDispArray;
53 nm32s* pWeightMatrix;
54 int nKerWidth;
55 int nKerHeight;
56#endif
57};
58
59 //*****************************************************************************
114
115int nmppiSetFilter_8s8s (int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, nm64s* pKernel);
116int nmppiSetFilter_8s16s (int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, nm64s* pKernel);
117int nmppiSetFilter_8s32s (int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, nm64s* pKernel);
118int nmppiSetFilter_16s16s(int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, nm64s* pKernel);
119int nmppiSetFilter_16s32s(int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, nm64s* pKernel);
120int nmppiSetFilter_32s32s(int* pWeights, int nKerWidth, int nKerHeight, int nImgWidth, nm64s* pKernel);
122
123int nmppiGetFilterKernelSize32_8s8s(int nKerWidth, int nKerHeight);
124int nmppiGetFilterKernelSize32_8s16s(int nKerWidth, int nKerHeight);
125int nmppiGetFilterKernelSize32_8s32s(int nKerWidth, int nKerHeight);
126int nmppiGetFilterKernelSize32_16s16s(int nKerWidth, int nKerHeight);
127int nmppiGetFilterKernelSize32_16s32s(int nKerWidth, int nKerHeight);
128int nmppiGetFilterKernelSize32_32s32s(int nKerWidth, int nKerHeight);
129
130//*****************************************************************************
131
193void nmppiFilter_8s8s( nm8s * pSrcImg, nm8s* pDstImg, int nWidth, int nHeight, nm64s* pKernel);
194void nmppiFilter_8s16s( nm8s * pSrcImg, nm16s* pDstImg, int nWidth, int nHeight, nm64s* pKernel);
195void nmppiFilter_8s32s( nm8s * pSrcImg, nm32s* pDstImg, int nWidth, int nHeight, nm64s* pKernel);
196void nmppiFilter_16s16s( nm16s * pSrcImg, nm16s* pDstImg, int nWidth, int nHeight, nm64s* pKernel);
197void nmppiFilter_16s32s( nm16s * pSrcImg, nm32s* pDstImg, int nWidth, int nHeight, nm64s* pKernel);
198void nmppiFilter_32s32s( nm32s * pSrcImg, nm32s* pDstImg, int nWidth, int nHeight, nm64s* pKernel);
200
201
202
203//*****************************************************************************
204
286//void nmppiFilter_perf(int* pWeights, int nKerWidth, int nKerHeight, nm8s* pSrcImg, nm8s* pDstImg, int nImgWidth, int nImgHeight, nm64s* pKernel);
287//void nmppiFilter_perf(int* pWeights, int nKerWidth, int nKerHeight, nm8s* pSrcImg, nm16s* pDstImg, int nImgWidth, int nImgHeight, nm64s* pKernel);
288//void nmppiFilter_perf(int* pWeights, int nKerWidth, int nKerHeight, nm8s* pSrcImg, nm32s* pDstImg, int nImgWidth, int nImgHeight, nm64s* pKernel);
289//void nmppiFilter_perf(int* pWeights, int nKerWidth, int nKerHeight, nm16s* pSrcImg, nm16s* pDstImg, int nImgWidth, int nImgHeight, nm64s* pKernel);
290//void nmppiFilter_perf(int* pWeights, int nKerWidth, int nKerHeight, nm16s* pSrcImg, nm32s* pDstImg, int nImgWidth, int nImgHeight, nm64s* pKernel);
291//void nmppiFilter_perf(int* pWeights, int nKerWidth, int nKerHeight, nm32s* pSrcImg, nm32s* pDstImg, int nImgWidth, int nImgHeight, nm64s* pKernel);
293
294
295
296
297
304
310//template <class nmbits_in, class nmbits_out> class CnmppiFIR
311//{
312//public:
313// void (*pfFree32)(void*); ///< Указатель на функции освобождения памяти (pKernel)
314// int nKerWidth; ///< Ширина окна коэффицентов КИХ фильтра
315// int nKerHeight; ///< Высота окна коэффицентов КИХ фильтра
316// nm64s* pKernel; ///< Указатель на внутреннюю структуру коэффициентов
317// int nKernelSize; ///< Размер памяти необходимый для хранения внутренней структуру коэффициентов
318//
319// //! Конструктор КИХ фильтра
320// /*!
321// Выделяет область памяти под внутреннюю структуру коэффицентов
322// \param nKerWidth Ширина окна фильтра. nKerWidth=[3,5,7,...]
323// \param nKerHeight Высота окна фильтра. nKerHeight=[1,3,5,7,...]
324// \param malloc32_func указатель на функцию выделения динамической памяти 32-разрядными словами.
325// \param free32_func указатель на функцию динамического особождения памяти
326// */
327// CnmppiFIR(int nKerWidth, int nKerHeight, void* (*malloc32_func)(unsigned),void (*free32_func)(void*));
328//
329//
330// //! Загружает коэффиценты фильтра и инициализирует внутреннюю структуру хранениния коэффициентов в pKernel
331// /*!
332// \param pWeights коэффициенты фильтра
333// \param nImgWidth Ширина изображения к которому данный фильтр будет применен. Кратность согласно входному типу.
334// \return указатель на внутреннюю стуктуру коэффициентов. 0- Если память под структуру не была выделена.
335// */
336// void* SetWeights(int* pWeights, int nImgWidth);
337//
338// //! Функция одномерной фильтрации
339// /*!
340// \f[
341// pDstImg[y][x] = \sum\limits_{i = 0}^{nKerHeight-1} \sum\limits_{j = 0}^{nKerWidth-1} {pSrcImg[y+i-nKerHeight/2][x+j-nKerWidth/2] \cdot pWeights[i][j]} ,x=0 \ldots nImgWidth-1,y=0 \ldots nImgHeight-1
342// \f]
343//
344//
345// \param pSrcImg входное изображение
346// \param pDstImg выходное изображение
347// \param nImgWidth Ширина изображения к которому данный фильтр будет применен. Кратность согласно входному типу.
348// \param nImgHeight Высота изображения (измеряется в пикселях).
349//
350// \warning При вычислении первых и последних nKerHeight/2 сторк проивзодится выход за границы входного массива pSrcImg .
351// Для коректного поведения функции необходимо дополнительные резервировать поля размером не менее *nImgWidth*(nKernHeight/2+1) нулевых элементов перед началом и в конце массива pSrcImg.
352// */
353// void Filter(nmbits_in* pSrcImg, nmbits_out* pDstImg, int nImgWidth,int nImgHeight);
354//
355// //! Освобождает динамическую область памяти pKernel
356// ~CnmppiFIR();
357//
358//
359//};
360//
362
363
364#ifdef __cplusplus
365 };
366#endif
367
368
369#endif // _IFILTER_H_INCLUDED_
370
371
nm32s
int nm32s
Definition: nmtype.h:292
nm64s
long long nm64s
Definition: nmtype.h:375
nm16s
short nm16s
Definition: nmtype.h:243
nm8s
char nm8s
Definition: nmtype.h:167
nmtype.h
S_nmppiFilterKernel_32s32s
Definition: iFilter.h:45
S_nmppiFilterKernel
Definition: iFilter.h:32


nmpp: Исходный файл g:/nmpp/include/nmpli/iFiltration.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iFiltration.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: iFiltration.h $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/02/10 12:36:38 $
10//
19//------------------------------------------------------------------------
20
21#ifndef _IFILTRATION_H_INCLUDED_
22#define _IFILTRATION_H_INCLUDED_
23
24#ifdef __cplusplus
25 extern "C" {
26#endif
27
28#include "iFilter.h"
29//*****************************************************************************
30
80void nmppiMedian3x3( nm8s7b * pSrc, nm8s7b *pDst, int nWidth, int nHeight, void* pLTmp , void* pGTmp );
82
83
84
85
86#ifdef __cplusplus
87 };
88#endif
89
90
91#endif // _IFILTRATION_H_INCLUDED_
92
93
nm8s7b
nm8s nm8s7b
Definition: nmtype.h:197


nmpp: Исходный файл g:/nmpp/include/nmpli/iFloodFill.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iFloodFill.h
1/******************************************************************************
2* RC Module
3* NeuroMatrix(r) NM6403 Software
4*
5* Image Processing Library
6* (C-callable functions)
7*
8* File: FldFill.h
9* Contents: FloodFill routines
10* Software design: Alex Ruzavin
11*
12* Start date: 9may99
13* Release date: 23jun99
14*
15*
16******************************************************************************/
17#ifndef __FLOODFILL_HEADER
18#define __FLOODFILL_HEADER
19
20
21
22typedef struct tagSegmentInfo
23{
24 int xMin;
25 int yMin;
26 int xMax;
27 int yMax;
28 int N; /* number of points */
29} SegmentInfo;
30
31
32
33
80int nmppiFloodFill( unsigned int * pSrcImage,SegmentInfo * pSegmentInfo,unsigned int * pSegmentImage, int nWidth,int nHeight , unsigned int * pTmpBuff) ;
82
83
84typedef struct spot_struct{
85 int Xmin;
86 int Ymin;
87 int Xmax;
88 int Ymax;
89 int noPxl;
90 int dtSpot;
91} spot_struct;
92
93
94typedef struct ds_struct{
95 int nnSpot;
96 int nnPxl;
97 int dttSpot;
98 } ds_struct;
99
100
101
102//extern "C" {
291
292// extern "C" {
293int FloodFill8(
294 void* src,
295 void* dst,
296 int nWidth,
297 int nHeight,
298 spot_struct* spot,
299 int lenSpot,
300 unsigned* pixels,
301 int mSpot,
302 int dtFull,
303 int dtSpot,
304 int lDiag,
305 int lDropSpot,
306 ds_struct* dropSpot,
307 int nPxlMin,
308 int nPxlMax,
309 int dXYmin,
310 int dXYmax
311);
312//};
314
315
316
317
318#endif /* __FLOODFILL_HEADER */
FloodFill8
int FloodFill8(void *src, void *dst, int nWidth, int nHeight, spot_struct *spot, int lenSpot, unsigned *pixels, int mSpot, int dtFull, int dtSpot, int lDiag, int lDropSpot, ds_struct *dropSpot, int nPxlMin, int nPxlMax, int dXYmin, int dXYmax)
Функция FloodFill8 выполняет поиск пятен (сегментов, односвязных областей) во входной 8-битной матриц...
ds_struct
Definition: iFloodFill.h:94
ds_struct::nnPxl
int nnPxl
суммарное число пикселов в отбракованных пятнах
Definition: iFloodFill.h:96
ds_struct::nnSpot
int nnSpot
общее число отбракованных пятен (по данному признаку)
Definition: iFloodFill.h:95
ds_struct::dttSpot
int dttSpot
общее время обработки отбракованных пятен (в тактах процессора)
Definition: iFloodFill.h:97
spot_struct
Definition: iFloodFill.h:84
spot_struct::Ymin
int Ymin
коородинаты минимального прямоугольника, содержащего пятно
Definition: iFloodFill.h:86
spot_struct::noPxl
int noPxl
номер начального пиксела следующего пятна в массиве pixels
Definition: iFloodFill.h:89
spot_struct::Ymax
int Ymax
коородинаты минимального прямоугольника, содержащего пятно
Definition: iFloodFill.h:88
spot_struct::dtSpot
int dtSpot
время обработки пятна (в тактах процессора)
Definition: iFloodFill.h:90
spot_struct::Xmax
int Xmax
коородинаты минимального прямоугольника, содержащего пятно
Definition: iFloodFill.h:87
spot_struct::Xmin
int Xmin
коородинаты минимального прямоугольника, содержащего пятно
Definition: iFloodFill.h:85
tagSegmentInfo
Definition: iFloodFill.h:23


nmpp: Исходный файл g:/nmpp/include/nmpli/iPlessy.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iPlessy.h
1#ifndef __PLESSY_H
2#define __PLESSY_H
3
4#ifdef __cplusplus
5 extern "C" {
6#endif
7
8//class I_PlessyCornerDetector предназначен для поиска характерных точек на изображении по методу Plessy.
9//На выходе выдаются коордитаты характерных точек с субпиксельной точностью.
10class I_PlessyCornerDetector
11{
12public:
13 //Распределяет память для полей класса.
14 //w, h, ww - ширина, высота и step картинки соответственно.
15 virtual void Allocate(int w, int h, int ww) = 0;
16
17 //Освобождает память, выделенную под поля класса.
18 virtual void DeAllocate() = 0;
19
20 //Собственно ищет углы.
21 //w, h, ww - as above.
22 //Picture - обрабатываемая картинка.
23 //*px, *py - массивы x и y координат углов (размер массивов определяется снаружи, максимальное
24 // значение - (w/2)*(h/2).
25 //nc - количество найденных углов.
26 virtual void FindCorners(unsigned char *Picture, int w, int h, int ww, float *px, float *py, int& nc) = 0;
27
28 //Освобождает интерфейс объекта
29 virtual void Release() = 0;
30
31 //Устанавливает threshold, по которому порожится Plessy-массив. Для 16s обычно ставится 32.0f.
32 //Для 32f обычно ставится 1/1024.
33 //Чем меньше порог, тем выше "качество" угла
34 virtual void SetThreshold(float _threshold)=0;
35};
36
37//Тип реализации (float и short соответственно)
38enum PCD_TYPE {PCD_32f, PCD_16s};
39
40//Создает объект и возвращает интерфейс I_PlessyCornerDetector
41 I_PlessyCornerDetector* CreatePlessyCornerDetector(PCD_TYPE type);
42
43#ifdef __cplusplus
44 };
45#endif
46#endif
I_PlessyCornerDetector
Definition: iPlessy.h:11


nmpp: Исходный файл g:/nmpp/include/nmpli/iPlessyDetector.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iPlessyDetector.h
1#ifndef __PLESSYDETECTOR_H
2#define __PLESSYDETECTOR_H
3
4#include "iplessy.h"
5#include "isubpixel2dimpl.h"
6
7
8class C_PlessyCornerDetector : public I_PlessyCornerDetector
9{
10protected:
11 I_2DSubPixelMinPosition *SubPixelMinPosition;
12 short *fxi, *fyi;
13 short *Picture16;
14 float *SumSxxSyy, *Subxy;
15 float S9[9];
16 float threshold;
17 unsigned char *cres;
18
19 virtual void CountDer(unsigned char *Picture, int w, int h, int ww);
20 virtual void CountPlessy(int w, int h, int ww) {};
21public:
22
23 C_PlessyCornerDetector();
24 ~C_PlessyCornerDetector();
25 virtual void Allocate(int w, int h, int ww);
26 virtual void DeAllocate();
27 virtual void FindCorners(unsigned char *Picture, int w, int h, int ww, float *px, float *py, int& nc);
28 virtual void Release();
29 virtual void SetThreshold(float _threshold)=0;
30};
31
32
33
34class C_PlessyCornerDetector_32f : public C_PlessyCornerDetector
35{
36protected:
37 float *fx, *fy;
38 float *sxx, *sxy, *syy;
39 float *Sxx, *Sxy, *Syy;
40 float *MulSxxSyy, *MulSxySxy;
41 float *cSubxy;
42 float threshold;
43
44 virtual void CountPlessy(int w, int h, int ww);
45 virtual void CountDer(unsigned char *Picture, int w, int h, int ww);
46public:
47 C_PlessyCornerDetector_32f(){};
48 ~C_PlessyCornerDetector_32f(){};
49 virtual void Allocate(int w, int h, int ww);
50 virtual void DeAllocate();
51 virtual void SetThreshold(float _threshold);
52};
53
54
55
56class C_PlessyCornerDetector_16s : public C_PlessyCornerDetector
57{
58protected:
59 short *sxxi, *sxyi, *syyi;
60 short *Sxxi, *Sxyi, *Syyi;
61 short *Sxxit, *Syyit;
62 short *SumSxxSyyi, *MulSxxSyyi, *MulSxySxyi, *Subxyi;
63 short *cSubxyi;
64 short threshold;
65
66 virtual void CountPlessy(int w, int h, int ww);
67
68public:
69 C_PlessyCornerDetector_16s(){};
70 ~C_PlessyCornerDetector_16s(){};
71 virtual void Allocate(int w, int h, int ww);
72 virtual void DeAllocate();
73 virtual void SetThreshold(float _threshold);
74};
75
76#endif
C_PlessyCornerDetector_16s
Definition: iPlessyDetector.h:57
C_PlessyCornerDetector_32f
Definition: iPlessyDetector.h:35
C_PlessyCornerDetector
Definition: iPlessyDetector.h:9
I_2DSubPixelMinPosition
Definition: isubpixel2d.h:8
I_PlessyCornerDetector
Definition: iPlessy.h:11


nmpp: Исходный файл g:/nmpp/include/nmpli/iPrint.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iPrint.h
1
2//
3//
4// NMPP library
5//
6// Copyright (c) RC Module Inc.
7//
8// 12:24 05.02.2015
9//
19
20#ifndef _IPRINT_H_INCLUDED_
21#define _IPRINT_H_INCLUDED_
22
23
40 int nmppiPrint8x15( char *str, void* img, int imgWidth, int x, int y ,int FGcolor, int BGcolor);
42
53 char* hex2ascii(int value, char* str);
55
65//char* hex2ascii(int value);
67
68#endif // _IPRINT_H_INCLUDED_
69
70


nmpp: Исходный файл g:/nmpp/include/nmpli/iReodering.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iReodering.h
1#ifndef __IREODERING_H
2#define __IREODERING_H
3
4#ifdef __cplusplus
5 extern "C" {
6#endif
7
8
9//*****************************************************************************
10
21//*****************************************************************************
22
36//*****************************************************************************
37
103
104void nmppiSplitIntoBlocks8x8(
105 nm8s* pSrcImg,
106 nm8s* pDstBlockSeq,
107 int nWidth,
108 int nHeight
109 );
111
112void nmppiSplitInto2x2Blocks8x8(
113 nm8u* pSrcImg,
114 nm8u* pDstBlockSeq,
115 int nWidth,
116 int nHeight
117 );
118
119void nmppiSplitInto2x2Blocks8x8xor(
120 nm8u* pSrcImg,
121 nm8u* pDstBlockSeq,
122 nm8u* pXor,
123 int nWidth,
124 int nHeight
125 );
126
127
128//*****************************************************************************
129
196void nmppiMergeFromBlocks8x8(
197 nm8s* pSrcBlockSeq,
198 nm8s* pDstImg,
199 int nWidth,
200 int nHeight
201 );
203
204#ifdef __cplusplus
205 };
206#endif
207
208#endif
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm8s
char nm8s
Definition: nmtype.h:167


nmpp: Исходный файл g:/nmpp/include/nmpli/iResample.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iResample.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: iResample. $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/02/10 12:36:38 $
10//
19//------------------------------------------------------------------------
20
21#ifndef _I_Resample_H_INCLUDED_
22#define _I_Resample_H_INCLUDED_
23
24//#include "nmpls.h"
25
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31//*****************************************************************************
32
111//void nmppiResampleDown2X_8u8u(nm8u7b* pSrcImg, nm8u7b* pDstImg, int nSrcWidth, int nSrcHeight) ;
112void nmppiResampleDown2X_8u8u(nm8u7b* pSrcImg, nm8u7b* pDstImg, int nSrcWidth, int nSrcHeight,nm64s*pKernel) ;
113//void nmppiResampleDown2X_16u16u(nm16u15b* pSrcImg, nm16u15b* pDstImg, int nSrcWidth, int nSrcHeight);
114void nmppiResampleDown2X_16u16u(nm16u15b* pSrcImg, nm16u15b* pDstImg, int nSrcWidth, int nSrcHeight, nm64s* pKernel);
115//void nmppiResampleDown2X_8u16u(nm8u* pSrcImg, nm16u* pDstImg, int nSrcWidth, int nSrcHeight, void* pTmpBuf);
117
118//*****************************************************************************
119
195void nmppiResampleDown2Y_8u8u (nm8u7b* pSrcImg, nm8u7b* pDstImg, int nSrcWidth, int nSrcHeight);
196void nmppiResampleDown2Y_16u16u(nm16u15b* pSrcImg, nm16u15b* pDstImg, int nSrcWidth, int nSrcHeight);
197void nmppiResampleDown2Y_8u16u_tmp(nm8u* pSrcImg, nm16u* pDstImg, int nSrcWidth, int nSrcHeight, void* pTmpBuf);
199
200//*****************************************************************************
201
278void nmppiResampleDown2XY_8u8u(nm8u7b* pSrcImg, nm8u7b* pDstImg, int nSrcWidth, int nSrcHeight, void* pTmpBuf);
279//void nmppiResampleDown2XY_16u16u(nm16u15b* pSrcImg, nm16u15b* pDstImg, int nSrcWidth, int nSrcHeight, void* pTmpBuf);
280//void nmppiResampleDown2XY_8u16u(nm8u* pSrcImg, nm16u* pDstImg, int nSrcWidth, int nSrcHeight, void* pTmpBuf);
282
283//void nmppiVResample3div2_RShift0(nm16s* pSrcImg, int nWidth, int nHeight, nm16s* pDstImg);
284
285
286//__INLINE__ void nmppiCreateResampleDown2X_8u8u(nm64s** pKernel, int nHint) { nmppsCreateResampleDown2_8u8u(pKernel,nHint);}
287//__INLINE__ void nmppiCreateResampleDown2X_8u16u(nm64s** pKernel, int nHint) { nmppsCreateResampleDown2_16u16u(pKernel,nHint);}
288//__INLINE__ void nmppiCreateResampleDown2X_16u16u(nm64s** pKernel, int nHint) { nmppsCreateResampleDown2_16u16u(pKernel,nHint);}
289//__INLINE__ void nmppiCreateResampleDown2Y_8u16u(nm64s** pKernel, int nHint) { nmppsCreateResampleDown2_16u16u(pKernel,nHint);}
290//__INLINE__ void nmppiCreateResampleDown2XY_8u16u(nm64s** pKernel, int nHint){ nmppsCreateResampleDown2_16u16u(pKernel,nHint);}
291//__INLINE__ void nmppiCreateResampleDown2XY_8u8u(nm64s** pKernel, int nHint) { nmppsCreateResampleDown2_8u8u(pKernel,nHint);}
292//__INLINE__ void nmppiCreateResampleDown2XY_16u16u(nm64s** pKernel,int nHint) { nmppsCreateResampleDown2_16u16u(pKernel,nHint);}
293
294#ifdef __cplusplus
295 };
296#endif
297
298#endif // _I_Resample_H_INCLUDED_
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm16u
unsigned short nm16u
Definition: nmtype.h:481
nm8u7b
nm8u nm8u7b
Definition: nmtype.h:463
nm64s
long long nm64s
Definition: nmtype.h:375
nm16u15b
nm16u nm16u15b
Definition: nmtype.h:495


nmpp: Исходный файл g:/nmpp/include/nmpli/iSelect.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iSelect.h
1#ifndef __ICOMPARE_H
2#define __ICOMPARE_H
3
4
5//*****************************************************************************
6
106int nmppiCompareGtC(nm16s *pSrcImg, int nSrcStride, nm16s *pDstImg, int nDstStride, nm16s *pThreshold, int nWidth, int nHeight);
108
109#endif
nm16s
short nm16s
Definition: nmtype.h:243


nmpp: Исходный файл g:/nmpp/include/nmpli/isubpixel2d.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
isubpixel2d.h
1#ifndef __SUBPIXEL2D_H
2#define __SUBPIXEL2D_H
3
4
5//class I_2DSubPixelMinPosition предназначен для поиска субпиксельного минимума в массиве 3x3.
6//»меются две реализации - "параболическая" и "тригонометрическая"
7class I_2DSubPixelMinPosition
8{
9public:
10
11 //»щет субпиксельный минимум
12 //S9 - массив 3x3 с минимумом в центре квадрата.
13 //dx, dy - координаты точки минимума относительно центра квадрата 3x3 (S9).
14 virtual void Find(float *S9, float& dx, float& dy) = 0;
15
16 //ќсвобождает указатель
17 virtual void Release() = 0;
18
19};
20
21//“ип реализации ("параболическая" и "тригонометрическая" соответственно)
22enum SPP_TYPE {SPP_par, SPP_trg};
23
24
25//—оздает объект и возвращает его интерфейс I_2DSubPixelMinPosition.
26 I_2DSubPixelMinPosition* Create2DSubPixelMinPosition(SPP_TYPE type);
27
28
29#endif
30
I_2DSubPixelMinPosition
Definition: isubpixel2d.h:8


nmpp: Исходный файл g:/nmpp/include/nmpli/isubpixel2dimpl.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
isubpixel2dimpl.h
1#ifndef __SUBPIXEL2DIMPL_H
2#define __SUBPIXEL2DIMPL_H
3
4#include "isubpixel2d.h"
5
6
7class C_2DSubPixelMinPosition : public I_2DSubPixelMinPosition
8{
9protected:
10
11public:
12 C_2DSubPixelMinPosition(){};
13 ~C_2DSubPixelMinPosition(){};
14 virtual void Find(float *S9, float& dx, float& dy);
15 virtual void Release();
16};
17
18
19
20class C_2DTrigSubPixelMinPosition : public I_2DSubPixelMinPosition
21{
22protected:
23 float Teta[8];
24 float S9Interpolation(float x, float y, float *S9);
25
26public:
27 C_2DTrigSubPixelMinPosition();
28 ~C_2DTrigSubPixelMinPosition(){};
29 virtual void Find(float *S9, float& dx, float& dy);
30 virtual void Release();
31};
32
33
34#endif
C_2DSubPixelMinPosition
Definition: isubpixel2dimpl.h:8
C_2DTrigSubPixelMinPosition
Definition: isubpixel2dimpl.h:21
I_2DSubPixelMinPosition
Definition: isubpixel2d.h:8


nmpp: Исходный файл g:/nmpp/include/nmpli/iSupport.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
iSupport.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: iSupport.h $
4//
5// Neuro mtr processing library
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/02/10 12:36:38 $
10//
19//------------------------------------------------------------------------
20#ifndef __IMALLOC_H
21#define __IMALLOC_H
22#include "nmtype.h"
23/*
24__INLINE__ int nmppsSizeOf_8s(nm8s* a, int nCount) {
25 return nCount>>2;
26}
27__INLINE__ int nmppsSizeOf_8u(nm8u*, int nCount) {
28 return nCount>>2;
29}
30__INLINE__ int nmppsSizeOf_32s(nm32s*, int nCount) {
31 return nCount;
32}
33__INLINE__ int nmppsSizeOf_32u(nm32u*, int nCount) {
34 return nCount;
35}
36
37*/
38
39// __INLINE__ int nmppsSizeOf_8s(nm8s*, int nCount){
40// return nCount>>2;
41// }
42// __INLINE__ int nmppsSizeOf_8u(nm8u*, int nCount){
43// return nCount>>2;
44// }
45// __INLINE__ int nmppsSizeOf_32s(nm32s*, int nCount){
46// return nCount;
47// }
48// __INLINE__ int nmppsSizeOf_32u(nm32u*, int nCount){
49// return nCount;
50// }
51
52template <class T> class C_Img
53{
54protected:
55
56public:
57 int m_nBorder;
58 T* m_pContainer;
59 T* m_pData;
60 int m_nWidth;
61 int m_nHeight;
62 int m_nStride;
63 int m_nSize;
64 C_Img(int nWidth,int nHeight, int nStride, int nBorder, void* (*allocator32)(int))
65 {
66 m_nWidth=nWidth;
67 m_nHeight=nHeight;
68 m_nBorder=nBorder;
69 m_nStride=nStride;
70 m_nSize=m_nStride*m_nHeight;
71 m_pContainer=(T*)allocator32(nmppsSizeOf_(m_pData,m_nStride*(m_nHeight+2*m_nBorder)));
72 //nmppsMalloc_64s(&m_pContainer, m_nStride*(m_nHeight+2*m_nBorder), nHint);
73 m_pData=nmppsAddr_(m_pContainer,m_nStride*m_nBorder);
74 }
75 C_Img(T* pData, int nWidth,int nHeight, int nStride, int nBorder)
76 {
77 m_nWidth=nWidth;
78 m_nHeight=nHeight;
79 m_nBorder=nBorder;
80 m_nStride=nStride;
81 m_nSize=m_nStride*m_nHeight;
82 m_pContainer=0;;
83 m_pData=pData;
84
85 }
86 ~C_Img()
87 {
88 if (m_pContainer)
89 nmppsFree(m_pContainer);
90 }
91 void Fill(T color)
92 {
93 nmppsSet_(m_pContainer,color,m_nSize+2*m_nBorder*m_nStride);
94 }
95};
96
97//*****************************************************************************
98
99 /*
100 \internal
101 \defgroup nmppiMalloc nmppiMalloc
102 \ingroup iSupport
103 \brief
104 \ru Распределение памяти для изображений библиотеки.
105 \en Memory allocation for library images.
106
107 \~
108 \ru Начало и конец распределяемой памяти выравнивается на начало
109 64-х разрядного слова.
110 \en Begin and end of the allocated memory are being
111 aligned to 64-bit word.
112 \~
113 \param nWidth
114 \ru Ширина изображения в пикселях.
115 \en Image width in pixels.
116 \~
117 \param nHeight
118 \ru Высота изображения в пикселях.
119 \en Image height in pixels.
120 \~
121 \param hint
122 \ru Номер банка памяти. Может принимать значения
123 MEM_LOCAL, MEM_GLOBAL.
124 \en Number of memory bank. Admissible values for memory bank
125 are MEM_LOCAL, MEM_GLOBAL.
126 \~
127 \note \ru Память, распределенная с помощью функций nmppiMalloc должна
128 освобождаться только с помощью функции nmppiFree.
129 \en Memory allocated by function nmppiMalloc should be
130 deallocated by nmppiFree function only.
131 \~
132 */
134/*
135void nmppiMalloc(nm1** pptr, int nWidth, int nHeight, int hint = MEM_LOCAL);
136void nmppiMalloc(nm2s** pptr, int nWidth, int nHeight, int hint = MEM_LOCAL);
137void nmppiMalloc(nm2u** pptr, int nWidth, int nHeight, int hint = MEM_LOCAL);
138void nmppiMalloc(nm4s** pptr, int nWidth, int nHeight, int hint = MEM_LOCAL);
139void nmppiMalloc(nm4u** pptr, int nWidth, int nHeight, int hint = MEM_LOCAL);
140void nmppiMalloc(nm8u** pptr, int nWidth, int nHeight, int hint = MEM_LOCAL);
141void nmppiMalloc(nm8s** pptr, int nWidth, int nHeight, int hint = MEM_LOCAL);
142void nmppiMalloc(nm16u** pptr, int nWidth, int nHeight, int hint = MEM_LOCAL);
143void nmppiMalloc(nm16s** pptr, int nWidth, int nHeight, int hint = MEM_LOCAL);
144void nmppiMalloc(nm32u** pptr, int nWidth, int nHeight, int hint = MEM_LOCAL);
145void nmppiMalloc(nm32s** pptr, int nWidth, int nHeight, int hint = MEM_LOCAL);
146void nmppiMalloc(nm64u** pptr, int nWidth, int nHeight, int hint = MEM_LOCAL);
147void nmppiMalloc(nm64s** pptr, int nWidth, int nHeight, int hint = MEM_LOCAL);
148*/
150
151//*****************************************************************************
152 /*
153 \defgroup nmppiFree nmppiFree
154 \ingroup iSupport
155 \brief
156 \ru Освобождение памяти для изображений.
157 \en Memory deallocation for images.
158 \~
159 \note
160 \ru Данная функция должна вызываться только для
161 векторов, распределенных с помощью функций
162 nmppiMalloc.
163 \en This function should be called only for matrixis
164 allocated by nmppiMalloc functions.
165 \~
166 */
168//void nmppiFree(void* ptr);
170
171
181__INLINE__ void nmppiReleaseObject(nm64s* pKernel);
183
184
185
186#endif
C_Img
Definition: iSupport.h:53
nm64s
long long nm64s
Definition: nmtype.h:375
nmtype.h


nmpp: Исходный файл g:/nmpp/include/nmpli/nmpli.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
nmpli.h
1
2#ifndef INCLUDED_nmpli
3#define INCLUDED_nmpli
4
5#include "nmtype.h"
6#include "nmdef.h"
7#include "nmpp.h"
8#include "iDef.h"
9
10#include "warpimg.h"
34//*****************************************************************************
35
45#include "iArithmetics.h"
46
47//*****************************************************************************
48
58#include "iFiltration.h"
59//*****************************************************************************
60
71#include "iConvert.h"
72
73
74//*****************************************************************************
75
86#include "iResample.h"
87
88
89//*****************************************************************************
90
101#include "iSelect.h"
102
103//*****************************************************************************
104
114//#include "iSupport.h"
115
116
117#include "iFloodFill.h"
118
119
120//#include "iCellTexture.h"
121
122
123#include "iDeinterlace.h"
124
125
126#include "iReodering.h"
127
128//*****************************************************************************
129
138#include "iPrint.h"
139
140#include "filter.h"
141
142//#endif
143
144#endif
nmtype.h


nmpp: Исходный файл g:/nmpp/include/nmpli/warpimg.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpli
warpimg.h
1/*
2#include "nmpp.h"
3#define nmppiAT_BUFFER 1
4#define WARP_AT_BUFFER 2
5template<class T> class C_WarpImg
6{
7 bool isAllocated;
8 void (*pfFree32)(void*);
9public:
10 unsigned nWidth;
11 unsigned nHeight;
12 unsigned warpHeight;
13 T* pWarp;
14 unsigned nWarpSize;
15 T* pImg;
16 unsigned nImgSize;
17
18 C_WarpImg(unsigned width, unsigned height, unsigned border, void* (*malloc32)(unsigned ), void (*free32)(void*)){
19 nWidth=width;
20 nHeight=height;
21 nImgSize =width*height;
22 warpHeight=height+2*border;
23 nWarpSize=width*warpHeight;
24 pImg=0;
25 isAllocated=false;
26 pWarp=(T*)malloc32(nmppsSize32(pWarp,nWarpSize));
27 pfFree32=free32;
28 if (pWarp){
29 pImg=nmppsAddr_(pWarp,border*width);
30 isAllocated=true;
31 }
32 }
33
34 C_WarpImg(unsigned width, unsigned height, unsigned border, void* buffer, int mode=nmppiAT_BUFFER){
35 nWidth=width;
36 nHeight=height;
37 nImgSize =width*height;
38 warpHeight=height+2*border;
39 nWarpSize=width*warpHeight;
40
41 isAllocated=false;
42 if (mode==WARP_AT_BUFFER){
43 pWarp=(T*)buffer;
44 pImg=nmppsAddr_(pWarp,border*width);
45 }
46 if (mode==nmppiAT_BUFFER){
47 pImg =(T*)buffer;
48 pWarp=(T*)nmppsAddr_(pImg,-border*width);
49 }
50 }
51
52 T* addr(int x, int y){
53 return nmppsAddr_(pImg,y*nWidth+x);
54 }
55 T* end(){
56 return nmppsAddr_(pWarp,nWarpSize);
57 }
58
59 ~C_WarpImg(){
60 if (isAllocated){
61 pfFree32(pWarp);
62 }
63}
64
65
66};
67
68*/


nmpp: Содержание директории g:/nmpp/include/nmplm

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplm
Содержание директории nmplm

Файлы

файл | mInit.h [Исходные тексты]
файл | mInverse.h [Исходные тексты]
файл | mMatrixVector.h [Исходные тексты]
файл | mMatrixVectorDev.h [Исходные тексты]
файл | mStat.h [Исходные тексты]
файл | mSupport.h [Исходные тексты]
файл | nmplm.h [Исходные тексты]


nmpp: Исходный файл g:/nmpp/include/nmplm/mInit.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplm
mInit.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: mInit.h $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/01/12 14:03:24 $
10//
19//------------------------------------------------------------------------
20#ifndef _MINIT_H_INCLUDED_
21#define _MINIT_H_INCLUDED_
22
23
24#ifdef __cplusplus
25 extern "C" {
26#endif
27
28
29
30//*****************************************************************************
31
32 //--------------------------------------------------------------------
39 //--------------------------------------------------------------------
40
41//*****************************************************************************
42
111void nmppmCopyua_8s ( nm8s* pSrcMtr, int nSrcStride, int nSrcOffset, nm8s* pDstMtr, int nDstStride,int nHeight, int nWidth);
112void nmppmCopyua_16s( nm16s* pSrcMtr, int nSrcStride, int nSrcOffset, nm16s* pDstMtr, int nDstStride,int nHeight, int nWidth);
113void nmppmCopyua_32s( nm32s* pSrcMtr, int nSrcStride, int nSrcOffset, nm32s* pDstMtr, int nDstStride,int nHeight, int nWidth);
115
116void nmppmCopy_32fc(
117 double* SrcMtr,
118 int nSrcStride,
119 double* DstMtr,
120 int nDstStride,
121 int nHeight,
122 int nWidth
123);
124
125
126//*****************************************************************************
127
191void nmppmCopyau_8s ( nm8s* pSrcMtr, int nSrcStride, nm8s* pDstMtr, int nDstStride, int nDstOffset,int nHeight, int nWidth);
192void nmppmCopyau_16s( nm16s* pSrcMtr, int nSrcStride, nm16s* pDstMtr, int nDstStride, int nDstOffset,int nHeight, int nWidth);
193void nmppmCopyau_32s( nm32s* pSrcMtr, int nSrcStride, nm32s* pDstMtr, int nDstStride, int nDstOffset,int nHeight, int nWidth);
195
196
197//*****************************************************************************
198
254void nmppmCopy_1 ( nm1* pSrcMtr, int nSrcStride, nm1* pDstMtr, int nDstStride, int nHeight, int nWidth);
255void nmppmCopy_2s( nm2s* pSrcMtr, int nSrcStride, nm2s* pDstMtr, int nDstStride, int nHeight, int nWidth);
256void nmppmCopy_4s( nm4s* pSrcMtr, int nSrcStride, nm4s* pDstMtr, int nDstStride, int nHeight, int nWidth);
257void nmppmCopy_8s ( nm8s* pSrcMtr, int nSrcStride, nm8s* pDstMtr, int nDstStride, int nHeight, int nWidth);
258void nmppmCopy_16s( nm16s* pSrcMtr, int nSrcStride, nm16s* pDstMtr, int nDstStride, int nHeight, int nWidth);
259void nmppmCopy_32s( nm32s* pSrcMtr, int nSrcStride, nm32s* pDstMtr, int nDstStride, int nHeight, int nWidth);
260void nmppmCopy_64s( nm64s* pSrcMtr, int nSrcStride, nm64s* pDstMtr, int nDstStride, int nHeight, int nWidth);
262
263
264//*****************************************************************************
265
266
313void MTR_Fill_8s(nm8s* pMtr, int8b nVal, int nMtrStride, int nMtrHeight, int nMtrWidth);
315
316
317#ifdef __cplusplus
318 };
319#endif
320
321
322#endif // _MINIT_H_INCLUDED_
int8b
int int8b
Definition: nmtype.h:618
nm32s
int nm32s
Definition: nmtype.h:292
nm64s
long long nm64s
Definition: nmtype.h:375
nm2s
void nm2s
Definition: nmtype.h:116
nm1
int nm1
Definition: nmtype.h:100
nm16s
short nm16s
Definition: nmtype.h:243
nm4s
void nm4s
Definition: nmtype.h:129
nm8s
char nm8s
Definition: nmtype.h:167


nmpp: Исходный файл g:/nmpp/include/nmplm/mInverse.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplm
mInverse.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: mInverse.h $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9//
18//------------------------------------------------------------------------
19
20#ifndef _MINVERSE_H_INCLUDED_
21#define _MINVERSE_H_INCLUDED_
22
23//*****************************************************************************
24#ifdef __cplusplus
25 extern "C" {
26#endif
27//--------------------------------------------------------------------
80void MTR_fpResolve_Gauss(double* pSrcMtrA, double* pSrcVecB, double* pDstVecX, int nSize);
82
83
84//*****************************************************************************
85
127void MTR_fpResolve_PivotGauss(double* pSrcMtrAB, double* pDstVecX, int nSize);
129
130
131
143void nmppmLUDecomp_64f (
144 const double * A,
145 double * L,
146 double * U,
147 int N
148);
150
151 //SLAY
152// L*y = b; U*x = y
153
168void nmppmLUResolve_64f (
169 const double * L,
170 const double * U,
171 const double * b,
172 double * x,
173 double * y,
174 int N
175);
177
178#ifdef __cplusplus
179 };
180#endif
181
182
183#endif // _MINVERSE_H_INCLUDED_


nmpp: Исходный файл g:/nmpp/include/nmplm/mMatrixVector.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplm
mMatrixVector.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: mMatrixVec $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/01/12 14:03:24 $
10//
19//------------------------------------------------------------------------
20#ifndef _MMATRIXVECTOR_H_INCLUDED_
21#define _MMATRIXVECTOR_H_INCLUDED_
22
23#ifdef __cplusplus
24 extern "C" {
25#endif
26
27//*****************************************************************************
28
93void nmppmMul_mm_2s64s ( nm2s* pSrcMtr1, int nHeight1, int nWidth1, nm64s* pSrcMtr2, nm64s* pDstMtr, int nWidth2);
94void nmppmMul_mm_4s64s ( nm4s* pSrcMtr1, int nHeight1, int nWidth1, nm64s* pSrcMtr2, nm64s* pDstMtr, int nWidth2);
95
96void nmppmMul_mm_8s8s ( nm8s* pSrcMtr1, int nHeight1, int nWidth1, nm8s* pSrcMtr2, nm8s* pDstMtr, int nWidth2);
97void nmppmMul_mm_8s16s ( nm8s* pSrcMtr1, int nHeight1, int nWidth1, nm16s* pSrcMtr2, nm16s* pDstMtr, int nWidth2);
98void nmppmMul_mm_8s32s ( nm8s* pSrcMtr1, int nHeight1, int nWidth1, nm32s* pSrcMtr2, nm32s* pDstMtr, int nWidth2);
99void nmppmMul_mm_8s64s ( nm8s* pSrcMtr1, int nHeight1, int nWidth1, nm64s* pSrcMtr2, nm64s* pDstMtr, int nWidth2);
100
101void nmppmMul_mm_16s16s( nm16s* pSrcMtr1, int nHeight1, int nWidth1, nm16s* pSrcMtr2, nm16s* pDstMtr, int nWidth2);
102void nmppmMul_mm_16s32s( nm16s* pSrcMtr1, int nHeight1, int nWidth1, nm32s* pSrcMtr2, nm32s* pDstMtr, int nWidth2);
103void nmppmMul_mm_16s64s( nm16s* pSrcMtr1, int nHeight1, int nWidth1, nm64s* pSrcMtr2, nm64s* pDstMtr, int nWidth2);
104
105void nmppmMul_mm_32s32s( nm32s* pSrcMtr1, int nHeight1, int nWidth1, nm32s* pSrcMtr2, nm32s* pDstMtr, int nWidth2);
106void nmppmMul_mm_32s64s( nm32s* pSrcMtr1, int nHeight1, int nWidth1, nm64s* pSrcMtr2, nm64s* pDstMtr, int nWidth2);
107
108void nmppmMul_mm_64s64s( nm64s* pSrcMtr1, int nHeight1, int nWidth1, nm64s* pSrcMtr2, nm64s* pDstMtr, int nWidth2);
109
110
111void nmppmMul_mm_32f ( float* pSrcMtr1, int nHeight1, int nStride1,
112 float* pSrcMtr2, int nWidth1, int nStride2,
113 float* pDstMtr, int nWidth2, int nStrideDst, int bPlusDst );
114void nmppmMul_mt_32f ( float* pSrcMtr1, int nHeight1, int nStride1,
115 float* pSrcMtr2, int nWidth1, int nStride2,
116 float* pDstMtr, int nWidth2, int nStrideDst, int bPlusDst );
117
119
120void nmppmMul_mm_colmajor_8s8s (const nm8s* pSrcMtr1, int nHeight1, int nWidth1, const nm8s* pSrcMtr2, nm8s* pDstMtr, int nWidth2);
121void nmppmMul_mm_colmajor_8s16s (const nm8s* pSrcMtr1, int nHeight1, int nWidth1, const nm16s* pSrcMtr2, nm16s* pDstMtr, int nWidth2);
122void nmppmMul_mm_colmajor_8s32s (const nm8s* pSrcMtr1, int nHeight1, int nWidth1, const nm32s* pSrcMtr2, nm32s* pDstMtr, int nWidth2);
123void nmppmMul_mm_colmajor_8s64s (const nm8s* pSrcMtr1, int nHeight1, int nWidth1, const nm64s* pSrcMtr2, nm64s* pDstMtr, int nWidth2);
124
125void nmppmMul_mm_colmajor_16s16s(const nm16s* pSrcMtr1, int nHeight1, int nWidth1, const nm16s* pSrcMtr2, nm16s* pDstMtr, int nWidth2);
126void nmppmMul_mm_colmajor_16s32s(const nm16s* pSrcMtr1, int nHeight1, int nWidth1, const nm32s* pSrcMtr2, nm32s* pDstMtr, int nWidth2);
127void nmppmMul_mm_colmajor_16s64s(const nm16s* pSrcMtr1, int nHeight1, int nWidth1, const nm64s* pSrcMtr2, nm64s* pDstMtr, int nWidth2);
128
129void nmppmMul_mm_colmajor_32s32s(const nm32s* pSrcMtr1, int nHeight1, int nWidth1, const nm32s* pSrcMtr2, nm32s* pDstMtr, int nWidth2);
130void nmppmMul_mm_colmajor_32s64s(const nm32s* pSrcMtr1, int nHeight1, int nWidth1, const nm64s* pSrcMtr2, nm64s* pDstMtr, int nWidth2);
131
132
133 //*****************************************************************************
134
190void nmppmMul_mv_8s64s( nm8s* pSrcMtr, nm64s* pSrcVec, nm64s* pDstVec, int nHeight, int nWidth);
191void nmppmMul_mv_16s64s( nm16s* pSrcMtr, nm64s* pSrcVec, nm64s* pDstVec, int nHeight, int nWidth);
192void nmppmMul_mv_32s64s( nm32s* pSrcMtr, nm64s* pSrcVec, nm64s* pDstVec, int nHeight, int nWidth);
193
194
196void nmppmMul_mv_colmajor_8s64s (const nm8s* pSrcMtr,const nm64s* pSrcVec, nm64s* pDstVec, int nHeight, int nWidth);
197void nmppmMul_mv_colmajor_16s64s(const nm16s* pSrcMtr,const nm64s* pSrcVec, nm64s* pDstVec, int nHeight, int nWidth);
198void nmppmMul_mv_colmajor_32s64s(const nm32s* pSrcMtr,const nm64s* pSrcVec, nm64s* pDstVec, int nHeight, int nWidth);
199
251void nmppmMul_mv_8s16s_8xH( v8nm8s* pSrcMtr, v8nm16s* pSrcVec, nm16s* pDstVec, int nHeight);
252void nmppmMul_mv_16s16s_8xH( v8nm16s* pSrcMtr, v8nm16s* pSrcVec, nm16s* pDstVec, int nHeight);
254//*****************************************************************************
255
318void nmppmMul_mv__AddC(v2nm32s* pSrcMtr, v2nm32s* pnSrcVec, int nAddVal, nm32s* pDstVec, int nHeight);
320
321
322//*****************************************************************************
323
373void MTR_ProdUnitV_16s_4xH ( v4nm16s* pSrcMtr, nm16s* pDstVec, int nHeight);
374void MTR_ProdUnitV_16s_16xH( v16nm8s* pSrcMtr, nm16s* pDstVec, int nHeight);
376
377//*****************************************************************************
378//--------------------------------------------------------------------
421void MTR_MulC_AddVsVc(int MulN, nm32s* pSrcMtr, nm32s* pSrcVecStr, nm32s* pSrcVecCol, nm32s* pDstMtr, int nHeight, int nWidth);
423
424#ifdef __cplusplus
425 };
426#endif
427
428#endif // _MMATRIXVECTOR_H_INCLUDED_
nm32s
int nm32s
Definition: nmtype.h:292
nm64s
long long nm64s
Definition: nmtype.h:375
nm2s
void nm2s
Definition: nmtype.h:116
nm16s
short nm16s
Definition: nmtype.h:243
nm4s
void nm4s
Definition: nmtype.h:129
nm8s
char nm8s
Definition: nmtype.h:167
s_v16nm8s
Definition: nmtype.h:1025
s_v2nm32s
Definition: nmtype.h:1072
s_v4nm16s
Definition: nmtype.h:1036
s_v8nm16s
Definition: nmtype.h:1049
s_v8nm8s
Definition: nmtype.h:1014


nmpp: Исходный файл g:/nmpp/include/nmplm/mMatrixVectorDev.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplm
mMatrixVectorDev.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: mMatrixVecDev.h $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.2 $ $Date: 2005/06/23 15:15:15 $
10//
11//------------------------------------------------------------------------
12
13#ifndef _MMATRIXVECTORDEV_H_INCLUDED_
14#define _MMATRIXVECTORDEV_H_INCLUDED_
15
16
22void nmppmMul_mv_( nm64sc *pSrcMtr, nm64sc *pSrcVec, nm64sc *pDstVec, int nHeight, int nWidth, void*tmp);
24
73//void MTR_ProdSelfV( nm64sc *pSrcVec, nm64sc *pDstMtr, int nSize);
74void MTR_ProdSelfV( nm64sc *pSrcVec, nm64sc *pDstMtr, int nSize, void* pTmp);
75//void MTR_ProdSelfV( nm32sc *pSrcVec, nm64sc *pDstMtr, int nSize);//pc version is not available
77
147void nmppmMul_mv__Zero( nm64sc *pSrcMtr, nm64sc *pSrcVec, nm64sc *pDstVec, int nStart, int nQuantity, int nHeight, int nWidth, void *tmp);
149
150 //--------------------------------------------------------------------
151 // \defgroup nmppsSub8_Abs nmppsSub8_Abs
152 // \ingroup mMatrixVector
153 // \{
154 //--------------------------------------------------------------------
155 //void nmppsSub8_Abs(nm32s* pSrcVec, nm32s* SrcN8, nm32s* pDstVec, int nSize);
156 // \todo void MTR_SubV8_Abs(nm32s* pSrcMtr,int nSrcStride,nm32s* pSrcVec8,nm32s* pDstMtr,int pDstStride,int nHeight);
157 // \}
158
159 //--------------------------------------------------------------------
160 // \defgroup nmppsSub16_Abs nmppsSub16_Abs
161 // \ingroup MatrixVector
162 // \{
163 //--------------------------------------------------------------------
164//void nmppsSub16_Abs(nm8s* pSrcVec1, nm8s* pSrcVec2, nm8s* pDstVec, int nSize);
165//void nmppsSub16_Abs(nm32s* pSrcVec1, nm32s* pSrcVec2, nm32s* pDstVec, int nSize);
166//void nmppsSub16_Abs(nm32s* pSrcVec1, nm32s* pSrcVec2, nm32s* pDstVec, int nSize);
167// \todo void MTR_SubV16_Abs(nm8s* pSrcMtr,int nSrcStride, nm8s* pSrcVec16, nm8s* pDstMtr,int nDstStride, int nHeight);
168// \todo void MTR_SubV16_Abs(nm32s* pSrcMtr,int nSrcStride, nm32s* pSrcVec16, nm32s* pDstMtr,int nDstStride, int nHeight);
169
170 // \}
171#endif
s_nm64sc
Definition: nmtype.h:1364


nmpp: Исходный файл g:/nmpp/include/nmplm/mStat.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplm
mStat.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: vStat.h $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2004/11/22 13:50:02 $
10//
19//------------------------------------------------------------------------
20
21
22#ifndef _MSTAT_H_INCLUDED_
23#define _MSTAT_H_INCLUDED_
24
25#ifdef __cplusplus
26 extern "C" {
27#endif
28
65 unsigned nmppmCrc_32u(const unsigned int* pSrcVec, int height, int width, int stride);
66__INLINE__ unsigned nmppmCrc_32s(const nm32s * pSrcVec, int height, int width, int stride) { return nmppmCrc_32u((const unsigned*)pSrcVec, height, width ,stride ); }
67__INLINE__ unsigned nmppmCrc_64u(const nm64u * pSrcVec, int height, int width, int stride) { return nmppmCrc_32u((const unsigned*)pSrcVec, height, width<<1,stride<<1); }
68__INLINE__ unsigned nmppmCrc_64s(const nm64s * pSrcVec, int height, int width, int stride) { return nmppmCrc_32u((const unsigned*)pSrcVec, height, width<<1,stride<<1); }
69__INLINE__ unsigned nmppmCrc_16u(const nm16u * pSrcVec, int height, int width, int stride) { return nmppmCrc_32u((const unsigned*)pSrcVec, height, width>>1,stride>>1); }
70__INLINE__ unsigned nmppmCrc_16s(const nm16s * pSrcVec, int height, int width, int stride) { return nmppmCrc_32u((const unsigned*)pSrcVec, height, width>>1,stride>>1); }
71__INLINE__ unsigned nmppmCrc_8u (const nm8s * pSrcVec, int height, int width, int stride) { return nmppmCrc_32u((const unsigned*)pSrcVec, height, width>>2,stride>>2); }
72__INLINE__ unsigned nmppmCrc_8s (const nm8s * pSrcVec, int height, int width, int stride) { return nmppmCrc_32u((const unsigned*)pSrcVec, height, width>>2,stride>>2); }
73__INLINE__ unsigned nmppmCrc_4u (const nm4s * pSrcVec, int height, int width, int stride) { return nmppmCrc_32u((const unsigned*)pSrcVec, height, width>>3,stride>>3); }
74__INLINE__ unsigned nmppmCrc_4s (const nm4s * pSrcVec, int height, int width, int stride) { return nmppmCrc_32u((const unsigned*)pSrcVec, height, width>>3,stride>>3); }
76
77 unsigned nmppmCrcAcc_32u (const unsigned int* pSrcVec, int height, int width, int stride, unsigned int* crc);
78
79
80
81//__INLINE__ unsigned nmppsCrc_32f(nm32f* pSrcVec, int numBitsToClear, int nSize) { return nmppsCrcMask_32u((unsigned*)pSrcVec,(-1<<numBitsToClear),nSize>>1); }
82//
83//
84//
85//__INLINE__ unsigned nmppmCrcAcc_64s(nm64s* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize<<1, crcAccumulator); }
86//__INLINE__ unsigned nmppmCrcAcc_32s(nm32s* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize, crcAccumulator); }
87//__INLINE__ unsigned nmppmCrcAcc_16s(nm16s* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize>>1, crcAccumulator); }
88//__INLINE__ unsigned nmppmCrcAcc_8s (nm8s* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize>>2, crcAccumulator); }
89//__INLINE__ unsigned nmppmCrcAcc_64u(nm64u* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize<<1, crcAccumulator); }
90//
91//
92//__INLINE__ unsigned nmppmCrcAcc_16u(nm16u* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize>>1, crcAccumulator); }
93//__INLINE__ unsigned nmppmCrcAcc_8u (nm8u* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize>>2, crcAccumulator); }
94//
95//unsigned nmppmCrcAcc_32f(const nm32f* pSrcVec, int numBitsToClear, int nSize, unsigned int* crcAccumulator) ;
96//unsigned nmppmCrcAcc_64f(const nm64f* pSrcVec, int numBitsToClear, int nSize, unsigned int* crcAccumulator) ;
97//
98//
99
100
101
102
103
104#ifdef __cplusplus
105 };
106#endif
107
108#endif // _MSTAT_H_INCLUDED_
nm32s
int nm32s
Definition: nmtype.h:292
nm16u
unsigned short nm16u
Definition: nmtype.h:481
nm64s
long long nm64s
Definition: nmtype.h:375
nm16s
short nm16s
Definition: nmtype.h:243
nm4s
void nm4s
Definition: nmtype.h:129
nm64u
unsigned long long nm64u
Definition: nmtype.h:536
nm8s
char nm8s
Definition: nmtype.h:167


nmpp: Исходный файл g:/nmpp/include/nmplm/mSupport.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplm
mSupport.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: mSupport.h $
4//
5// <Название библиотеки>
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.2 $ $Date: 2005/06/23 15:15:15 $
10//
19//------------------------------------------------------------------------
20#ifndef __MSUPPORT_H
21#define __MSUPPORT_H
22
23#include "nmpp.h"
24
25//*****************************************************************************
26
27 /*
28 *
29 * \if Russian
30 * \defgroup mSupport Функции поддержки
31 * \endif
32 * \if English
33 * \defgroup mSupport Support functions
34 * \endif
35 * \ingroup mtr
36 */
37
38//*****************************************************************************
39
77 /*
78__INLINE__ void MTR_Malloc(nm1** pptr, int nHeight, int nWidth, int hint = MEM_LOCAL) { nmppsMalloc_64s((nm64s**)pptr, (nHeight*nWidth>>6) +1, hint);}
79__INLINE__ void MTR_Malloc(nm2s** pptr, int nHeight, int nWidth, int hint = MEM_LOCAL) { nmppsMalloc_64s((nm64s**)pptr, (nHeight*nWidth>>5) +1, hint);}
80__INLINE__ void MTR_Malloc(nm4s** pptr, int nHeight, int nWidth, int hint = MEM_LOCAL) { nmppsMalloc_64s((nm64s**)pptr, (nHeight*nWidth>>4) +1, hint);}
81__INLINE__ void MTR_Malloc(nm8s** pptr, int nHeight, int nWidth, int hint = MEM_LOCAL) { nmppsMalloc_64s((nm64s**)pptr, (nHeight*nWidth>>3) +1, hint);}
82__INLINE__ void MTR_Malloc(nm16s** pptr, int nHeight, int nWidth, int hint = MEM_LOCAL) { nmppsMalloc_64s((nm64s**)pptr, (nHeight*nWidth>>2) +1, hint);}
83__INLINE__ void MTR_Malloc(nm32s** pptr, int nHeight, int nWidth, int hint = MEM_LOCAL) { nmppsMalloc_64s((nm64s**)pptr, (nHeight*nWidth>>1) +1, hint);}
84__INLINE__ void MTR_Malloc(nm64s** pptr, int nHeight, int nWidth, int hint = MEM_LOCAL) { nmppsMalloc_64s((nm64s**)pptr, (nHeight*nWidth ) , hint);}
85
86__INLINE__ void MTR_Malloc(nm2u** pptr, int nHeight, int nWidth, int hint = MEM_LOCAL) { nmppsMalloc_64s((nm64s**)pptr, (nHeight*nWidth>>5) +1, hint);}
87__INLINE__ void MTR_Malloc(nm4u** pptr, int nHeight, int nWidth, int hint = MEM_LOCAL) { nmppsMalloc_64s((nm64s**)pptr, (nHeight*nWidth>>4) +1, hint);}
88__INLINE__ void MTR_Malloc(nm8u** pptr, int nHeight, int nWidth, int hint = MEM_LOCAL) { nmppsMalloc_64s((nm64s**)pptr, (nHeight*nWidth>>3) +1, hint);}
89__INLINE__ void MTR_Malloc(nm16u** pptr, int nHeight, int nWidth, int hint = MEM_LOCAL) { nmppsMalloc_64s((nm64s**)pptr, (nHeight*nWidth>>2) +1, hint);}
90__INLINE__ void MTR_Malloc(nm32u** pptr, int nHeight, int nWidth, int hint = MEM_LOCAL) { nmppsMalloc_64s((nm64s**)pptr, (nHeight*nWidth>>1) +1, hint);}
91__INLINE__ void MTR_Malloc(nm64u** pptr, int nHeight, int nWidth, int hint = MEM_LOCAL) { nmppsMalloc_64s((nm64s**)pptr, (nHeight*nWidth ) , hint);}
92*/
94
95//*****************************************************************************
96
114
115__INLINE__ void MTR_Free(void* ptr) {nmppsFree(ptr);}
117
118//*****************************************************************************
119
180__INLINE__ nm1* MTR_Addr_1 (nm1* pMTR, int nWidth, int nY, int nX) { return (nm1*) ((int*)pMTR+((nWidth*nY+nX)>>5));}
181__INLINE__ nm2s* MTR_Addr_2s (nm2s* pMTR, int nWidth, int nY, int nX) { return (nm2s*) ((int*)pMTR+((nWidth*nY+nX)>>4));}
182__INLINE__ nm4s* MTR_Addr_4s (nm4s* pMTR, int nWidth, int nY, int nX) { return (nm4s*) ((int*)pMTR+((nWidth*nY+nX)>>3));}
183__INLINE__ nm8s* MTR_Addr_8s (nm8s* pMTR, int nWidth, int nY, int nX) { return (nm8s*) ((int*)pMTR+((nWidth*nY+nX)>>2));}
184__INLINE__ nm16s* MTR_Addr_16s(nm16s* pMTR, int nWidth, int nY, int nX) { return (nm16s*)((int*)pMTR+((nWidth*nY+nX)>>1));}
185__INLINE__ nm32s* MTR_Addr_32s(nm32s* pMTR, int nWidth, int nY, int nX) { return (nm32s*)((int*)pMTR+(nWidth*nY+nX));}
186__INLINE__ nm64s* MTR_Addr_64s(nm64s* pMTR, int nWidth, int nY, int nX) { return (nm64s*)((int*)pMTR+((nWidth*nY+nX)<<1));}
187
188__INLINE__ nm2u* MTR_Addr_2u (nm2u* pMTR, int nWidth, int nY, int nX) { return (nm2u*) ((int*)pMTR+((nWidth*nY+nX)>>4));}
189__INLINE__ nm4u* MTR_Addr_4u (nm4u* pMTR, int nWidth, int nY, int nX) { return (nm4u*) ((int*)pMTR+((nWidth*nY+nX)>>3));}
190__INLINE__ nm8u* MTR_Addr_8u (nm8u* pMTR, int nWidth, int nY, int nX) { return (nm8u*) ((int*)pMTR+((nWidth*nY+nX)>>2));}
191__INLINE__ nm16u* MTR_Addr_16u(nm16u* pMTR, int nWidth, int nY, int nX) { return (nm16u*)((int*)pMTR+((nWidth*nY+nX)>>1));}
192__INLINE__ nm32u* MTR_Addr_32u(nm32u* pMTR, int nWidth, int nY, int nX) { return (nm32u*)((int*)pMTR+(nWidth*nY+nX));}
193__INLINE__ nm64u* MTR_Addr_64u(nm64u* pMTR, int nWidth, int nY, int nX) { return (nm64u*)((int*)pMTR+((nWidth*nY+nX)<<1));}
194
196//*****************************************************************************
197
245__INLINE__ void MTR_SetVal_1 (nm1* pMtr, int nWidth, int nY, int nX, int1b nVal) { nmppsPut_1 (pMtr, nY*nWidth+nX,nVal);}
246__INLINE__ void MTR_SetVal_2s (nm2s* pMtr, int nWidth, int nY, int nX, int2b nVal) { nmppsPut_2s (pMtr, nY*nWidth+nX,nVal);}
247__INLINE__ void MTR_SetVal_4s (nm4s* pMtr, int nWidth, int nY, int nX, int4b nVal) { nmppsPut_4s (pMtr, nY*nWidth+nX,nVal);}
248__INLINE__ void MTR_SetVal_8s (nm8s* pMtr, int nWidth, int nY, int nX, int8b nVal) { nmppsPut_8s (pMtr, nY*nWidth+nX,nVal);}
249__INLINE__ void MTR_SetVal_16s(nm16s* pMtr, int nWidth, int nY, int nX, int16b nVal) { nmppsPut_16s(pMtr, nY*nWidth+nX,nVal);}
250__INLINE__ void MTR_SetVal_32s(nm32s* pMtr, int nWidth, int nY, int nX, int32b nVal) { nmppsPut_32s(pMtr, nY*nWidth+nX,nVal);}
251__INLINE__ void MTR_SetVal_64s(nm64s* pMtr, int nWidth, int nY, int nX, int64b nVal) { nmppsPut_64s(pMtr, nY*nWidth+nX,nVal);}
252
253__INLINE__ void MTR_SetVal_2u (nm2u* pMtr, int nWidth, int nY, int nX, uint2b nVal) { nmppsPut_2u (pMtr, nY*nWidth+nX,nVal);}
254__INLINE__ void MTR_SetVal_4u (nm4u* pMtr, int nWidth, int nY, int nX, uint4b nVal) { nmppsPut_4u (pMtr, nY*nWidth+nX,nVal);}
255__INLINE__ void MTR_SetVal_8u (nm8u* pMtr, int nWidth, int nY, int nX, uint8b nVal) { nmppsPut_8u (pMtr, nY*nWidth+nX,nVal);}
256__INLINE__ void MTR_SetVal_16u(nm16u* pMtr, int nWidth, int nY, int nX, uint16b nVal) { nmppsPut_16u(pMtr, nY*nWidth+nX,nVal);}
257__INLINE__ void MTR_SetVal_32u(nm32u* pMtr, int nWidth, int nY, int nX, uint32b nVal) { nmppsPut_32u(pMtr, nY*nWidth+nX,nVal);}
258__INLINE__ void MTR_SetVal_64u(nm64u* pMtr, int nWidth, int nY, int nX, uint64b nVal) { nmppsPut_64u(pMtr, nY*nWidth+nX,nVal);}
260
261//*****************************************************************************
262
310__INLINE__ void MTR_GetVal_1 (nm1* pMtr, int nWidth, int nY, int nX, int1b* nVal) { nmppsGetVal_1 (pMtr, nY*nWidth+nX,nVal);}
311__INLINE__ void MTR_GetVal_2s (nm2s* pMtr, int nWidth, int nY, int nX, int2b* nVal) { nmppsGetVal_2s (pMtr, nY*nWidth+nX,nVal);}
312__INLINE__ void MTR_GetVal_4s (nm4s* pMtr, int nWidth, int nY, int nX, int4b* nVal) { nmppsGetVal_4s (pMtr, nY*nWidth+nX,nVal);}
313__INLINE__ void MTR_GetVal_8s (nm8s* pMtr, int nWidth, int nY, int nX, int8b* nVal) { nmppsGetVal_8s (pMtr, nY*nWidth+nX,nVal);}
314__INLINE__ void MTR_GetVal_16s(nm16s* pMtr, int nWidth, int nY, int nX, int16b* nVal) { nmppsGetVal_16s(pMtr, nY*nWidth+nX,nVal);}
315__INLINE__ void MTR_GetVal_32s(nm32s* pMtr, int nWidth, int nY, int nX, int32b* nVal) { nmppsGetVal_32s(pMtr, nY*nWidth+nX,nVal);}
316__INLINE__ void MTR_GetVal_64s(nm64s* pMtr, int nWidth, int nY, int nX, int64b* nVal) { nmppsGetVal_64s(pMtr, nY*nWidth+nX,nVal);}
317
318__INLINE__ void MTR_GetVal_2u (nm2u* pMtr, int nWidth, int nY, int nX, uint2b* nVal) { nmppsGetVal_2u (pMtr, nY*nWidth+nX,nVal);}
319__INLINE__ void MTR_GetVal_4u (nm4u* pMtr, int nWidth, int nY, int nX, uint4b* nVal) { nmppsGetVal_4u (pMtr, nY*nWidth+nX,nVal);}
320__INLINE__ void MTR_GetVal_8u (nm8u* pMtr, int nWidth, int nY, int nX, uint8b* nVal) { nmppsGetVal_8u (pMtr, nY*nWidth+nX,nVal);}
321__INLINE__ void MTR_GetVal_16u(nm16u* pMtr, int nWidth, int nY, int nX, uint16b* nVal){ nmppsGetVal_16u(pMtr, nY*nWidth+nX,nVal);}
322__INLINE__ void MTR_GetVal_32u(nm32u* pMtr, int nWidth, int nY, int nX, uint32b* nVal){ nmppsGetVal_32u(pMtr, nY*nWidth+nX,nVal);}
323__INLINE__ void MTR_GetVal_64u(nm64u* pMtr, int nWidth, int nY, int nX, uint64b* nVal){ nmppsGetVal_64u(pMtr, nY*nWidth+nX,nVal);}
324
325
327
328//*****************************************************************************
329
381void MTR_GetCol( nm64sc *pSrcMtr, nm64sc *pDstVec, int nCol, int nHeight, int nWidth);
382//void MTR_GetCol( nm16sc *pSrcMtr, nm16sc *pDstVec, int nCol, int nHeight, int nWidth); //pc version is not available!
384
385#endif
uint32b
unsigned int uint32b
Definition: nmtype.h:839
uint2b
unsigned int uint2b
Definition: nmtype.h:735
int4b
int int4b
Definition: nmtype.h:592
uint4b
unsigned int uint4b
Definition: nmtype.h:761
int2b
int int2b
Definition: nmtype.h:566
int8b
int int8b
Definition: nmtype.h:618
uint16b
unsigned int uint16b
Definition: nmtype.h:813
int1b
int int1b
Definition: nmtype.h:553
int32b
int int32b
Definition: nmtype.h:683
uint8b
unsigned int uint8b
Definition: nmtype.h:787
int16b
int int16b
Definition: nmtype.h:644
int64b
INT64 int64b
Definition: nmtype.h:709
uint64b
nm64u uint64b
Definition: nmtype.h:865
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm32s
int nm32s
Definition: nmtype.h:292
nm4u
void nm4u
Definition: nmtype.h:417
nm16u
unsigned short nm16u
Definition: nmtype.h:481
nm64s
long long nm64s
Definition: nmtype.h:375
nm2s
void nm2s
Definition: nmtype.h:116
nm2u
void nm2u
Definition: nmtype.h:404
nm1
int nm1
Definition: nmtype.h:100
nm16s
short nm16s
Definition: nmtype.h:243
nm32u
unsigned int nm32u
Definition: nmtype.h:509
nm4s
void nm4s
Definition: nmtype.h:129
nm64u
unsigned long long nm64u
Definition: nmtype.h:536
nm8s
char nm8s
Definition: nmtype.h:167
s_nm64sc
Definition: nmtype.h:1364


nmpp: Исходный файл g:/nmpp/include/nmplm/nmplm.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplm
nmplm.h
1
2#ifndef INCLUDED_nmplm
3#define INCLUDED_nmplm
4
5#include "nmtype.h"
6#include "nmdef.h"
7#include "nmpp.h"
8
9
33//*****************************************************************************
34
44#include "mSupport.h"
45
46//*****************************************************************************
47 //--------------------------------------------------------------------
54 //--------------------------------------------------------------------
55
56#include "mInit.h"
57
58//*****************************************************************************
59
69#include "mMatrixVector.h"
70#include "mMatrixVectorDev.h"
71//*****************************************************************************
72
82#include "mInverse.h"
83
84#include "mStat.h"
85
86//#include "profile\profdata.h"
87
88
89
90#endif
nmtype.h


nmpp: Содержание директории g:/nmpp/include/nmpls

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpls
Содержание директории nmpls

Файлы

файл | fft.h [Исходные тексты]
файл | fft_old.h [Исходные тексты]
файл | fftext.h [Исходные тексты]
файл | fftref.h [Исходные тексты]
файл | nmpls.h [Исходные тексты]
файл | sConvolution.h [Исходные тексты]
файл | sCorrelation.h [Исходные тексты]
файл | sFiltration.h [Исходные тексты]
файл | sfir.h [Исходные тексты]
файл | sResample.h [Исходные тексты]


nmpp: Исходный файл g:/nmpp/include/nmpls/fft.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpls
fft.h
1//***************************************************************************/
2//* RC Module Inc., Moscow, Russia */
3//* NeuroMatrix(r) NM6403 Software */
4//* */
5//* Fast Fourie Transform Library */
6//* (C-callable functions) */
7//* */
8//* $Workfile:: sFFT.h $*/
9//* Contents: Header file of FFT routines */
10//* */
11//* */
12//* Author: S.Mushkaev */
13//* */
14//* Version 1.0 */
15//* Start Date: 03.07.2001 */
16//* Release $Date: 2005/07/13 14:19:56 $ */
17//* */
18//* */
19//***************************************************************************/
20
21// LIBRARY nmfft.lib
22
23
24
25#ifndef _SFFT2_H_INCLUDED_
26#define _SFFT2_H_INCLUDED_
27
28
29#include "nmtype.h"
30
31//*****************************************************************************
32
33
34/*
35#ifndef _NMCMPLX_H_INCLUDED_
36 struct nm32sc
37 {
38 int re;//Real;
39 int im;//Imag;
40 nm32sc():
41 re(0),im(0){}; //Real(0),Imag(0){}
42 nm32sc(int _Real,int _Imag):
43 re(_Real),im(_Imag){};//Real(_Real),Imag(_Imag){}
44 };
45#endif //_NMCMPLX_H_INCLUDED_
46*/
47//#include "nmpp.h"
48
50// The functions listed below are forward and inversed FFT routines for
51// 256,512,1024 or 2048-point compex data, represented as arrays of nm32sc type.
52// Each complex number is stored in 64-bit word.
53// The lower 32-bits is real part of complex number.
54// The higher 32-bits is imaginary part of complex number;
55// The admissible input range of data depends on dimension of array,
56// mode of calculation accuracy and on/off mode of intermediate and final scaling down (shift normalization) of results.
57// This range guarantee against overflow during calculation process.
58// The table of ranges you may find in "FFT Library Programmer's manual"
59//
60// The mode of calculation accuracy tells how sine-cosine coeffecients are represented if fixed-point format.
61// When the 7-bit accuracy mode is used, output shape accuracy approaches of the maximum,
62// but output is reduced by around 2%.
63// If the 6-bit accuracy mode is used, then output range corresponds to result of Fourie transform
64// based on floating-point arithmetic, but output is less precise.
65// The mode of calulation accuracy may be set or switched by appropriate ***Set6bit() or ***Set7bit() function
66// NOTE: At least on time the accuracy setting function must be called before FFT routine executing.
67#include "malloc32.h"
68
69#ifdef __cplusplus
70 extern "C" {
71#endif
72//============================= Forward FFT 256 =====================================
73
74
75#include "time.h"
76#include "malloc32.h"
77
78
79
80 #define FFT_SPEC_NUM_BUFFERS 2
81 #define FFT_SPEC_NUM_TABLES 2
82 #define FFT_SPEC_NUM_SHIFTS 8
83 #define FFT_SPEC_NUM_AMPLITUDES 8
84 typedef struct {
85 int round;
86 int shift;
87
88 } RoundShift;
89 typedef struct {
90
91
92 nm32sc* buffer[FFT_SPEC_NUM_BUFFERS];
93 void* fftTable[FFT_SPEC_NUM_TABLES];
94 RoundShift norm[4];
95 int shift[FFT_SPEC_NUM_SHIFTS];
96 int amp[FFT_SPEC_NUM_AMPLITUDES];
97 int round[8];
98 //int amp;
99 //void* coreOut;
100
101 Free32Func* free;
102 //NmppsAllocation allocOrder;
103 } NmppsFFTSpec;
104
105
106
107
108// int nmppsFFT256FwdInitAlloc(Malloc32Func* allocate, Free32Func* free, NmppsFFTSpec* spec);
109// void nmppsFFT256Fwd(nm32sc* src, nm32sc* dst, NmppsFFTSpec* spec);
110// void nmppsFFTFree(NmppsFFTSpec* spec );
111//
112// int nmppsFFT256FwdInitCustomAlloc(Malloc32Func* allocate, Free32Func* free, NmppsFFTSpec* spec);
113// void nmppsFFT256FwdOptimize(void* src, void* dst, uint64* allocOrder);
114
115
116
117//#ifdef __NM__
118//#define sizeof32(t) sizeof(t)
119//#else
120//#define sizeof32(t) (sizeof(t)*4)
121//#endif
122
123 #define NMPP_OPTIMIZE_DISABLE 1
124 #define NMPP_NORMALIZE_DISABLE 2
125 #define NMPP_FFT_6BIT 4
126 #define NMPP_FFT_7BIT 0
127 #define NMPP_OK 0
128 #define NMPP_ERROR -1
129
130 void nmppsFFTFree(NmppsFFTSpec* spec );
131
132 #define nmppsFFT16HiFwd nmppsFFT16Fwd242
133 #define nmppsFFT16HiFwdRaw nmppsFFT16Fwd242Raw
134
135 int nmppsFFT16HiFwdInit(NmppsFFTSpec* spec, void* buffer0, void* buffer1, void* fftTable0, void* fftTable1);
136 int nmppsFFT16HiFwdInitAlloc(NmppsFFTSpec* spec, const void* src, const void* dst, int settings);
137 void nmppsFFT16HiFwd(const nm32sc* src, nm32sc* dst, NmppsFFTSpec* spec);
138 void nmppsFFT16HiFwdRaw(const nm32sc* src, nm32sc* dst, NmppsFFTSpec* spec);
139
140
141 void nmppsFFT32FwdRaw(const nm32sc* src, nm32sc* dst, NmppsFFTSpec* spec);
142 void nmppsFFT32Fwd (const nm32sc* src, nm32sc* dst, NmppsFFTSpec* spec);
143 int nmppsFFT32FwdInitAlloc( NmppsFFTSpec* spec, int settings);
144 void nmppsFFT32Free( NmppsFFTSpec* spec);
145 //void nmppsFFT32FwdRawRef2x16( nm32sc* src, nm32sc* dst);
146
147//#define nmppsFFT64FwdRaw8x8 nmppsFFT64Fwd
148 void nmppsFFT64Fwd8x8Raw(const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
149 void nmppsFFT64Fwd (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
150 void nmppsFFT64Fwd2x4x8 (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
151 int nmppsFFT64FwdInitAlloc( NmppsFFTSpec* spec, int settings);
152 void nmppsFFT64Free( NmppsFFTSpec* spec);
153 //void nmppsFFT64FwdRawRef2x4x8( nm32sc* src, nm32sc* dst);
154
155 void nmppsFFT256Fwd (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
156 int nmppsFFT256FwdOptimize(void* src, void* dst, fseq64* allocOrder) ;
157 int nmppsFFT256FwdInitAlloc( NmppsFFTSpec** spec, const void* src, const void* dst, int settings);
158 int nmppsFFT256FwdInitAllocCustom( NmppsFFTSpec** specFFT, Malloc32Func* allocate, Free32Func* free, int settings);
159
160 void nmppsFFT256Inv(const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
161 int nmppsFFT256InvOptimize (const void* src, const void* dst, fseq64* allocOrder) ;
162 int nmppsFFT256InvInitAlloc (NmppsFFTSpec** spec, const void* src, const void* dst, int settings);
163 int nmppsFFT256InvInitAllocCustom( NmppsFFTSpec** specFFT, Malloc32Func* allocate, Free32Func* free, int settings);
164
165 void nmppsFFT512FwdRaw (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
166 void nmppsFFT512Fwd (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
167 int nmppsFFT512FwdOptimize (const void* src, const void* dst, fseq64* allocOrder) ;
168 int nmppsFFT512FwdInitAlloc ( NmppsFFTSpec** spec, const void* src, const void* dst, int settings);
169 int nmppsFFT512FwdInitAllocCustom( NmppsFFTSpec** specFFT, Malloc32Func* allocate, Free32Func* free, int settings);
170
171 void nmppsFFT512Inv (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
172 void nmppsFFT512InvRaw (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
173 int nmppsFFT512InvOptimize (const void* src, const void* dst, fseq64* allocOrder) ;
174 int nmppsFFT512InvInitAlloc (NmppsFFTSpec** spec, const void* src, const void* dst, int settings);
175 int nmppsFFT512InvInitAllocCustom( NmppsFFTSpec** specFFT, Malloc32Func* allocate, Free32Func* free, int settings);
176
177 void nmppsFFT1024Fwd (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
178 int nmppsFFT1024FwdOptimize (const void* src, const void* dst, fseq64* allocOrder) ;
179 int nmppsFFT1024FwdInitAlloc ( NmppsFFTSpec** spec, const void* src, const void* dst, int settings);
180 int nmppsFFT1024FwdInitAllocCustom( NmppsFFTSpec** specFFT, Malloc32Func* allocate, Free32Func* free, int settings);
181
182 void nmppsFFT1024Inv (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
183 int nmppsFFT1024InvOptimize (const void* src, const void* dst, fseq64* allocOrder) ;
184 int nmppsFFT1024InvInitAlloc (NmppsFFTSpec** spec, const void* src, const void* dst, int settings);
185 int nmppsFFT1024InvInitAllocCustom( NmppsFFTSpec** specFFT, Malloc32Func* allocate, Free32Func* free, int settings);
186
187 void nmppsFFT2048Fwd (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
188 void nmppsFFT2048FwdInit (NmppsFFTSpec* specFFT, void* datbuf0, void* datbuf1, void* tblbuf0, void* tblbuf1, int settings );
189 void nmppsFFT2048Fwd4888 (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
190 void nmppsFFT2048Fwd4888Raw (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
191 void nmppsFFT2048FwdRaw (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
192// int nmppsFFT2048Fwd4888_ (nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
193 int nmppsFFT2048FwdOptimize (const void* src, const void* dst, fseq64* allocOrder) ;
194 int nmppsFFT2048FwdInitAlloc (NmppsFFTSpec** spec, const void* src, const void* dst, int settings);
195 int nmppsFFT2048FwdInitAlloc4888( NmppsFFTSpec** spec, const void* src, const void* dst, int settings);
196 int nmppsFFT2048FwdInitAllocCustom( NmppsFFTSpec** specFFT, Malloc32Func* allocate, Free32Func* free, int settings);
197
198
199 void nmppsFFT2048Inv (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
200 void nmppsFFT2048InvRaw (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
201 int nmppsFFT2048InvInit ( NmppsFFTSpec* spec, int settings, nm64s *buf0, nm64s* buf1, nm64s* tbl0, nm64s* tbl1);
202 int nmppsFFT2048InvInitAlloc ( NmppsFFTSpec** spec, const void* src, const void* dst, int settings);
203 int nmppsFFT2048InvInitSinCos ( NmppsFFTSpec* spec, int settings);
204
205 //int nmppsFFT2048Inv4888RawRef (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
206 //int nmppsDFT2048InvRef_f (const nm32sc* src, nm32sc* dst);
207 //int nmppsFFT2048Inv28888Ref_f (const nm32sc* src, nm32sc* dst);
208 //int nmppsDFT2048Inv_i (const nm32sc* src, nm32sc* dst, int bits); //int nmppsFFT2048InvInitAllocCustom( NmppsFFTSpec** specFFT, Malloc32Func* allocate, Free32Func* free, int settings);
209
210
211 #define nmppsFFT8192Fwd nmppsFFT8192Fwd28888
212 #define nmppsFFT8192FwdRaw nmppsFFT8192Fwd28888Raw
213 #define nmppsFFT8192FwdInit nmppsFFT8192Fwd28888Init
214 #define nmppsFFT8192FwdInitAlloc nmppsFFT8192Fwd28888InitAlloc
215
216 #define nmppsFFT8192Inv nmppsFFT8192Inv28888
217 #define nmppsFFT8192InvRaw nmppsFFT8192Inv28888Raw
218 #define nmppsFFT8192InvInit nmppsFFT8192Inv28888Init
219 #define nmppsFFT8192InvInitAlloc nmppsFFT8192Inv28888InitAlloc
220
221 #define FFT2048_TBL0_SIZE64 2048
222 #define FFT2048_TBL1_SIZE64 2048
223 #define FFT2048_TBL2_SIZE64 (4*4*2+4*8*8+32*8*8+256*8*8)/8
224 #define FFT2048_TBL3_SIZE64 (4*4*2+4*8*8+32*8*8+256*8*8)/8
225
226 #define FFT8192_TBL0_SIZE64 9344/8
227 #define FFT8192_TBL1_SIZE64 65536/8
228 #define FFT8192_TBL2_SIZE64 9344/8
229 #define FFT8192_TBL3_SIZE64 65536/8
230
231 //void nmppsFFT8192Fwd (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
232 int nmppsFFT8192Fwd28888 (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
233 int nmppsFFT8192Fwd28888Raw (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
234 int nmppsFFT8192Fwd28888RawRef (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
235 int nmppsFFT8192Fwd28888Init ( NmppsFFTSpec* spec, int settings, nm64s *buf0, nm64s* buf1, nm64s* tbl0, nm64s* tbl1, nm64s* tbl2, nm64s* tbl3);
236 int nmppsFFT8192Fwd28888InitAlloc( NmppsFFTSpec** spec, const void* src, const void* dst, int settings);
237 int nmppsFFT8192Fwd28888InitSinCos( NmppsFFTSpec* spec, int settings);
238 int nmppsDFT8192FwdRef_f (const nm32sc* src, nm32sc* dst);
239 int nmppsFFT8192Fwd28888Ref_f (const nm32sc* src, nm32sc* dst);
240 int nmppsDFT8192Fwd_i (const nm32sc* src, nm32sc* dst, int bits);
241
242 int nmppsFFT8192Inv28888 (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
243 int nmppsFFT8192Inv28888Raw (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
244 int nmppsFFT8192Inv28888RawRef (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
245 int nmppsFFT8192Inv28888Init ( NmppsFFTSpec* spec, int settings, nm64s *buf0, nm64s* buf1, nm64s* tbl0, nm64s* tbl1, nm64s* tbl2, nm64s* tbl3);
246 int nmppsFFT8192Inv28888InitAlloc( NmppsFFTSpec** spec, const void* src, const void* dst, int settings);
247 int nmppsFFT8192Inv28888InitSinCos( NmppsFFTSpec* spec, int settings);
248 int nmppsDFT8192InvRef_f (const nm32sc* src, nm32sc* dst);
249 int nmppsFFT8192Inv28888Ref_f (const nm32sc* src, nm32sc* dst);
250 int nmppsDFT8192Inv_i (const nm32sc* src, nm32sc* dst, int bits);
251
252 void nmppsFFTResetSpec(NmppsFFTSpec* spec);
253
254
255//#include "nmtl/tcmplx.h"
256void nmppsFFT32FwdRef2x16 ( nm32sc* src, nm32sc* dst); // C++
257void nmppsFFT32FwdRef2x16_f( nm32sc* src, nm32sc* dst); // C++
258
259
260
261void nmppsFFT64FwdRef_f ( nm32sc* src, nm32sc* dst);
262void nmppsFFT64FwdRef2x32_f ( nm32sc* src, nm32sc* dst);
263void nmppsFFT64FwdRef2x4x8_f( nm32sc* src, nm32sc* dst);
264void nmppsFFT64FwdRef2x4x8 ( nm32sc* src, nm32sc* dst);
265void nmppsFFT64FwdRef4x4x4_f( nm32sc* src, nm32sc* dst);
266void nmppsFFT64FwdRef8x8_f ( nm32sc* src, nm32sc* dst);
267void nmppsFFT64FwdRef8x8 ( nm32sc* src, nm32sc* dst);
268
269void nmppsDFT512Fwd_RefFloat(const nm32sc* src, nm32sc* dst);
270void nmppsFFT512Fwd_RefFloat(const nm32sc* src, nm32sc* dst);
271void nmppsDFT512Inv_RefFloat(const nm32sc* src, nm32sc* dst);
272
273//id nmppsFFT2048Fwd_f (const nm32sc* src, nm32sc* dst, const NmppsFFTSpec* spec);
274void nmppsDFT2048Fwd_RefFloat(const nm32sc* src, nm32sc* dst);
275void nmppsDFT2048Inv_RefFloat(const nm32sc* src, nm32sc* dst);
276void nmppsFFT2048Fwd4888_RefFloat(const nm32sc* src, nm32sc* dst);
277void nmppsFFT2048Inv4888_RefFloat(const nm32sc* src, nm32sc* dst);
278void nmppsFFT2048Fwd4888_RefInt(const nm32sc* src, nm32sc* dst);
279void nmppsFFT2048Inv4888_RefInt(const nm32sc* src, nm32sc* dst);
280//void nmppsFFT2048Fwd4888(const nm32sc* src, nm32sc* dst);
281
282//void nmppsFFT64FwdRef2x2x16_f( nm32sc* src, nm32sc* dst);
283
284#ifdef __cplusplus
285 };
286#endif
287
288#define SKIP_SINCOS 4
289
290#endif
nm64s
long long nm64s
Definition: nmtype.h:375
nmtype.h
NmppsFFTSpec
Definition: fft.h:89
RoundShift
Definition: fft.h:84
s_nm32sc
Definition: nmtype.h:1301


nmpp: Исходный файл g:/nmpp/include/nmpls/fft_old.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpls
fft_old.h
1//***************************************************************************/
2//* RC Module Inc., Moscow, Russia */
3//* NeuroMatrix(r) NM6403 Software */
4//* */
5//* Fast Fourie Transform Library */
6//* (C-callable functions) */
7//* */
8//* $Workfile:: sFFT.h $*/
9//* Contents: Header file of FFT routines */
10//* */
11//* */
12//* Author: S.Mushkaev */
13//* */
14//* Version 1.0 */
15//* Start Date: 03.07.2001 */
16//* Release $Date: 2005/07/13 14:19:56 $ */
17//* */
18//* */
19//***************************************************************************/
20
21// LIBRARY nmfft.lib
22
23
24
25#ifndef _SFFT_H_INCLUDED_
26#define _SFFT_H_INCLUDED_
27
28
29#include "nmtype.h"
30
31
32/* \mainpage Введение
33 *
34 * \htmlinclude intro.html
35 * \section intro_sec Introduction
36 *
37 * This is the introduction.
38 *
39 * \section install_sec Installation
40 *
41 * \subsection step1 Step 1: Opening the box
42 *
43 * etc...
44
45 */
46
47
48
49//*****************************************************************************
50
51
52
68//*****************************************************************************
69
70
71/*
72#ifndef _NMCMPLX_H_INCLUDED_
73 struct nm32sc
74 {
75 int re;//Real;
76 int im;//Imag;
77 nm32sc():
78 re(0),im(0){}; //Real(0),Imag(0){}
79 nm32sc(int _Real,int _Imag):
80 re(_Real),im(_Imag){};//Real(_Real),Imag(_Imag){}
81 };
82#endif //_NMCMPLX_H_INCLUDED_
83*/
84//#include "nmpp.h"
85
87// The functions listed below are forward and inversed FFT routines for
88// 256,512,1024 or 2048-point compex data, represented as arrays of nm32sc type.
89// Each complex number is stored in 64-bit word.
90// The lower 32-bits is real part of complex number.
91// The higher 32-bits is imaginary part of complex number;
92// The admissible input range of data depends on dimension of array,
93// mode of calculation accuracy and on/off mode of intermediate and final scaling down (shift normalization) of results.
94// This range guarantee against overflow during calculation process.
95// The table of ranges you may find in "FFT Library Programmer's manual"
96//
97// The mode of calculation accuracy tells how sine-cosine coeffecients are represented if fixed-point format.
98// When the 7-bit accuracy mode is used, output shape accuracy approaches of the maximum,
99// but output is reduced by around 2%.
100// If the 6-bit accuracy mode is used, then output range corresponds to result of Fourie transform
101// based on floating-point arithmetic, but output is less precise.
102// The mode of calulation accuracy may be set or switched by appropriate ***Set6bit() or ***Set7bit() function
103// NOTE: At least on time the accuracy setting function must be called before FFT routine executing.
104#include "malloc32.h"
105
106#ifdef __cplusplus
107 extern "C" {
108#endif
109//============================= Forward FFT 256 =====================================
110
111
112
113
126void FFT_Fwd256Set6bit(); // Sets 6-bit accuracy of sin-cosine coefficients
134void FFT_Fwd256Set7bit(); // Sets 7-bit accuracy of sin-cosine coefficients
135
136
137
138// The performance of the FFT_Fwd256 routine depends on memory allocation for
139// input,output and temporary buffers.
140// For the maximum speed performance it is recommended
141// to use the following configuration:
142// GSrcBuffer: Global SRAM
143// LDstBuffer: Local SRAM
144// LBuffer : Local SRAM
145// GBuffer : Global SRAM
146//
147// For this configuration the following results were achieved:
148// 3994 clocks - full operation (0.1 ms at 40MHz CPU)
149// 3662 clocks - without final normalization (0.092ms at 40MHz CPU)
150//
151// If you are not going to use this routine as a C callable function,
152// you can reduce the number of instructions removing all stack operations. In this case
153// the total execution time can be reduced by around 50 clocks.
154
155
156
157
251void FFT_Fwd256(
252 nm32sc* GSrcBuffer, // Source buffer :long[256]
253 nm32sc* LDstBuffer, // Result FFT :long[256]
254 void* LBuffer, // Temp buffer :long[256*3]
255 void* GBuffer, // Temp buffer :long[256*2]
256 int ShiftR=-1 // Shift normalization by default it means ShiftR=14 at 7 bit precision and ShiftR=12 at 6 bit precision
257 );
258#include "time.h"
259#include "malloc32.h"
260
261
262
263
264
265
266// int nmppsFFT256FwdInitAlloc(Malloc32Func* allocate, Free32Func* free, NmppsFFTSpec* spec);
267// void nmppsFFT256FwdOptimize(void* src, void* dst, uint64* allocOrder);
268// void nmppsFFT256Fwd(nm32sc* src, nm32sc* dst, NmppsFFTSpec* spec);
269//
270// void nmppsFFTFree(NmppsFFTSpec* spec );
271
272
273
274 /*
275struct s_fft_fwd256_settings {
276 int8x8* dataSinCos0;
277 int sizeSinCos0; // in int64
278 int bitsSinCos0;
279 int shift0;
280 int8x8* dataSinCos1;
281 int sizeSinCos1; // in int64
282 int bitsSinCos1;
283 int shift1;
284};*/
285
286 /*
287
288s_fft_fwd256_settings s_fft256_default={0,1,1,1,0,1,1,1};
289
290void FFT_Fwd256_ (
291 int32x2* pSrc,
292 int32x2* pDst,
293 int64* tmp0,
294 int64* tmp1,
295 s_fft_fwd256_settings* s=&s_fft256_default
296);
297*/
298
300
312void FFT_Inv256Set6bit(); // Sets 6-bit accuracy of sin-cosine coefficients
313
321void FFT_Inv256Set7bit(); // Sets 7-bit accuracy of sin-cosine coefficients
322
446void FFT_Inv256(
447 nm32sc* GSrcBuffer, // Source buffer :long[256]
448 nm32sc* GDstBuffer, // Result FFT :long[256]
449 void* LBuffer, // Temp buffer :long[256*3]
450 void* GBuffer, // Temp buffer :long[256*3]
451 int ShiftR1=8, // Intermediate shift normalization
452 int ShiftR2=-1 // Final shift normalization
453 // by default it means ShiftR2=14 at 7 bit precision
454 // and ShiftR2=12 at 6 bit precision
455 );
456
457
458//================================= FFT 512 =================================================
472void FFT_Fwd512Set6bit();// Sets 6-bit accuracy of sin-cosine coefficients
480void FFT_Fwd512Set7bit();// Sets 7-bit accuracy of sin-cosine coefficients
481
482
577void FFT_Fwd512(
578 nm32sc* GSrcBuffer, // Source buffer :long[512]
579 nm32sc* GDstBuffer, // Result FFT :long[512]
580 void* LBuffer, // Temp buffer :long[512*3]
581 void* GBuffer, // Temp buffer :long[512*3]
582 int ShiftR=-1 // Right shift normalization
583 );
584// \en The performance of the FFT_Fwd512 routine depends on memory allocation for
585// input,output and temporary buffers.
586// For the maximum speed performance it is recommended
587// to use the following configuration:
588// GSrcBuffer: Global SRAM
589// GDstBuffer: Local SRAM
590// LBuffer : Local SRAM
591// GBuffer : Global SRAM
592//
593// For this configuration the following results were achieved:
594// 8766 clocks - full operation (0.22 ms at 40MHz CPU)
595// 8180 clocks - without normalization (0.2 ms at 40MHz CPU)
596//
597// If you are not going to use this routine as a C callable function,
598// you can reduce the number of instructions removing all stack operations. In this case
599// the total execution time can be reduced by around 50 clocks.
600
601//======================================= Inversed FFT 512 ============================================
614void FFT_Inv512Set6bit();// Sets 6-bit accuracy of sin-cosine coefficients
622void FFT_Inv512Set7bit();// Sets 7-bit accuracy of sin-cosine coefficients
623
745void FFT_Inv512(
746 nm32sc* GSrcBuffer, // Source buffer :long[512]
747 nm32sc* LDstBuffer, // Result FFT :long[512]
748 void* LBuffer, // Temp buffer :long[512*3]
749 void* GBuffer, // Temp buffer :long[512*3]
750 int ShiftR1=9, // First shift normalization
751 int ShiftR2=-1 // Final shift normalization
752 );
753// \en The performance of the FFT_Fwd256 routine depends on memory allocation for
754// input,output and temporary buffers.
755// For the maximum speed performance it is recommended
756// to use the following configuration:
757// GSrcBuffer: Global SRAM
758// LDstBuffer: Local SRAM
759// LBuffer : Local SRAM
760// GBuffer : Global SRAM
761//
762// For this configuration the following results were achieved:
763// 9407 clocks - full operation (0.24ms at 40MHz CPU)
764// 8199 clocks - without normalization (0.2ms at 40Mhz CPU)
765//
766// If you are not going to use this routine as a C callable function,
767// you can reduce the number of instructions removing all stack operations. In this case
768// the total execution time can be reduced by around 50 clocks.
769
770
771//========================================= FFT1024 ==================================================
784 void FFT_Fwd1024Set6bit();// Sets 6-bit accuracy of sin-cosine coefficients
793 void FFT_Fwd1024Set7bit();// Sets 7-bit accuracy of sin-cosine coefficients
794
886void FFT_Fwd1024(
887 nm32sc* GSrcBuffer, // Source buffer :long[1024]
888 nm32sc* LDstBuffer, // Result FFT :long[1024]
889 void* LBuffer, // Temp buffer :long[1024*3]
890 void* GBuffer, // Temp buffer :long[1024]
891 int ShiftR=-1 // Right shift normalization
892 );
893// \en The performance of the FFT_Fwd1024 routine depends on memory allocation for
894// input,output and temporary buffers.
895// For the maximum speed performance it is recommended
896// to use the following configuration:
897// GSrcBuffer: Global SRAM
898// LDstBuffer: Local SRAM
899// LBuffer : Local SRAM
900// GBuffer : Global SRAM
901//
902// For this configuration the following results were achieved:
903// 20041 clocks - full operation (0.5ms at 40MHz CPU)
904// 18900 clocks - without normalization (0.47ms at 40MHz CPU)
905//
906// If you are not going to use this routine as a C callable function,
907// you can reduce the number of instructions removing all stack operations. In this case
908// the total execution time can be reduced by around 50 clocks.
909
910//============================================= Inversed FFT 1024 =======================================
923 void FFT_Inv1024Set6bit();// Sets 6-bit accuracy of sin-cosine coefficients
931void FFT_Inv1024Set7bit();// Sets 7-bit accuracy of sin-cosine coefficients
932
1056void FFT_Inv1024(
1057 nm32sc* GSrcBuffer, // Source buffer :long[1024]
1058 nm32sc* GDstBuffer, // Result FFT :long[1024]
1059 void* LBuffer, // Temp buffer :long[1024*3]
1060 void* GBuffer, // Temp buffer :long[1024*3]
1061 int ShiftR1=10, // First Right shift normalization
1062 int ShiftR2=-1 // Final Right shift normalization
1063 );
1064
1065// \en The performance of the FFT_Fwd2048 routine depends on memory allocation for
1066// input,output and temporary buffers.
1067// For the maximum speed performance it is recommended
1068// to use the following configuration:
1069// GSrcBuffer: Global SRAM
1070// LDstBuffer: Local SRAM
1071// LBuffer : Local SRAM
1072//
1073// For this configuration the following results were achieved:
1074// 49800 clocks - full operation (1.25ms at 40 MHz CPU)
1075// 47624 clocks - without normalization (1.2ms at 40 MHz CPU)
1076//
1077// If you are not going to use this routine as a C callable function,
1078// you can reduce the number of instructions removing all stack operations. In this case
1079// the total execution time can be reduced by around 50 clocks.
1080
1081//============================================ FFT2048 ============================================
1087 // Forward FFT 2048
1095void FFT_Fwd2048Set6bit();// Sets 6-bit accuracy of sin-cosine coefficients
1103void FFT_Fwd2048Set7bit();// Sets 7-bit accuracy of sin-cosine coefficients
1104
1177void FFT_Fwd2048(
1178 nm32sc* GSrcBuffer, // Source buffer :long[2048]
1179 nm32sc* GDstBuffer, // Result FFT :long[2048]
1180 void* LBuffer, // Temp buffer :long[2048*4]
1181 int ShiftR=-1 // Right shift normalization
1182 );
1183// \en The performance of the FFT_Fwd2048 routine depends on memory allocation for
1184// input,output and temporary buffers.
1185// For the maximum speed performance it is recommended
1186// to use the following configuration:
1187// GSrcBuffer: Global SRAM
1188// LDstBuffer: Local SRAM
1189// LBuffer : Local SRAM
1190//
1191// For this configuration the following results were achieved:
1192// 49800 clocks - full operation (1.25ms at 40 MHz CPU)
1193// 47624 clocks - without normalization (1.2ms at 40 MHz CPU)
1194//
1195// If you are not going to use this routine as a C callable function,
1196// you can reduce the number of instructions removing all stack operations. In this case
1197// the total execution time can be reduced by around 50 clocks.
1198
1199//=========================================== Inversed FFT 2048 ==================================
1212 void FFT_Inv2048Set6bit();// Sets 6-bit accuracy of sin-cosine coefficients
1220 void FFT_Inv2048Set7bit();// Sets 7-bit accuracy of sin-cosine coefficients
1221
1344void FFT_Inv2048(
1345 nm32sc* GSrcBuffer, // Source buffer :long[2048]
1346 nm32sc* LDstBuffer, // Result FFT :long[2048]
1347 void* LBuffer, // Temp buffer :long[2048*4]
1348 void* GBuffer, // Temp buffer :long[2048*4]
1349 int ShiftR1=11, // First Right shift normalization
1350 int ShiftR2=-1 // Final Right shift normalization
1351 );
1352// \en The performance of the FFT_Fwd256 routine depends on memory allocation for
1353// input,output and temporary buffers.
1354// For the maximum speed performance it is recommended
1355// to use the following configuration:
1356// GSrcBuffer: Global SRAM
1357// LDstBuffer: Local SRAM
1358// LBuffer : Local SRAM
1359// GBuffer : Global SRAM
1360//
1361// For this configuration the following results were achieved:
1362// 52160 clocks - full operation (1.3 ms at 40MHz CPU)
1363// 47780 clocks - without both normalizations (1.2ms at 40MHz CPU)
1364//
1365// If you are not going to use this routine as a C callable function,
1366// you can reduce the number of instructions removing all stack operations. In this case
1367// the total execution time can be reduced by around 50 clocks.#include "nmfft.h"
1368
1369//============================================ FFT4096 ============================================
1375 // Forward FFT 4096
1376
1429void FFT_Fwd4096(
1430 nm32sc* GSrcBuffer, // Source buffer :long[4096]
1431 nm32sc* GDstBuffer, // Result FFT :long[4096]
1432 void* LBuffer, // Temp buffer :long[4096*2]
1433 void* GBuffer // Temp buffer :long[4096*3]
1434 );
1435
1436//=========================================== Inversed FFT 4096 ==================================
1494void FFT_Inv4096(
1495 nm32sc* GSrcBuffer, // Source buffer :long[4096]
1496 nm32sc* GDstBuffer, // Result FFT :long[4096]
1497 void* LBuffer, // Temp buffer :long[4096*2]
1498 void* GBuffer // Temp buffer :long[4096*3]
1499 );
1500
1501//============================================ FFT8192 ============================================
1507 // Forward FFT 8192
1508
1563void FFT_Fwd8192(
1564 nm32sc* LSrcBuffer, // Source buffer :long[8192]
1565 nm32sc* GDstBuffer, // Result FFT :long[8192]
1566 void* LBuffer, // Temp buffer :long[8192]
1567 void* GBuffer // Temp buffer :long[8192*3]
1568 );
1569
1570//=========================================== Inversed FFT 8192 ==================================
1629void FFT_Inv8192(
1630 nm32sc* LSrcBuffer, // Source buffer :long[8192]
1631 nm32sc* GDstBuffer, // Result FFT :long[8192]
1632 void* LBuffer, // Temp buffer :long[8192]
1633 void* GBuffer // Temp buffer :long[8192*3]
1634 );
1635
1636
1637
1638#ifdef __cplusplus
1639 };
1640#endif
1641
1642#endif
FFT_Fwd1024Set6bit
void FFT_Fwd1024Set6bit()
Устанавливает 6-битную точность вычислений
FFT_Fwd1024Set7bit
void FFT_Fwd1024Set7bit()
Устанавливает 7-битную точность вычислений
FFT_Fwd1024
void FFT_Fwd1024(nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-1024.
FFT_Fwd2048Set7bit
void FFT_Fwd2048Set7bit()
Устанавливает 7-битную точность вычислений
FFT_Fwd2048Set6bit
void FFT_Fwd2048Set6bit()
Устанавливает 6-битную точность вычислений
FFT_Fwd2048
void FFT_Fwd2048(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-2048.
FFT_Fwd256
void FFT_Fwd256(nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-256.
FFT_Fwd256Set7bit
void FFT_Fwd256Set7bit()
Устанавливает 7-битную точность вычислений
FFT_Fwd256Set6bit
void FFT_Fwd256Set6bit()
Устанавливает 6-битную точность вычислений
FFT_Fwd4096
void FFT_Fwd4096(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer)
Прямое быстрое преобразование Фурье-4096.
FFT_Fwd512Set7bit
void FFT_Fwd512Set7bit()
Устанавливает 7-битную точность вычислений
FFT_Fwd512
void FFT_Fwd512(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-512.
FFT_Fwd512Set6bit
void FFT_Fwd512Set6bit()
Устанавливает 6-битную точность вычислений
FFT_Fwd8192
void FFT_Fwd8192(nm32sc *LSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer)
Прямое быстрое преобразование Фурье-8192.
FFT_Inv1024Set6bit
void FFT_Inv1024Set6bit()
Устанавливает 6-битную точность вычислений
FFT_Inv1024
void FFT_Inv1024(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=10, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-1024.
FFT_Inv1024Set7bit
void FFT_Inv1024Set7bit()
Устанавливает 7-битную точность вычислений
FFT_Inv2048Set7bit
void FFT_Inv2048Set7bit()
Устанавливает 7-битную точность вычислений
FFT_Inv2048
void FFT_Inv2048(nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=11, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-2048.
FFT_Inv2048Set6bit
void FFT_Inv2048Set6bit()
Устанавливает 6-битную точность вычислений
FFT_Inv256Set6bit
void FFT_Inv256Set6bit()
Устанавливает 6-битную точность вычислений
FFT_Inv256
void FFT_Inv256(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=8, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-256.
FFT_Inv256Set7bit
void FFT_Inv256Set7bit()
Устанавливает 7-битную точность вычислений
FFT_Inv4096
void FFT_Inv4096(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer)
Обратное быстрое преобразование Фурье. ОБПФ-4096.
FFT_Inv512Set6bit
void FFT_Inv512Set6bit()
Устанавливает 6-битную точность вычислений
FFT_Inv512
void FFT_Inv512(nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=9, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-512.
FFT_Inv512Set7bit
void FFT_Inv512Set7bit()
Устанавливает 7-битную точность вычислений
FFT_Inv8192
void FFT_Inv8192(nm32sc *LSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer)
Обратное быстрое преобразование Фурье. ОБПФ-8192.
nmtype.h
s_nm32sc
Definition: nmtype.h:1301


nmpp: Исходный файл g:/nmpp/include/nmpls/fftext.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpls
fftext.h
1//***************************************************************************/
2//* RC Module Inc., Moscow, Russia */
3//* NeuroMatrix(r) NM6403 Software */
4//* */
5//* Fast Fourie Transform Library */
6//* (C-callable functions) */
7//* */
8//* $Workfile:: FFText.h $*/
9//* Contents: Header file of FFT extended routines */
10//* */
11//* */
12//* Author: S.Mushkaev */
13//* */
14//* Version 1.0 */
15//* Start Date: 03.07.2001 */
16//* Release $Date: 2005/02/10 11:47:59 $*/
17//* */
18//* */
19//***************************************************************************/
20
21// LIBRARY pcfft.lib
22
23
24//#########################################################################################
25// The functions declared below are used for modeling and researching FFT calculations on PC
26// using fixed and floating-point arithmetic on PC.
27#ifndef _FFTEXT_H_INCLUDED_
28#define _FFTEXT_H_INCLUDED_
29
30#define FFT7BIT 1
31#define FFT6BIT 2
32
33#ifndef __NM__
34
35#include "nmtl.h"
36#include "nmtype.h"
37#include "crtdbg2.h"
38
39
40
41class Cplx_float
42{
43public:
44 double Re;
45 double Im;
46} ;
47
48class Wi_4096_fixed
49{
50public:
51 char Re;
52 char Im;
53} ;
54
55
56
57//********************************************************************
59// Computing FFT-256 using fixed-point arithmetic
60// This is the C equivalent of the FFT_Fwd256 Assembly Code
61int FFT_Fwd256(
62 vec<cmplx<int> > &X,
63 vec<cmplx<int> > &Y,
64 vec<cmplx<char> > &W1_256,
65 vec<cmplx<char> > &W2_256,
66 int Shr1,
67 int Shr2
68 );
70// Computing FFT-256 using floating-point arithmetic
71int FFT256(
72 vec<cmplx<double> > &X, // Source buffer :long[256]
73 vec<cmplx<double> > &Y // Result FFT :long[256]
74 );
76// Initialization FFT table of char coefficients
77void MakeTable256W1W2(
78 vec<cmplx<char> > &W1_256,
79 vec<cmplx<char> > &W2_256,
80 double Ampl
81 );
82
83//********************************************************************
85// Computing FFT-1024 using fixed-point arithmetic
86// This is the C equivalent of the FFT_Fwd512 Assembly Code
87int FFT_Fwd512(
88 vec<cmplx<int> > &X, // input array
89 vec<cmplx<int> > &Y, // output array
90 vec<cmplx<char> > &W1_512, // table of coefficients
91 vec<cmplx<char> > &W2_512, // table of coefficients
92 int Shr1, // 1-st shiftr normalization
93 int Shr2 // 2-nd shiftr normalization
94 );
96// Computing FFT-512 using floating-point arithmetic
97int FFT512(
98 vec<cmplx<double> > &X, // Source buffer :long[512]
99 vec<cmplx<double> > &Y // Result FFT :long[512]
100 );
102// Initialization FFT table of char coefficients
103void MakeTable512W1W2(
104 vec<cmplx<char> > &W1_512,
105 vec<cmplx<char> > &W2_512,
106 double Ampl
107 );
108//********************************************************************
110// Computing FFT-1024 using fixed-point arithmetic
111// This is the C equivalent of the FFT_Fwd1024 Assembly Code
112int FFT_Fwd1024(
113 vec<cmplx<int> > &X, // input array
114 vec<cmplx<int> > &Y, // output array
115 vec<cmplx<char> > &W1_1024,// table of coefficients
116 vec<cmplx<char> > &W2_1024,// table of coefficients
117 int Shr1, // 1-st shiftr normalization
118 int Shr2 // 2-nd shiftr normalization
119 );
121// Computing FFT-1024 using floating-point arithmetic
122int FFT1024(
123 vec<cmplx<double> > &X, // Source buffer :long[1024]
124 vec<cmplx<double> > &Y // Result FFT :long[1024]
125 );
127// Initialization table of char coefficients
128void MakeTable1024W1W2(
129 vec<cmplx<char> > &W1_1024,
130 vec<cmplx<char> > &W2_1024,
131 double Ampl
132 );
133//********************************************************************
135// Computing FFT-2048 using fixed-point arithmetic
136// This is the C equivalent of the FFT_Fwd2048 Assembly Code
137int FFT_Fwd2048(
138 vec<cmplx<int> > &X, // input array
139 vec<cmplx<int> > &Y, // output array
140 vec<cmplx<char> > &W1_2048,// table of coefficients
141 vec<cmplx<char> > &W2_2048,// table of coefficients
142 int Shr1, // 1-st shiftr normalization
143 int Shr2 // 2-nd shiftr normalization
144 );
146// Computing FFT-2048 using floating-point arithmetic
147int FFT2048(
148 vec<cmplx<double> > &X, // Source buffer :long[1024]
149 vec<cmplx<double> > &Y // Result FFT :long[1024]
150 );
152// Initialization table of char coefficients
153void MakeTable2048W1W2(
154 vec<cmplx<char> > &W1_2048,
155 vec<cmplx<char> > &W2_2048,
156 double Ampl
157 );
158//********************************************************************
160// Computing FFT-4096 using floating-point arithmetic
161void FFT_Fwd4096_float1(
162 Cplx_float *X, // Source buffer :long[4096]
163 Cplx_float *Y // Result FFT :long[4096]
164 );
165//********************************************************************
167// Computing IFFT-256 using fixed-point arithmetic
168// This is the C equivalent of the FFT_Fwd256 Assembly Code
169int FFT_Inv256(
170 vec<cmplx<int> > &X,
171 vec<cmplx<int> > &Y,
172 vec<cmplx<char> > &IW1_256,
173 vec<cmplx<char> > &IW2_256,
174 int Shr1,
175 int Shr2
176 );
178// Computing IFFT-256 using floating-point arithmetic
179int IFFT256(
180 vec<cmplx<double> > &X, // Source buffer :long[256]
181 vec<cmplx<double> > &Y // Result FFT :long[256]
182 );
184// Initialization table of char coefficients
185void IMakeTable256W1W2(
186 vec<cmplx<char> > &IW1_256,
187 vec<cmplx<char> > &IW2_256,
188 double Ampl
189 );
190//********************************************************************
192// Computing IFFT-512 using fixed-point arithmetic
193// This is the C equivalent of the FFT_Inv512 Assembly Code
194int FFT_Inv512(
195 vec<cmplx<int> > &X, // input array
196 vec<cmplx<int> > &Y, // output array
197 vec<cmplx<char> > &IW1_512, // table of coefficients
198 vec<cmplx<char> > &IW2_512, // table of coefficients
199 int Shr1, // 1-st shiftr normalization
200 int Shr2 // 2-nd shiftr normalization
201 );
203// Computing FFT-512 using floating-point arithmetic
204int IFFT512(
205 vec<cmplx<double> > &X, // Source buffer :long[512]
206 vec<cmplx<double> > &Y // Result IFFT :long[512]
207 );
209// Initialization table of char coefficients
210void IMakeTable512W1W2(
211 vec<cmplx<char> > &IW1_512,
212 vec<cmplx<char> > &IW2_512,
213 double Ampl
214 );
215//********************************************************************
217// Computing FFT-1024 using fixed-point arithmetic
218// This is the C equivalent of the FFT_Fwd1024 Assembly Code
219int FFT_Inv1024(
220 vec<cmplx<int> > &X, // input array
221 vec<cmplx<int> > &Y, // output array
222 vec<cmplx<char> > &IW1_1024,// table of coefficients
223 vec<cmplx<char> > &IW2_1024, // table of coefficients
224 int Shr1, // 1-st shiftr normalization
225 int Shr2 // 2-nd shiftr normalization
226 );
228// Computing IFFT-1024 using floating-point arithmetic
229int IFFT1024(
230 vec<cmplx<double> > &X, // Source buffer :long[1024]
231 vec<cmplx<double> > &Y // Result IFFT :long[1024]
232 );
234// Initialization table of char coefficients
235void IMakeTable1024W1W2(
236 vec<cmplx<char> > &IW1_1024,
237 vec<cmplx<char> > &IW2_1024,
238 double Ampl);
239//********************************************************************
240
242// Computing IFFT-2048 using fixed-point arithmetic
243// This is the C equivalent of the FFT_Inv2048 Assembly Code
244int FFT_Inv2048(
245 vec<cmplx<int> > &X, // input array
246 vec<cmplx<int> > &Y, // output array
247 vec<cmplx<char> > &IW1_2048, // table of coefficients
248 vec<cmplx<char> > &IW2_2048, // table of coefficients
249 int Shr1, // 1-st shiftr normalization
250 int Shr2 // 2-nd shiftr normalization
251 );
253// Computing IFFT-2048 using floating-point arithmetic
254int IFFT2048(
255 vec<cmplx<double> > &X, // Source buffer :long[1024]
256 vec<cmplx<double> > &Y // Result IFFT :long[1024]
257 );
259// Initialization table of char coefficients
260void IMakeTable2048W1W2(
261 vec<cmplx<char> > &IW1_2048,
262 vec<cmplx<char> > &IW2_2048,
263 double Ampl
264 );
265//********************************************************************
267// Computing IFFT-4096 using floating-point arithmetic
268void FFT_Inv4096_float1(
269 Cplx_float *X, // Source buffer :long[4096]
270 Cplx_float *Y // Result IFFT :long[4096]
271 );
272//********************************************************************
273// Radix-2 FFT-256 Functions
274
275// Computing IFFT-256 using floating-point arithmetic by radix-2 method
276int IFFT256_radix2(
277 vec<cmplx<double> > &X, // Source buffer
278 vec<cmplx<double> > &Y // Result IFFT
279 );
280// Computing FFT-256 using floating-point arithmetic by radix-2 method
281int FFT256_radix2(
282 vec<cmplx<double> > &X, // Source buffer :long[256]
283 vec<cmplx<double> > &Y // Result FFT :long[256]
284 );
285// Computing FFT-256 using fixed-point arithmetic by radix-2 method
286int FFT256_int_radix2(
287 vec<cmplx<int> > &X,
288 vec<cmplx<int> > &Y);
289// Computing FFT-256 using fixed-point arithmetic by radix-2 method
290int IFFT256_int_radix2(
291 vec<cmplx<int> > &X,
292 vec<cmplx<int> > &Y
293 );
294
295
296__INLINE__ void CmplxPack8to64(
297 vec<cmplx<char> > &W,
298 vec<nmint64s > &WRePacked,
299 vec<nmint64s > &WImPacked)
300{
301 ASSERTE(W.size==WRePacked.size*8);
302 ASSERTE(W.size==WImPacked.size*8);
303
304 __int64 PackageIm=0,PackageRe=0;
305 __int64 ByteMask=0xFF;
306 for(int i=0,k=0;i<WRePacked.size;i++,k+=8)
307 {
308 for(int j=7;j>=0;j--)
309 {
310 PackageRe<<=8;
311 PackageRe=PackageRe|(W[k+j].re& ByteMask);
312
313 PackageIm<<=8;
314 PackageIm=PackageIm|(W[k+j].im& ByteMask);
315 }
316 WRePacked[i]=PackageRe;
317 WImPacked[i]=PackageIm;
318 }
319}
320
321//__INLINE__ void OutTable(vec<nmint64s > &Table,nm8s*TableName,nm8s* Section)
322__INLINE__ void OutTable(vec<nmint64s > &Table,char*TableName,char* Section)
323//__INLINE__ void OutTable(nmvec64s &Table,char*TableName,char* Section)
324{
325/*
326 cout << "data" << '"'<< Section << '"' <<endl;
327
328 cout << "global " << TableName << ":long["<< dec << Table.size<<"]=(" << endl;
329 cout << Table << ')'<<';'<<endl;
330
331 cout << "end "<< '"'<< Section <<'"' <<';' <<endl;
332*/
333}
334
335
336
337#endif // NM6403
338#endif //_NMFFTEXT_H_INCLUDED_
Cplx_float
Definition: fftext.h:42
Wi_4096_fixed
Definition: fftext.h:49
vec
Definition: tvector.h:80
FFT_Fwd1024
void FFT_Fwd1024(nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-1024.
FFT_Fwd2048
void FFT_Fwd2048(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-2048.
FFT_Fwd256
void FFT_Fwd256(nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-256.
FFT_Fwd512
void FFT_Fwd512(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-512.
FFT_Inv1024
void FFT_Inv1024(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=10, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-1024.
FFT_Inv2048
void FFT_Inv2048(nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=11, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-2048.
FFT_Inv256
void FFT_Inv256(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=8, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-256.
FFT_Inv512
void FFT_Inv512(nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=9, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-512.
nmtype.h


nmpp: Исходный файл g:/nmpp/include/nmpls/fftref.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpls
fftref.h
1#ifndef FFTREF_H_INCLUDED
2#define FFTREF_H_INCLUDED
3#include "nmtype.h"
4
5void nmppsDFT16Fwd_RefFloat(const nm32sc* src, nm32sc* dst);
6void nmppsFFT16Fwd2x8_RefFloat(const nm32sc* src, nm32sc* dst);
7void nmppsFFT16Fwd2x8_RefInt(const nm32sc* src, nm32sc* dst);
8void nmppsFFT16Fwd8x2_RefFloat(const nm32sc* src, nm32sc* dst);
9void nmppsFFT16Fwd2x8Time_RefFloat(const nm32sc* src, nm32sc* dst);
10void nmppsFFT16Fwd2x8Freq_RefFloat(const nm32sc* src, nm32sc* dst);
11void nmppsFFT16Fwd242_RefFloat(const nm32sc* src, nm32sc* dst);
12void nmppsFFT16Fwd242_RefFloat(const nm32sc* src, nm32fc* dst);
13void nmppsFFT16Fwd242_RefInt(const nm32sc* src, nm32sc* dst);
14void nmppsFFT16Fwd242_RefNmc(const nm32sc* src, nm32sc* dst);
15
16
17
18void nmppsDFT32Fwd_RefFloat(const nm32sc* src, nm32sc* dst);
19void nmppsFFT32Fwd282_RefFloat(const nm32sc* src, nm32sc* dst);
20
21void nmppsDFT64Fwd_RefFloat(const nm32sc* src, nm32sc* dst);
22void nmppsFFT64Fwd88_RefFloat(const nm32sc* src, nm32sc* dst);
23
24void nmppsDFT128Fwd_RefFlt (const nm32sc* src, nm32sc* dst);
25void nmppsFFT128Fwd882_RefFlt(const nm32sc* src, nm32sc* dst);
26void nmppsFFT128Fwd828_RefFlt(const nm32sc* src, nm32sc* dst);
27void nmppsFFT128Fwd828_RefInt(const nm32sc* src, nm32sc* dst);
28extern "C" {
29 void nmppsFFT128Fwd828_RefNmc(const nm32sc* src, nm32sc* dst);
30};
31void nmppsDFT256Fwd_RefFloat(const nm32sc* src, nm32sc* dst);
32void nmppsFFT256Fwd2882_RefFloat(const nm32sc* src, nm32sc* dst);
33
34/*
35template <int rep, int nb_bits, int sb_bits> load_wfifo(void *wfifo) {
36
37}
38template<int rep> void load_data_vsum_data_vr(void *data, int vr) {
39
40}
41
42template<int rep> void save_afifo(void *dst) {
43
44}*/
45#endif
nmtype.h
s_nm32fc
Definition: nmtype.h:1328
s_nm32sc
Definition: nmtype.h:1301


nmpp: Исходный файл g:/nmpp/include/nmpls/nmpls.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpls
nmpls.h
1
2#ifndef INCLUDED_nmpls
3#define INCLUDED_nmpls
4
5//#include "nmtype.h"
6//#include "nmdef.h"
7//#include "nmpp.h"
8#include "sfir.h"
9
32//*****************************************************************************
33
34
45#include "sCorrelation.h"
46//*****************************************************************************
47
58//#include "sFiltration.h"
59
60
61//*****************************************************************************
62
73#include "sResample.h"
74
75//*****************************************************************************
85#include "fft.h"
86
97#include "fft_32fcr.h"
98
99//*****************************************************************************
100
101
102#endif


nmpp: Исходный файл g:/nmpp/include/nmpls/sConvolution.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpls
sConvolution.h


nmpp: Исходный файл g:/nmpp/include/nmpls/sCorrelation.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpls
sCorrelation.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: sConvolution. $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/01/12 14:09:07 $
10//
19//------------------------------------------------------------------------
20
21#ifndef _SCONVOLUTION_H_INCLUDED_
22#define _SCONVOLUTION_H_INCLUDED_
23#include "nmtype.h"
24
25//*****************************************************************************
26
86void nmppsXCorr_32s_32s(nm32s* pSrcVec, int nSrcVecSize,nm32s* pKernel, int nKernelSize, nm32s* pDstVec, void* pTmpBuf);
87void nmppsXCorr_32s_16s32s(nm16s* pSrcVec, int nSrcVecSize,nm32s* pKernel, int nKernelSize, nm32s* pDstVec, void* pTmpBuf);
88void nmppsXCorr_32s_8s32s(nm8s* pSrcVec, int nSrcVecSize,nm32s* pKernel, int nKernelSize, nm32s* pDstVec, void* pTmpBuf);
90
91
92
93#endif
nm32s
int nm32s
Definition: nmtype.h:292
nm16s
short nm16s
Definition: nmtype.h:243
nm8s
char nm8s
Definition: nmtype.h:167
nmtype.h


nmpp: Исходный файл g:/nmpp/include/nmpls/sFiltration.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpls
sFiltration.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: sFiltrat $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/01/12 14:09:07 $
10//
19//------------------------------------------------------------------------
20
21#ifndef _SFILTRATION_H_INCLUDED_
22#define _SFILTRATION_H_INCLUDED_
23
24#include "nmtype.h"
25
26
27
28
35int SIG_Median_V9(nm8s* pVec);
36int SIG_Median_V9(nm16s* pVec);
37int SIG_Median_V9(nm32s* pVec);
38 int64b SIG_Median_V9(nm64s* pVec);
40
41//*****************************************************************************
42
78int nmppcMedian3_32u(int a,int b, int c);
79 uint32b nmppcMedian3_32u(uint32b a, uint32b b, uint32b c);
81
82#endif // _SFILTRATION_H_INCLUDED_
83
uint32b
unsigned int uint32b
Definition: nmtype.h:839
int64b
INT64 int64b
Definition: nmtype.h:709
nm32s
int nm32s
Definition: nmtype.h:292
nm64s
long long nm64s
Definition: nmtype.h:375
nm16s
short nm16s
Definition: nmtype.h:243
nm8s
char nm8s
Definition: nmtype.h:167
nmtype.h


nmpp: Исходный файл g:/nmpp/include/nmpls/sfir.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpls
sfir.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: sFiltrat $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/01/12 14:09:07 $
10//
19//------------------------------------------------------------------------
20
21#ifndef _SFIR_H_INCLUDED_
22#define _SFIR_H_INCLUDED_
23
24#include "nmtype.h"
25
26#ifdef __cplusplus
27 extern "C" {
28#endif
29
30
38//*****************************************************************************
39#define NmppsFIRState void
52void nmppsFIR_8s ( nm8s* pSrc, nm8s* pDst, int srcSize, NmppsFIRState* pState);
53void nmppsFIR_8s16s ( nm8s* pSrc, nm16s* pDst, int srcSize, NmppsFIRState* pState);
54void nmppsFIR_8s32s ( nm8s* pSrc, nm32s* pDst, int srcSize, NmppsFIRState* pState);
55void nmppsFIR_16s ( nm16s* pSrc, nm16s* pDst, int srcSize, NmppsFIRState* pState);
56void nmppsFIR_16s32s( nm16s* pSrc, nm32s* pDst, int srcSize, NmppsFIRState* pState);
57void nmppsFIR_32s ( nm32s* pSrc, nm32s* pDst, int srcSize, NmppsFIRState* pState);
59
73int nmppsFIRInit_8s (NmppsFIRState* pState, int* pTaps, int tapsLen);
74int nmppsFIRInit_8s16s (NmppsFIRState* pState, int* pTaps, int tapsLen);
75int nmppsFIRInit_8s32s (NmppsFIRState* pState, int* pTaps, int tapsLen);
76int nmppsFIRInit_16s (NmppsFIRState* pState, int* pTaps, int tapsLen);
77int nmppsFIRInit_16s32s(NmppsFIRState* pState, int* pTaps, int tapsLen);
78int nmppsFIRInit_32s (NmppsFIRState* pState, int* pTaps, int tapsLen);
80
93int nmppsFIRInitAlloc_8s (NmppsFIRState** ppState, int* pTaps, int tapsLen);
94int nmppsFIRInitAlloc_8s16s (NmppsFIRState** ppState, int* pTaps, int tapsLen);
95int nmppsFIRInitAlloc_8s32s (NmppsFIRState** ppState, int* pTaps, int tapsLen);
96int nmppsFIRInitAlloc_16s (NmppsFIRState** ppState, int* pTaps, int tapsLen);
97int nmppsFIRInitAlloc_16s32s(NmppsFIRState** ppState, int* pTaps, int tapsLen);
98int nmppsFIRInitAlloc_32s (NmppsFIRState** ppState, int* pTaps, int tapsLen);
100
109int nmppsFIRGetStateSize_8s (int tapsLen);
110int nmppsFIRGetStateSize_8s16s (int tapsLen);
111int nmppsFIRGetStateSize_8s32s (int tapsLen);
112int nmppsFIRGetStateSize_16s (int tapsLen);
113int nmppsFIRGetStateSize_16s32s(int tapsLen);
114int nmppsFIRGetStateSize_32s (int tapsLen);
116
125void nmppsFIRFree(NmppsFIRState* pState);
127
128
129
130
131
132#ifdef __cplusplus
133 };
134#endif
135
136
137#endif // _SFILTRATION_H_INCLUDED_
138
nm32s
int nm32s
Definition: nmtype.h:292
nm16s
short nm16s
Definition: nmtype.h:243
nm8s
char nm8s
Definition: nmtype.h:167
nmtype.h


nmpp: Исходный файл g:/nmpp/include/nmpls/sResample.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmpls
sResample.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: sResampl $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2005/01/12 14:09:07 $
10//
19//------------------------------------------------------------------------
20#include "nmtype.h"
21#ifndef _S_RESAMPLE_H_INCLUDED_
22#define _S_RESAMPLE_H_INCLUDED_
23
24#ifdef __cplusplus
25 extern "C" {
26#endif
27
28
65void nmppsResampleDown2_8u8u(nm8u7b* pSrcVec, nm8u7b* pDstVec, int nSrcVecSize, nm64s* pKernel);
66void nmppsResampleDown2_16u16u(nm16u15b* pSrcVec, nm16u15b* pDstVec, int nSrcVecSize, nm64s* pKernel);
68
69//\param pTmpBuf
70// \ru Временный буффер размера 2*nSize.
71// \en Temporary buffer with size 2*nSize.
72
73//void nmppsResampleDown2(nm8u* pSrcVec, nm16u* pDstVec, int nSrcVecSize, nm64s* pKernel, void* pTmpBuf);
74void nmppsResampleDown2_8u16u(nm8u* pSrcVec,nm16u* pDstVec,void* pTmpBuf,int nSize);
75
76//*****************************************************************************
77
113void nmppsResampleUp3Down2_8s16s(nm8s* pSrcVec, nm16s* pDstVec, int nSrcVecSize, nm64s* pKernel);
115//*****************************************************************************
116
145void nmppsCreateResampleUp3Down2_8s16s(nm64s** pKernel, int nHint);
146void nmppsCreateResampleDown2_8u8u(nm64s** pKernel, int nHint);
147void nmppsCreateResampleDown2_16u16u(nm64s** pKernel, int nHint);
149
150//*****************************************************************************
151
183int nmppsSetResampleUp3Down2_8s16s(nm64s* pKernel);
184int nmppsSetResampleDown2_8u8u(nm64s* pKernel);
185int nmppsSetResampleDown2_16u16u(nm64s* pKernel);
187
188
189//*****************************************************************************
190
197void nmppsDecimate16_8s(nm8s* pSrcVec,nm8s* pDstVec,int nDstSize);
198void nmppsDecimate16_16s(nm16s* pSrcVec,nm16s* pDstVec,int nDstSize);
199void nmppsDecimate16_32s(nm32s* pSrcVec,nm32s* pDstVec,int nDstSize);
200void nmppsDecimate16_64s(nm64s* pSrcVec,nm64s* pDstVec,int nDstSize);
202
203
204//*****************************************************************************
205
270void nmppsResampleUp3Down2_perf(nm8s* pSrcVec, nm16s* pDstVec, int nSrcVecSize, nm64s* pKernel);
271void nmppsResampleDown2_perf_8u(nm8u7b* pSrcVec, nm8u7b* pDstVec, int nSrcVecSize, nm64s* pKernel);
272void nmppsResampleDown2_perf_16u(nm16u15b* pSrcVec, nm16u15b* pDstVec, int nSrcVecSize, nm64s* pKernel);
274
275
276
277
278
284#ifdef EEE
285template <class nmbits_in, class nmbits_out> class CnmppsResampleUp3Down2
286{
287public:
288 void (*pfFree32)(void*);
289 int nWeights;
290 nm64s* pKernel;
291 int nKernelSize;
292
294
300 CSIG_ResampleUp3Down2(void* (*malloc32_func)(unsigned),void (*free32_func)(void*));
301
302
304
316 void Eval(nmbits_in* pSrcVec, nmbits_out* pDstVec, int nSize);
317
319 ~CSIG_ResampleUp3Down2(){
320 if (pKernel)
321 pfFree32(pKernel);
322 }
323
324
325};
326#endif
327
328
329
330
331#ifdef __cplusplus
332 };
333#endif
334
335
336#endif //
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm32s
int nm32s
Definition: nmtype.h:292
nm16u
unsigned short nm16u
Definition: nmtype.h:481
nm8u7b
nm8u nm8u7b
Definition: nmtype.h:463
nm64s
long long nm64s
Definition: nmtype.h:375
nm16s
short nm16s
Definition: nmtype.h:243
nm8s
char nm8s
Definition: nmtype.h:167
nm16u15b
nm16u nm16u15b
Definition: nmtype.h:495
nmtype.h


nmpp: Содержание директории g:/nmpp/include/nmplv

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplv
Содержание директории nmplv

Файлы

файл | nmplv.h [Исходные тексты]
файл | nmtl.h [Исходные тексты]
файл | sElementary.h [Исходные тексты]
файл | vArithmetics.h [Исходные тексты]
файл | vArithmeticsDev.h [Исходные тексты]
файл | vBitwise.h [Исходные тексты]
файл | vInit.h [Исходные тексты]
файл | vSelect.h [Исходные тексты]
файл | vStat.h [Исходные тексты]
файл | vSupport.h [Исходные тексты]
файл | vSupport_.h [Исходные тексты]
файл | vTransform.h [Исходные тексты]


nmpp: Исходный файл g:/nmpp/include/nmplv/nmplv.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplv
nmplv.h
1
2#ifndef INCLUDED_nmplv
3#define INCLUDED_nmplv
4
5
6
7
8
9
10
11
12
13//-----------------------------------------------------------
14
35//-------------------------------------------------------------
36
37
38#include "nmtype.h"
39#include "nmdef.h"
40
41
42//-------------------------------------------------------------
43
83//-------------------------------------------------------------
84
108//*****************************************************************************
109
121#include "vSupport.h"
122
123//*****************************************************************************
124
146#include "vInit.h"
147
148
149//*****************************************************************************
150
171#include "vArithmetics.h"
172#include "vArithmeticsDev.h"
173
174
175//*****************************************************************************
176
188#include "vBitwise.h"
189
190//*****************************************************************************
191
212#include "vSelect.h"
213
214//*****************************************************************************
215
226#include "vStat.h"
227
228//*****************************************************************************
229
240#include "vTransform.h"
241
242//*****************************************************************************
243
253#include "sElementary.h"
254
255#endif
nmtype.h


nmpp: Исходный файл g:/nmpp/include/nmplv/nmtl.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplv
nmtl.h
1#include "nmtl/nmtl.h"


nmpp: Исходный файл g:/nmpp/include/nmplv/sElementary.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplv
sElementary.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: sElementary.h $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9//
18//------------------------------------------------------------------------
19
20#ifndef _SARITHM_H_INCLUDED_
21#define _SARITHM_H_INCLUDED_
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
37void nmppsSin_32f(const nm32f* pSrcVec, nm32f* pDstVec, int nSize);
38void nmppsCos_32f(const nm32f* pSrcVec, nm32f* pDstVec, int nSize);
40
52void nmppsDiv_32f(const nm32f *pSrcVec1, const nm32f *pSrcVec2, nm32f *pDstVec, int nSize);
54
64void nmppsExp_32f(const nm32f *pSrcVec, nm32f *pDstVec, int nSize);
65void nmppsExp_64f(const nm64f *pSrcVec, nm64f *pDstVec, int nSize);
67
78void nmppsLn_32f(const nm32f *pSrcVec, nm32f *pDstVec, int nSize);
79void nmppsLn_64f(const nm64f *pSrcVec, nm64f *pDstVec, int nSize);
81
93void nmppsPowx_64f(const nm64f *pSrcVec, nm64f *pDstVec, nm32u Deg, int nSize);
95
106void nmppsSqrt_32f(const nm32f* pSrcVec, nm32f* pDstVec, int nSize);
108
109#ifdef __cplusplus
110};
111#endif
112
113#endif // _SECARITM_H_INCLUDED_
nm32u
unsigned int nm32u
Definition: nmtype.h:509


nmpp: Исходный файл g:/nmpp/include/nmplv/vArithmetics.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplv
vArithmetics.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: vArithmetics.h $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.2 $ $Date: 2005/06/23 15:15:15 $
10//
19//------------------------------------------------------------------------
20
21#ifndef _VARITHM_H_INCLUDED_
22#define _VARITHM_H_INCLUDED_
23
24#include "malloc32.h"
25
26#ifdef __cplusplus
27 extern "C" {
28#endif
29
90void nmppsAbs_4s (const nm4s* pSrcVec, nm4s* pDstVec, int nSize);
91void nmppsAbs_8s (const nm8s* pSrcVec, nm8s* pDstVec, int nSize);
92void nmppsAbs_16s(const nm16s* pSrcVec, nm16s* pDstVec, int nSize);
93void nmppsAbs_32s(const nm32s* pSrcVec, nm32s* pDstVec, int nSize);
94void nmppsAbs_64s(const nm64s* pSrcVec, nm64s* pDstVec, int nSize);
96
97
98
147void nmppsAbs1_4s (const nm4s* pSrcVec, nm4s* pDstVec, int nSize);
148void nmppsAbs1_8s (const nm8s* pSrcVec, nm8s* pDstVec, int nSize);
149void nmppsAbs1_16s(const nm16s* pSrcVec, nm16s* pDstVec, int nSize);
150void nmppsAbs1_32s(const nm32s* pSrcVec, nm32s* pDstVec, int nSize);
151void nmppsAbs1_64s(const nm64s* pSrcVec, nm64s* pDstVec, int nSize);
153
154
155//*****************************************************************************
156
203void nmppsNeg_8s (const nm8s* pSrcVec, nm8s* pDstVec, int nSize);
204void nmppsNeg_16s(const nm16s* pSrcVec, nm16s* pDstVec, int nSize);
205void nmppsNeg_32s(const nm32s* pSrcVec, nm32s* pDstVec, int nSize);
206void nmppsNeg_64s(const nm64s* pSrcVec, nm64s* pDstVec, int nSize);
208
209//*****************************************************************************
210
264void nmppsAddC_8s (const nm8s* pSrcVec, int8b nVal, nm8s* pDstVec, int nSize);
265void nmppsAddC_16s (const nm16s* pSrcVec, int16b nVal, nm16s* pDstVec, int nSize);
266void nmppsAddC_32s (const nm32s* pSrcVec, int32b nVal, nm32s* pDstVec, int nSize);
267void nmppsAddC_64s (const nm64s* pSrcVec, int64b nVal, nm64s* pDstVec, int nSize);
269
270//*****************************************************************************
271
325void nmppsAddC_p64s(const nm64s* pSrcVec, int64b* pnVal, nm64s* pDstVec, int nSize);
327
328 //*****************************************************************************
329
383 void nmppsAddC_32fcr(const nm32fcr *pSrcVec, nm32fcr *pDstVec, float nVal, int nSize);
385
386//*****************************************************************************
387
441void nmppsAdd_4s (const nm4s* pSrcVec1, const nm4s* pSrcVec2, nm4s* pDstVec, int nSize);
442void nmppsAdd_8s (const nm8s* pSrcVec1, const nm8s* pSrcVec2, nm8s* pDstVec, int nSize);
443void nmppsAdd_16s(const nm16s* pSrcVec1, const nm16s* pSrcVec2, nm16s* pDstVec, int nSize);
444void nmppsAdd_32s(const nm32s* pSrcVec1, const nm32s* pSrcVec2, nm32s* pDstVec, int nSize);
445void nmppsAdd_64s(const nm64s* pSrcVec1, const nm64s* pSrcVec2, nm64s* pDstVec, int nSize);
447
501void nmppsAdd_32f(const nm32f* pSrcVec1, const nm32f* pSrcVec2, nm32f* pDstVec, int nSize);
503
557void nmppsAddC_32f (const nm32f* pSrcVec, nm32f* pDstVec, float C, int nSize);
559
560void nmppsAddEx_64s (const nm64s *pSrcVec1, int srcStep1, const nm64s *pSrcVec2, int srcStep2, nm64s *pDstVec, int dstStep, int nSize );
561
562void nmppsAdd4V_16s(
563 nm16s** Vectors, // array of pointers to buffers :nm8s* Any [NumberOfBuffer]
564 nm16s* pDstVec, // result buffer :long Local [VecSize/4]
565 int nSize // buffer size in 8-bit elements:nSize =[256,512,..]
566 );
567
568
569//*****************************************************************************
570
632void nmppsAdd_AddC_32s(nm32s* pSrcVec1, nm32s* pSrcVec2, int nVal, nm32s* pDstVec, int nSize);
634
635//*****************************************************************************
636
690void nmppsSubC_4s (const nm4s* pSrcVec, int4b nVal, nm4s* pDstVec, int nSize);
691void nmppsSubC_8s (const nm8s* pSrcVec, int8b nVal, nm8s* pDstVec, int nSize);
692void nmppsSubC_16s(const nm16s* pSrcVec, int16b nVal, nm16s* pDstVec, int nSize);
693void nmppsSubC_32s(const nm32s* pSrcVec, int32b nVal, nm32s* pDstVec, int nSize);
694void nmppsSubC_64s(const nm64s* pSrcVec, int64b nVal, nm64s* pDstVec, int nSize);
696
750void nmppsSubC_32f (const nm32f* pSrcVec, nm32f* pDstVec, float C, int nSize);
752
753//*****************************************************************************
754
808void nmppsSubCRev_8s (const nm8s* pSrcVec, int8b nVal, nm8s* pDstVec, int nSize);
809void nmppsSubCRev_16s(const nm16s* pSrcVec, int16b nVal, nm16s* pDstVec, int nSize);
810void nmppsSubCRev_32s(const nm32s* pSrcVec, int32b nVal, nm32s* pDstVec, int nSize);
811void nmppsSubCRev_64s(const nm64s* pSrcVec, int64b nVal, nm64s* pDstVec, int nSize);
812//void nmppsSubCRev_64s(nm64s* pSrcVec, int64b* pnVal, nm64s* pDstVec, int nSize);
814
815//*****************************************************************************
816
870void nmppsSubCRev_32f (const nm32f* pSrcVec, nm32f* pDstVec, float C, int nSize);
872
926void nmppsSub_4s (const nm4s* pSrcVec1, nm4s* pSrcVec2, nm4s* pDstVec, int nSize);
927void nmppsSub_8s (const nm8s* pSrcVec1, nm8s* pSrcVec2, nm8s* pDstVec, int nSize);
928void nmppsSub_16s(const nm16s* pSrcVec1, nm16s* pSrcVec2, nm16s* pDstVec, int nSize);
929void nmppsSub_32s(const nm32s* pSrcVec1, nm32s* pSrcVec2, nm32s* pDstVec, int nSize);
930void nmppsSub_64s(const nm64s* pSrcVec1, nm64s* pSrcVec2, nm64s* pDstVec, int nSize);
932
986void nmppsSub_32f(const nm32f* pSrcVec1, const nm32f* pSrcVec2, nm32f* pDstVec, int nSize);
988//*****************************************************************************
989
1054void nmppsAbsDiff_8s (const nm8s* pSrcVec1, nm8s* pSrcVec2, nm8s* pDstVec, int nSize);
1055void nmppsAbsDiff_16s(const nm16s* pSrcVec1, nm16s* pSrcVec2, nm16s* pDstVec, int nSize);
1056void nmppsAbsDiff_32s(const nm32s* pSrcVec1, nm32s* pSrcVec2, nm32s* pDstVec, int nSize);
1057void nmppsAbsDiff_64s(const nm64s* pSrcVec1, nm64s* pSrcVec2, nm64s* pDstVec, int nSize);
1059
1060
1115void nmppsAbsDiff_32f(const nm32f* pSrcVec1, nm32f* pSrcVec2, nm32f* pDstVec, int nSize);
1117//*****************************************************************************
1118
1186void nmppsAbsDiff1_8s(nm8s* pSrcVec1, nm8s* pSrcVec2, nm8s* pDstVec, int nSize);
1188
1189//*****************************************************************************
1190
1243void nmppsMulC_8s (const nm8s* pSrcVec, int8b nVal, nm8s* pDstVec, int nSize);
1244void nmppsMulC_8s16s (const nm8s* pSrcVec, int16b nVal, nm16s* pDstVec, int nSize);
1245void nmppsMulC_16s (const nm16s* pSrcVec, int16b nVal, nm16s* pDstVec, int nSize);
1246void nmppsMulC_16s32s(const nm16s* pSrcVec, int32b nVal, nm32s* pDstVec, int nSize);
1247void nmppsMulC_32s (const nm32s* pSrcVec, int32b nVal, nm32s* pDstVec, int nSize);
1248void nmppsMulC_32s64s(const nm32s* pSrcVec, int64b nVal, nm64s* pDstVec, int nSize);
1249void nmppsMulC_64s (const nm64s* pSrcVec, int64b nVal, nm64s* pDstVec, int nSize);
1250
1251void nmppsMulC_2s16s (const nm2s* pSrcVec, int16b nVal, nm16s* pDstVec, int nSize);
1253
1254
1298void nmppsMulC_32f(const nm32f* pSrcVec, nm32f* pDstVec, float C, int nSize);
1300
1301
1356void nmppsMul_Mul_Add_32f(const nm32f* pSrcVec1, const nm32f* pSrcVec2, const nm32f* pSrcVec3, const nm32f* pSrcVec4, nm32f* pDstVec, int nSize);
1357void nmppsMul_Mul_Add_32fcr(const nm32fcr *pSrcVec1, const nm32fcr *pSrcVec2, const nm32fcr *pSrcVec3, const nm32fcr *pSrcVec4, nm32fcr *pDstVec, int nSize);
1358void nmppsMul_Mul_Add_64f(const nm64f *pSrcVec1, const nm64f *pSrcVec2, const nm64f *pSrcVec3, const nm64f *pSrcVec4, nm64f *pDstVec, int nSize);
1360
1409void nmppsMul_Add_32f(const nm32f* pSrcVec1, const nm32f* pSrcVec2, const nm32f* pSrcVecAdd, nm32f* pDstVec, int nSize);
1410void nmppsMul_Add_64f(const nm64f* pSrcVec1, const nm64f* pSrcVec2, const nm64f* pSrcVecAdd, nm64f* pDstVec, int nSize);
1411void nmppsMul_Add_32fcr(const nm32fcr* pSrcVec1, const nm32fcr* pSrcVec2, const nm32fcr* pSrcVecAdd, nm32fcr* pDstVec, int nSize);
1413
1468void nmppsMul_ConjMul_Add_32fcr(const nm32fcr* pSrcVec1, const nm32fcr* pSrcVec2, const nm32fcr* pSrcVec3, const nm32fcr* pSrcVec4, nm32fcr* pDstVec, int nSize);
1470
1519void nmppsMulC_AddC_32f(const nm32f* pSrcVec, float nMulC, float nAddC, nm32f* pDstVec, int nSize);
1521
1576void nmppsMulC_AddV_AddC_32f(nm32f* pSrcVec, float nMulC, nm32f* pVecAdd, float nAddC, nm32f* pDstVec, int nSize);
1578
1621void nmppsMul_32f(const nm32f* pSrcVec1, const nm32f* pSrcVec2, nm32f* pDstVec, int nSize);
1622void nmppsMul_32fcr(const nm32fcr* pSrcVec1, const nm32fcr* pSrcVec2, nm32fcr* pDstVec, int nSize);
1624
1667void nmppsConjMul_32fcr(const nm32fcr *pSrcVec1, const nm32fcr *pSrcVec2, nm32fcr *pDstVec, int nSize);
1669
1724void nmppsMul_Mul_Sub_32f(const nm32f* pSrcVec1, const nm32f* pSrcVec2, const nm32f* pSrcVec3, const nm32f* pSrcVec4, nm32f* pDstVec, int nSize);
1726
1771void nmppsMulC_AddV_32f(const nm32f* pSrcVec1, const nm32f* pSrcVec2, nm32f* pDstVec, float C, int nSize);
1773//*******************************************************************
1774
1775
1776void nmppsMulC_AddC_2s16s(const nm2s* pSrcVec, int32b nMulC, int nAddC, nm16s* pDstVec, int nSize);
1777
1778//*****************************************************************************
1779
1838void nmppsMul_AddC_64s(const nm64s* pSrcVec1,const nm64s* pSrcVec2, const nm64s* pnVal, nm64s* pDstVec, int nSize);
1840
1841//*****************************************************************************
1842
1901void nmppsMul_AddC_32f(const nm32f* pSrcVec1, const nm32f* pSrcVec2, float nValueAddC, nm32f* pDstVec, int nSize);
1903//*****************************************************************************
1904
1963void nmppsMulC_AddC_32s(const nm32s* pSrcVec, int nMulVal, int nAddVal, nm32s* pDstVec, int nSize);
1965
1966
1967
1968
1993void nmppsMulC_AddC_2x32s(int32x2* dataSparseSrc, int32x2* mulArg, int32x2* addArg, int32x2 *dataSparseDst, int size, int stepSparseSrc, int stepSparseDst);
1995
1996
2023void nmppsRShiftC_MulC_AddC_2x32s(int32x2* dataSparseSrc, int32x2* preshiftArg, int32x2* mulArg, int32x2* addArg, int32x2 *dataSparseDst, int size, int stepSparseSrc, int stepSparseDst);
2025
2026
2027//*****************************************************************************
2028
2093void nmppsMulC_AddV_AddC_32s(nm32s* pSrcVec1, int nMulVal, nm32s* pSrcVec2, int nAddVal, nm32s* pDstVec, int nSize);
2095
2096//*****************************************************************************
2097
2155void nmppsSumN_8s16s(nm8s ** ppSrcVec, nm16s* pDstVec, int nSize, int nNumberOfVectors);
2156void nmppsSumN_16s (nm16s ** ppSrcVec, nm16s* pDstVec, int nSize, int nNumberOfVectors);
2158
2159
2160void nmppsSum4_16s(
2161 nm16s** Vectors, // array of pointers to buffers :nm8s* Any [NumberOfBuffer]
2162 nm16s* pDstVec, // result buffer :long Local [VecSize/4]
2163 int nSize // buffer size in 8-bit elements:nSize =[256,512,..]
2164 );
2165
2166//*****************************************************************************
2167
2256void nmppsDivC_32s(nm32s* pSrcVec, int nDivisor, nm32s* pDstVec, int nSize, void* pTmpBuf1, void* pTmpBuf2);
2258
2259//*****************************************************************************
2260
2308void nmppsSum_8s (const nm8s* pSrcVec, int nSize, int32b *pnRes);
2309void nmppsSum_16s(const nm16s* pSrcVec, int nSize, int64b *pnRes);
2310void nmppsSum_32s(const nm32s* pSrcVec, int nSize, int64b *pnRes);
2311void nmppsSum_64s(const nm64s* pSrcVec, int nSize, int64b *pnRes);
2313
2314//*****************************************************************************
2315
2365void nmppsSum_1 (const nm1* pSrcVec, int nSize, int32b* pnRes, void* pTmpBuf);
2367
2422
2423
2424
2425/*
2426void nmppsDotProd_8s8sm (nm8s* pSrcVec1, nm8s* pSrcVec2, int nSize, int64b* pnRes, SpecTmp1* spec);
2427void nmppsDotProd_8s16sm(nm8s* pSrcVec1, nm16s* pSrcVec2, int nSize, int64b* pnRes, SpecTmp1* spec);
2428void nmppsDotProd_8s32sm(nm8s* pSrcVec1, nm32s* pSrcVec2, int nSize, int64b* pnRes, SpecTmp1* spec);
2429void nmppsDotProd_8s64s(nm8s* pSrcVec1, nm64s* pSrcVec2, int nSize, int64b* pnRes);
2430
2431void nmppsDotProd_16s16sm(nm16s* pSrcVec1, nm16s* pSrcVec2, int nSize, int64b* pnRes, SpecTmp1* spec);
2432void nmppsDotProd_16s32sm(nm16s* pSrcVec1, nm32s* pSrcVec2, int nSize, int64b* pnRes, SpecTmp1* spec);
2433void nmppsDotProd_16s64s(nm16s* pSrcVec1, nm64s* pSrcVec2, int nSize, int64b* pnRes);
2434
2435void nmppsDotProd_32s32sm(nm32s* pSrcVec1, nm32s* pSrcVec2, int nSize, int64b* pnRes, SpecTmp1* spec);
2436void nmppsDotProd_32s64s(nm32s* pSrcVec1, nm64s* pSrcVec2, int nSize, int64b* pnRes);
2437
2438void nmppsDotProd_64s64s(nm64s* pSrcVec1, nm64s* pSrcVec2, int nSize, int64b* pnRes);
2439*/
2440int nmppsDotProd_8s8sm (const nm8s* pSrcVec1, const nm8s* pSrcVec2, int nSize, int64b* pnRes, nm64s* tmp);
2441int nmppsDotProd_8s16sm (const nm8s* pSrcVec1, const nm16s* pSrcVec2, int nSize, int64b* pnRes, nm64s* tmp);
2442int nmppsDotProd_8s32sm (const nm8s* pSrcVec1, const nm32s* pSrcVec2, int nSize, int64b* pnRes, nm64s* tmp);
2443int nmppsDotProd_16s16sm(const nm16s* pSrcVec1, const nm16s* pSrcVec2, int nSize, int64b* pnRes, nm64s* tmp);
2444int nmppsDotProd_16s32sm(const nm16s* pSrcVec1, const nm32s* pSrcVec2, int nSize, int64b* pnRes, nm64s* tmp);
2445int nmppsDotProd_32s32sm(const nm32s* pSrcVec1, const nm32s* pSrcVec2, int nSize, int64b* pnRes, nm64s* tmp);
2447
2500void nmppsDotProd_8s64s (const nm8s* pSrcVec1, const nm64s* pSrcVec2, int nSize, int64b* pnRes);
2501void nmppsDotProd_16s64s (const nm16s* pSrcVec1, const nm64s* pSrcVec2, int nSize, int64b* pnRes);
2502void nmppsDotProd_32s64s (const nm32s* pSrcVec1, const nm64s* pSrcVec2, int nSize, int64b* pnRes);
2503void nmppsDotProd_64s64s (const nm64s* pSrcVec1, const nm64s* pSrcVec2, int nSize, int64b* pnRes);
2505
2511//void nmppsDotProd_16sc(nm16sc *pSrcVec1, nm64sc *pSrcVec2, int nSize, nm64sc *pnRes);//pc version is not available
2512void nmppsDotProd_64sc(nm64sc *pSrcVec1, nm64sc *pSrcVec2, int nSize, nm64sc *pnRes);
2514
2515//*****************************************************************************
2573
2574void nmppsWeightedSum_8s16s(nm8s* pSrcVec1,int nW1,nm8s* pSrcVec2,int nW2, nm16s* pDstVec, int nSize);
2575void nmppsWeightedSum_16s32s(nm16s* pSrcVec1,int nW1,nm16s* pSrcVec2,int nW2, nm32s* pDstVec, int nSize);
2576void nmppsWeightedSum_32s64s(nm32s* pSrcVec1,nm64s nW1,nm32s* pSrcVec2,nm64s nW2, nm64s* pDstVec, int nSize);
2578
2579void nmppsMulC_Add_32fcr(const nm32fcr* pSrcVec1, const nm32fcr* pSrcVec2, nm32fcr* pDstVec, float C, int nSize);
2580
2581#ifdef __cplusplus
2582 };
2583#endif
2584
2585#endif // _VECARITM_H_INCLUDED_
nmppsMulC_AddC_2x32s
void nmppsMulC_AddC_2x32s(int32x2 *dataSparseSrc, int32x2 *mulArg, int32x2 *addArg, int32x2 *dataSparseDst, int size, int stepSparseSrc, int stepSparseDst)
Sparse vector by constant multiplication with addition of constant.
int4b
int int4b
Definition: nmtype.h:592
int8b
int int8b
Definition: nmtype.h:618
int32b
int int32b
Definition: nmtype.h:683
int16b
int int16b
Definition: nmtype.h:644
int64b
INT64 int64b
Definition: nmtype.h:709
nm32s
int nm32s
Definition: nmtype.h:292
nm64s
long long nm64s
Definition: nmtype.h:375
nm2s
void nm2s
Definition: nmtype.h:116
nm1
int nm1
Definition: nmtype.h:100
nm16s
short nm16s
Definition: nmtype.h:243
nm4s
void nm4s
Definition: nmtype.h:129
nm8s
char nm8s
Definition: nmtype.h:167
s_int32x2
Definition: nmtype.h:293
s_nm32fcr
Definition: nmtype.h:1335
s_nm64sc
Definition: nmtype.h:1364


nmpp: Исходный файл g:/nmpp/include/nmplv/vArithmeticsDev.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplv
vArithmeticsDev.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: vArithmeticsDev.h $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.5 $ $Date: 2005/07/13 14:19:56 $
10//
11//------------------------------------------------------------------------
12
13#ifndef _VARITHMETICSDEV_H_INCLUDED_
14#define _VARITHMETICSDEV_H_INCLUDED_
15
16#ifdef __cplusplus
17 extern "C" {
18#endif
19
20
26void nmppsAdd_64sc(
27 const nm64sc *pSrcVec1,
28 const nm64sc *pSrcVec2,
29 nm64sc *pDstVec,
30 int nSize);
32
38void nmppsSub_64sc(nm64sc *pSrcVec1, nm64sc *pSrcVec2, nm64sc *pDstVec, int nSize);
40
41
47void nmppsMulC_64sc(nm64sc *pSrcVec, nm64s *pnVal, nm64sc *pDstVec, int nSize);
49
50#ifdef __cplusplus
51 };
52#endif
53
54
55#endif
nm64s
long long nm64s
Definition: nmtype.h:375
s_nm64sc
Definition: nmtype.h:1364


nmpp: Исходный файл g:/nmpp/include/nmplv/vBitwise.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplv
vBitwise.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: vBitwis $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2004/11/22 13:50:02 $
10//
19//------------------------------------------------------------------------
20#ifndef _VBITWISE_H_INCLUDED_
21#define _VBITWISE_H_INCLUDED_
22
23#ifdef __cplusplus
24 extern "C" {
25#endif
26
27
28//#include "Vector.h"
29
84void nmppsNot_2u (const nm2u* pSrcVec, nm2u* pDstVec, int nSize);
85void nmppsNot_4u (const nm4u* pSrcVec, nm4u* pDstVec, int nSize);
86void nmppsNot_8u (const nm8u* pSrcVec, nm8u* pDstVec, int nSize);
87void nmppsNot_16u(const nm16u* pSrcVec, nm16u* pDstVec, int nSize);
88void nmppsNot_32u(const nm32u* pSrcVec, nm32u* pDstVec, int nSize);
89void nmppsNot_64u(const nm64u* pSrcVec, nm64u* pDstVec, int nSize);
91
92//*****************************************************************************
93
145void nmppsAndC_4u (const nm4u* pSrcVec, uint4b nVal, nm4u* pDstVec, int nSize);
146void nmppsAndC_8u (const nm8u* pSrcVec, uint8b nVal, nm8u* pDstVec, int nSize);
147void nmppsAndC_16u(const nm16u* pSrcVec, uint16b nVal, nm16u* pDstVec, int nSize);
148void nmppsAndC_32u(const nm32u* pSrcVec, uint32b nVal, nm32u* pDstVec, int nSize);
149void nmppsAndC_64u(const nm64u* pSrcVec, uint64b nVal, nm64u* pDstVec, int nSize);
151
152void nmppsAndC_p64u(nm64u* pSrcVec, nm64u* pnVal, nm64u* pDstVec, int nSize);
153
154//*****************************************************************************
155
207void nmppsAnd_1 (const nm1* pSrcVec1, const nm1* pSrcVec2, nm1* pDstVec, int nSize);
208void nmppsAnd_2u (const nm2u* pSrcVec1, const nm2u* pSrcVec2, nm2u* pDstVec, int nSize);
209void nmppsAnd_4u (const nm4u* pSrcVec1, const nm4u* pSrcVec2, nm4u* pDstVec, int nSize);
210void nmppsAnd_8u (const nm8u* pSrcVec1, const nm8u* pSrcVec2, nm8u* pDstVec, int nSize);
211void nmppsAnd_16u(const nm16u* pSrcVec1, const nm16u* pSrcVec2, nm16u* pDstVec, int nSize);
212void nmppsAnd_32u(const nm32u* pSrcVec1, const nm32u* pSrcVec2, nm32u* pDstVec, int nSize);
213void nmppsAnd_64u(const nm64u* pSrcVec1, const nm64u* pSrcVec2, nm64u* pDstVec, int nSize);
215
275void nmppsAnd4V_64u(nm64u* pSrcVec1, nm64u* pSrcVec2, nm64u* pSrcVec3, nm64u* pSrcVec4, nm64u* pDstVec, int nSize);
277
278 // numVecs>2
279void nmppsAndNV_64u(nm64u** pSrcVecs, int numVecs, nm64u* pDstVec, int nSize);
280//*****************************************************************************
281
333void nmppsAndNotV_64u(nm64u* pSrcVec1, nm64u* pSrcVec2, nm64u* pDstVec, int nSize);
335
336//*****************************************************************************
337
389void nmppsOrC_8u (const nm8u* pSrcVec, uint8b nVal, nm8u* pDstVec, int nSize);
390void nmppsOrC_16u(const nm16u* pSrcVec, uint16b nVal, nm16u* pDstVec, int nSize);
391void nmppsOrC_32u(const nm32u* pSrcVec, uint32b nVal, nm32u* pDstVec, int nSize);
392void nmppsOrC_64u(const nm64u* pSrcVec, uint64b nVal, nm64u* pDstVec, int nSize);
394
395//*****************************************************************************
396
448void nmppsOr_1 (const nm1* pSrcVec1, const nm1* pSrcVec2, nm1* pDstVec, int nSize);
449void nmppsOr_2u (const nm2u* pSrcVec1, const nm2u* pSrcVec2, nm2u* pDstVec, int nSize);
450void nmppsOr_4u (const nm4u* pSrcVec1, const nm4u* pSrcVec2, nm4u* pDstVec, int nSize);
451void nmppsOr_8u (const nm8u* pSrcVec1, const nm8u* pSrcVec2, nm8u* pDstVec, int nSize);
452void nmppsOr_16u(const nm16u* pSrcVec1, const nm16u* pSrcVec2, nm16u* pDstVec, int nSize);
453void nmppsOr_32u(const nm32u* pSrcVec1, const nm32u* pSrcVec2, nm32u* pDstVec, int nSize);
454void nmppsOr_64u(const nm64u* pSrcVec1, const nm64u* pSrcVec2, nm64u* pDstVec, int nSize);
456
512void nmppsOr3V_64u(nm64u* pSrcVec1, nm64u* pSrcVec2, nm64u* pSrcVec3, nm64u* pDstVec, int nSize);
514
574void nmppsOr4V_64u(nm64u* pSrcVec1, nm64u* pSrcVec2, nm64u* pSrcVec3, nm64u* pSrcVec4, nm64u* pDstVec, int nSize);
576
577 // numVecs>2
578void nmppsOrNV_64u(nm64u** pSrcVecs, int numVecs, nm64u* pDstVec, int nSize);
579
580//*****************************************************************************
581
636 //--------------------------------------------------------------------
638void nmppsXorC_8u (const nm8u* pSrcVec, uint8b nVal, nm8u* pDstVec, int nSize);
639void nmppsXorC_16u(const nm16u* pSrcVec, uint16b nVal, nm16u* pDstVec, int nSize);
640void nmppsXorC_32u(const nm32u* pSrcVec, uint32b nVal, nm32u* pDstVec, int nSize);
641void nmppsXorC_64u(const nm64u* pSrcVec, uint64b nVal, nm64u* pDstVec, int nSize);
643
644//*****************************************************************************
645
697void nmppsXor_4u (const nm4u* pSrcVec1, const nm4u* pSrcVec2, nm4u* pDstVec, int nSize);
698void nmppsXor_8u (const nm8u* pSrcVec1, const nm8u* pSrcVec2, nm8u* pDstVec, int nSize);
699void nmppsXor_16u(const nm16u* pSrcVec1, const nm16u* pSrcVec2, nm16u* pDstVec, int nSize);
700void nmppsXor_32u(const nm32u* pSrcVec1, const nm32u* pSrcVec2, nm32u* pDstVec, int nSize);
701void nmppsXor_64u(const nm64u* pSrcVec1, const nm64u* pSrcVec2, nm64u* pDstVec, int nSize);
703
704//*****************************************************************************
705
764void nmppsMaskV_64u(nm64u* pSrcVec1, nm64u* pSrcVec2, nm64u* pMaskVec, nm64u* pDstVec, int nSize);
766
767//*****************************************************************************
768
840void nmppsRShiftC_8s (const nm8s* pSrcVec, int nShift, nm8s* pDstVec, int nSize);
841void nmppsRShiftC_16s(const nm16s* pSrcVec, int nShift, nm16s* pDstVec, int nSize);
842void nmppsRShiftC_32s(const nm32s* pSrcVec, int nShift, nm32s* pDstVec, int nSize);
843void nmppsRShiftC_64s(const nm64s* pSrcVec, int nShift, nm64s* pDstVec, int nSize);
845
846//*****************************************************************************
847
916void nmppsRShiftC_4u (const nm4u* pSrcVec, int nShift, nm4u* pDstVec, int nSize);
917void nmppsRShiftC_8u (const nm8u* pSrcVec, int nShift, nm8u* pDstVec, int nSize);
918void nmppsRShiftC_16u(const nm16u* pSrcVec, int nShift, nm16u* pDstVec, int nSize);
919void nmppsRShiftC_32u(const nm32u* pSrcVec, int nShift, nm32u* pDstVec, int nSize);
920void nmppsRShiftC_64u(const nm64u* pSrcVec, int nShift, nm64u* pDstVec, int nSize);
922
923
924
1000
1002void nmppsRShiftC_AddC_8u (const nm8u *pSrcVec, int nShift, uint8b nAddVal, nm8u *pDstVec, int nSize);
1003void nmppsRShiftC_AddC_16u(const nm16u *pSrcVec, int nShift, uint16b nAddVal, nm16u *pDstVec, int nSize);
1004void nmppsRShiftC_AddC_32u(const nm32u *pSrcVec, int nShift, uint32b nAddVal, nm32u *pDstVec, int nSize);
1005
1006//*****************************************************************************
1007
1086void nmppsFwdShiftBitstream(const nm64u* pSrcVec, nm64u* pDstVec, nm64u* pnBits, int nBits, int nSize);
1088
1089
1090#ifdef __cplusplus
1091 };
1092#endif
1093#endif // _VBITWISE_H_INCLUDED_
uint32b
unsigned int uint32b
Definition: nmtype.h:839
uint4b
unsigned int uint4b
Definition: nmtype.h:761
uint16b
unsigned int uint16b
Definition: nmtype.h:813
uint8b
unsigned int uint8b
Definition: nmtype.h:787
uint64b
nm64u uint64b
Definition: nmtype.h:865
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm32s
int nm32s
Definition: nmtype.h:292
nm4u
void nm4u
Definition: nmtype.h:417
nm16u
unsigned short nm16u
Definition: nmtype.h:481
nm64s
long long nm64s
Definition: nmtype.h:375
nm2u
void nm2u
Definition: nmtype.h:404
nm1
int nm1
Definition: nmtype.h:100
nm16s
short nm16s
Definition: nmtype.h:243
nm32u
unsigned int nm32u
Definition: nmtype.h:509
nm64u
unsigned long long nm64u
Definition: nmtype.h:536
nm8s
char nm8s
Definition: nmtype.h:167


nmpp: Исходный файл g:/nmpp/include/nmplv/vInit.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplv
vInit.h
1
2// Векторно-матричная библиотека
3//
4// Copyright (c) RC Module Inc.
5//
6// $Revision: 1.1 $ $Date: 2004/11/22 13:50:02 $
7//
16//------------------------------------------------------------------------
17#ifndef _VINIT_H_INCLUDED_
18#define _VINIT_H_INCLUDED_
19
20
21#ifdef __cplusplus
22 extern "C" {
23#endif
24
72
73void nmppsSet_8s ( int8b val, nm8s* pDst, int len);
74void nmppsSet_16s ( int16b val, nm16s* pDst, int len);
75void nmppsSet_32s ( int32b val, nm32s* pDst, int len);
76void nmppsSet_64s ( int64b val, nm64s* pDst, int len);
77void nmppsSet_64sc(int64sc val, nm64sc* pDst, int len);
78//void nmppsSet_64sp( int64b* pVal,nm64s* pDst, int len);
79//__INLINE__ void nmppsSet_64s(nm64s* pDst, int64b val, int len) {nmppsSet_64sp((nm64s*) pDst, (int64b*)&val, len);}
80
81__INLINE__ void nmppsSet_8u ( uint8b val, nm8u* pDst, int len) {nmppsSet_8s ( (int8b)val, (nm8s*) pDst, len);}
82__INLINE__ void nmppsSet_16u(uint16b val, nm16u* pDst, int len) {nmppsSet_16s((int16b)val, (nm16s*) pDst, len);}
83__INLINE__ void nmppsSet_32u(uint32b val, nm32u* pDst, int len) {nmppsSet_32s((int32b)val, (nm32s*) pDst, len);}
84__INLINE__ void nmppsSet_64u(uint64b val, nm64u* pDst, int len) {nmppsSet_64s((int64b)val, (nm64s*) pDst, len);}
85
86//__INLINE__ void nmppsSet_16sc (nm16sc val, nm16sc* pDst, int len);
87//__INLINE__ void nmppsSet_32sc (nm32sc val, nm32sc* pDst, int len);
88
89
90//__INLINE__ void nmppsSet_64up(nm64u* pDst, uint64b* val, int len){nmppsSet_64sp((nm64s*) pDst, (int64b*)val, len);}
91
92
94
95
96//*****************************************************************************
97
128
133//void nmppsRandUniform_32u(nm32u* pDstVec, int nSize, unsigned nRandomize );
134void nmppsRandUniform_64s(nm64s* pDstVec, int nSize);
135__INLINE__ void nmppsRandUniform_8s (nm8s* pDstVec, int nSize) {nmppsRandUniform_64s((nm64s*)pDstVec, nSize>>3);}
136__INLINE__ void nmppsRandUniform_16s(nm16s* pDstVec, int nSize) {nmppsRandUniform_64s((nm64s*)pDstVec, nSize>>2);}
137__INLINE__ void nmppsRandUniform_32s(nm32s* pDstVec, int nSize) {nmppsRandUniform_64s((nm64s*)pDstVec, nSize>>1);}
138__INLINE__ void nmppsRandUniform_8u (nm8u* pDstVec, int nSize) {nmppsRandUniform_64s((nm64s*)pDstVec, nSize>>3);}
139__INLINE__ void nmppsRandUniform_16u(nm16u* pDstVec, int nSize) {nmppsRandUniform_64s((nm64s*)pDstVec, nSize>>2);}
140__INLINE__ void nmppsRandUniform_32u(nm32u* pDstVec, int nSize) {nmppsRandUniform_64s((nm64s*)pDstVec, nSize>>1);}
141__INLINE__ void nmppsRandUniform_64u(nm64u* pDstVec, int nSize) {nmppsRandUniform_64s((nm64s*)pDstVec, nSize );}
142
143//__INLINE__ void nmppsRandUniform_64s(nm64s* pDstVec, int nSize, unsigned nRandomize = 1) {nmppsRandUniform_32u((nm32u*)pDstVec, nSize<<1, nRandomize);}
144
153
154
155 //*****************************************************************************
156
191void nmppsRandUniform_64f(nm64f* pDstVec, int nSize, double low, double hi);
192void nmppsRand_32f(nm32f* pDstVec, int nSize,float low,float hi);
193
194void nmppsRandUniform_32f_integer(nm32f *pDstVec,int nSize,int hi,int low);
195
197
198
199//*****************************************************************************
200
253int nmppsRandUniform2_32s(int nMin, int nMax, int nDivisible);
254int nmppsRandUniform3_32s(int nMin, int nMax);
255int nmppsRandUniform();
256
258
259
260//*****************************************************************************
261
328void nmppsRamp_8s(nm8s* pVec, int8b nOffset, int8b nSlope, int nSize);
329void nmppsRamp_16s(nm16s* pVec, int16b nOffset, int16b nSlope, int nSize);
330void nmppsRamp_32s(nm32s* pVec, int32b nOffset, int32b nSlope, int nSize);
331void nmppsRamp_64s(nm64s* pVec, int64b nOffset, int64b nSlope, int nSize);
333
334//*****************************************************************************
335
389 //todo Impelenment NM versin of void nmppsConvert_32s(nm32s *pSrcVec, nm4s *pDstVec, int nSize);
391
395void nmppsConvert_1s2s (const nm1* pSrcVec, nm2s* pDstVec, int nSize);
399void nmppsConvert_1u2u (const nm1* pSrcVec, nm2u* pDstVec, int nSize);
400void nmppsConvert_1u4u (const nm1* pSrcVec, nm4u* pDstVec, int nSize);
401
402void nmppsConvert_2s1s (const nm2s* pSrcVec, nm1* pDstVec, int nSize);
403void nmppsConvert_2s4s (const nm2s* pSrcVec, nm4s* pDstVec, int nSize);
404void nmppsConvert_2u4u (const nm2u* pSrcVec, nm4u* pDstVec, int nSize);
405
406void nmppsConvert_4s1s (const nm4s* pSrcVec, nm1* pDstVec, int nSize);
407void nmppsConvert_4s2s (const nm4s* pSrcVec, nm2s* pDstVec, int nSize);
408void nmppsConvert_4s8s (const nm4s* pSrcVec, nm8s* pDstVec, int nSize);
409void nmppsConvert_4u8u (const nm4u* pSrcVec, nm8u* pDstVec, int nSize);
410
411void nmppsConvert_8s4s (const nm8s* pSrcVec, nm4s* pDstVec, int nSize);
412void nmppsConvert_8s16s (const nm8s* pSrcVec, nm16s* pDstVec, int nSize);
413void nmppsConvert_8s32s (const nm8s* pSrcVec, nm32s* pDstVec, int nSize);
414void nmppsConvert_8s64s (const nm8s* pSrcVec, nm64s* pDstVec, int nSize);
415void nmppsConvert_8u16u (const nm8u* pSrcVec, nm16u* pDstVec, int nSize);
416void nmppsConvert_8u32u (const nm8u* pSrcVec, nm32u* pDstVec, int nSize);
417void nmppsConvert_8u64u (const nm8u* pSrcVec, nm64u* pDstVec, int nSize);
418
419void nmppsConvert_16s4s (const nm16s* pSrcVec, nm4s* pDstVec, int nSize);
420void nmppsConvert_16s8s (const nm16s* pSrcVec, nm8s* pDstVec, int nSize);
421void nmppsConvert_16s32s(const nm16s* pSrcVec, nm32s* pDstVec, int nSize);
422void nmppsConvert_16s64s(const nm16s* pSrcVec, nm64s* pDstVec, int nSize);
423void nmppsConvert_16u32u(const nm16u* pSrcVec, nm32u* pDstVec, int nSize);
424void nmppsConvert_16u64u(const nm16u* pSrcVec, nm64u* pDstVec, int nSize);
425
426void nmppsConvert_32s8s (const nm32s* pSrcVec, nm8s* pDstVec, int nSize);
427void nmppsConvert_32s16s(const nm32s* pSrcVec, nm16s* pDstVec, int nSize);
428void nmppsConvert_32s64s(const nm32s* pSrcVec, nm64s* pDstVec, int nSize);
429void nmppsConvert_32u64u(const nm32u* pSrcVec, nm64u* pDstVec, int nSize);
430
431void nmppsConvert_64s32s(const nm64s* pSrcVec, nm32s* pDstVec, int nSize);
432void nmppsConvert_64s16s(const nm64s* pSrcVec, nm16s* pDstVec, int nSize);
433
435//void nmppsConvert_32s(nm32s *pSrcVec, nm4s *pDstVec, int nSize);
436
437
438//*****************************************************************************
439
476void nmppsConvert_32u32fcr(const nm32u* pSrcVec, nm32fcr* pDstVec, int nSize);
477void nmppsConvert_32s32fcr(const nm32s* pSrcVec, nm32fcr* pDstVec, int nSize);
478void nmppsConvert_32f32fcr(const nm32f* pSrcVec, nm32fcr* pDstVec, int nSize);
479void nmppsConvert_32sc32fcr(const nm32sc* pSrcVec, nm32fcr* pDstVec, int nSize);
480void nmppsConvert_32s32f(const nm32s* pSrcVec, nm32f* pDstVec, int nSize);
481void nmppsConvert_32f64f(const nm32f* pSrcVec, nm64f* pDstVec, int nSize);
482void nmppsConvert_64f32f(const nm64f* pSrcVec, nm32f* pDstVec, int nSize);
484
511void nmppsConvert_32f32s_rounding(const nm32f* pSrcVec, nm32s* pDstVec, int scale, int nSize);
512void nmppsConvert_32f32f_ceiling (const nm32f* pSrcVec, nm32f* pDstVec, int scale, int nSize);
513void nmppsConvert_32f32s_ceiling (const nm32f* pSrcVec, nm32s* pDstVec, int scale, int nSize);
514void nmppsConvert_32f32s_floor (const nm32f* pSrcVec, nm32s* pDstVec, int scale, int nSize);
515void nmppsConvert_32f32s_truncate(const nm32f* pSrcVec, nm32s* pDstVec, int scale, int nSize);
517
543void nmppsMerge_32f(const nm32f* pSrcVec1, const nm32f* pSrcVec2, nm32f* pDstVec, int nSize);
545
568void nmppsConvertRisc_8u32u(const nm8u* pSrcVec, nm32u* pDstVec, int nSize);
569void nmppsConvertRisc_32u8u(const nm32u* pSrcVec, nm8u* pDstVec, int nSize);
571
572//*****************************************************************************
573
619
620void nmppsCopy_2s (const nm2s* pSrcVec, nm2s* pDstVec, int nSize);
621void nmppsCopy_4s (const nm4s* pSrcVec, nm4s* pDstVec, int nSize);
622void nmppsCopy_8s (const nm8s* pSrcVec, nm8s* pDstVec, int nSize);
623void nmppsCopy_16s(const nm16s* pSrcVec, nm16s* pDstVec, int nSize);
624void nmppsCopy_32s(const nm32s* pSrcVec, nm32s* pDstVec, int nSize);
625void nmppsCopy_64s(const nm64s* pSrcVec, nm64s* pDstVec, int nSize);
626
627__INLINE__ void nmppsCopy_4u (const nm4u* pSrcVec, nm4u* pDstVec, int nSize) { nmppsCopy_4s (( nm4s*) pSrcVec, (nm4s*) pDstVec, nSize);}
628__INLINE__ void nmppsCopy_8u (const nm8u* pSrcVec, nm8u* pDstVec, int nSize) { nmppsCopy_8s (( nm8s*) pSrcVec, (nm8s*) pDstVec, nSize);}
629__INLINE__ void nmppsCopy_16u(const nm16u* pSrcVec, nm16u* pDstVec, int nSize) { nmppsCopy_16s(( nm16s*) pSrcVec, (nm16s*) pDstVec, nSize);}
630__INLINE__ void nmppsCopy_32u(const nm32u* pSrcVec, nm32u* pDstVec, int nSize) { nmppsCopy_32s(( nm32s*) pSrcVec, (nm32s*) pDstVec, nSize);}
631__INLINE__ void nmppsCopy_64u(const nm64u* pSrcVec, nm64u* pDstVec, int nSize) { nmppsCopy_64s(( nm64s*) pSrcVec, (nm64s*) pDstVec, nSize);}
632__INLINE__ void nmppsCopy_64sc(const nm64sc *pSrcVec, nm64sc *pDstVec, int nSize) { nmppsCopy_64s(( nm64s*) pSrcVec, (nm64s*) pDstVec, 2*nSize);}
634
635
668void nmppsCopy_32f(const float* pSrcVec, float* pDstVec, int size);
670
688void nmppsCopyOddToOdd_32f(const float* pSrcVec, float* pDstVec, int size);
690
708void nmppsCopyEvenToOdd_32f(const float* pSrcVec, float* pDstVec, int size);
710
711
729void nmppsCopyOddToEven_32f(const float* pSrcVec, float* pDstVec, int size);
731
732
750void nmppsCopyEvenToEven_32f(const float* pSrcVec, float* pDstVec, int size);
752
753
776void nmppsCopyRisc_32f(const float* pSrcVec, float* pDstVec, int nSize);
778
779//*****************************************************************************
780
845void nmppsCopyua_8s(const nm8s* pSrcVec, int nSrcOffset, nm8s* pDstVec, int nSize);
847
848//*****************************************************************************
849
890void nmppsSwap_64s(nm64s* pSrcVec1, nm64s* pSrcVec2, int nSize);
892
893
894
895
896#ifdef __cplusplus
897 };
898#endif
899
900#endif // _INIT_H_INCLUDED_
nmppsConvert_1u2u
void nmppsConvert_1u2u(const nm1 *pSrcVec, nm2u *pDstVec, int nSize)
nmppsConvert_1s2s
void nmppsConvert_1s2s(const nm1 *pSrcVec, nm2s *pDstVec, int nSize)
nmppsRandUniform_64s
void nmppsRandUniform_64s(nm64s *pDstVec, int nSize)
uint32b
unsigned int uint32b
Definition: nmtype.h:839
int8b
int int8b
Definition: nmtype.h:618
uint16b
unsigned int uint16b
Definition: nmtype.h:813
int32b
int int32b
Definition: nmtype.h:683
uint8b
unsigned int uint8b
Definition: nmtype.h:787
int16b
int int16b
Definition: nmtype.h:644
int64b
INT64 int64b
Definition: nmtype.h:709
uint64b
nm64u uint64b
Definition: nmtype.h:865
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm32s
int nm32s
Definition: nmtype.h:292
nm4u
void nm4u
Definition: nmtype.h:417
nm16u
unsigned short nm16u
Definition: nmtype.h:481
nm64s
long long nm64s
Definition: nmtype.h:375
nm2s
void nm2s
Definition: nmtype.h:116
nm2u
void nm2u
Definition: nmtype.h:404
nm1
int nm1
Definition: nmtype.h:100
nm16s
short nm16s
Definition: nmtype.h:243
nm32u
unsigned int nm32u
Definition: nmtype.h:509
nm4s
void nm4s
Definition: nmtype.h:129
nm64u
unsigned long long nm64u
Definition: nmtype.h:536
nm8s
char nm8s
Definition: nmtype.h:167
s_nm32fcr
Definition: nmtype.h:1335
s_nm32sc
Definition: nmtype.h:1301
s_nm64sc
Definition: nmtype.h:1364


nmpp: Исходный файл g:/nmpp/include/nmplv/vSelect.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplv
vSelect.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: vSelect.h $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.2 $ $Date: 2005/07/13 14:19:56 $
10//
11// author: S. Mushkaev
12//------------------------------------------------------------------------
13
14#ifndef VSELECT_H
15#define VSELECT_H
16
17#include "malloc32.h"
18#ifdef __cplusplus
19 extern "C" {
20#endif
21
76
91void nmppsMax_8s7b(const nm8s7b* pSrcVec, int nSize, int8b* nMaxValue);
103void nmppsMax_16s15b(const nm16s15b* pSrcVec, int nSize, int16b* nMaxValue);
116void nmppsMax_32s31b(const nm32s31b* pSrcVec, int nSize, int* nMaxValue);
117void nmppsMax_64s63b(const nm64s63b* pSrcVec, int nSize, int64b *nMaxValue);
118
119int nmppsMax_8sm (const nm8s* srcVec, int size, int8b* maxValue, nm16s* tmp);
120int nmppsMax_16sm(const nm16s* srcVec, int size, int16b* maxValue, nm32s* tmp);
121int nmppsMax_32sm(const nm32s* srcVec, int size, int32b* maxValue, nm64s* tmp);
122
123
125
126//*****************************************************************************
127
182
196void nmppsMin_8s7b(const nm8s7b* pSrcVec, int nSize, int8b* nMinValue);
208void nmppsMin_16s15b(const nm16s15b* pSrcVec, int nSize, int16b* nMinValue);
220void nmppsMin_32s31b(const nm32s31b* pSrcVec, int nSize, int* nMinValue);
221void nmppsMin_64s63b(const nm64s63b* pSrcVec, int nSize, int64b* nMinValue);
222
223
224int nmppsMin_8sm (const nm8s* srcVec, int size, int8b* minValue, nm16s* tmp);
225int nmppsMin_16sm(const nm16s* srcVec, int size, int16b* minValue, nm32s* tmp);
226int nmppsMin_32sm(const nm32s* srcVec, int size, int32b* minValue, nm64s* tmp);
227
228
230
231//*****************************************************************************
232
313void nmppsMaxIndx_8s(nm8s7b *pSrcVec, int nSize, int* nIndex, int8b *nMaxValue, void *pLTmpBuf,void *pGTmpBuf, int nSearchDir);
314void nmppsMaxIndx_16s(nm16s15b *pSrcVec, int nSize, int* nIndex, int16b *nMaxValue, void *pLTmpBuf,void *pGTmpBuf, int nSearchDir);
315void nmppsMaxIndx_32s(nm32s31b *pSrcVec, int nSize, int* nIndex, int32b *nMaxValue, void *pLTmpBuf,void *pGTmpBuf, int nSearchDir);
317
318
319//*****************************************************************************
320
401void nmppsMinIndx_8s(nm8s7b *pSrcVec, int nSize, int* nIndex, int8b *nMinValue, void *pLTmpBuf,void *pGTmpBuf, int nSearchDir);
402void nmppsMinIndx_16s(nm16s15b *pSrcVec, int nSize, int* nIndex, int16b *nMinValue, void *pLTmpBuf,void *pGTmpBuf, int nSearchDir);
403void nmppsMinIndx_32s(nm32s31b *pSrcVec, int nSize, int* nIndex, int32b *nMinValue, void *pLTmpBuf,void *pGTmpBuf, int nSearchDir);
405
406
407//*****************************************************************************
408
450int nmppsMinIndxV9_32s(int* pSrcVec,int nStride,int* nPos);
451int nmppsMinIndxV16_32s(int* pSrcVec,int nStride,int* nPos);
452int nmppsMinIndxV25_32s(int* pSrcVec,int nStride,int* nPos);
453int nmppsMinIndxV256_32s(int* pSrcVec,int nStride,int* nPos);
454int nmppsMinIndxV1024_32s(int* pSrcVec,int nStride,int* nPos);
456
457//*****************************************************************************
458
496int nmppsFirstZeroIndx_32s(int* pSrcVec, int nSize);
498//*****************************************************************************
499
537int nmppsFirstNonZeroIndx_32s(int* pSrcVec, int nSize);
539
540//*****************************************************************************
541
579int nmppsLastZeroIndx_32s(int* pSrcVec, int nSize);
581
582//*****************************************************************************
583
623int nmppsLastNonZeroIndx_32s(int* pSrcVec, int nSize);
625
626
627//*****************************************************************************
687
688void nmppsMinEvery_8s(nm8s7b* pSrcVec1, nm8s7b* pSrcVec2, nm8s7b* pDstMinVec, int nSize);
689void nmppsMinEvery_16s(nm16s15b* pSrcVec1, nm16s15b* pSrcVec2, nm16s15b* pDstMinVec, int nSize);
690void nmppsMinEvery_32s(nm32s31b* pSrcVec1, nm32s31b* pSrcVec2, nm32s31b* pDstMinVec, int nSize);
691void nmppsMinEvery_64s(nm64s63b* pSrcVec1, nm64s63b* pSrcVec2, nm64s63b* pDstMinVec, int nSize);
692
694//*****************************************************************************
695// numVecs > 2
696void nmppsMinNV_8s(nm8s7b** pSrcVecs, int numVecs, nm8s7b* pDstMinVec, int nSize);
697void nmppsMinNV_16s(nm16s15b** pSrcVecs, int numVecs, nm16s15b* pDstMinVec, int nSize);
698void nmppsMinNV_32s(nm32s31b** pSrcVecs, int numVecs, nm32s31b* pDstMinVec, int nSize);
699void nmppsMinNV_64s(nm64s63b** pSrcVecs, int numVecs, nm64s63b* pDstMinVec, int nSize);
700
701//*****************************************************************************
702
763void nmppsMaxEvery_8s(nm8s7b* pSrcVec1, nm8s7b* pSrcVec2, nm8s7b* pDstMaxVec, int nSize);
764void nmppsMaxEvery_16s(nm16s15b* pSrcVec1, nm16s15b* pSrcVec2, nm16s15b* pDstMaxVec, int nSize);
765void nmppsMaxEvery_32s(nm32s31b* pSrcVec1, nm32s31b* pSrcVec2, nm32s31b* pDstMaxVec, int nSize);
766void nmppsMaxEvery_64s(nm64s63b* pSrcVec1, nm64s63b* pSrcVec2, nm64s63b* pDstMaxVec, int nSize);
767
769
770//*****************************************************************************
771
848void nmppsMinCmpLtV_16s(nm16s15b* pSrcVec1, nm16s15b* pSrcVec2, nm16s15b* pDstMin, nm16s15b* pDstSignMask, int nSize);
850
851
852//*****************************************************************************
853
911void nmppsCmpLt0_8s (const nm8s* pSrcVec, nm8s* pDstVec, int nSize);
912void nmppsCmpLt0_16s(const nm16s* pSrcVec, nm16s* pDstVec, int nSize);
913void nmppsCmpLt0_32s(const nm32s* pSrcVec, nm32s* pDstVec, int nSize);
914void nmppsCmpLt0_64s(const nm64s* pSrcVec, nm64s* pDstVec, int nSize);
916
932void nmppsCmpLteC_v2nm32f(const v2nm32f* pSrcVec, const v2nm32f* C, nm1* evenFlags, nm1* oddFlags, int step, int nSize);
934
950void nmppsCmpLtC_v2nm32f(const v2nm32f* pSrcVec, const v2nm32f* C, nm1* evenFlags, nm1* oddFlags, int step, int nSize);
952
953//*****************************************************************************
954
1023
1026void nmppsCmpEq0_8u7b(nm8u7b* pSrcVec, nm1* pDstVec, int nSize, int nTrueFlag);
1030void nmppsCmpEq0_16u15b(nm16u15b* pSrcVec, nm1* pDstVec, int nSize, int nTrueFlag);
1034void nmppsCmpEq0_32u31b(nm32u31b* pSrcVec, nm1* pDstVec, int nSize, int nTrueFlag);
1035
1036//void nmppsCmpNe0_8s (const nm8s* pSrcVec, nm8s* pDstVec, int nSize);
1037//void nmppsCmpNe0_16s(const nm16s* pSrcVec, nm16s* pDstVec, int nSize);
1038//void nmppsCmpNe0_32s(const nm32s* pSrcVec, nm32s* pDstVec, int nSize);
1039//void nmppsCmpNe0_64s(const nm64s* pSrcVec, nm64s* pDstVec, int nSize);
1040
1042
1043//*****************************************************************************
1044
1102void nmppsCmpGt0_8s (const nm8s* pSrcVec, nm8s* pDstVec, int nSize);
1103void nmppsCmpGt0_16s(const nm16s* pSrcVec, nm16s* pDstVec, int nSize);
1104void nmppsCmpGt0_32s(const nm32s* pSrcVec, nm32s* pDstVec, int nSize);
1105void nmppsCmpGt0_64s(const nm64s* pSrcVec, nm64s* pDstVec, int nSize);
1107
1172void nmppsMinMaxEvery_8s(nm8s* pSrcVec1, nm8s* pSrcVec2, nm8s* pDstMin, nm8s* pDstMax, int nSize);
1173void nmppsMinMaxEvery_16s(nm16s* pSrcVec1, nm16s* pSrcVec2, nm16s* pDstMin, nm16s* pDstMax, int nSize);
1174void nmppsMinMaxEvery_32s(nm32s* pSrcVec1, nm32s* pSrcVec2, nm32s* pDstMin, nm32s* pDstMax, int nSize);
1176
1177
1178//*****************************************************************************
1179
1240void nmppsClipPowC_8s(nm8s* pSrcVec, int nClipFactor, nm8s* pDstVec, int nSize);
1241void nmppsClipPowC_16s(nm16s* pSrcVec, int nClipFactor, nm16s* pDstVec, int nSize);
1242void nmppsClipPowC_32s(nm32s* pSrcVec, int nClipFactor, nm32s* pDstVec, int nSize);
1243void nmppsClipPowC_64s(nm64s* pSrcVec, int nClipFactor, nm64s* pDstVec, int nSize);
1245
1246//*****************************************************************************
1247
1323void nmppsClipCC_32s(nm32s30b* pSrcVec, int30b nNegThresh, int30b nPosThresh, nm32s30b* pDstVec, int nSize);
1325
1394void nmppsThreshold_Lt_Gt_32f(nm32f* pSrcVec, nm32f* pDstVec, float min, float max, int nSize);
1396
1397//*****************************************************************************
1398
1494void nmppsClipRShiftConvertAddC_16s8s(nm16s* pSrcVec, int nClipFactor,int nShift, int8b nAddValue,nm8s* pDstVec, int nSize);
1495void nmppsClipRShiftConvertAddC_32s8s(nm32s* pSrcVec, int nClipFactor,int nShift, int8b nAddValue,nm8s* pDstVec, int nSize);
1497
1498//extern "C" nm64u VEC_TBL_Diagonal_01h_G[8];
1499//extern "C" nm64u VEC_TBL_Diagonal_01h_L[8];
1550
1551//void nmppsClipConvertAddC_16s8s(nm16s* pSrcVec, int nClipFactor, int8b nAddValue,nm8s* pDstVec, int nSize, nm64u* weights); //=VEC_TBL_Diagonal_01h_G
1552typedef nm64u NmppsWeightState;
1553void nmppsClipConvertAddCInitAlloc_16s8s(NmppsWeightState** ppState);
1554void nmppsClipConvertAddC_16s8s(nm16s* pSrcVec, int nClipFactor, int8b nAddValue,nm8s* pDstVec, int nSize, NmppsWeightState* pState); //=VEC_TBL_Diagonal_01h_G
1555void nmppsClipConvertAddCFree(NmppsWeightState* pState);
1557
1558
1559//*****************************************************************************
1650
1651//void nmppsClipRShiftConvert_AddC_Ext_(v8nm16s* pSrcVec, v8nm32s* pnClipFactor, v8nm32s* pnShift, v8nm8s* pnAdd, v8nm8s* pDstVec, int nSize);
1652void nmppsClipRShiftConvert_AddC_Ext_(v8nm16s* pSrcVec, v8nm32s* pnClipFactor, v8nm32s* pnShift, v8nm32s* pnAdd, v8nm8s* pDstVec, int nSize);
1653
1655//void nmppsClipRShiftConvert_AddC_Ext_(v16nm16s* pSrcVec, v16nm32s* pnClipFactor, v16nm32s* pnShift,v16nm4s* pnAdd,
1656// v16nm4s* pDstVec, int nSize);
1657
1658
1659//******************************************************************************************
1660
1716void nmppsCmpEqC_16u15b(nm16u15b* pSrcVec, uint15b nCmpVal, nm16s* pDstVec, int nSize, int16b nTrueFlag);
1717void nmppsCmpEqC_8u7b (nm8u7b* pSrcVec, uint7b nCmpVal, nm8s* pDstVec, int nSize, int8b nTrueFlag);
1718void nmppsCmpEqC_4u3b (nm4u3b* pSrcVec, uint3b nCmpVal, nm4s* pDstVec, int nSize, int4b nTrueFlag);
1720
1721
1722//******************************************************************************************
1723
1768
1769 void nmppsCmpNe0_8s (const nm8s* pSrcVec, nm8s* pDstVec, int nSize);
1770 void nmppsCmpNe0_16s(const nm16s* pSrcVec, nm16s* pDstVec, int nSize);
1771 void nmppsCmpNe0_32s(const nm32s* pSrcVec, nm32s* pDstVec, int nSize);
1772 void nmppsCmpNe0_64s(const nm64s* pSrcVec, nm64s* pDstVec, int nSize);
1773
1775
1820
1821 void nmppsCmpEq0_32s(const nm32s* pSrcVec, nm32s* pDstVec, int nSize);
1822
1824
1825
1873 void nmppsCmpNeC_8s (const nm8s* pSrcVec, int8b nCmpVal, nm8s* pDstVec, int nSize);
1874 void nmppsCmpNeC_16s (const nm16s* pSrcVec, int16b nCmpVal, nm16s* pDstVec, int nSize);
1875 void nmppsCmpNeC_32s (const nm32s* pSrcVec, int32b nCmpVal, nm32s* pDstVec, int nSize);
1876 void nmppsCmpNeC_64s (const nm64s* pSrcVec, int64b nCmpVal, nm64s* pDstVec, int nSize);
1878
1939 void nmppsCmpNeC_8u7b (nm8u7b* pSrcVec, uint7b nCmpVal, nm8s* pDstVec, int nSize, int8b nTrueFlag);
1940 void nmppsCmpNeC_16u15b(nm16u15b* pSrcVec, uint15b nCmpVal, nm16s* pDstVec, int nSize, int16b nTrueFlag);
1942
1943 int nmppsCmpNeC_8s8um (const nm8s* pSrcVec, int8b nCmpVal, nm8u* pDstVec, int nSize, struct NmppsTmpSpec *spec);
1944 int nmppsCmpNeC_16s8um (const nm16s* pSrcVec, int16b nCmpVal, nm8u* pDstVec, int nSize, struct NmppsTmpSpec *spec);
1945 int nmppsCmpNeC_32s8um (const nm32s* pSrcVec, int32b nCmpVal, nm8u* pDstVec, int nSize, struct NmppsTmpSpec *spec);
1946 int nmppsCmpNeC_64s8um (const nm64s* pSrcVec, int64b nCmpVal, nm8u* pDstVec, int nSize, struct NmppsTmpSpec *spec);
1947
1948
1949
1950
1951
1952
1953 //spec.mode=ONE_TIME_ALLOC|ROUTE_ALLOC|OPTIMIZE_ROUTE;
1954
1955 //int nmppsCmpLtC_8s8um (const nm8s* pSrcVec, int8b nCmpVal, nm8s* pDstVec, int nSize, struct NmppsTmpSpec *spec);
1956 //int nmppsCmpLtC_16s8um (const nm16s* pSrcVec, int16b nCmpVal, nm16s* pDstVec, int nSize, struct NmppsTmpSpec *spec);
1957 //int nmppsCmpLtC_32s8um (const nm32s* pSrcVec, int32b nCmpVal, nm32s* pDstVec, int nSize, struct NmppsTmpSpec *spec);
1958 //int nmppsCmpLtC_64s (const nm64s* pSrcVec, int64b nCmpVal, nm64s* pDstVec, int nSize, Tmp2BuffSpec *spec);
1959 //
1960 int nmppsCmpLtC_8s8um (const nm8s* pSrcVec, int8b nCmpVal, nm8u* pDstVec, int nSize, struct NmppsTmpSpec *spec);
1961 int nmppsCmpLtC_16s8um (const nm16s* pSrcVec, int16b nCmpVal, nm8u* pDstVec, int nSize, struct NmppsTmpSpec *spec);
1962 int nmppsCmpLtC_32s8um (const nm32s* pSrcVec, int32b nCmpVal, nm8u* pDstVec, int nSize, struct NmppsTmpSpec *spec);
1963 int nmppsCmpLtC_64s8um (const nm64s* pSrcVec, int64b nCmpVal, nm8u* pDstVec, int nSize, struct NmppsTmpSpec *spec);
1964
1965/*
1966 void nmppsCmpGtC_8s (nm8s* pSrcVec, int8b nCmpVal, nm8s* pDstVec, int nSize, Tmp2BuffSpec *spec);
1967 void nmppsCmpGtC_16s (nm16s* pSrcVec, int16b nCmpVal, nm16s* pDstVec, int nSize, Tmp2BuffSpec *spec);
1968 void nmppsCmpGtC_32s (nm32s* pSrcVec, int32b nCmpVal, nm32s* pDstVec, int nSize, Tmp2BuffSpec *spec);
1969 void nmppsCmpGtC_64s (nm64s* pSrcVec, int64b nCmpVal, nm64s* pDstVec, int nSize, Tmp2BuffSpec *spec);
1970*/
2008 void nmppsCmpLtC_8s7b (const nm8s7b * pSrcVec, int8b nCmpVal,nm8s* pDstVec, int nSize);
2009 void nmppsCmpLtC_16s15b (const nm16s15b* pSrcVec, int16b nCmpVal, nm16s* pDstVec, int nSize);
2010 void nmppsCmpLtC_32s31b (const nm32s31b* pSrcVec, int32b nCmpVal, nm32s* pDstVec, int nSize);
2011 void nmppsCmpLtC_64s63b (const nm64s63b* pSrcVec, int64b nCmpVal, nm64s* pDstVec, int nSize);
2013
2051 void nmppsCmpGtC_8s7b (const nm8s7b * pSrcVec, int8b nCmpVal, nm8s * pDstVec, int nSize);
2052 void nmppsCmpGtC_16s15b (const nm16s15b* pSrcVec, int16b nCmpVal, nm16s* pDstVec, int nSize);
2053 void nmppsCmpGtC_32s31b (const nm32s31b* pSrcVec, int32b nCmpVal, nm32s* pDstVec, int nSize);
2054 void nmppsCmpGtC_64s63b (const nm64s63b* pSrcVec, int64b nCmpVal, nm64s* pDstVec, int nSize);
2056
2071void nmppsCmpGteC_v2nm32f(const v2nm32f* pSrcVec, const v2nm32f* C, nm1* evenFlags, nm1* oddFlags, int step, int nSize);
2073
2088void nmppsCmpGtC_v2nm32f(const v2nm32f* pSrcVec, const v2nm32f* C, nm1* evenFlags, nm1* oddFlags, int step, int nSize);
2090
2091//******************************************************************************************
2092
2146void nmppsCmpEqV_16u15b(nm16u15b* pSrcVec1, nm16u15b* pSrcVec2, nm16s* pDstVec, int nSize, int16b nTrueFlag);
2147void nmppsCmpEqV_8u7b(nm8u7b* pSrcVec1, nm8u7b* pSrcVec2, nm8s* pDstVec, int nSize, int8b nTrueFlag);
2149
2193void nmppsCmpNe_8s (const nm8s* pSrcVec1, const nm8s* pSrcVec2, nm8s* pDstVec, int nSize);
2194void nmppsCmpNe_16s (const nm16s* pSrcVec1, const nm16s* pSrcVec2, nm16s* pDstVec, int nSize);
2195void nmppsCmpNe_32s (const nm32s* pSrcVec1, const nm32s* pSrcVec2, nm32s* pDstVec, int nSize);
2196void nmppsCmpNe_64s (const nm64s* pSrcVec1, const nm64s* pSrcVec2, nm64s* pDstVec, int nSize);
2198
2199int nmppsCmpNe_8s8um (const nm8s* pSrcVec1, const nm8s* pSrcVec2, nm8u* pDstVec, int nSize, struct NmppsTmpSpec* spec);
2200int nmppsCmpNe_16s8um(const nm16s* pSrcVec1, const nm16s* pSrcVec2, nm8u* pDstVec, int nSize, struct NmppsTmpSpec* spec);
2201int nmppsCmpNe_32s8um(const nm32s* pSrcVec1, const nm32s* pSrcVec2, nm8u* pDstVec, int nSize, struct NmppsTmpSpec* spec);
2202int nmppsCmpNe_64s8um(const nm64s* pSrcVec1, const nm64s* pSrcVec2, nm8u* pDstVec, int nSize, struct NmppsTmpSpec* spec);
2203
2204
2241void nmppsCmpLt_8s7b (const nm8s* pSrcVec1,const nm8s* pSrcVec2, nm8s* pDstVec, int nSize);
2242void nmppsCmpLt_16s15b(const nm16s* pSrcVec1,const nm16s* pSrcVec2, nm16s* pDstVec, int nSize);
2243void nmppsCmpLt_32s31b(const nm32s* pSrcVec1,const nm32s* pSrcVec2, nm32s* pDstVec, int nSize);
2244void nmppsCmpLt_64s63b(const nm64s* pSrcVec1,const nm64s* pSrcVec2, nm64s* pDstVec, int nSize);
2246int nmppsCmpLt_8s8um (const nm8s* pSrcVec1, const nm8s* pSrcVec2, nm8u* pDstVec, int nSize, struct NmppsTmpSpec* spec);
2247int nmppsCmpLt_16s8um(const nm16s* pSrcVec1, const nm16s* pSrcVec2, nm8u* pDstVec, int nSize, struct NmppsTmpSpec* spec);
2248int nmppsCmpLt_32s8um(const nm32s* pSrcVec1, const nm32s* pSrcVec2, nm8u* pDstVec, int nSize, struct NmppsTmpSpec* spec);
2249int nmppsCmpLt_64s8um(const nm64s* pSrcVec1, const nm64s* pSrcVec2, nm8u* pDstVec, int nSize, struct NmppsTmpSpec* spec);
2250
2251//******************************************************************************************
2252
2306void nmppsCmpNeV_16u(nm16u15b* pSrcVec1, nm16u15b* pSrcVec2, nm16s* pDstVec, int nSize, int16b nTrueFlag);
2307void nmppsCmpNeV_8u(nm8u7b* pSrcVec1, nm8u7b* pSrcVec2, nm8s* pDstVec, int nSize, int8b nTrueFlag);
2309
2310
2311void nmppsCmpNeV_8s8u(nm8s* src1, nm8s* src2, nm8u* dst, int nSize, int8b nTrueFlag);
2312
2313//******************************************************************************************
2314
2315
2369void Vec_ClipRShiftConvert_AddC( nm32s* pSrcVec, nm8u* pDstVec, int nSize);
2371
2372#ifdef __cplusplus
2373 };
2374#endif
2375
2376#endif
nmppsCmpEq0_16u15b
void nmppsCmpEq0_16u15b(nm16u15b *pSrcVec, nm1 *pDstVec, int nSize, int nTrueFlag)
nmppsCmpEq0_32u31b
void nmppsCmpEq0_32u31b(nm32u31b *pSrcVec, nm1 *pDstVec, int nSize, int nTrueFlag)
nmppsCmpEq0_8u7b
void nmppsCmpEq0_8u7b(nm8u7b *pSrcVec, nm1 *pDstVec, int nSize, int nTrueFlag)
nmppsMax_8s7b
void nmppsMax_8s7b(const nm8s7b *pSrcVec, int nSize, int8b *nMaxValue)
nmppsMax_16s15b
void nmppsMax_16s15b(const nm16s15b *pSrcVec, int nSize, int16b *nMaxValue)
nmppsMax_32s31b
void nmppsMax_32s31b(const nm32s31b *pSrcVec, int nSize, int *nMaxValue)
nmppsMin_8s7b
void nmppsMin_8s7b(const nm8s7b *pSrcVec, int nSize, int8b *nMinValue)
nmppsMin_16s15b
void nmppsMin_16s15b(const nm16s15b *pSrcVec, int nSize, int16b *nMinValue)
nmppsMin_32s31b
void nmppsMin_32s31b(const nm32s31b *pSrcVec, int nSize, int *nMinValue)
uint3b
unsigned int uint3b
Definition: nmtype.h:748
uint15b
unsigned int uint15b
Definition: nmtype.h:800
int4b
int int4b
Definition: nmtype.h:592
int30b
int int30b
Definition: nmtype.h:657
int8b
int int8b
Definition: nmtype.h:618
int32b
int int32b
Definition: nmtype.h:683
int16b
int int16b
Definition: nmtype.h:644
int64b
INT64 int64b
Definition: nmtype.h:709
uint7b
unsigned int uint7b
Definition: nmtype.h:774
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm32s
int nm32s
Definition: nmtype.h:292
nm32s31b
int nm32s31b
Definition: nmtype.h:334
nm8u7b
nm8u nm8u7b
Definition: nmtype.h:463
nm64s
long long nm64s
Definition: nmtype.h:375
nm4u3b
nm4u nm4u3b
Definition: nmtype.h:430
nm64s63b
nm64s nm64s63b
Definition: nmtype.h:390
nm1
int nm1
Definition: nmtype.h:100
nm8s7b
nm8s nm8s7b
Definition: nmtype.h:197
nm32s30b
int nm32s30b
Definition: nmtype.h:354
nm32u31b
unsigned int nm32u31b
Definition: nmtype.h:523
nm16s
short nm16s
Definition: nmtype.h:243
nm4s
void nm4s
Definition: nmtype.h:129
nm64u
unsigned long long nm64u
Definition: nmtype.h:536
nm16s15b
nm16s nm16s15b
Definition: nmtype.h:265
nm8s
char nm8s
Definition: nmtype.h:167
nm16u15b
nm16u nm16u15b
Definition: nmtype.h:495
NmppsTmpSpec
Definition: malloc32.h:73
s_v2nm32f
Definition: nmtype.h:1311
s_v8nm16s
Definition: nmtype.h:1049
s_v8nm32s
Definition: nmtype.h:1094
s_v8nm8s
Definition: nmtype.h:1014


nmpp: Исходный файл g:/nmpp/include/nmplv/vStat.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplv
vStat.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: vStat.h $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2004/11/22 13:50:02 $
10//
19//------------------------------------------------------------------------
20
21
22#ifndef _VSTAT_H_INCLUDED_
23#define _VSTAT_H_INCLUDED_
24
25#ifdef __cplusplus
26 extern "C" {
27#endif
28
69 unsigned nmppsCrc_32u (const unsigned int* pSrcVec, int nSize);
70 unsigned nmppsCrcAcc_32u (const unsigned int* pSrcVec, int nSize, unsigned int* crcAccumulator);
71
72
73
74__INLINE__ unsigned nmppsCrc_64s(nm64s* pSrcVec, int nSize) { return nmppsCrc_32u((unsigned*)pSrcVec, nSize<<1); }
75__INLINE__ unsigned nmppsCrc_32s(nm32s* pSrcVec, int nSize) { return nmppsCrc_32u((unsigned*)pSrcVec, nSize ); }
76__INLINE__ unsigned nmppsCrc_16s(nm16s* pSrcVec, int nSize) { return nmppsCrc_32u((unsigned*)pSrcVec, nSize>>1); }
77__INLINE__ unsigned nmppsCrc_8s (nm8s* pSrcVec, int nSize) { return nmppsCrc_32u((unsigned*)pSrcVec, nSize>>2); }
78__INLINE__ unsigned nmppsCrc_4s (nm4s* pSrcVec, int nSize) { return nmppsCrc_32u((unsigned*)pSrcVec, nSize>>3); }
79__INLINE__ unsigned nmppsCrc_64u(nm64u* pSrcVec, int nSize) { return nmppsCrc_32u((unsigned*)pSrcVec, nSize<<1); }
80
81//__INLINE__ unsigned nmppsCrc_32f(nm32f* pSrcVec, int numBitsToClear, int nSize) { return nmppsCrcMask_32u((unsigned*)pSrcVec,(-1<<numBitsToClear),nSize>>1); }
82
83__INLINE__ unsigned nmppsCrc_16u(nm16u* pSrcVec, int nSize) { return nmppsCrc_32u((unsigned*)pSrcVec, nSize>>1); }
84__INLINE__ unsigned nmppsCrc_8u (nm8u* pSrcVec, int nSize) { return nmppsCrc_32u((unsigned*)pSrcVec, nSize>>2); }
85
86
87__INLINE__ unsigned nmppsCrcAcc_64s(nm64s* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize<<1, crcAccumulator); }
88__INLINE__ unsigned nmppsCrcAcc_32s(nm32s* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize, crcAccumulator); }
89__INLINE__ unsigned nmppsCrcAcc_16s(nm16s* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize>>1, crcAccumulator); }
90__INLINE__ unsigned nmppsCrcAcc_8s (nm8s* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize>>2, crcAccumulator); }
91__INLINE__ unsigned nmppsCrcAcc_64u(nm64u* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize<<1, crcAccumulator); }
92
93
94__INLINE__ unsigned nmppsCrcAcc_16u(nm16u* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize>>1, crcAccumulator); }
95__INLINE__ unsigned nmppsCrcAcc_8u (nm8u* pSrcVec, int nSize, unsigned int* crcAccumulator) { return nmppsCrcAcc_32u((unsigned*)pSrcVec, nSize>>2, crcAccumulator); }
96
97unsigned nmppsCrcAcc_32f(const nm32f* pSrcVec, int numBitsToClear, int nSize, unsigned int* crcAccumulator) ;
98unsigned nmppsCrcAcc_64f(const nm64f* pSrcVec, int numBitsToClear, int nSize, unsigned int* crcAccumulator) ;
99
101
102
103
104//*****************************************************************************
137
138int nmppsSadV16_16s(nm16s* pSrc1,nm16s* pSrc2);
139int nmppsSadV16_8s(nm8s* pSrc1,nm8s* pSrc2);
141
142
143#ifdef __cplusplus
144 };
145#endif
146
147#endif // _VSTAT_H_INCLUDED_
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm32s
int nm32s
Definition: nmtype.h:292
nm16u
unsigned short nm16u
Definition: nmtype.h:481
nm64s
long long nm64s
Definition: nmtype.h:375
nm16s
short nm16s
Definition: nmtype.h:243
nm4s
void nm4s
Definition: nmtype.h:129
nm64u
unsigned long long nm64u
Definition: nmtype.h:536
nm8s
char nm8s
Definition: nmtype.h:167


nmpp: Исходный файл g:/nmpp/include/nmplv/vSupport.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplv
vSupport.h
1 //------------------------------------------------------------------------
2//
3// $Workfile:: vSupport. $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.2 $ $Date: 2004/12/21 14:36:01 $
10//
11//------------------------------------------------------------------------
12
13
14//------------------------------------------------------------------------
15#ifndef __VSUPPORT_H
16#define __VSUPPORT_H
17//#include <stdlib.h>
18#include "nmtype.h"
19#ifdef __cplusplus
20 extern "C" {
21#endif
22
23
24
25//*****************************************************************************
26
73/*
74__INLINE__ nm1* nmppsAddr_1*(nm1* pVec, int nIndex){ return (nm1*)((int*)pVec+(nIndex>>5));}
75__INLINE__ nm2s* nmppsAddr_2s(nm2s* pVec, int nIndex){ return (nm2s*)((int*)pVec+(nIndex>>4));}
76__INLINE__ nm4s* nmppsAddr_4s(nm4s* pVec, int nIndex){ return (nm4s*)((int*)pVec+(nIndex>>3));}
77
78nm8s* nmppsAddr_(const nm8s* pVec, int nIndex);
79nm16s* nmppsAddr_16s(nm16s* pVec, int nIndex);
80nm32s* nmppsAddr_32s(nm32s* pVec, int nIndex);
81
82__INLINE__ nm64s* nmppsAddr_64s(nm64s* pVec, int nIndex) {return pVec+nIndex;}
83#ifdef __NM__
84__INLINE__ nm8u* nmppsAddr_(const nm8u* pVec, int nIndex) {return (nm8u*)nmppsAddr_8s((nm8s*) pVec, nIndex);}
85__INLINE__ nm16u* nmppsAddr_16u(nm16u* pVec, int nIndex) {return (nm16u*)nmppsAddr_16s((nm16s*) pVec, nIndex);}
86#else
87__INLINE__ nm8u* nmppsAddr_(const nm8u* pVec, int nIndex) {return (nm8u*)pVec+nIndex;}
88__INLINE__ nm16u* nmppsAddr_16u(nm16u* pVec, int nIndex) {return pVec+nIndex;}
89#endif
90__INLINE__ nm32u* nmppsAddr_32u(nm32u* pVec, int nIndex) {return pVec+nIndex;}
91__INLINE__ nm64u* nmppsAddr_64u(nm64u* pVec, int nIndex) {return pVec+nIndex;}
92*/
93/*
94__INLINE__ nm64u* nmppsAddr_1 (nm1* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>6);}
95__INLINE__ nm64u* nmppsAddr_2s(nm2s* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>5);}
96__INLINE__ nm64u* nmppsAddr_4s(nm4s* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>4);}
97__INLINE__ nm64u* nmppsAddr_8s(nm8s* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>3);}
98__INLINE__ nm64u* nmppsAddr_16s(nm16s* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>2);}
99__INLINE__ nm64u* nmppsAddr_32s(nm32s* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>1);}
100__INLINE__ nm64u* nmppsAddr_64s(nm64s* pVec, int nIndex) {return (nm64u*)pVec+nIndex;}
101
102__INLINE__ nm64u* nmppsAddr_8u(nm8u* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>3);}
103__INLINE__ nm64u* nmppsAddr_16u(nm16u* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>2);}
104__INLINE__ nm64u* nmppsAddr_32u(nm32u* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>1);}
105__INLINE__ nm64u* nmppsAddr_64u(nm64u* pVec, int nIndex) {return (nm64u*)pVec+nIndex;}
106*/
107
108 __INLINE__ nm1 * nmppsAddr_1 (const nm1* pVec, int nIndex) {return (nm1* )((nm64u*)pVec+(nIndex>>6));}
109 inline nm2s * nmppsAddr_2s (const nm2s* pVec, int nIndex) {return (nm2s* )((nm64u*)pVec+(nIndex>>5));}
110 inline nm4s * nmppsAddr_4s (const nm4s* pVec, int nIndex) {return (nm4s* )((nm64u*)pVec+(nIndex>>4));}
111 __INLINE__ nm8s * nmppsAddr_8s (const nm8s* pVec, int nIndex) {return (nm8s* )((nm64u*)pVec+(nIndex>>3));}
112 __INLINE__ nm16s* nmppsAddr_16s(const nm16s* pVec, int nIndex) {return (nm16s*)((nm64u*)pVec+(nIndex>>2));}
113 __INLINE__ nm32s* nmppsAddr_32s(const nm32s* pVec, int nIndex) {return (nm32s*)((nm64u*)pVec+(nIndex>>1));}
114 __INLINE__ nm32f* nmppsAddr_32f(const nm32f* pVec, int nIndex) {return (nm32f*)((nm64u*)pVec+(nIndex>>1));}
115 __INLINE__ nm64s* nmppsAddr_64s(const nm64s* pVec, int nIndex) {return (nm64s*)((nm64u*)pVec+nIndex) ;}
116 __INLINE__ nm64f* nmppsAddr_64f(const nm64f* pVec, int nIndex) {return (nm64f*)((nm64u*)pVec+nIndex) ;}
117
118
119 inline nm2u * nmppsAddr_2u (const nm2u* pVec, int nIndex) {return (nm2u* )((nm64u*)pVec+(nIndex>>5));}
120 inline nm4u * nmppsAddr_4u (const nm4u* pVec, int nIndex) {return (nm4u* )((nm64u*)pVec+(nIndex>>4));}
121 __INLINE__ nm8u * nmppsAddr_8u (const nm8u* pVec, int nIndex) {return (nm8u* )((nm64u*)pVec+(nIndex>>3));}
122 __INLINE__ nm16u* nmppsAddr_16u(const nm16u* pVec, int nIndex) {return (nm16u*)((nm64u*)pVec+(nIndex>>2));}
123 __INLINE__ nm32u* nmppsAddr_32u(const nm32u* pVec, int nIndex) {return (nm32u*)((nm64u*)pVec+(nIndex>>1));}
124 __INLINE__ nm64u* nmppsAddr_64u(const nm64u* pVec, int nIndex) {return (nm64u*)((nm64u*)pVec+nIndex );}
125
126
128
129//*****************************************************************************
130
168
169void nmppsPut_1 (nm1* pVec, int nIndex, int1b nVal);
170void nmppsPut_2s(nm2s* pVec, int nIndex, int2b nVal);
171void nmppsPut_4s(nm4s* pVec, int nIndex, int4b nVal);
172void nmppsPut_8s(nm8s* pVec, int nIndex, int8b nVal);
173void nmppsPut_16s(nm16s* pVec, int nIndex, int16b nVal);
174__INLINE__ void nmppsPut_32s(nm32s* pVec, int nIndex, int32b nVal) {pVec[nIndex]=nVal;}
175__INLINE__ void nmppsPut_64s(nm64s* pVec, int nIndex, int64b nVal) {pVec[nIndex]=nVal;}
176
177__INLINE__ void nmppsPut_2u(nm2u* pVec, int nIndex, uint2b nVal) {nmppsPut_2s((nm2s*)pVec,nIndex,(int2b)nVal);}
178__INLINE__ void nmppsPut_4u(nm4u* pVec, int nIndex, uint4b nVal) {nmppsPut_4s((nm4s*)pVec,nIndex,(int4b)nVal);}
179__INLINE__ void nmppsPut_8u(nm8u* pVec, int nIndex, uint8b nVal) {nmppsPut_8s((nm8s*)pVec,nIndex,(int8b)nVal);}
180__INLINE__ void nmppsPut_16u(nm16u* pVec, int nIndex, uint16b nVal) {nmppsPut_16s((nm16s*)pVec,nIndex,(int16b)nVal);}
181__INLINE__ void nmppsPut_32u(nm32u* pVec, int nIndex, uint32b nVal) {pVec[nIndex]=nVal;}
182__INLINE__ void nmppsPut_64u(nm64u* pVec, int nIndex, uint64b nVal) {pVec[nIndex]=nVal;}
183
184
186
187//*****************************************************************************
188
221
222void nmppsGetVal_1 (const nm1* pVec, int nIndex, int1b *nVal);
223void nmppsGetVal_2s (const nm2s* pVec, int nIndex, int2b *nVal);
224void nmppsGetVal_4s (const nm4s* pVec, int nIndex, int4b *nVal);
225void nmppsGetVal_8s (const nm8s* pVec, int nIndex, int8b *nVal);
226void nmppsGetVal_16s(const nm16s* pVec, int nIndex, int16b *nVal);
227__INLINE__ void nmppsGetVal_32s(const nm32s* pVec, int nIndex, int32b* nVal) { *nVal=pVec[nIndex];}
228__INLINE__ void nmppsGetVal_64s(const nm64s* pVec, int nIndex, int64b* nVal) { *nVal=pVec[nIndex];}
229
230void nmppsGetVal_2u (const nm2u* pVec, int nIndex, uint2b *nVal);
231void nmppsGetVal_4u (const nm4u* pVec, int nIndex, uint4b *nVal);
232void nmppsGetVal_8u (const nm8u* pVec, int nIndex, uint8b *nVal);
233void nmppsGetVal_16u(const nm16u* pVec, int nIndex, uint16b *nVal);
234__INLINE__ void nmppsGetVal_32u(const nm32u* pVec, int nIndex, uint32b* nVal) { *nVal=pVec[nIndex];}
235__INLINE__ void nmppsGetVal_64u(const nm64u* pVec, int nIndex, uint64b* nVal) { *nVal=pVec[nIndex];}
236
238
239//*****************************************************************************
240
271 int2b nmppsGet_2s (const nm2s* pVec, int nIndex);
272 int4b nmppsGet_4s (const nm4s* pVec, int nIndex);
273 int8b nmppsGet_8s (const nm8s* pVec, int nIndex);
274 int16b nmppsGet_16s(const nm16s* pVec, int nIndex);
275__INLINE__ int32b nmppsGet_32s(const nm32s* pVec, int nIndex) {return pVec[nIndex];}
276
277 uint1b nmppsGet_1 (const nm1* pVec, int nIndex);
278 uint2b nmppsGet_2u (const nm2u* pVec, int nIndex);
279 uint4b nmppsGet_4u (const nm4u* pVec, int nIndex);
280 uint8b nmppsGet_8u (const nm8u* pVec, int nIndex);
281 uint16b nmppsGet_16u(const nm16u* pVec, int nIndex);
282__INLINE__ uint32b nmppsGet_32u(const nm32u* pVec, int nIndex) {return pVec[nIndex];}
284
285/*
286 __INLINE__ unsigned nmppsSize32_8s(nm8s* ,unsigned size) {return size/4;}
287 __INLINE__ unsigned nmppsSize32_16s(nm16s* ,unsigned size) {return size/2;}
288 __INLINE__ unsigned nmppsSize32_32s(nm32s* ,unsigned size) {return size; }
289 __INLINE__ unsigned nmppsSize32_64s(nm64s* ,unsigned size) {return size*2;}
290
291 __INLINE__ unsigned nmppsSize32_8u(nm8u* ,unsigned size) {return size/4;}
292 __INLINE__ unsigned nmppsSize32_16u(nm16u* ,unsigned size) {return size/2;}
293 __INLINE__ unsigned nmppsSize32_32u(nm32u* ,unsigned size) {return size; }
294 __INLINE__ unsigned nmppsSize32_64u(nm64u* ,unsigned size) {return size*2;}
295*/
296
297#ifdef __cplusplus
298 };
299#endif
300
301#endif
uint32b
unsigned int uint32b
Definition: nmtype.h:839
uint2b
unsigned int uint2b
Definition: nmtype.h:735
int4b
int int4b
Definition: nmtype.h:592
uint4b
unsigned int uint4b
Definition: nmtype.h:761
int2b
int int2b
Definition: nmtype.h:566
int8b
int int8b
Definition: nmtype.h:618
uint16b
unsigned int uint16b
Definition: nmtype.h:813
uint1b
unsigned int uint1b
Definition: nmtype.h:722
int1b
int int1b
Definition: nmtype.h:553
int32b
int int32b
Definition: nmtype.h:683
uint8b
unsigned int uint8b
Definition: nmtype.h:787
int16b
int int16b
Definition: nmtype.h:644
int64b
INT64 int64b
Definition: nmtype.h:709
uint64b
nm64u uint64b
Definition: nmtype.h:865
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm32s
int nm32s
Definition: nmtype.h:292
nm4u
void nm4u
Definition: nmtype.h:417
nm16u
unsigned short nm16u
Definition: nmtype.h:481
nm64s
long long nm64s
Definition: nmtype.h:375
nm2s
void nm2s
Definition: nmtype.h:116
nm2u
void nm2u
Definition: nmtype.h:404
nm1
int nm1
Definition: nmtype.h:100
nm16s
short nm16s
Definition: nmtype.h:243
nm32u
unsigned int nm32u
Definition: nmtype.h:509
nm4s
void nm4s
Definition: nmtype.h:129
nm64u
unsigned long long nm64u
Definition: nmtype.h:536
nm8s
char nm8s
Definition: nmtype.h:167
nmtype.h


nmpp: Исходный файл g:/nmpp/include/nmplv/vSupport_.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplv
vSupport_.h
1 //------------------------------------------------------------------------
2//
3// $Workfile:: vSupport. $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.2 $ $Date: 2004/12/21 14:36:01 $
10//
11//------------------------------------------------------------------------
12
13
14//------------------------------------------------------------------------
15#ifndef __VSUPPORT_H
16#define __VSUPPORT_H
17//#include <stdlib.h>
18#include "nmtype.h"
19#ifdef __cplusplus
20 extern "C" {
21#endif
22
23
24
25//*****************************************************************************
26
73/*
74__INLINE__ nm1* nmppsAddr_1*(nm1* pVec, int nIndex){ return (nm1*)((int*)pVec+(nIndex>>5));}
75__INLINE__ nm2s* nmppsAddr_2s(nm2s* pVec, int nIndex){ return (nm2s*)((int*)pVec+(nIndex>>4));}
76__INLINE__ nm4s* nmppsAddr_4s(nm4s* pVec, int nIndex){ return (nm4s*)((int*)pVec+(nIndex>>3));}
77
78nm8s* nmppsAddr_(const nm8s* pVec, int nIndex);
79nm16s* nmppsAddr_16s(nm16s* pVec, int nIndex);
80nm32s* nmppsAddr_32s(nm32s* pVec, int nIndex);
81
82__INLINE__ nm64s* nmppsAddr_64s(nm64s* pVec, int nIndex) {return pVec+nIndex;}
83#ifdef __NM__
84__INLINE__ nm8u* nmppsAddr_(const nm8u* pVec, int nIndex) {return (nm8u*)nmppsAddr_8s((nm8s*) pVec, nIndex);}
85__INLINE__ nm16u* nmppsAddr_16u(nm16u* pVec, int nIndex) {return (nm16u*)nmppsAddr_16s((nm16s*) pVec, nIndex);}
86#else
87__INLINE__ nm8u* nmppsAddr_(const nm8u* pVec, int nIndex) {return (nm8u*)pVec+nIndex;}
88__INLINE__ nm16u* nmppsAddr_16u(nm16u* pVec, int nIndex) {return pVec+nIndex;}
89#endif
90__INLINE__ nm32u* nmppsAddr_32u(nm32u* pVec, int nIndex) {return pVec+nIndex;}
91__INLINE__ nm64u* nmppsAddr_64u(nm64u* pVec, int nIndex) {return pVec+nIndex;}
92*/
93/*
94__INLINE__ nm64u* nmppsAddr_1 (nm1* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>6);}
95__INLINE__ nm64u* nmppsAddr_2s(nm2s* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>5);}
96__INLINE__ nm64u* nmppsAddr_4s(nm4s* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>4);}
97__INLINE__ nm64u* nmppsAddr_8s(nm8s* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>3);}
98__INLINE__ nm64u* nmppsAddr_16s(nm16s* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>2);}
99__INLINE__ nm64u* nmppsAddr_32s(nm32s* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>1);}
100__INLINE__ nm64u* nmppsAddr_64s(nm64s* pVec, int nIndex) {return (nm64u*)pVec+nIndex;}
101
102__INLINE__ nm64u* nmppsAddr_8u(nm8u* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>3);}
103__INLINE__ nm64u* nmppsAddr_16u(nm16u* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>2);}
104__INLINE__ nm64u* nmppsAddr_32u(nm32u* pVec, int nIndex) {return (nm64u*)pVec+(nIndex>>1);}
105__INLINE__ nm64u* nmppsAddr_64u(nm64u* pVec, int nIndex) {return (nm64u*)pVec+nIndex;}
106*/
107
108 __INLINE__ nm1 * nmppsAddr_1 (const nm1* pVec, int nIndex) {return (nm1* )((nm64u*)pVec+(nIndex>>6));}
109 __INLINE__ nm2s * nmppsAddr_2s (const nm2s* pVec, int nIndex) {return (nm2s* )((nm64u*)pVec+(nIndex>>5));}
110 __INLINE__ nm4s * nmppsAddr_4s (const nm4s* pVec, int nIndex) {return (nm4s* )((nm64u*)pVec+(nIndex>>4));}
111 __INLINE__ nm8s * nmppsAddr_8s (const nm8s* pVec, int nIndex) {return (nm8s* )((nm64u*)pVec+(nIndex>>3));}
112 __INLINE__ nm16s* nmppsAddr_16s(const nm16s* pVec, int nIndex) {return (nm16s*)((nm64u*)pVec+(nIndex>>2));}
113 __INLINE__ nm32s* nmppsAddr_32s(const nm32s* pVec, int nIndex) {return (nm32s*)((nm64u*)pVec+(nIndex>>1));}
114 __INLINE__ nm32f* nmppsAddr_32f(const nm32f* pVec, int nIndex) {return (nm32f*)((nm64u*)pVec+(nIndex>>1));}
115 __INLINE__ nm64s* nmppsAddr_64s(const nm64s* pVec, int nIndex) {return (nm64s*)((nm64u*)pVec+nIndex) ;}
116 __INLINE__ nm64f* nmppsAddr_64f(const nm64f* pVec, int nIndex) {return (nm64f*)((nm64u*)pVec+nIndex) ;}
117
118
119 __INLINE__ nm2u * nmppsAddr_2u (const nm2u* pVec, int nIndex) {return (nm2u* )((nm64u*)pVec+(nIndex>>5));}
120 __INLINE__ nm4u * nmppsAddr_4u (const nm4u* pVec, int nIndex) {return (nm4u* )((nm64u*)pVec+(nIndex>>4));}
121 __INLINE__ nm8u * nmppsAddr_8u (const nm8u* pVec, int nIndex) {return (nm8u* )((nm64u*)pVec+(nIndex>>3));}
122 __INLINE__ nm16u* nmppsAddr_16u(const nm16u* pVec, int nIndex) {return (nm16u*)((nm64u*)pVec+(nIndex>>2));}
123 __INLINE__ nm32u* nmppsAddr_32u(const nm32u* pVec, int nIndex) {return (nm32u*)((nm64u*)pVec+(nIndex>>1));}
124 __INLINE__ nm64u* nmppsAddr_64u(const nm64u* pVec, int nIndex) {return (nm64u*)((nm64u*)pVec+nIndex );}
125
126
128
129//*****************************************************************************
130
168
169void nmppsPut_1 (nm1* pVec, int nIndex, int1b nVal);
170void nmppsPut_2s(nm2s* pVec, int nIndex, int2b nVal);
171void nmppsPut_4s(nm4s* pVec, int nIndex, int4b nVal);
172void nmppsPut_8s(nm8s* pVec, int nIndex, int8b nVal);
173void nmppsPut_16s(nm16s* pVec, int nIndex, int16b nVal);
174__INLINE__ void nmppsPut_32s(nm32s* pVec, int nIndex, int32b nVal) {pVec[nIndex]=nVal;}
175__INLINE__ void nmppsPut_64s(nm64s* pVec, int nIndex, int64b nVal) {pVec[nIndex]=nVal;}
176
177__INLINE__ void nmppsPut_2u(nm2u* pVec, int nIndex, uint2b nVal) {nmppsPut_2s((nm2s*)pVec,nIndex,(int2b)nVal);}
178__INLINE__ void nmppsPut_4u(nm4u* pVec, int nIndex, uint4b nVal) {nmppsPut_4s((nm4s*)pVec,nIndex,(int4b)nVal);}
179__INLINE__ void nmppsPut_8u(nm8u* pVec, int nIndex, uint8b nVal) {nmppsPut_8s((nm8s*)pVec,nIndex,(int8b)nVal);}
180__INLINE__ void nmppsPut_16u(nm16u* pVec, int nIndex, uint16b nVal) {nmppsPut_16s((nm16s*)pVec,nIndex,(int16b)nVal);}
181__INLINE__ void nmppsPut_32u(nm32u* pVec, int nIndex, uint32b nVal) {pVec[nIndex]=nVal;}
182__INLINE__ void nmppsPut_64u(nm64u* pVec, int nIndex, uint64b nVal) {pVec[nIndex]=nVal;}
183
184
186
187//*****************************************************************************
188
221
222void nmppsGetVal_1 (const nm1* pVec, int nIndex, int1b *nVal);
223void nmppsGetVal_2s (const nm2s* pVec, int nIndex, int2b *nVal);
224void nmppsGetVal_4s (const nm4s* pVec, int nIndex, int4b *nVal);
225void nmppsGetVal_8s (const nm8s* pVec, int nIndex, int8b *nVal);
226void nmppsGetVal_16s(const nm16s* pVec, int nIndex, int16b *nVal);
227__INLINE__ void nmppsGetVal_32s(const nm32s* pVec, int nIndex, int32b* nVal) { *nVal=pVec[nIndex];}
228__INLINE__ void nmppsGetVal_64s(const nm64s* pVec, int nIndex, int64b* nVal) { *nVal=pVec[nIndex];}
229
230void nmppsGetVal_2u (const nm2u* pVec, int nIndex, uint2b *nVal);
231void nmppsGetVal_4u (const nm4u* pVec, int nIndex, uint4b *nVal);
232void nmppsGetVal_8u (const nm8u* pVec, int nIndex, uint8b *nVal);
233void nmppsGetVal_16u(const nm16u* pVec, int nIndex, uint16b *nVal);
234__INLINE__ void nmppsGetVal_32u(const nm32u* pVec, int nIndex, uint32b* nVal) { *nVal=pVec[nIndex];}
235__INLINE__ void nmppsGetVal_64u(const nm64u* pVec, int nIndex, uint64b* nVal) { *nVal=pVec[nIndex];}
236
238
239//*****************************************************************************
240
271 int2b nmppsGet_2s (const nm2s* pVec, int nIndex);
272 int4b nmppsGet_4s (const nm4s* pVec, int nIndex);
273 int8b nmppsGet_8s (const nm8s* pVec, int nIndex);
274 int16b nmppsGet_16s(const nm16s* pVec, int nIndex);
275__INLINE__ int32b nmppsGet_32s(const nm32s* pVec, int nIndex) {return pVec[nIndex];}
276
277 uint1b nmppsGet_1 (const nm1* pVec, int nIndex);
278 uint2b nmppsGet_2u (const nm2u* pVec, int nIndex);
279 uint4b nmppsGet_4u (const nm4u* pVec, int nIndex);
280 uint8b nmppsGet_8u (const nm8u* pVec, int nIndex);
281 uint16b nmppsGet_16u(const nm16u* pVec, int nIndex);
282__INLINE__ uint32b nmppsGet_32u(const nm32u* pVec, int nIndex) {return pVec[nIndex];}
284
285/*
286 __INLINE__ unsigned nmppsSize32_8s(nm8s* ,unsigned size) {return size/4;}
287 __INLINE__ unsigned nmppsSize32_16s(nm16s* ,unsigned size) {return size/2;}
288 __INLINE__ unsigned nmppsSize32_32s(nm32s* ,unsigned size) {return size; }
289 __INLINE__ unsigned nmppsSize32_64s(nm64s* ,unsigned size) {return size*2;}
290
291 __INLINE__ unsigned nmppsSize32_8u(nm8u* ,unsigned size) {return size/4;}
292 __INLINE__ unsigned nmppsSize32_16u(nm16u* ,unsigned size) {return size/2;}
293 __INLINE__ unsigned nmppsSize32_32u(nm32u* ,unsigned size) {return size; }
294 __INLINE__ unsigned nmppsSize32_64u(nm64u* ,unsigned size) {return size*2;}
295*/
296
297#ifdef __cplusplus
298 };
299#endif
300
301#endif
uint32b
unsigned int uint32b
Definition: nmtype.h:839
uint2b
unsigned int uint2b
Definition: nmtype.h:735
int4b
int int4b
Definition: nmtype.h:592
uint4b
unsigned int uint4b
Definition: nmtype.h:761
int2b
int int2b
Definition: nmtype.h:566
int8b
int int8b
Definition: nmtype.h:618
uint16b
unsigned int uint16b
Definition: nmtype.h:813
uint1b
unsigned int uint1b
Definition: nmtype.h:722
int1b
int int1b
Definition: nmtype.h:553
int32b
int int32b
Definition: nmtype.h:683
uint8b
unsigned int uint8b
Definition: nmtype.h:787
int16b
int int16b
Definition: nmtype.h:644
int64b
INT64 int64b
Definition: nmtype.h:709
uint64b
nm64u uint64b
Definition: nmtype.h:865
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm32s
int nm32s
Definition: nmtype.h:292
nm4u
void nm4u
Definition: nmtype.h:417
nm16u
unsigned short nm16u
Definition: nmtype.h:481
nm64s
long long nm64s
Definition: nmtype.h:375
nm2s
void nm2s
Definition: nmtype.h:116
nm2u
void nm2u
Definition: nmtype.h:404
nm1
int nm1
Definition: nmtype.h:100
nm16s
short nm16s
Definition: nmtype.h:243
nm32u
unsigned int nm32u
Definition: nmtype.h:509
nm4s
void nm4s
Definition: nmtype.h:129
nm64u
unsigned long long nm64u
Definition: nmtype.h:536
nm8s
char nm8s
Definition: nmtype.h:167
nmtype.h


nmpp: Исходный файл g:/nmpp/include/nmplv/vTransform.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmplv
vTransform.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: vTransform. $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2004/11/22 13:50:02 $
10//
19//------------------------------------------------------------------------
20#ifndef _VTRANSFORM_H_INCLUDED_
21#define _VTRANSFORM_H_INCLUDED_
22
23#ifdef __cplusplus
24 extern "C" {
25#endif
26
79void nmppsQSort_32s(nm32s* pSrcDstVec, int nSize);
81
82//*****************************************************************************
83
168void nmppsRemap_32u(nm32u* pSrcVec, nm32u* pDstVec, nm32s* pRemapTable, int nDstVecSize);
169void nmppsRemap_8u(nm8u* pSrcVec, nm8u* pDstVec, nm32s* pRemapTable, int nSrcVecSize, int nDstVecSize, void* pTmpBuf1, void* pTmpBuf2);
171
172
173
174
213void nmppsSplit_(v4nm16s* pSrcVec, nm16s** pDst4Vec, int nSize);
215
216
235 void nmppsSplitTmp_8s(const nm8s* src, nm8s* dst1, nm8s* dst2, int size, nm8s* tmpSizeOfDst);
237
254 void nmppsSplit_8s (const nm8s* src, nm8s* dst1, nm8s* dst2, int size);
255 void nmppsSplit_16s(const nm16s* src, nm16s* dst1, nm16s* dst2, int size);
256 void nmppsSplit_32s(const nm32s* src, nm32s* dst1, nm32s* dst2, int size);
258
273 void nmppsMerge_8s (const nm8s* src0, const nm8s* src1, nm8s* dst, int sizeSrc);
274 void nmppsMerge_16s(const nm16s* src0, const nm16s* src1, nm16s* dst, int sizeSrc);
275 void nmppsMerge_32s(const nm32s* src0, const nm32s* src1, nm32s* dst, int sizeSrc);
277
294 void nmppsSplit_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec1, nm32fcr* pDstVec, int sizeSrc);
296
313 void nmppsDecimate_16s(nm16s* pSrc, int startPos, int step, nm16s* pDst, int nSizeDst);
314 void nmppsDecimate_32s(nm32s* pSrc, int startPos, int step, nm32s* pDst, int nSizeDst);
316
317#ifdef __cplusplus
318 };
319#endif
320
321#endif //_VTRANSFORM_H_INCLUDED_
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm32s
int nm32s
Definition: nmtype.h:292
nm16s
short nm16s
Definition: nmtype.h:243
nm32u
unsigned int nm32u
Definition: nmtype.h:509
nm8s
char nm8s
Definition: nmtype.h:167
s_nm32fcr
Definition: nmtype.h:1335
s_v4nm16s
Definition: nmtype.h:1036


nmpp: Содержание директории g:/nmpp/include/nmtl

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
Содержание директории nmtl

Файлы

файл | nmtl.h [Исходные тексты]
файл | nmtlio.h [Исходные тексты]
файл | tcmplx.h [Исходные тексты]
файл | tcmplx_spec.h [Исходные тексты]
файл | tfixpoint.h [Исходные тексты]
файл | tfixpointmath.h [Исходные тексты]
файл | tmatrix.h [Исходные тексты]
файл | tmatrix_spec.h [Исходные тексты]
файл | tnmcube.h [Исходные тексты]
файл | tnmcvec.h [Исходные тексты]
файл | tnmint.h [Исходные тексты]
файл | tnmmtr.h [Исходные тексты]
файл | tnmmtrpack.h [Исходные тексты]
файл | tnmvec.h [Исходные тексты]
файл | tnmvecpack.h [Исходные тексты]
файл | tvector.h [Исходные тексты]


nmpp: Исходный файл g:/nmpp/include/nmtl/nmtl.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
nmtl.h
1#include "tmatrix.h"
2#include "tnmint.h"
3#include "tnmvec.h"
4#include "tnmmtr.h"
5#include "tcmplx.h"
6#include "tnmcvec.h"
7
8
9
10
11
12 //--------------------------------------------------------------------
22
23 //--------------------------------------------------------------------


nmpp: Исходный файл g:/nmpp/include/nmtl/nmtlio.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
nmtlio.h
1
2// //
3// Header file of template of class mtr //
4// //
6#ifndef _TNMTLIO_H_INCLUDED_
7#define _TNMTLIO_H_INCLUDED_
8
9#include "nmtl.h"
10#include <iomanip>
11#ifndef NM6403
12#include <iostream>
13#endif
14#include <stdio.h>
15#include <crtdbg.h>
16
17
19//
20// Class of matrixes
21//
22
23//*****************************************************************************
58//*****************************************************************************
59
60
61
62
63#ifndef NM6403
64__INLINE__ ostream& operator<< (ostream& s, mtr<unsigned char>& mtr)
65{
66// char str[255];
67 s <<"{\n";
68 for(int y=0;y<mtr.m_height-1;y++)
69 {
70 s << "\t{ ";
71 for(int x=0;x<mtr.m_width-1;x++)
72 {
73 s<< int(mtr[y][x]) << ", ";
74 }
75 s<< int(mtr[y][mtr.m_width-1]) << " },\n";
76 }
77 //Last string
78 s << "\t{ ";
79 for(int x=0;x<mtr.m_width-1;x++)
80 {
81 s<< int(mtr[mtr.m_height-1][x]) << ", ";
82 }
83 s<<int( mtr[mtr.m_height-1][mtr.m_width-1]) << " }\n};\n";
84
85 return s;
86}
87
88__INLINE__ ostream& operator<< (ostream& s, mtr<int>& mtr)
89{
90// char str[255];
91 s <<"{\n";
92 for(int y=0;y<mtr.m_height-1;y++)
93 {
94 s << "\t{ ";
95 for(int x=0;x<mtr.m_width-1;x++)
96 {
97 //sprintf(str,"%d",mtr[y][x]);
98 //s<< dbl << ", ";
99 s<< mtr[y][x] << ", ";
100 }
101 //sprintf(dbl,"%20.20f",mtr[y][mtr.m_width-1]);
102 //s<< dbl << " },\n";
103 s<< mtr[y][mtr.m_width-1] << " },\n";
104 }
105 //Last string
106 s << "\t{ ";
107 for(int x=0;x<mtr.m_width-1;x++)
108 {
109 s<< mtr[mtr.m_height-1][x] << ", ";
110 }
111 s<< mtr[mtr.m_height-1][mtr.m_width-1] << " }\n};\n";
112
113 return s;
114}
115
116__INLINE__ ostream& operator<< (ostream& s, const __int64& y)
117{
118
119 int hi,lo;
120 hi=int(y>>32);
121 lo=int(y);
122 s<< "0x" << setw(8) << setiosflags(ios::hex|ios::uppercase|ios::internal) << setfill('0') << hi
123 << setw(8) << setiosflags(ios::hex|ios::uppercase|ios::internal) << setfill('0') << lo ;
124 return s;
125}
126
127
128__INLINE__ ostream& operator<< (ostream& s, mtr<__int64>& mtr)
129{
130// char str[255];
131 s <<"{\n";
132 for(int y=0;y<mtr.m_height-1;y++)
133 {
134 s << "\t{ ";
135 for(int x=0;x<mtr.m_width-1;x++)
136 {
137 //sprintf(str,"%d",mtr[y][x]);
138 //s<< dbl << ", ";
139 s<< mtr[y][x] << ", ";
140 }
141 //sprintf(dbl,"%20.20f",mtr[y][mtr.m_width-1]);
142 //s<< dbl << " },\n";
143 s<< mtr[y][mtr.m_width-1] << " },\n";
144 }
145 //Last string
146 s << "\t{ ";
147 for(int x=0;x<mtr.m_width-1;x++)
148 {
149 s<< mtr[mtr.m_height-1][x] << ", ";
150 }
151 s<< mtr[mtr.m_height-1][mtr.m_width-1] << " }\n};\n";
152
153 return s;
154}
155
156
157
158__INLINE__ ostream& operator<< (ostream& s, mtr<double>& mtr)
159{
160 char dbl[255];
161 s <<"{\n";
162 for(int y=0;y<mtr.m_height-1;y++)
163 {
164 s << "\t{ ";
165 for(int x=0;x<mtr.m_width-1;x++)
166 {
167 sprintf(dbl,"%20.20f",mtr[y][x]);
168 s<< dbl << ", ";
169 }
170 sprintf(dbl,"%20.20f",mtr[y][mtr.m_width-1]);
171 s<< dbl << " },\n";
172 }
173 //Last string
174 s << "\t{ ";
175 for(int x=0;x<mtr.m_width-1;x++)
176 {
177 sprintf(dbl,"%20.20f",mtr[mtr.m_height-1][x]);
178 s<< dbl << ", ";
179 }
180 sprintf(dbl,"%20.20f",mtr[mtr.m_height-1][mtr.m_width-1]);
181 s<< dbl << " }\n};\n";
182
183 return s;
184}
185
186/*
188template <class T> cmplx<T> sqrt(const cmplx<T>& x)
189{
190
191 cmplx<T> Result;
192 Result.re=sqrt(double_(x.re));
193 return Result;
194}
195
196template <class T> ostream& operator<< (ostream& s, const cmplx<T>& y)
197{
198 return s<< '[' << y.re << ','<< y.im <<']';
199}
200*/
201
202#ifdef WIN32
203__INLINE__ ostream& operator<< (ostream& s, const nmint<__int64>& y)
204{
205
206 int hi,lo;
207 hi=int(y.m_value>>32);
208 lo=int(y.m_value);
209 s<< "0x" << setw(8) << setiosflags(ios::hex|ios::uppercase|ios::internal) << setfill('0') << hi
210 << setw(8) << setiosflags(ios::hex|ios::uppercase|ios::internal) << setfill('0') << lo ;
211 return s;
212}
213
214__INLINE__ ostream& operator<< (ostream& s, const nmint<int>& y)
215{
216 unsigned int x=(__int32)y.m_value;
217 s<< "0x" << setw(8) << setiosflags(ios::hex|ios::uppercase|ios::internal) << setfill('0') << setiosflags(ios::uppercase) << x;
218 return s;
219}
220
221__INLINE__ ostream& operator<< (ostream& s, const nmint<short>& y)
222{
223 unsigned __int16 x=(__int16)y.m_value;
224 s<< "0x" << setw(4) << setiosflags(ios::hex|ios::uppercase|ios::internal) << setfill('0') << x ;
225 return s;
226}
227
228__INLINE__ ostream& operator<< (ostream& s, const nmint<char>& y)
229{
230 unsigned __int8 x=y.m_value;
231 s<< "0x" << setw(2) << setiosflags(ios::hex|ios::uppercase|ios::internal) << setfill('0') << x ;
232 return s;
233}
234#endif
235
236
237
238#endif
239
240#ifdef WIN32
241template <class T> __INLINE__ ostream& operator<< (ostream& s, nmmtr<T>& mtr)
242{
243 s <<"{\n";
244 for(int y=0;y<mtr.m_height-1;y++)
245 {
246 s << "\t{ ";
247 for(int x=0;x<mtr.m_width-1;x++)
248 {
249 s<< (mtr[y][x]) << ", ";
250 }
251 s << (mtr[y][mtr.m_width-1]) << " },\n";
252 }
253
254 s << "\t{ ";
255 for(int x=0;x<mtr.m_width-1;x++)
256 {
257 s<< (mtr[mtr.m_height-1][x]) << ", ";
258 }
259 s << (mtr[mtr.m_height-1][mtr.m_width-1]) << " }\n";
260 s << "};\n";
261 return s;
262}
263
264
265
266__INLINE__ ostream& AsmArray (ostream& s, nmmtr64s& mtr)
267{
268 s << " long[" << dec << mtr.m_width <<"*" << mtr.m_height << "]=(\n";
269 for(int y=0;y<mtr.m_height-1;y++)
270 {
271 for(int x=0;x<mtr.m_width;x++)
272 {
273
274 int hi,lo;
275 hi=int(mtr[y][x].m_value>>32);
276 lo=int(mtr[y][x].m_value);
277 s << "0"
278 << hex << setw(8) << setfill('0') << setiosflags(ios::uppercase) << hi << "_"
279 << hex << setw(8) << setfill('0') << setiosflags(ios::uppercase) << lo << "hl,";
280 }
281 s << "\n";
282 }
283
284 for(int x=0;x<mtr.m_width-1;x++)
285 {
286 int hi,lo;
287 hi=int(mtr[mtr.m_height-1][x].m_value>>32);
288 lo=int(mtr[mtr.m_height-1][x].m_value);
289 s << "0"
290 << hex << setw(8) << setfill('0') << setiosflags(ios::uppercase) << hi << "_"
291 << hex << setw(8) << setfill('0') << setiosflags(ios::uppercase) << lo << "hl,";
292 }
293
294 {
295 int hi,lo;
296 hi=int(mtr[mtr.m_height-1][mtr.m_width-1].m_value>>32);
297 lo=int(mtr[mtr.m_height-1][mtr.m_width-1].m_value);
298 s << "0"
299 << hex << setw(8) << setfill('0') << setiosflags(ios::uppercase) << hi << "_"
300 << hex << setw(8) << setfill('0') << setiosflags(ios::uppercase) << lo << "hl";
301 }
302 s << "\n);\n";
303
304 return s;
305}
306
307__INLINE__ ostream& AsmArray (ostream& s, nmmtr8s& mtr)
308{
309 _ASSERTE(mtr.m_width%8==0);
310 nmmtr64s mClone((__int64*)mtr.m_data,mtr.m_height,mtr.m_width/8,mtr.m_stride/8);
311 AsmArray(s,mClone);
312 return s;
313}
314
315 template<class T1, class T2> void DotMul(nmmtr<T1>& mSrcMtr1, nmmtr<T2>& mSrcMtr2, nmmtr<T2>& mDstMtr )
316 {
317 for(int y=0; y< mSrcMtr1.m_height; y++)
318 for(int x=0; x<mSrcMtr1.m_width; x++)
319 {
320 nmint<T2> res=mSrcMtr1[y][x]*mSrcMtr2[y][x];
321 mDstMtr[y][x]=res;
322 }
323 }
324
325 template<class T1, class T2> void GetSum(nmmtr<T1>& mSrcMtr1, nmint<T2>& nResSum)
326 {
327 nResSum=0;
328 for(int y=0; y< mSrcMtr1.m_height; y++)
329 for(int x=0; x<mSrcMtr1.m_width; x++)
330 nResSum+=nmint<T2> (mSrcMtr1[y][x].m_value);
331 }
332
333#endif
334#endif
mtr
Definition: tmatrix.h:88
nmmtr
Definition: tnmmtr.h:38
operator<<
__INLINE__ ostream & operator<<(ostream &s, mtr< unsigned char > &mtr)
Definition: nmtlio.h:64


nmpp: Исходный файл g:/nmpp/include/nmtl/tcmplx.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tcmplx.h
1
2// //
3// Header file of template class of complex numbers //
4// //
5// //
7
8#ifndef _TCMPLX_H_INCLUDED_
9#define _TCMPLX_H_INCLUDED_
10
11#ifdef __cplusplus
12
13#include <assert.h>
14#include <math.h>
15
16
17
18//*****************************************************************************
49//*****************************************************************************
50
51
52template <class T> class cmplx
53{
54public:
55 T re;
56 T im;
57
58 cmplx()
59 :re(0),im(0){}
60 cmplx(T _re)
61 :re(_re),im(0){}
62 cmplx(T _re,T _im)
63 :re(_re),im(_im){}
64 cmplx(const cmplx<T>& c)
65 :re(c.re),im(c.im){}
66 explicit cmplx(cmplx<long long>& c)
67 :re(c.re),im(c.im){}
68 //------------ Z=Y --------------------------------------------------
69/*
70 cmplx<T>& operator= ( cmplx<T>& y)
71 {
72 re=y.re;
73 im=y.im;
74 return (*this);
75 }
76
77 cmplx<T>& operator= (const cmplx<T>& y)
78 {
79 re=y.re;
80 im=y.im;
81 return (*this);
82 }
83
84 //------------ Z=Y --------------------------------------------------
85 cmplx<T>& operator= (const double y)
86 {
87 re=y;
88 im=0;
89 return (*this);
90 }
91 */
92 //------------ Z=Y --------------------------------------------------
93 cmplx<T>& operator= (const int y)
94 {
95 re=y;
96 im=0;
97 return (*this);
98 }
99
100 cmplx<T>& operator+= (const cmplx<T>& y);
101 cmplx<T> operator+ (const cmplx<T>& y) const;
102 cmplx<T>& operator-= (const cmplx<T>& y);
103 cmplx<T> operator- (const cmplx<T>& y) const;
104 //------------ Z*=Y --------------------------------------------------
105 cmplx<T>& operator*= (const cmplx<T>& y)
106 {
107 cmplx<T> x(*this);
108 re=x.re*y.re-x.im*y.im;
109 im=x.re*y.im+x.im*y.re;
110 return (*this);
111 }
112 //------------ Z=X*Y --------------------------------------------------
113 template <class P> cmplx<P> operator* (const cmplx<P>& y) const
114 {
115 cmplx<P> z;
116 z.re=re*y.re-im*y.im;
117 z.im=re*y.im+im*y.re;
118 return z;
119 }
120 cmplx<T>& operator/= (const cmplx<T>& y);
121 cmplx<T> operator/ (const cmplx<T>& y) const;
122 cmplx<T> operator- (void) const;
123 //------- Z>>=y -----------------------------------------------------------
124 cmplx<T>& operator>>= (const int y)
125 {
126 re>>=y;
127 im>>=y;
128 return (*this);
129 }
130
131 //------- Z=X>>y -----------------------------------------------------------
132 cmplx<T> operator>> (const int y) const
133 {
134 cmplx<T> z(*this);
135 z>>=y;
136 return z;
137 }
138 //------- Z<<=y -----------------------------------------------------------
139 cmplx<T>& operator<<= (const int y)
140 {
141 re<<=y;
142 im<<=y;
143 return (*this);
144 }
145 //------- Z=X<<y -----------------------------------------------------------
146 cmplx<T> operator<< (const int y) const
147 {
148 cmplx<T> z(*this);
149 z<<=y;
150 return z;
151 }
152
153 bool operator== (const cmplx<T>& y) const
154 {
155 return ((re==y.re)&&(im==y.im));
156 }
157
158 bool operator!= (const cmplx<T>& y) const
159 {
160 return ((re!=y.re)||(im!=y.im));
161 }
162
163 cmplx<T> conjg () const;
164 T real () const;
165 void real (const T& Re);
166 T imag () const;
167 void imag (const T& Im);
168
169};
170
171//
172//------------ Z=Y --------------------------------------------------
173/*
174template <class T> cmplx<T>::operator cmplx<double> ()
175{
176 cmplx<Double> DblComplex;
177 DblComplex.re=re;
178 DblComplex.im=im;
179 return (DblComplex);
180}
181*/
182//------------ Z+=Y --------------------------------------------------
183template <class T> cmplx<T>& cmplx<T>::operator+= (const cmplx<T>& y)
184{
185 re+=y.re;
186 im+=y.im;
187 return (*this);
188}
189//------------ Z=X+Y --------------------------------------------------
190template <class T> cmplx<T> cmplx<T>::operator+ (const cmplx<T>& y) const
191{
192 cmplx<T> z(*this);
193 z+=y;
194 return z;
195}
196//------------ Z-=Y --------------------------------------------------
197template <class T> cmplx<T>& cmplx<T>::operator-= (const cmplx<T>& y)
198{
199 re-=y.re;
200 im-=y.im;
201 return (*this);
202}
203//------------ Z=X-Y --------------------------------------------------
204template <class T> cmplx<T> cmplx<T>::operator- (const cmplx<T>& y) const
205{
206 cmplx<T> z(*this);
207 z-=y;
208 return z;
209}
210//------------ Z=-Y --------------------------------------------------
211template <class T> cmplx<T> cmplx<T>::operator- (void) const
212{
213 cmplx<T> z(*this);
214 z.re=-z.re;
215 z.im=-z.im;
216 return z;
217}
218//------- Z/=Y -------------------------------------------------------------
219template <class T> cmplx<T>& cmplx<T>::operator/=(const cmplx<T>& y)
220{
221 //_ASSERTE((y.re!=(T)0)||(y.im!=(T)0));
222 //cmplx<T> Conjg;
223 //Conjg=y.conjg();
224 if (y.im==(T)0)
225 {
226 re/=y.re;
227 im/=y.re;
228 }
229 else
230 {
231 (*this)*=y.conjg();
232 T denum=y.re*y.re+y.im*y.im;
233 re/=denum;
234 im/=denum;
235 }
236 return (*this);
237}
238//------- Z=X/y -------------------------------------------------------------
239template <class T> cmplx<T> cmplx<T>::operator/ (const cmplx<T>& y) const
240{
241 cmplx<T> z(*this);
242 z/=y;
243 return z;
244}
245//*****************************************************************************
246//* Comparision operators *
247//*****************************************************************************
248
249//------------------------------------------------------------------------------
250
251//------------ Z=conjg(X) --------------------------------------------------
252template <class T> cmplx<T> cmplx<T>::conjg() const
253{
254 cmplx<T> z(*this);
255 z.im=-z.im;
256 return z;
257}
258
259template <class T> T cmplx<T>::real() const
260{ return re;}
261template <class T> void cmplx<T>::real(const T& Re)
262{ re=Re; }
263template <class T> T cmplx<T>::imag() const
264{ return im;}
265template <class T> void cmplx<T>::imag(const T& Im)
266{ im=Im; }
267/*
268template <class T> void Out(const cmplx<T>& x)
269{
270 printf("[");
271 Out(x.re);
272 Out(x.im);
273 printf("]");
274}
275*/
276
277//*****************************************************************************
278//* Type conversion *
279//*****************************************************************************
280/*
281template <class T> __INLINE__ void double_(cmplx<T> &X, double* &pDstVec)
282{
283 double_(X.re,pDstVec);
284 double_(X.im,pDstVec);
285}
286*/
287
288
289
290template <class T> double abs2(const cmplx<T>& x)
291{
292 return (double)(x.re*x.re+x.im*x.im);
293}
294
295template <class T, class T2> void abs2(const cmplx<T>& x, T2 &res)
296{
297 res =(T2)(x.re*x.re+x.im*x.im);
298}
299
300template <class T> double abs(const cmplx<T>& x)
301{
302 return (double)(sqrt(x.re*x.re+x.im*x.im));
303}
304
305template <class T> cmplx<T> exp(const cmplx<T> &arg)
306{
307 cmplx<T> Res(arg);
308 T ExpRe;
309 ExpRe=exp(arg.re);
310 Res.re=ExpRe*cos(arg.im);
311 Res.im=ExpRe*sin(arg.im);
312 return Res;
313}
314#endif
315
316#endif
operator<<
__INLINE__ ostream & operator<<(ostream &s, mtr< unsigned char > &mtr)
Definition: nmtlio.h:64


nmpp: Исходный файл g:/nmpp/include/nmtl/tcmplx_spec.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tcmplx_spec.h
1
2// //
3// Header file of template class of complex numbers //
4// //
5// //
7
8#ifndef _TCMPLX_CPEC_H_INCLUDED_
9#define _TCMPLX_CPEC_H_INCLUDED_
10
11#include <nmtl.h>
12
13
14
15//------- Z>>=y -----------------------------------------------------------
16template<>
17cmplx<double>& cmplx<double>::operator>>= (const int Shr);
18//{
19// double n=pow((double)2,Shr);
20// re/=n;
21// im/=n;
22// return (*this);
23//}
24/*
25//------- Z=X>>y -----------------------------------------------------------
26cmplx<double> cmplx<double>::operator>> (const int y) const
27{
28 cmplx<T> z(*this);
29 z>>=y;
30 return z;
31}*/
32//------- Z<<=y -----------------------------------------------------------
33template<>
34cmplx<double>& cmplx<double>::operator<<= (const int Shl);
35//{
36// double n=pow((double)2,Shl);
37// re*=n;
38// im*=n;
39// return (*this);
40//}
41/*
42//------- Z=X<<y -----------------------------------------------------------
43cmplx<double> cmplx<double>::operator<< (const int y) const
44{
45 cmplx<T> z(*this);
46 z<<=y;
47 return z;
48}
49*/
50//------------ Z=Y --------------------------------------------------
51/*
52template <class T> cmplx<T>::operator cmplx<double> ()
53{
54 cmplx<Double> DblComplex;
55 DblComplex.re=re;
56 DblComplex.im=im;
57 return (DblComplex);
58}
59*/
60
61#endif


nmpp: Исходный файл g:/nmpp/include/nmtl/tfixpoint.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tfixpoint.h
1#ifndef _tfixpoint
2#define _tfixpoint
3//#include <math.h>
4//#define STAT_MINMAX
5//#define STAT_FIXPOINT
6//#ifdef __NM__
7//#define _ASSERTE(a)
8//#else
9//#include <crtdbg.h>
10//#endif
11
12#define FIX_TYPE __int64
13#define ROUND2FIXED(a) ((a) >= 0 ? (((a)+0.5)) : (((a)-0.5)))
14
15#define FIXPOINT_ONE (T(1)<<point)
16
17#define DOUBLE2FIX64(a,point) (ROUND2FIXED((a)*((__int64(1))<<point)))
18#define DOUBLE2FIX32(a,point) (ROUND2FIXED((a)*(int(1)<<point))
19
20
21
22
23//#define FIX_POINT_ONE (1<<FIX_POINT)
24#define FLT2FIX(f) (DOUBLE2FIX64((f),(FIX_POINT)))
25
26#define MULI(a,i) ((a).m_value*(i))
27#define MULC(a,c) ((a.m_value*c)>>FIX_POINT)
28#define MULX(a,n) (((a).m_value*(n).m_value)>>FIX_POINT)
29
30#define ADDC(a,c) (a.m_value+c)
31#define ADDN(a,n) (a.m_value+n.m_value)
32#define SUBC(a,c) (a.m_value-c)
33#define SUBN(a,n) (a.m_value-n.m_value)
34
35//#define SHR(a,shift) (((a)+ ((1)<<((shift)-1)))>>shift)
36//#define FIX_RSH(a,shift) ((a)>>shift)
37#define SHR(a,shift) ((a)>>shift)
38
39
40//#ifndef _ASSERTE
41//#define _ASSERTE(a)
42//#endif
43
44#define DBL2FIX DOUBLE2FIX64
45
46#ifdef __NM__
47 #define INLINE
48#else
49 #define INLINE __INLINE__
50#endif
51
52template<class T, int point> class tfixpoint{
53public:
54 T m_value; // m_value
55 //---------- 0 operands constructors --------------------------------------------------
56 INLINE tfixpoint(void){}
57 //---------- 1 operands constructors --------------------------------------------------
58
59
60 INLINE tfixpoint(const int val)
61 {
62 m_value=T(val)<<point;
63 //_ASSERTE(m_value<(T(1)<<32));
64 //_ASSERTE(m_value>(-(T(1)<<32)));
65 }
66
67 INLINE tfixpoint(const float val)
68 {
69 m_value=ROUND2FIXED(val*FIXPOINT_ONE);
70 //_ASSERTE(m_value<(T(1)<<32));
71 //_ASSERTE(m_value>(-(T(1)<<32)));
72 }
73 INLINE tfixpoint(const double val)
74 {
75 m_value=ROUND2FIXED(val*FIXPOINT_ONE);
76 //_ASSERTE(m_value<(T(1)<<32));
77 //_ASSERTE(m_value>(-(T(1)<<32)));
78 }
79
80 //tfixpoint(const tfixpoint<T,point> val)
81 //{
82 // m_value=val.m_value;
83 //}
84
85 INLINE tfixpoint<T,point>& operator= (const int val)
86 {
87 m_value=T(val)<<point;
88 return (*this);
89 }
90
91 INLINE tfixpoint<T,point>& operator= (const float val)
92 {
93 m_value=ROUND2FIXED(val*FIXPOINT_ONE);
94 return (*this);
95 }
96
97 tfixpoint<T,point>& operator= (const double val)
98 {
99 m_value=ROUND2FIXED(val*FIXPOINT_ONE);
100 return (*this);
101 }
102
103 INLINE tfixpoint<T,point>& operator= (const tfixpoint<T,point>& val)
104 {
105 m_value=val.m_value;
106 return (*this);
107 }
108//#endif
109
110
111
112// tfixpoint<T,point>& operator= (const tfixpoint<T,point>& val)
113// {
114// m_value=val.m_value;
115// return (*this);
116// }
117
118// template <class T2> tfixpoint<T,point>& operator= (const T2& value)
119// {
120// m_value=value;
121// return (*this);
122// }
123
124
125 INLINE tfixpoint<T,point>& operator-= (const tfixpoint<T,point>& val)
126 {
127 #ifdef STAT_FIXPOINT
128 stat.subs++;
129 #endif
130 m_value-=val.m_value;
131 return (*this);
132 }
133
134
135 INLINE tfixpoint<T,point>& operator+= (const tfixpoint<T,point>& val)
136 {
137#ifdef STAT_FIXPOINT
138 stat.adds++;
139#endif
140 m_value+=val.m_value;
141 return (*this);
142 }
143
144 INLINE tfixpoint<T,point> operator- (const tfixpoint<T,point>& val) const
145 {
146 tfixpoint<T,point> Res(*this);
147 Res-=val;
148 return Res;
149 }
150
151 INLINE tfixpoint<T,point> operator+ (const tfixpoint<T,point>& val) const
152 {
153 tfixpoint<T,point> Res(*this);
154 Res+=val;
155 return Res;
156 }
157
158 INLINE tfixpoint<T,point>& operator++ (int)
159 {
160#ifdef STAT_FIXPOINT
161 stat.adds++;
162#endif
163 m_value+=FIXPOINT_ONE;
164 return (*this);
165 }
166
167 INLINE tfixpoint<T,point>& operator-- (int)
168 {
169#ifdef STAT_FIXPOINT
170 stat.subs++;
171#endif
172 m_value-=FIXPOINT_ONE;
173 return (*this);
174 }
175
176
177
178
179
180 template<class T2, int point2> INLINE tfixpoint<T,point>& operator*= (const tfixpoint<T2,point2> val)
181 {
182#ifdef STAT_FIXPOINT
183 stat.muls++;
184#endif
185 m_value*=val.m_value;
186 m_value+=(T(1)<<(point2-1));
187 m_value>>=point2;
188 return (*this);
189 }
190
191 INLINE tfixpoint<T,point>& operator*= (const int val)
192 {
193#ifdef STAT_FIXPOINT
194 stat.muls++;
195#endif
196 m_value*=val;
197 return (*this);
198 }
199
200 INLINE tfixpoint<T,point>& operator*= (const float val)
201 {
202#ifdef STAT_FIXPOINT
203 stat.muls++;
204#endif
205 m_value=ROUND2FIXED(m_value*val);
206 return (*this);
207 }
208
209 INLINE tfixpoint<T,point>& operator*= (const double val)
210 {
211#ifdef STAT_FIXPOINT
212 stat.muls++;
213#endif
214 //m_value*=val;
215 m_value=ROUND2FIXED(m_value*val);
216 return (*this);
217 }
218
219 template <int point2> INLINE tfixpoint<T,point> operator* (const tfixpoint<T,point2> val) const
220 {
221 tfixpoint<T,point> Res(*this);
222 Res*=val;
223 return Res;
224 }
225
226 INLINE tfixpoint<T,point> operator* (const int val) const
227 {
228 tfixpoint<T,point> Res(*this);
229 Res*=val;
230 return Res;
231 }
232
233/*
234 INLINE tfixpoint<T,point> operator* (const float val) const
235 {
236 tfixpoint<T,point> Res(*this);
237 Res*=val;
238 return Res;
239 }
240
241 INLINE tfixpoint<T,point> operator* (const double val) const
242 {
243 tfixpoint<T,point> Res(*this);
244 Res*=val;
245 return Res;
246 }
247*/
248 INLINE tfixpoint<T,point>& operator/= (const tfixpoint<T,point> val)
249 {
250#ifdef STAT_FIXPOINT
251 stat.divs++;
252#endif
253 long long val64=m_value;
254 val64<<=point;
255 val64/=val.m_value;
256 m_value=val64;
257 return (*this);
258 }
259
260 INLINE tfixpoint<T,point> operator/ (const tfixpoint<T,point> val) const
261 {
262 tfixpoint<T,point> Res(*this);
263 Res/=val;
264 return Res;
265 }
266
267 INLINE tfixpoint<T,point>& operator>>= (const int y)
268 {
269 m_value>>=y;
270 return (*this);
271 }
272
273 INLINE tfixpoint<T,point> operator>> (const int y) const
274 {
275 tfixpoint<T,point> z(*this);
276 z>>=y;
277 return z;
278 }
279
280 INLINE tfixpoint<T,point>& operator<<= (const int y)
281 {
282 m_value<<=y;
283 return (*this);
284 }
285
286 INLINE tfixpoint<T,point> operator<< (const int n) const
287 {
288 tfixpoint<T,point> Res(*this);
289 Res<<=n;
290 return Res;
291 }
292
293 INLINE tfixpoint<T,point>& operator^= (tfixpoint<T,point> &val)
294 {
295 m_value^=val.m_value;
296 return (*this);
297 }
298 INLINE tfixpoint<T,point> operator^ (tfixpoint<T,point> &val) const
299 {
300 tfixpoint<T,point> Res(*this);
301 Res^=val;
302 return Res;
303 }
304
305
306 INLINE tfixpoint<T,point> operator- () const
307 {
308#ifdef STAT_FIXPOINT
309 stat.subs++;
310#endif
311 tfixpoint<T,point> Res;
312 Res.m_value=-m_value;
313 return Res;
314 }
315
316 bool operator> (const tfixpoint<T,point>& y) const
317 { return m_value>y.m_value;}
318 bool operator>= (const tfixpoint<T,point>& y) const
319 { return m_value>=y.m_value;}
320 bool operator< (const tfixpoint<T,point>& y) const
321 { return m_value<y.m_value;}
322 bool operator<= (const tfixpoint<T,point>& y) const
323 { return m_value<=y.m_value;}
324 bool operator== (const tfixpoint<T,point>& y) const
325 { return m_value==y.m_value;}
326 bool operator!= (const tfixpoint<T,point>& y) const
327 { return m_value!=y.m_value;}
328
329 float flt(){
330 float res=m_value;
331 res/=FIXPOINT_ONE;
332 return res;
333 }
334};
335
336//template class tfixpoint<float>;
337/*
338template <class T, int point> INLINE tfixpoint<T,point> pow (tfixpoint<T,point> a, tfixpoint<T,point> b) { return pow(a.flt(), b.flt());}
339template <class T, int point> INLINE tfixpoint<T,point> fabs(tfixpoint<T,point> a) { return fabs(a.flt());}
340template <class T, int point> INLINE tfixpoint<T,point> log (tfixpoint<T,point> a) { return log (a.flt());}
341template <class T, int point> INLINE tfixpoint<T,point> sqrt(tfixpoint<T,point> a) { return sqrt(a.flt());}
342template <class T, int point> INLINE tfixpoint<T,point> cos (tfixpoint<T,point> a) { return cos (a.flt());}
343template <class T, int point> INLINE tfixpoint<T,point> sin (tfixpoint<T,point> a) { return sin (a.flt());}
344*/
345
346//template class<int point> fixpoint32<point>: public ;
347
348#define fixpoint64(point) tfixpoint<__int64,point>
349#define fixpoint32(point) tfixpoint<int,point>
350
351//typedef template <int point> fixpoint32<int,point>;
352
353#define FIXPOINT64(val,point) (ROUND2FIXED((val)*((__int64(1))<<point)))
354
355double __INLINE__ cnv2double(double x){
356 return x;
357}
358
359float __INLINE__ cnv2float(float x){
360 return x;
361}
362
363template <class T, int point> double __INLINE__ cnv2double(tfixpoint<T,point>& x){
364 return x.flt();
365}
366template <class T, int point> float __INLINE__ cnv2float(tfixpoint<T,point>& x){
367 return x.flt();
368}
369
370#endif
tfixpoint
Definition: tfixpoint.h:52


nmpp: Исходный файл g:/nmpp/include/nmtl/tfixpointmath.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tfixpointmath.h
1#ifndef _tfixpoint_MATH
2#define _tfixpoint_MATH
3#include <math.h>
4
5
6template <class T, int point> __INLINE__ tfixpoint<T,point> pow (tfixpoint<T,point> a, tfixpoint<T,point> b) { return pow(a.flt(), b.flt());}
7template <class T, int point> __INLINE__ tfixpoint<T,point> fabs(tfixpoint<T,point> a) { return fabs(a.flt());}
8template <class T, int point> __INLINE__ tfixpoint<T,point> log (tfixpoint<T,point> a) { return log (a.flt());}
9template <class T, int point> __INLINE__ tfixpoint<T,point> sqrt(tfixpoint<T,point> a) { return sqrt(a.flt());}
10template <class T, int point> __INLINE__ tfixpoint<T,point> cos (tfixpoint<T,point> a) { return cos (a.flt());}
11template <class T, int point> __INLINE__ tfixpoint<T,point> sin (tfixpoint<T,point> a) { return sin (a.flt());}
12
13
14#endif
tfixpoint
Definition: tfixpoint.h:52


nmpp: Исходный файл g:/nmpp/include/nmtl/tmatrix.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tmatrix.h
1
2// //
3// Header file of template of class mtr //
4// //
6#ifndef _TMATRIX_H_INCLUDED_
7#define _TMATRIX_H_INCLUDED_
8
9//#ifdef __cplusplus
10
11#include "crtdbg2.h"
12
13#include <stdio.h>
14#include "tvector.h"
15#include <string.h>
16
18//
19// Class of matrixes
20//
21
22//*****************************************************************************
57//*****************************************************************************
58
59#ifndef GetVec
60#define GetVec getvec
61#endif
62
63#ifndef GetCol
64#define GetCol getcol
65#endif
66
67#ifndef Min
68#define Min min
69#endif
70
71
72#ifndef Max
73#define Max max
74#endif
75
76
77#ifndef MinPos
78#define MinPos minpos
79#endif
80
81#ifndef MaxPos
82#define MaxPos maxpos
83#endif
84
85
86
87template<class T> class mtr
88{
89protected:
90 T* m_container;
91public:
92 int m_border;
93 int m_stride;
94 int m_height,m_width,m_size;
95 int m_x0;
96 int m_y0;
97 T *m_data;
98
99 explicit mtr()
100 {
101 m_height=0;
102 m_width=0;
103 m_size=0;
104 m_container=0;
105 m_data=0;
106 m_stride=0;
107 }
108
109 // Setting (0,0) index for element [y][x]
110 void origin(int y,int x){
111 m_x0=x;
112 m_y0=y;
113 }
114
115 // Setting value
116 inline void setval(int y, int x, const T& val)
117 {
118 ASSERTE(y>=-m_border);
119 ASSERTE(y<m_height+m_border);
120 m_data[y*m_stride+x]=val;
121 }
122
123 // extended setting value
124 inline void setvalx(int y, int x, const T& val)
125 {
126 ASSERTE(y+m_y0>=-m_border);
127 ASSERTE(y+m_y0<m_height+m_border);
128 m_data[(y+m_y0)*m_stride+x+m_x0]=val;
129 }
130 // getting value
131 inline T getval(int y,int x) const
132 {
133 ASSERTE(y>=-m_border);
134 ASSERTE(y<m_height+m_border);
135 T val=m_data[y*m_stride+x];
136 return val;
137 }
138 // extended getting value
139 inline T getvalx(int y,int x) const
140 {
141 ASSERTE(y+m_y0>=-m_border);
142 ASSERTE(y+m_y0<m_height+m_border);
143 T val=m_data[(y+m_y0)*m_stride+x+m_x0];
144 return val;
145 }
146
147 // constructor
148 explicit mtr(int nHeight, int nWidth, int nBorder=0)
149 {
150 m_border=nBorder;
151 m_height=nHeight;
152 m_width=nWidth;
153 m_stride=m_width;
154 m_size=m_width*m_height;
155 m_container=new T[m_size+2*m_stride*m_border];
156 m_data=m_container+m_border*m_stride;
157 ASSERTE(m_container!=NULL);
158 }
159
160 // resizing of matrix dimensions
161 void resize(int nHeight, int nWidth, int nBorder=0)
162 {
163 if (m_container)
164 delete m_container;
165 m_border=nBorder;
166 m_height=nHeight;
167 m_width =nWidth;
168 m_size =m_width*m_height;
169 m_stride=m_width;
170 m_container=new T[m_size+2*m_stride*m_border];
171 m_data=m_container+m_border*m_stride;
172 }
173
174 // constructor for matrix duplication
175 /*explicit*/ mtr(const mtr<T>& matr)
176 {
177 m_height=matr.m_height;
178 m_width =matr.m_width;
179 m_size =matr.m_size;
180 m_stride=m_width;
181 m_border=matr.m_border;
182 m_container =new T[m_size+2*m_stride*m_border];
183 m_data=m_container+m_border*m_stride;
184
185 for(int y=0;y<m_height;y++){
186 for(int x=0;x<m_width;x++){
187 T val=matr.getval(y,x);
188 setval(y,x,val);
189 }
190 }
191 };
192
193/*
194 ..\include\tmatrix.h(162) : error C2535: '__thiscall mtr<T2>::mtr<T2>(const class mtr<T2> &)' : member function already defined or declared
195 ..\include\tmatrix.h(143) : see declaration of 'mtr<T>::mtr<T>'
196 ..\include\tmatrix.h(692) : see reference to class template instantiation 'mtr<T>' being compiled
197 template <class T2> mtr(const mtr<T2>& matr)
198 {
199 m_height=matr.m_height;
200 m_width =matr.m_width;
201 m_size =matr.m_size;
202 m_stride=m_width;
203 m_border=matr.m_border;
204 m_container =new T[m_size+2*m_border*m_stride];
205 m_data=m_container+m_border*m_stride;
206
207 for(int y=0;y<m_height;y++){
208 for(int x=0;x<m_width;x++){
209 T val=matr.getval(y,x);
210 setval(y,x,val);
211 }
212 }
213 };
214*/
215 // constructoк of matrix over existing data
216 void assign(T* Data,int nHeight,int nWidth,int nStride=0){
217 m_height=nHeight;
218 m_width=nWidth;
219 if (nStride==0)
220 m_stride=m_width;
221 else
222 m_stride=nStride;
223 m_size =m_height*m_width;
224 m_data=Data;
225 m_container=0;
226 m_border=0;
227 }
228 explicit mtr(T* Data,int nHeight,int nWidth,int nStride=0)
229 {
230 assign(Data,nHeight,nWidth,nStride);
231 };
232
233 // destructor
234 ~mtr()
235 {
236 if (m_container)
237 delete m_container;
238 }
239
240 // assignment
241
242 mtr<T>& operator= (mtr<T>& matr)
243 {
244 ASSERTE(matr.m_height==m_height);
245 ASSERTE(matr.m_width ==m_width);
246 T* pSrcData=matr.m_data;
247 T* pDstData=m_data;
248 for(int y=0;y<m_height;y++,pSrcData+=matr.m_stride, pDstData+=m_stride)
249 for(int x=0; x<m_width; x++)
250 pDstData[x]=pSrcData[x];
251 return *this;
252 }
253
254 // filling of matrix with constant value
255 mtr<T>& operator= (T& val)
256 {
257 for(int y=0;y<m_height;y++)
258 getvec(y)=val;
259 return *this;
260 }
261
262//#ifdef _DEBUG
263// inline vec<T> operator[](int row)
264// {
265// ASSERTE(row<m_height+m_border);
266// ASSERTE(row>=-m_border);
267// return vec<T>(m_data+row*m_stride,m_width,m_border);
268// }
269 // return pointer to first element in row
270 inline T* operator[](int row) const
271 {
272 ASSERTE(row<m_height+m_border);
273 ASSERTE(row>=-m_border);
274 return m_data+row*m_stride;
275 }
276
277 // getting value by linear index
278 inline T& index(int idx)
279 {
280 ASSERTE(idx>=0);
281 ASSERTE(idx<m_size);
282 ASSERTE(m_width==m_stride);
283 return(m_data[idx]);
284 }
285
286//#else
287// inline T* operator[](int row)
288// {
289// return (m_data+row*m_stride);
290// }
291//#endif
292
293 // inplace multiplication by constant value
294 mtr<T>& operator*= (const T val)
295 {
296 for(int y=0;y<m_height;y++)
297 getvec(y)*=val;
298 return *this;
299 }
300
301 // multiplication by constant value
302 mtr<T> operator* (const T& val) const
303 {
304 mtr<T> res(*this);
305 return res*=val;
306 }
307
308 // multiplication by vector
309 vec<T> operator* (const vec<T>& vect)
310 {
311 ASSERTE(m_width==vect.m_size);
312 vec<T> res(m_height);
313 for(int y=0;y<m_height;y++)
314 res[y]=getvec(y)*vect;
315 return vec<T>(res);
316 }
317
318// mtr<T> operator* (const mtr<T>& matr)
319// {
320// ASSERTE(m_width==matr.m_height);
321// mtr<T> res(m_height,matr.m_width);
322// for(int row=0;row<res.m_height;row++)
323// for(int col=0;col<res.m_width;col++)
324// {
325// T sum(0);
326// for(int i=0;i<m_width;i++)
327// sum+=m_data[m_width*row+i]*matr.m_data[matr.m_width*i+col];
328// res.m_data[row*res.m_width+col]=sum;
329// }
330// return res;
331// }
332
333 // multiplication by matrix
334 mtr<T> operator* (const mtr<T>& matr)
335 {
336 ASSERTE(m_width==matr.m_height);
337 mtr<T> res(m_height, matr.m_width);
338 res.reset();
339 for(int y=0;y<m_height;y++)
340 {
341 vec<T>& thisvec=getvec(y);
342 vec<T>& resvec=res.getvec(y);
343 for(int x=0;x<m_width;x++)
344 resvec+=matr.getvec(x)*thisvec[x];
345 }
346 return res;
347 }
348
349 // inplace adding of value to all elements of matrix
350 mtr<T>& operator+= (const T &val)
351 {
352 for(int y=0;y<m_height;y++)
353 getvec(y)+=val;
354 return (*this);
355 }
356
357 // inplace summation of matrixes
358 mtr<T>& operator+= (const mtr<T> &matr)
359 {
360 ASSERTE (matr.m_size==m_size);
361 for(int y=0;y<m_height;y++)
362 getvec(y)+=matr.getvec(y);
363 return (*this);
364 }
365
366 // summation of matrices
367 mtr<T> operator+ (const mtr<T>& matr) const
368 {
369 ASSERTE (matr.m_size==m_size);
370 mtr<T> res(*this);
371 res+=matr;
372 return res;
373 }
374
375 //inplace substraction of matrix
376 mtr<T>& operator-= (const mtr<T> &matr)
377 {
378 ASSERTE (matr.m_size==m_size);
379 for(int y=0;y<m_height;y++)
380 getvec(y)-=matr.getvec(y);
381 return (*this);
382 }
383
384 // inplace subtraction of value from all elements of matix
385 mtr<T>& operator-= (const T &val)
386 {
387 for(int y=0;y<m_height;y++)
388 getvec(y)-=val;
389 return (*this);
390 }
391
392 // subtraction of matrixes
393 mtr<T> operator- (const mtr<T>& matr) const
394 {
395 ASSERTE (matr.m_size==m_size);
396 mtr <T> res(*this);
397 res-=matr;
398 return res;
399 }
400
401 // sign inversion
402 mtr<T> operator- () const
403 {
404 mtr<T> res(m_height,m_width);
405 for(int y=0;y<m_height;y++)
406 res.getvec(y)=-getvec(y);
407 return res;
408 }
409
410 // inplace division
411 mtr<T>& operator/=(const T val)
412 {
413 ASSERTE(val!=0);
414 for(int y=0;y<m_height;y++)
415 getvec(y)/=val;
416 return (*this);
417 }
418
419 // division
420 mtr<T> operator/ (const T val) const
421 {
422 mtr<T> res(*this);
423 res/=val;
424 return res;
425 }
426
427 // inplace shift
428 mtr<T>& operator>>=(const int shr)
429 {
430 ASSERTE(shr>=0);
431 for(int y=0;y<m_height;y++)
432 getvec(y)>>=shr;
433 return (*this);
434 }
435
436 // shift
437 mtr<T> operator>> (const int shr) const
438 {
439 ASSERTE(shr>=0);
440 mtr<T> res(*this);
441 res>>=shr;
442 return res;
443 }
444
445 // inplace left shift
446 mtr<T>& operator<<=(const int shl)
447 {
448 ASSERTE(shl>=0);
449 for(int y=0; y<m_height; y++)
450 getvec(y)<<=shl;
451 return (*this);
452 }
453
454 // left shift
455 mtr<T> operator<< (const int shl) const
456 {
457 ASSERTE(shl>=0);
458 mtr<T> res(*this);
459 res<<=shl;
460 return res;
461 }
462
463 // inplace AND with value
464 mtr<T>& operator&= (const T &val)
465 {
466 for(int y=0;y<m_height;y++)
467 getvec(y)&=val;
468 return (*this);
469 }
470
471
472 // inplace AND with matrix
473 mtr<T>& operator&= (const mtr<T> &matr)
474 {
475 ASSERTE (matr.m_size==m_size);
476 for(int y=0;y<m_height;y++)
477 getvec(y)&=matr.getvec(y);
478 return (*this);
479 }
480
481 // AND
482 mtr<T> operator& (const mtr<T>& matr) const
483 {
484 ASSERTE (matr.m_size==m_size);
485 mtr <T> res(*this);
486 res&=matr;
487 return res;
488 }
489
490 // inplace OR
491 mtr<T>& operator|= (const mtr<T> &matr)
492 {
493 ASSERTE (matr.m_size==m_size);
494 for(int y=0;y<m_height;y++)
495 getvec(y)|=matr.getvec(y);
496 return (*this);
497 }
498
499 // OR
500 mtr<T> operator| (const mtr<T>& matr) const
501 {
502 ASSERTE (matr.m_size==m_size);
503 mtr <T> res(*this);
504 res|=matr;
505 return res;
506 }
507
508 // inplace XOR
509 mtr<T>& operator^= (const mtr<T> &matr)
510 {
511 ASSERTE (matr.m_size==m_size);
512 for(int y=0;y<m_height;y++)
513 getvec(y)^=matr.getvec(y);
514 return (*this);
515 }
516
517 // inplace XOR with constant value
518 mtr<T>& operator^= (const T &val)
519 {
520 for(int y=0;y<m_height;y++)
521 getvec(y)^=val;
522 return (*this);
523 }
524
525 // XOR
526 mtr<T> operator^ (const mtr<T>& matr) const
527 {
528 ASSERTE (matr.m_size==m_size);
529 mtr <T> res(*this);
530 res^=matr;
531 return res;
532 }
533
534 // XOR
535 mtr<T> operator^ (const T& val) const
536 {
537 mtr <T> res(*this);
538 res^=val;
539 return res;
540 }
541
542 // NOT
543 mtr<T> operator ~ ()
544 {
545 mtr <T> res(*this);
546 T* r=res.m_data;
547 T* s=m_data;
548 for(int y=0;y<m_height;y++, r+=res.m_stride, s+=m_stride)
549 for(int x=0; x<m_width;x++)
550 r[x]=~s[x];
551
552 return res;
553 }
554
555
556
557 void set (const T val)
558 {
559 T* p=m_container;
560 for(int y=0; y<m_height; y++,p+=m_stride){
561 for(int x=0; x<m_width; x++){
562 p[x]=val;
563 }
564 }
565 }
566
567
568 /*
569 void SetBorder(const T val, int nBorderWidth)
570 {
571 T* p=m_container;
572 for(int y=0; y<m_border+nBorderWidth; y++,p+=m_stride){
573 for(int x=0; x<m_width; x++){
574 p[x]=val;
575 }
576 }
577
578 p=addr(nHeight-1-nBorderWidth,0);
579 for(int y=0; y<m_border+nBorderWidth; y++,p+=m_stride){
580 for(int x=0; x<m_width; x++){
581 p[x]=val;
582 }
583 }
584 }*/
585// void set(const T val, const T border)
586// {
587// T* p0;
588// T* p1;
589// for(p0=m_container,p1=m_data+m_size;p0<m_data;p0++,p1++)
590// {
591// *p0=border;
592// *p1=border;
593// }
594// for(int i=0;i<m_size;i++)
595// m_data[i]=val;
596// }
597 /*
598
599 template<class T> void SetData(T* Data)
600 {
601 for(int i=0;i<m_size;i++)
602 m_data[i]=Data[i];
603 }
604
605 template<class T> void GetData(T* Data)
606 {
607 for(int i=0;i<m_size;i++)
608 Data[i]=(T)m_data[i].value;
609 }
610
611 mtr<T>& operator*= (const mtr<T>& matr)
612 {
613 ASSERTE(m_width==m_height);
614 ASSERTE(m_width==matr.m_width);
615 ASSERTE(m_height==matr.m_height);
616 vec<T> res(m_height);
617 for(int row=0;row<m_height;row++)
618 res[row]=(*this)[row]*vec;
619 return res;
620 }
621
622
623 void InitConst(T &Value)
624 {
625 int m_size=m_height*m_width;
626 for(int i=0;i<m_size;i++)
627 m_data[i]=Value;
628 }
629*/
630// void InitConst(T &Value)
631// {
632// int m_size=m_height*m_width;
633// for(int i=0;i<m_size;i++)
634// m_data[i]=Value;
635// }
636
637//THIS FUNCTIONS WAS INSERTED FROM OLD VERSION OF THIS FILE!!!!!!!!!!!!!!!!!!!!!!!!!!
638 mtr<T> transpose()
639 {
640 mtr<T> Z(m_width,m_height);
641 for(int row=0;row<m_height;row++)
642 for(int col=0;col<m_width;col++)
643 Z[col][row]=(*this)[row][col];
644 return Z;
645 }
646
647 mtr<T>& diag(T val)
648 {
649 reset();
650 int size=(m_height<m_width)?(m_height):(m_width);
651 for(int i=0; i<size; i++)
652 (*this)[i][i]=val;
653 return (*this);
654 }
655
656
657
658
659
660// template<class T> void SetMatrix(mtr<T> &matr)
661// {
662// int m_size=m_height*m_width;
663// for(int i=0;i<m_size;i++)
664// m_data[i]=matr.m_data[i];
665// }
666
667 inline T* addr(int y,int x)
668 {
669 ASSERTE(y<m_height+m_border);
670 ASSERTE(y>=-m_border);
671 ASSERTE(x<m_width+m_border);
672 ASSERTE(x>=-m_border);
673 T* address=m_data+m_stride*y+x;
674 return address;
675 }
676
677 void reset()
678 {
679// ASSERTE(m_container);
680 if (m_container){
681 memset(m_container,0,(m_size+2*m_border*m_width)*sizeof(T));
682 }else{
683 memset(m_data,0,m_size*sizeof(T));
684 }
685 }
686
687 int sum()
688 {
689 int summ=0;
690 for(int y=0;y<m_height;y++)
691 {
692
693 summ+=getvec(y).sum();
694 }
695 return summ;
696 }
697
698
699 vec<T> getvec(int y) const
700 {
701 ASSERTE(y>=0 && y<m_height);
702 return vec<T>(m_data+y*m_stride,m_width,m_border);
703 }
704
705 vec<T> getcol(int x) const
706 {
707 ASSERTE(x>=0 && x<m_width);
708 vec<T> vect(m_height);
709 for(int i=0; i<m_height; i++)
710 vect[i]=(*this)[i][x];
711 return vect;
712
713
714 }
715/*
716 T min()
717 {
718 T m=m_data[0];
719 T* row=m_data;
720 for(int y=0; y<m_height; y++, row+=m_stride)
721 for(int x=0; x<m_width; x++)
722 if (row[x]<m)
723 m=row[x];
724 return m;
725 }
726
727 T max()
728 {
729 T m=m_data[0];
730 T* row=m_data;
731 for(int y=0; y<m_height; y++, row+=m_stride)
732 for(int x=0; x<m_width; x++)
733 if (row[x]>m)
734 m=row[x];
735 return m;
736 }
737*/
738 T minpos(int &ypos, int &xpos){
739 ypos=0;
740 xpos=0;
741 T m=m_data[0];
742 T* row=m_data;
743 for(int y=0; y<m_height; y++, row+=m_stride)
744 for(int x=0; x<m_width; x++)
745 if (row[x]<m){
746 m=row[x];
747 ypos=y;
748 xpos=x;
749 }
750 return m;
751 }
752
753 T maxpos(int &ypos, int &xpos){
754 ypos=0;
755 xpos=0;
756 T m=m_data[0];
757 T* row=m_data;
758 for(int y=0; y<m_height; y++, row+=m_stride)
759 for(int x=0; x<m_width; x++)
760 if (row[x]>m){
761 m=row[x];
762 ypos=y;
763 xpos=x;
764 }
765 return m;
766 }
767
768 void CopyTo(T* pData){
769 T* row=m_data;
770 for(int y=0; y<m_height; y++, row+=m_stride, pData+=m_width){
771 memcpy(pData, row, sizeof(T)*m_width);
772 }
773 }
774
775 void CopyFrom(T* pData){
776 T* row=m_data;
777 for(int y=0; y<m_height; y++, row+=m_stride, pData+=m_width){
778 memcpy(row, pData, sizeof(T)*m_width);
779 }
780 }
781
782 template <class T2> void ConvertTo(T2* pData){
783 T* row=m_data;
784 for(int y=0; y<m_height; y++, row+=m_stride, pData+=m_width){
785 for(int x=0; x<m_width; x++){
786 pData[x]=row[x];
787 }
788 }
789 }
790
791 template <class T2> void ConvertFrom(T2* pData){
792 T* row=m_data;
793 for(int y=0; y<m_height; y++, row+=m_stride, pData+=m_width){
794 for(int x=0; x<m_width; x++){
795 row[x]=pData[x];
796 }
797 }
798 }
799
800
801 /*
802 inline T max()
803 {
804 T Max=m_data[0];
805 T* row=m_data;
806 for(int y=0; y<m_height; y++, row+=m_stride)
807 for(int x=0; x<m_width; x++)
808 if (row[x]<min)
809 Max=row[x];
810 return Max;
811 }
812*/
813//THIS FUNCTIONS WAS INSERTED FROM OLD VERSION OF THIS FILE!!!!!!!!!!!!!!!!!!!!!!!!!!
814
815};
816
817
818/*
819template <class T1, class T2> convert(mtr<T1>& pSrcMtr1,mtr<T2>& pSrcMtr2)
820{
821 for(int i=0;i<pSrcMtr1.m_size;i++)
822 pSrcMtr2.m_data[i]=pSrcMtr1.m_data[i];
823}
824*/
825
826template<class T> mtr<T> DirectProduct(vec<T>& vSrc1,vec<T>& vSrc2)
827{
828 mtr<T> res(vSrc1.m_size, vSrc2.m_size);
829 for(int y=0; y<res.m_height; y++){
830 res.getvec(y)=vSrc2*vSrc1[y];
831 }
832 return res;
833
834}
835
836
837#ifndef __NM__
838
839 template<class T1, class T2> void DotMul(mtr<T1>& mSrcMtr1, mtr<T2>& mSrcMtr2, mtr<T2>& mDstMtr )
840 {
841 for(int y=0; y< mSrcMtr1.m_height; y++)
842 for(int x=0; x<mSrcMtr1.m_width; x++)
843 {
844 T2 res=mSrcMtr1[y][x]*mSrcMtr2[y][x];
845 mDstMtr[y][x]=res;
846 }
847 }
848
849 template<class T1, class T2> void GetSum(mtr<T1>& mSrcMtr1, T2& nResSum)
850 {
851 nResSum=0;
852 for(int y=0; y< mSrcMtr1.m_height; y++)
853 for(int x=0; x<mSrcMtr1.m_width; x++)
854 nResSum+=T2 (mSrcMtr1[y][x]);
855 }
856 template<class T1, class T2> void Convert(mtr<T1>& mSrcMtr, mtr<T2>& mDstMtr){
857 ASSERTE(mSrcMtr.m_height==mDstMtr.m_height);
858 ASSERTE(mSrcMtr.m_width ==mDstMtr.m_width);
859 for(int y=0; y<mSrcMtr.m_height; y++){
860 for(int x=0; x<mSrcMtr.m_width; x++){
861 mDstMtr[y][x]=(T2)mSrcMtr[y][x];
862 }
863 }
864 }
865#endif
866#endif
mtr
Definition: tmatrix.h:88
vec
Definition: tvector.h:80


nmpp: Исходный файл g:/nmpp/include/nmtl/tmatrix_spec.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tmatrix_spec.h
1
2// //
3// Header file of template of class mtr //
4// //
6#ifndef _TMATRIX_SPEC_H_INCLUDED_
7#define _TMATRIX_SPEC_H_INCLUDED_
8
9//#include "tnmtl.h"
10
11//THIS FUNCTIONS WAS INSERTED FROM OLD VERSION OF THIS FILE!!!!!!!!!!!!!!!!!!!!!!!!!!
12template<>
13 mtr<double>& mtr<double>::operator<<= (const int Shl)
14{
15 int m_size=m_height*m_width;
16 //double n=pow(2,Shl);
17 double n=1<<Shl;
18 for(int i=0;i<m_size;i++)
19 m_data[i]*=n;
20 return (*this);
21}
22//THIS FUNCTIONS WAS INSERTED FROM OLD VERSION OF THIS FILE!!!!!!!!!!!!!!!!!!!!!!!!!!
23
24
25#endif
mtr
Definition: tmatrix.h:88


nmpp: Исходный файл g:/nmpp/include/nmtl/tnmcube.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tnmcube.h
1
2// //
3// Header file of template of class nmmtr //
4// //
6#ifndef _TCUBE_H_INCLUDED_
7#define _TCUBE_H_INCLUDED_
8
9#include "crtdbg.h"
10//#ifdef __cplusplus
11
12
13//#include "tmatrix.h"
14#include <string.h>
15
16
17
18template<class T> class tmtr
19{
20protected:
21 T* m_container;
22public:
23 int m_stride;
24 int m_height, m_width;
25 T *m_data;
26
27 tmtr(tmtr<T>& mtr)
28 {
29 m_stride = mtr.m_stride;
30 m_height = mtr.m_height;
31 m_width = mtr.m_width;
32
33 m_container = new T[m_height*m_stride];
34 m_data = m_container;
35 memcpy(m_data, mtr.m_data, m_height*m_stride);
36 }
37
38
39 // constructor
40 //explicit
41 tmtr(int nHeight, int nWidth, int nStride = 0) :m_height(nHeight), m_width(nWidth)
42 {
43
44
45 nStride == 0? m_stride = nWidth: m_stride = nStride;
46 m_container = new T[m_height*m_stride];
47 m_data = m_container;
48 }
49 //explicit
50 tmtr(T* Data, int nHeight, int nWidth, int nStride=0) :m_data(Data), m_height(nHeight), m_width(nWidth)
51 {
52 nStride == 0 ? m_stride = m_width : m_stride = nStride;
53 _ASSERTE(m_stride >= m_width);
54 m_container = 0;
55 };
56
57 T* ref(int y, int x) {
58 return m_data + y*m_stride + x;
59 }
60 ~tmtr()
61 {
62 if (m_container)
63 delete m_container;
64 }
65
66 inline T* operator[](int row) const
67 {
68
69 //_ASSERTE(row < m_height + PADDING);
70 //_ASSERTE(row >= -PADDING);
71 return m_data + row*m_stride;
72 }
73 void fill(T& value) {
74 T* p = m_data;
75 for (int y = 0; y< m_height; y++, p += m_stride)
76 for (int x = 0; x<m_width; x++)
77 p[x] = value;
78 }
79};
80
82//
83// Class of nmmtres
84//
85
86
87 //--------------------------------------------------------------------
97
98 //--------------------------------------------------------------------
101 //--------------------------------------------------------------------
102
103template<class T> class tcube
104{
105protected:
106 T* m_container;
107public:
108 int m_height;
109 int m_width;
110 int m_depth;
111 int m_ystride;
112 int m_wstride;
113 int m_cstride;
114 T* m_data;
115
116
117 tcube(tcube<T>& cube)
118 {
119 m_height= cube.m_height;
120 m_width= cube.m_width;
121 m_depth= cube.m_depth;
122 m_ystride= cube.m_ystride;
123 m_wstride= cube.m_wstride;
124 m_cstride= cube.m_cstride;
125
126 m_container = new T[m_height*m_ystride];
127 m_data = m_container;
128 memcpy(m_data, cube.m_data, m_height*m_ystride);
129 }
130
131 explicit
132 tcube(int Height, int Width, int Depth, int WStride=0, int CStride=0):m_height(Height), m_width(Width), m_depth(Depth)
133 {
134 WStride == 0 ? m_wstride = m_width: m_wstride=WStride;
135 CStride == 0 ? m_cstride = m_depth: m_cstride=CStride;
136 _ASSERTE(m_width<=m_wstride);
137 m_ystride = m_cstride*m_wstride;
138 m_container=new T[m_height*m_ystride];
139 m_data=m_container;
140 }
141
142 explicit
143 tcube(T* data, int Height, int Width, int Depth, int WStride = 0, int CStride = 0) :m_data (data), m_height(Height), m_width(Width), m_depth(Depth)
144 {
145 WStride == 0 ? m_wstride = m_width : m_wstride = WStride;
146 CStride == 0 ? m_cstride = m_depth : m_cstride = CStride;
147 m_ystride = m_cstride*m_wstride;
148 m_container = 0;
149 }
150 tcube<T>& operator =(tcube<T>& cube) {
151 _ASSERTE(cube.m_height == m_height);
152 _ASSERTE(cube.m_width == m_width);
153 _ASSERTE(cube.m_depth == m_depth);
154 for (int y = 0; y < m_height; y++)
155 for (int x = 0; x < m_width; x++)
156 for (int c = 0; c < m_depth; c++)
157 (*this)[y][x][c] = cube[y][x][c];
158
159 return *this;
160 }
161 inline tmtr<T> operator [](int y) const
162 {
163 //_ASSERTE(y>=-PADDING);
164 //_ASSERTE(y<m_height+PADDING);
165 return tmtr<T>(m_data+y*m_ystride, m_width, m_depth, m_cstride);
166 }
167 ~tcube()
168 {
169 if (m_container) {
170 _ASSERTE(m_container != (T*)-1);
171 delete m_container;
172 m_container = (T*)-1;
173 }
174
175 }
176 inline T* data() {
177 return m_data;
178 }
179
180 void printChannel(int ch) {
181
182 char str[32];
183 int maxlen = 0;
184 for (int h = 0; h < m_height; h++) {
185 for (int w = 0; w < m_width; w++) {
186 float v = (*this)[h][w][ch];
187 sprintf(str, "%.2f ", v);
188 int len = strlen(str);
189 if (len>maxlen)
190 maxlen = len;
191 }
192 }
193
194 char spaces[] = " ";
195 for (int h = 0; h < m_height; h++) {
196 for (int w = 0; w < m_width; w++) {
197 float v = (*this)[h][w][ch];
198 sprintf(str, "%.2f ", v);
199 int len = strlen(str);
200 //strncat(str,spaces,maxlen-len);
201 printf(spaces + 10 - (maxlen - len));
202 printf(str);
203 }
204 printf("\n");
205 }
206
207 }
208
209
210 void fill(T value)
211 {
212 T* layer = m_data;
213 for (int y = 0; y < m_height; y++, layer += m_ystride) {
214 tmtr<float> mtr(layer, m_width, m_depth, m_cstride);
215 mtr.fill(value);
216 }
217
218 }
219};
220
221#endif
mtr
Definition: tmatrix.h:88
tcube
Definition: tnmcube.h:104
tmtr
Definition: tnmcube.h:19


nmpp: Исходный файл g:/nmpp/include/nmtl/tnmcvec.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tnmcvec.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: tnmcvec. $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.2 $ $Date: 2005/05/03 13:22:40 $
10//
19//------------------------------------------------------------------------
20#ifndef _Tnmcvec_H_INCLUDED_
21#define _Tnmcvec_H_INCLUDED_
22
23#ifdef __cplusplus
24
25#ifdef ENABLE_ASSERTE
26#include <crtdbg.h>
27#define ASSERTE _ASSERTE
28#else
29#define ASSERTE(expression)
30#endif
31
32#include "tnmint.h"
33
34//*****************************************************************************
53//*****************************************************************************
54
55
56
57template<class T> class nmcvec
58{
59protected:
60 cmplx<nmint<T> > * m_container;
61 bool m_flag_new;
62public:
63 int m_size;
64 cmplx<nmint<T> > * m_data;
65
66 nmcvec(cmplx<nmint<T> >* Data, int Size):m_data(Data),m_size(Size),m_flag_new(false){};
67
68 nmcvec(int Size,int Reserve=0):m_size(Size),m_flag_new(true)
69 {
70 m_container=new cmplx<nmint<T> >[m_size+2*Reserve];
71 m_data=m_container+Reserve;
72 }
73
74 //nmcvec(T * Data, int Size):m_data(Data),m_size(Size),m_flag_new(false){};
75
76
77 nmcvec(const nmcvec<T> &vec)
78 {
79 m_flag_new=true;
80 m_size=vec.m_size;
81 m_data=m_container=new T[m_size];
82 memcpy(m_data,vec.m_data,m_size*sizeof(T));
83 };
84
85
86 ~nmcvec()
87 {
88 if (m_flag_new)
89 delete []m_container;
90
91 }
92
93 nmcvec<T>& operator= (nmcvec<T>& vec)
94 {
95 ASSERTE(vec.m_size==m_size);
96 memcpy(m_data,vec.m_data,m_size*sizeof(T));
97 return *this;
98 }
99
100#ifndef NMTL_DISABLE_INDEX_CHECK
101 inline cmplx<nmint<T> >& operator [] (int idx)
102 {
103 ASSERTE(idx>=0);
104 ASSERTE(idx<m_size);
105 cmplx<nmint<T> >* res=(cmplx<nmint<T> >*)(m_data+idx);
106 return *res;
107 }
108#else
109 inline cmplx<nmint<T> >& operator [] (int idx)
110 {
111 return (cmplx<nmint<T> >*)(m_data+idx);
112 }
113#endif
114
115 template <class T2> nmcvec<T2>& operator*= (const cmplx<nmint<T2> > val)
116 {
117 for(int idx=0;idx<m_size;idx++)
118 m_data[idx]*=val.m_value;
119 return (*this);
120 }
121
122 template <class T2> nmcvec<T2> operator* (const cmplx<nmint<T2> >& val) const
123 {
124 nmcvec<T2> res(m_size);
125 for(int idx=0;idx<m_size;idx++)
126 res.m_data[idx]=m_data[idx]*val.m_value;
127 return res;
128 }
129 template <class T2> nmint<T2> operator* (const nmcvec<T2>& vec) const
130 {
131 ASSERTE(m_size==vec.m_size);
132 nmint<T2> res;
133 for (int idx=0;idx<m_size;idx++)
134 res.m_value+=m_data[idx]*vec.m_data[idx];
135 return res;
136 }
137
138 nmcvec<T>& operator+= (const cmplx<nmint<T> > &val)
139 {
140 for(int idx=0;idx<m_size;idx++)
141 m_data[idx]+=val.m_value;
142 return (*this);
143 }
144
145 nmcvec<T>& operator+= (const nmcvec<T> &vec)
146 {
147 ASSERTE (vec.m_size==m_size);
148 for(int idx=0;idx<m_size;idx++)
149 m_data[idx]+=vec.m_data[idx];
150 return (*this);
151 }
152
153 nmcvec<T> operator+ (const cmplx<nmint<T> >& val) const
154 {
155 nmcvec<T> res(*this);
156 res+=val;
157 return res;
158 }
159
160 nmcvec<T> operator+ (const nmcvec<T>& vec) const
161 {
162 ASSERTE (vec.m_size==m_size);
163 nmcvec<T> res(*this);
164 res+=vec;
165 return res;
166 }
167
168 nmcvec<T>& operator-= (const nmcvec<T> &vec)
169 {
170 ASSERTE (vec.m_size==m_size);
171 for(int idx=0;idx<m_size;idx++)
172 m_data[idx]-=vec.m_data[idx];
173 return (*this);
174 }
175
176 nmcvec<T> operator- (const nmcvec<T>& vec) const
177 {
178 ASSERTE (vec.m_size==m_size);
179 nmcvec <T> res(*this);
180 res-=vec;
181 return res;
182 }
183
184 nmcvec<T> operator- () const
185 {
186 nmcvec<T> res(*this);
187 for(int idx=0;idx<m_size;idx++)
188 m_data[idx]=-m_data[idx];
189 return res;
190 }
191
192 nmcvec<T>& operator/=(const cmplx<nmint<T> > val)
193 {
194 ASSERTE(val.m_value!=0);
195 for(int idx=0;idx<m_size;idx++)
196 m_data[idx]/=val.m_value;
197 return (*this);
198 }
199
200 nmcvec<T> operator/ (const T val) const
201 {
202 nmcvec<T> res(*this);
203 res/=val;
204 return res;
205 }
206
207 nmcvec<T>& operator>>=(const int shr)
208 {
209 ASSERTE(shr>=0);
210 if (shr==0) return(*this);
211 for(int idx=0;idx<m_size;idx++)
212 m_data[idx]>>=shr;
213 return (*this);
214 }
215
216 nmcvec<T> operator>> (const int shr) const
217 {
218 ASSERTE(shr>=0);
219 nmcvec<T> res(*this);
220 res>>=shr;
221 return res;
222 }
223
224 nmcvec<T>& operator<<=(const int shl)
225 {
226 ASSERTE(shl>=0);
227 if (shl==0) return(*this);
228 for(int idx=0;idx<m_size;idx++)
229 m_data[idx]<<=shl;
230 return (*this);
231 }
232
233 nmcvec<T> operator<< (const int shl) const
234 {
235 ASSERTE(shl>=0);
236 nmcvec<T> res(*this);
237 res<<=shl;
238 return res;
239 }
240
241 template<class T2> void SetData(T2* Data)
242 {
243 for(int i=0;i<m_size;i++)
244 m_data[i]=Data[i];
245 }
246
247 template<class T2> void GetData(T2* Data)
248 {
249 for(int i=0;i<m_size;i++)
250 Data[i]=(T2)m_data[i].value;
251 }
252
253 void SetConst(const cmplx<nmint<T > > val)
254 {
255 for (int idx=0;idx<m_size;idx++)
256 m_data[idx]=val;
257
258 }
259};
260/*
261template <class T> void InitInc2(nmcvec<T>& A,cmplx<nmint<T> > StartValue=0,cmplx<nmint<T> > Increment=1)
262{
263 for (int idx=0;idx<A.m_size;idx++,StartValue+=Increment)
264 A[idx]=StartValue;
265}
266*/
267//bool operator== (const nmcvec<T>& vec) const
268//bool operator!= (const nmcvec<T>& vec) const;
269
270#ifdef __NM__
271#else
272typedef nmcvec<char > nmvec8sc;
273typedef nmcvec<short > nmvec16sc;
274#endif
275typedef nmcvec<int > nmvec32sc;
276typedef nmcvec<long long> nmvec64sc;
277
278#endif
279
280#endif
vec
Definition: tvector.h:80
operator<<
__INLINE__ ostream & operator<<(ostream &s, mtr< unsigned char > &mtr)
Definition: nmtlio.h:64


nmpp: Исходный файл g:/nmpp/include/nmtl/tnmint.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tnmint.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: tnmint. $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.2 $ $Date: 2005/01/21 19:22:37 $
10//
20//------------------------------------------------------------------------
21
22#ifndef _TNMINT_H_INCLUDED_
23#define _TNMINT_H_INCLUDED_
24
25#ifdef __cplusplus
26//#include "tnmvecpack.h"
27
28
29
30
31
32/*
33#define CHECK_OVERFLOW_ON() _putenv("nmppsCheckOverflow_=On")
34#define CHECK_OVERFLOW_OFF() _putenv("nmppsCheckOverflow_=")
35#define ENABLE_CHECK_OVERFLOW() _putenv("nmppsCheckOverflow_=On")
36#define DISABLE_CHECK_OVERFLOW() _putenv("nmppsCheckOverflow_=")
37*/
38/*
39extern int nmppsCheckOverflow_;
40#define CHECK_OVERFLOW_ON() nmppsCheckOverflow_=1
41#define CHECK_OVERFLOW_OFF() nmppsCheckOverflow_=0
42#define ENABLE_CHECK_OVERFLOW() nmppsCheckOverflow_=1
43#define DISABLE_CHECK_OVERFLOW() nmppsCheckOverflow_=0
44
45#define CHECK_OVERFLOW() (nmppsCheckOverflow_==1) //Getting check overflow status
46*/
47
48//extern int nmppsCheckOverflow_;
49#define CHECK_OVERFLOW_ON()
50#define CHECK_OVERFLOW_OFF()
51#define ENABLE_CHECK_OVERFLOW()
52#define DISABLE_CHECK_OVERFLOW()
53
54#define CHECK_OVERFLOW() 0
55
56
57 //--------------------------------------------------------------------
60 //--------------------------------------------------------------------
61
62
63template <class T>class nmint
64{
65
66public:
67 T m_value; // m_value
68 T *m_pvalue;
69 int m_disp;
70 //---------- 0 operands constructors --------------------------------------------------
71 nmint(void):m_value(0){}
72 //---------- 1 operands constructors --------------------------------------------------
73
74 nmint(const T val)
75 {
76 m_value=val;
77 }
78
79
80 nmint<T>& operator= (const T& val)
81 {
82 m_value=val;
83 return (*this);
84 }
85
86 nmint<T>& operator= (T& val)
87 {
88 m_value=val;
89 return (*this);
90 }
91
92/*
93 nmint<T>& operator= (const nmint<T>& val)
94 {
95 m_value=val.m_value;
96 return (*this);
97 }
98
99 template <class T2> nmint<T>& operator= (const T2& value)
100 {
101 m_value=value;
102 return (*this);
103 }
104*/
105
106 nmint<T>& operator-= (const nmint<T>& val)
107 {
108 /*
109 if (CHECK_OVERFLOW())
110 {
111 __int64 tmp=m_value;
112 tmp-= val.m_value;
113 (tmp<<=(64-N))>>=(64-N);
114 if(tmp+val.m_value!=m_value)
115 OverflowMessage("Subtraction Overflow ( Res=A-B )",m_value,val.m_value,tmp,N,N,N);
116 m_value = tmp;
117 return (*this);
118 }
119 else
120 {*/
121 m_value-=val.m_value;
122 // (m_value<<=(64-N))>>=(64-N);
123 return (*this);
124 //}
125 }
126
127
128 nmint<T>& operator+= (const nmint<T>& val)
129 {
130// if (CHECK_OVERFLOW())
131// {
132// __int64 tmp=m_value;
133// tmp += val.m_value;
134// (tmp<<=(64-N))>>=(64-N);
135// if(tmp-val.m_value!=m_value)
136// OverflowMessage("Summation Overflow ( Res=A+B )",m_value,val.m_value,tmp,N,N,N);
137// m_value = tmp;
138// return (*this);
139// }
140// else
141// {
142// m_value+=val.m_value;
143// (m_value<<=(64-N))>>=(64-N);
144// return (*this);
145// }
146
147 m_value+=val.m_value;
148 return (*this);
149 }
150
151 nmint<T> operator- (const nmint<T>& val) const
152 {
153 nmint<T> Res(*this);
154 Res-=val;
155 return Res;
156 }
157
158 nmint<T> operator+ (const nmint<T>& val) const
159 {
160 nmint<T> Res(*this);
161 Res+=val;
162 return Res;
163 }
164
165 void operator++ (int)
166 {
167 (*this)+=1;
168 }
169
170 void operator-- (int)
171 {
172 (*this)-=1;
173 }
174
175
176
177
178
179 nmint<T>& operator*= (const nmint<T>& val)
180 {
181 m_value*=val.m_value;
182 return (*this);
183 }
184
185 template <class T2> nmint<T2> operator* (const nmint<T2>& val) const
186 {
187 nmint<T2> Res;
188 Res.m_value=m_value*val.m_value;
189 return Res;
190 }
191
192
193 inline nmint<T>& operator/= (const nmint<T>& val)
194 {
195 m_value/=val.m_value;
196 }
197
198 inline nmint<T> operator/ (const nmint<T>& val) const
199 {
200 nmint<T> Res(*this);
201 Res/=val;
202 return Res;
203 }
204
205 inline nmint<T>& operator>>= (const int y)
206 {
207 m_value>>=y;
208 return (*this);
209 }
210
211 inline nmint<T> operator>> (const int y) const
212 {
213 nmint<T> z(*this);
214 z>>=y;
215 return z;
216 }
217
218 inline nmint<T>& operator<<= (const int y)
219 {
220 m_value<<=y;
221 return (*this);
222 }
223
224 inline nmint<T> operator<< (const int n) const
225 {
226 nmint<T> Res(*this);
227 Res<<=n;
228 return Res;
229 }
230
231 inline nmint<T>& operator^= (nmint<T> &val)
232 {
233 m_value^=val.m_value;
234 return (*this);
235 }
236 inline nmint<T> operator^ (nmint<T> &val) const
237 {
238 nmint<T> Res(*this);
239 Res^=val;
240 return Res;
241 }
242
243 nmint<T> operator- () const
244 {
245 nmint<T> Res;
246 Res.m_value=-m_value;
247 return Res;
248 }
249
250 bool operator> (const nmint<T>& y) const
251 { return m_value>y.m_value;}
252 bool operator>= (const nmint<T>& y) const
253 { return m_value>=y.m_value;}
254 bool operator< (const nmint<T>& y) const
255 { return m_value<y.m_value;}
256 bool operator<= (const nmint<T>& y) const
257 { return m_value<=y.m_value;}
258 bool operator== (const nmint<T>& y) const
259 { return m_value==y.m_value;}
260 bool operator!= (const nmint<T>& y) const
261 { return m_value!=y.m_value;}
262};
263
264
265
266/*
267
268template <int N> void Round(double& X,nmint<T> &Y)
269{
270 Y=X+0.5;
271}
272
273
274
276// Conversion of to different types
277template<int N> inline double double_(const nmint<T> &x)
278{
279 return double(x.m_value);
280}
281
282template<int N> inline int int_(const nmint<T> &x)
283{
284 return int(x.m_value);
285}
286template<int N> inline short int shortint_(const nmint<T> &x)
287{
288 return short int(x.m_value);
289}
290*/
291
292#ifdef __NM__
293#else
294typedef nmint<char> nmint8s;
295typedef nmint<short> nmint16s;
296#endif
297
298typedef nmint<int> nmint32s;
299typedef nmint<long long> nmint64s;
300
301#endif
302
303#endif
operator<<
__INLINE__ ostream & operator<<(ostream &s, mtr< unsigned char > &mtr)
Definition: nmtlio.h:64


nmpp: Исходный файл g:/nmpp/include/nmtl/tnmmtr.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tnmmtr.h
1
2// //
3// Header file of template of class nmmtr //
4// //
6#ifndef _TNMMTR_H_INCLUDED_
7#define _TNMMTR_H_INCLUDED_
8
9//#ifdef __cplusplus
10
11
12#include "tnmvec.h"
13#include <string.h>
14
16//
17// Class of nmmtres
18//
19
20
21 //--------------------------------------------------------------------
31
32 //--------------------------------------------------------------------
35 //--------------------------------------------------------------------
36
37template<class T> class nmmtr
38{
39protected:
40 T* m_container;
41// bool m_flag_new;
42public:
43 int m_height,m_width,m_size,m_stride,m_border;
44 T* m_data;
45
46 nmmtr(int Height, int Width,int Border=0):m_height(Height), m_width(Width)//,m_flag_new(true)
47 {
48 m_border=Border;
49 m_container=new T[(m_height+2*m_border)*m_width];
50 m_data=m_container+m_width*m_border;
51 //nmppsMalloc_64s(&m_container,(m_height+2*m_border)*m_width);
52 //m_data=nmppsAddr_(m_container,m_border*m_width);
53 m_size=m_width*m_height;
54 m_stride=m_width;
55 ASSERTE(m_data!=NULL);
56 }
57
58//#ifndef NMTL_DISABLE_INDEX_CHECK
59// inline nmint<T>* operator[](int y)
60// {
61// ASSERTE(y>=-m_border);
62// ASSERTE(y<m_height+m_border);
63//
64// return (nmint<T>*) (m_data+y*m_stride);
65// }
66//#else
67 inline nmvec<T> operator [](int y) const
68 {
69 ASSERTE(y>=-m_border);
70 ASSERTE(y<m_height+m_border);
71 return nmvec<T>(m_data+y*m_stride,m_width);
72 }
73//#endif
74
75 //nmmtr(const nmmtr<T>& mtr)
76 nmmtr( nmmtr<T>& mtr)
77 {
78 m_height=mtr.m_height;
79 m_width =mtr.m_width;
80 m_border=mtr.m_border;
81 m_size =mtr.m_size;
82 m_container=new T[(m_height+2*m_border)*m_width];
83 m_data=m_container+m_width*m_border;
84
85 //m_flag_new=true;
86 m_stride=m_width;
87 for(int y=0; y<m_height; y++)
88 memcpy(m_data+y*m_stride,mtr.m_data+y*mtr.m_stride,m_width*sizeof(T));
89
90 };
91 nmmtr(T* Data,int Height,int Width,int Stride=0):m_height(Height), m_width(Width), m_data(Data),m_stride(Stride),m_border(0) //m_flag_new(FALSE),
92 {
93 if (m_stride==0)
94 m_stride=m_width;
95 m_size =m_height*m_width;
96 m_container=0;
97 };
98
99 nmmtr(const T* Data,int Height,int Width,int Stride=0):m_height(Height), m_width(Width), m_data((T*)Data),m_stride(Stride),m_border(0) //m_flag_new(false),
100 {
101 if (m_stride==0)
102 m_stride=m_width;
103 m_size =m_height*m_width;
104 m_container=0;
105 };
106
107 ~nmmtr()
108 {
109 if (m_container)
110 delete m_container;
111 }
112
113 //nmmtr<T>& operator= (const nmmtr<T>& mtr)
114 nmmtr<T>& operator= ( const nmmtr<T>& mtr)
115 {
116 ASSERTE(mtr.m_height==m_height);
117 ASSERTE(mtr.m_width ==m_width);
118 for(int y=0; y<m_height; y++)
119 (*this)[y]=mtr[y];
120 return *this;
121 }
122
123 nmmtr<T>& operator*= (const nmint<T>& val)
124 {
125 T* pData=m_data;
126 for(int y=0; y< m_height; y++,pData+=m_stride)
127 for(int x=0; x<m_width; x++)
128 pData[x]*=val.m_value;
129 return *this;
130 }
131
132 template <class T2> nmmtr<T2> operator* (const nmint<T2>& val)
133 {
134 nmmtr<T2> mRes(m_height,m_width);
135 T* pResData=mRes.m_data;
136 T* pData =m_data;
137 for(int y=0; y< m_height; y++,pResData+=m_stride,pData+=m_stride)
138 for(int x=0; x<m_width; x++)
139 pResData[x]=pData[x]*val.m_value;
140 return mRes;
141 }
142
143 template <class T2> nmvec<T2> operator* (const nmvec<T2>& vec)
144 {
145 ASSERTE(m_width==vec.m_size);
146 nmvec<T2> vRes(m_height);
147 T* pData =m_data;
148 for(int y=0;y<m_height;y++,pData+=m_stride)
149 {
150 T2 nSum(0);
151 for(int x=0; x<m_width; x++)
152 nSum+=pData[x]*vec.m_data[x];
153 vRes[y]=nSum;
154 }
155 return vRes;
156 }
157
158 template <class T2> nmmtr<T2> operator* (const nmmtr<T2>& mtr)
159 {
160 ASSERTE(m_width==mtr.m_height);
161 nmmtr<T2> mRes(m_height,mtr.m_width);
162 for(int y=0; y<mRes.m_height; y++)
163 for(int x=0; x<mRes.m_width; x++)
164 {
165 T2 sum(0);
166 for(int i=0;i<m_width;i++)
167 sum+=m_data[m_stride*y+i]*mtr.m_data[mtr.m_stride*i+x];
168 mRes.m_data[y*mRes.m_stride+x]=sum;
169 }
170 return mRes;
171 }
172
173 nmvec<T>& operator+= (const nmint<T> &val)
174 {
175 T* pData =m_data;
176 for(int y=0; y< m_height; y++,pData+=m_stride)
177 for(int x=0; x<m_width; x++)
178 pData[x]+=val.m_value;
179 return (*this);
180 }
181
182 nmmtr<T>& operator+= (const nmmtr<T> &mtr)
183 {
184 ASSERTE (mtr.m_size==m_size);
185
186 T* pParData =mtr.m_data;
187 T* pData =m_data;
188 for(int y=0; y< m_height; y++,pParData+=mtr.m_stride,pData+=m_stride)
189 for(int x=0; x<m_width; x++)
190 pData[x]+=pParData[x];
191
192 return (*this);
193 }
194
195 nmmtr<T> operator+ (const nmmtr<T>& mtr) const
196 {
197 ASSERTE (mtr.m_size==m_size);
198 nmmtr<T> res(*this);
199 res+=mtr;
200 return res;
201 }
202
203 nmmtr<T>& operator-= (const nmmtr<T> &mtr)
204 {
205 ASSERTE (mtr.m_size==m_size);
206 T* pParData =mtr.m_data;
207 T* pData =m_data;
208 for(int y=0; y< m_height; y++,pParData+=mtr.m_stride,pData+=m_stride)
209 for(int x=0; x<m_width; x++)
210 pData[x]-=pParData[x];
211 return (*this);
212 }
213
214 nmmtr<T> operator- (const nmmtr<T>& mtr) const
215 {
216 ASSERTE (mtr.m_size==m_size);
217 nmmtr <T> res(*this);
218 res-=mtr;
219 return res;
220 }
221
222 nmmtr<T> operator- () const
223 {
224 nmmtr<T> mRes(m_height,m_width);
225 T* pResData =mRes.m_data;
226 T* pData =m_data;
227 for(int y=0; y< m_height; y++, pResData+=mRes.m_stride, pData+=m_stride)
228 for(int x=0; x<m_width; x++)
229 pResData[x]=-pData[x];
230 return mRes;
231 }
232
233 nmmtr<T>& operator/=(const T val)
234 {
235 //ASSERTE(val.m_value!=0);
236 T* pData =m_data;
237 for(int y=0; y<m_height; y++, pData+=m_stride)
238 for(int x=0; x<m_width; x++)
239 pData[x]/=val;
240
241 return (*this);
242 }
243
244 nmmtr<T> operator/ (const nmint<T> val) const
245 {
246 nmmtr<T> mRes(*this);
247 mRes/=val.m_value;
248 return mRes;
249 }
250
251 nmmtr<T>& operator>>=(const int shr)
252 {
253 ASSERTE(shr>=0);
254 if (shr==0)
255 return(*this);
256 T* pData =m_data;
257 for(int y=0; y<m_height; y++, pData+=m_stride)
258 for(int x=0; x<m_width; x++)
259 pData[x]>>=shr;
260 return (*this);
261 }
262
263 nmmtr<T> operator>> (const int shr) const
264 {
265 ASSERTE(shr>=0);
266 nmmtr<T> mRes(*this);
267 mRes>>=shr;
268 return mRes;
269 }
270
271 nmmtr<T>& operator<<=(const int shl)
272 {
273 ASSERTE(shl>=0);
274 if (shl==0)
275 return(*this);
276 T* pData =m_data;
277 for(int y=0; y<m_height; y++, pData+=m_stride)
278 for(int x=0; x<m_width; x++)
279 pData[x]<<=shl;
280 return (*this);
281 }
282
283 nmmtr<T> operator<< (const int shl) const
284 {
285 ASSERTE(shl>=0);
286 nmmtr<T> mRes(*this);
287 mRes<<=shl;
288 return mRes;
289 }
290
291 nmmtr<T>& operator|= (const nmmtr<T> &mtr)
292 {
293 ASSERTE (mtr.m_size==m_size);
294 T* pParData =mtr.m_data;
295 T* pData =m_data;
296 for(int y=0; y< m_height; y++,pParData+=mtr.m_stride,pData+=m_stride)
297 for(int x=0; x<m_width; x++)
298 pData[x]|=pParData[x];
299 return (*this);
300 }
301
302 nmmtr<T> operator| (const nmmtr<T>& mtr) const
303 {
304 ASSERTE (mtr.m_size==m_size);
305 nmmtr <T> res(*this);
306 res|=mtr;
307 return res;
308 }
309
310 nmmtr<T>& operator&= (const nmmtr<T> &mtr)
311 {
312 ASSERTE (mtr.m_size==m_size);
313 T* pParData =mtr.m_data;
314 T* pData =m_data;
315 for(int y=0; y< m_height; y++,pParData+=mtr.m_stride,pData+=m_stride)
316 for(int x=0; x<m_width; x++)
317 pData[x]&=pParData[x];
318 return (*this);
319 }
320
321 nmmtr<T> operator& (const nmmtr<T>& mtr) const
322 {
323 ASSERTE (mtr.m_size==m_size);
324 nmmtr<T> res(*this);
325 res&=mtr;
326 return res;
327 }
328
329 nmmtr<T>& operator^= (const nmint<T> &val)
330 {
331 T* pData =m_data;
332 for(int y=0; y< m_height; y++,pData+=m_stride)
333 for(int x=0; x<m_width; x++)
334 pData[x]^=val.m_value;
335 return (*this);
336 }
337
338 nmmtr<T> operator^ (const nmint<T>& val) const
339 {
340 nmmtr<T> res(*this);
341 res&=val;
342 return res;
343 }
344
345 nmmtr<T> operator~ () const
346 {
347 nmmtr<T> res(m_height,m_width);
348 T* pResData =res.m_data;
349 T* pData =m_data;
350 for(int y=0; y< m_height; y++,pResData+=res.m_stride,pData+=m_stride)
351 for(int x=0; x<m_width; x++)
352 pResData[x]=~pData[x];
353 return res;
354 }
355
356
357
358 inline T* addr(int y, int x)
359 {
360 return m_data+y*m_stride+x;
361 }
362
363
364 inline nmvec<T> vec(int y)
365 {
366 return nmvec<T>(m_data+y*m_stride,m_width,m_border);
367 }
368
369void fill(nmint<T> &nVal)
370 {
371 T* pData =m_data;
372 for(int y=0; y< m_height; y++, pData+=m_stride)
373 for(int x=0; x<m_width; x++)
374 pData[x]=nVal.m_value;;
375 }
376
377 nmmtr<T> transpose()
378 {
379 nmmtr<T> Z(m_width,m_height);
380 for(int y=0;y<m_height;y++)
381 for(int x=0;x<m_width;x++)
382 Z[x][y]=(*this)[y][x];
383 return Z;
384 }
385
386 template<class T2> void set(nmmtr<T2>& mSrcMtr) const
387 {
388 T* pSrcData=mSrcMtr.m_data;
389 T* pDstData=m_data;
390 for(int y=0; y< m_height; y++, pDstData+=m_stride, pSrcData+=mSrcMtr.m_stride)
391 for(int x=0; x<m_width; x++)
392 *pDstData[x]=pSrcData[x];
393 }
394
395 template<class T2> void set(mtr<T2> &Mtr)
396 {
397 T* pData =m_data;
398 for(int y=0; y< m_height; y++, pData+=m_stride)
399 for(int x=0; x<m_width; x++)
400 pData[x]=Mtr[y][x];
401 }
402
403 void set(const T val)
404 {
405 for(int y=0; y< m_height; y++)
406 vec(y).set(val);
407 }
408
409 void reset()
410 {
411 if (m_width==m_stride)
412 {
413 if (m_container)
414 memset(m_container,0,m_stride*(m_height+m_border*2)*sizeof(T));
415 else
416 memset(m_data,0,m_stride*m_height*sizeof(T));
417 }
418 else
419 {
420 T* p=m_data;
421 for(int y=0;y<m_width;y++,p+=m_stride)
422 memset(p,0,m_width*sizeof(T));
423 }
424 }
425
426};
427
428#ifdef __NM__
429#else
430typedef nmmtr<char> nmmtr8s;
431typedef nmmtr<short> nmmtr16s;
432typedef nmmtr<unsigned char> nmmtr8u;
433typedef nmmtr<unsigned short> nmmtr16u;
434#endif
435
436typedef nmmtr<int> nmmtr32s;
437typedef nmmtr<long long> nmmtr64s;
438typedef nmmtr<unsigned int> nmmtr32u;
439typedef nmmtr<unsigned long long> nmmtr64u;
440
441#ifndef __NM__
442/*
443template <class T> inline ostream& operator<< (ostream& s, nmmtr<T>& mtr)
444{
445 s <<"{\n";
446 for(int y=0;y<mtr.m_height-1;y++)
447 {
448 s << "\t{ ";
449 for(int x=0;x<mtr.m_width-1;x++)
450 {
451 s<< (mtr[y][x]) << ", ";
452 }
453 s << (mtr[y][mtr.m_width-1]) << " },\n";
454 }
455
456 s << "\t{ ";
457 for(int x=0;x<mtr.m_width-1;x++)
458 {
459 s<< (mtr[mtr.m_height-1][x]) << ", ";
460 }
461 s << (mtr[mtr.m_height-1][mtr.m_width-1]) << " }\n";
462 s << "};\n";
463 return s;
464}
465
466
467
468inline ostream& AsmArray (ostream& s, nmmtr64s& mtr)
469{
470 s << " long[" << dec << mtr.m_width <<"*" << mtr.m_height << "]=(\n";
471 for(int y=0;y<mtr.m_height-1;y++)
472 {
473 for(int x=0;x<mtr.m_width;x++)
474 {
475
476 int hi,lo;
477 hi=int(mtr[y][x].m_value>>32);
478 lo=int(mtr[y][x].m_value);
479 s << "0"
480 << hex << setw(8) << setfill('0') << setiosflags(ios::uppercase) << hi << "_"
481 << hex << setw(8) << setfill('0') << setiosflags(ios::uppercase) << lo << "hl,";
482 }
483 s << "\n";
484 }
485
486 for(int x=0;x<mtr.m_width-1;x++)
487 {
488 int hi,lo;
489 hi=int(mtr[mtr.m_height-1][x].m_value>>32);
490 lo=int(mtr[mtr.m_height-1][x].m_value);
491 s << "0"
492 << hex << setw(8) << setfill('0') << setiosflags(ios::uppercase) << hi << "_"
493 << hex << setw(8) << setfill('0') << setiosflags(ios::uppercase) << lo << "hl,";
494 }
495
496 {
497 int hi,lo;
498 hi=int(mtr[mtr.m_height-1][mtr.m_width-1].m_value>>32);
499 lo=int(mtr[mtr.m_height-1][mtr.m_width-1].m_value);
500 s << "0"
501 << hex << setw(8) << setfill('0') << setiosflags(ios::uppercase) << hi << "_"
502 << hex << setw(8) << setfill('0') << setiosflags(ios::uppercase) << lo << "hl";
503 }
504 s << "\n);\n";
505
506 return s;
507}
508
509inline ostream& AsmArray (ostream& s, nmmtr8s& mtr)
510{
511 ASSERTE(mtr.m_width%8==0);
512 nmmtr64s mClone((__int64*)mtr.m_data,mtr.m_height,mtr.m_width/8,mtr.m_stride/8);
513 AsmArray(s,mClone);
514 return s;
515}
516*/
517 template<class T1, class T2> void DotMul(nmmtr<T1>& mSrcMtr1, nmmtr<T2>& mSrcMtr2, nmmtr<T2>& mDstMtr )
518 {
519 for(int y=0; y< mSrcMtr1.m_height; y++)
520 for(int x=0; x<mSrcMtr1.m_width; x++)
521 {
522 nmint<T2> res=mSrcMtr1[y][x]*mSrcMtr2[y][x];
523 mDstMtr[y][x]=res;
524 }
525 }
526
527 template<class T1, class T2> void GetSum(nmmtr<T1>& mSrcMtr1, nmint<T2>& nResSum)
528 {
529 nResSum=0;
530 for(int y=0; y< mSrcMtr1.m_height; y++)
531 for(int x=0; x<mSrcMtr1.m_width; x++)
532 nResSum+=nmint<T2> (mSrcMtr1[y][x].m_value);
533 }
534
535#endif
536
537#endif
538
539
540
541// template<class T2> void SetData(T2* Data)
542// {
543// for(int i=0;i<m_size;i++)
544// m_data[i]=Data[i];
545// }
546//
547// template<class T2> void GetData(T2* Data)
548// {
549// for(int i=0;i<m_size;i++)
550// Data[i]=(T2)m_data[i].value;
551// }
552
553// inline nmvec<T> GetVec(int y)
554// {
555// ASSERTE(y>=0);
556// ASSERTE(y<m_height);
557// return nmvec<T>(m_data+y*m_stride,m_width);
558// }
559//
560// inline nmvec<T> GetVec(int y,int x,int len)
561// {
562// ASSERTE(y>=0);
563// ASSERTE(y<m_height);
564// return nmvec<T>(m_data+y*m_stride+x,len);
565// }
566//
567// inline nmmtr<T>& SetMtr(int y,int x,nmmtr<T>& mSrc)
568// {
569// T* dst=m_data+y*m_width+x;
570// T* src=mSrc.m_data;
571// for(int i=0;i<mSrc.m_height;i++)
572// {
573// memcpy(dst,src,mSrc.m_stride*sizeof(T));
574// dst+=m_stride;
575// src+=mSrc.m_stride;
576// }
577// return *this;
578// }
579//
580// inline nmmtr<T>& GetMtr(int y,int x,nmmtr<T>& mRes)
581// {
582// T* src=m_data+y*m_stride+x;
583// T* dst=mRes.m_data;
584// for(int i=0;i<mRes.m_height;i++)
585// {
586// memcpy(dst,src,mRes.m_stride*sizeof(T));
587// dst+=mRes.m_stride;
588// src+=m_stride;
589// }
590// return mRes;
591// }
592//
593// inline nmmtr<T> GetMtr(int y,int x,int height,int width)
594// {
595// nmmtr<T> Res(height,width);
596// GetMtr(y,x,Res);
597// return Res;
598// }
599
600 // template<class T2> nmmtr<T2>& DotMul(const nmmtr<T2>& mMtr,nmmtr<T2>& mRes) const
601// {
602// T2* pMtrData =mMtr.m_data;
603// T2* pResData =mRes.m_data;
604// T* pData =m_data;
605// for(int y=0; y< m_height; y++, pResData+=mRes.m_stride, pMtrData+=mMtr.m_stride,pData +=m_stride)
606// for(int x=0; x<m_width; x++)
607// pResData[x]=pData[x]*pMtrData[x];
608// return mRes;
609// }
610//
611// template<class T2> nmmtr<T2> DotMul(const nmmtr<T2>& Mtr) const
612// {
613// nmmtr<T2> Res;
614// DotMul(Mtr,Res);
615// return Res;
616// }
617//
618// template<class T2> void GetSum(nmint<T2>& nRes) const
619// {
620// nRes=0;
621// T* pData =m_data;
622// for(int y=0; y< m_height; y++, pData+=m_stride)
623// for(int x=0; x<m_width; x++)
624// nRes+=pData[x];
625//
626// return nRes;
627// }
628
629// template<class T2> nmmtr<T>& DotMul(nmmtr<T2>& mMtr1, nmmtr<T>& mMtr2)
630// {
631// T2* pMtr1 =mMtr1.m_data;
632// T* pMtr2 =mMtr2.m_data;
633// T* pMtrRes=m_data;
634// for(int y=0; y< m_height; y++, pMtr1+=mMtr1.m_stride, pMtr2+=mMtr2.m_stride,pMtrRes+=m_stride)
635// for(int x=0; x<m_width; x++)
636// pMtrRes[x]=pMtr1[x]*pMtr2[x];
637// return (*this);
638// }
639
640// template<class T2> nmmtr<T2>& Convert(nmmtr<T2>& mRes) const
641// {
642// T* pData =m_data;
643// T* pResData=mRes.m_data;
644// for(int y=0; y< m_height; y++, pData+=m_stride, pResData+=mRes.m_stride)
645// for(int x=0; x<m_width; x++)
646// pResData[x]=pData[x];
647// return mRes;
648// }
649
650
651//#endif
mtr
Definition: tmatrix.h:88
nmmtr
Definition: tnmmtr.h:38
vec
Definition: tvector.h:80


nmpp: Исходный файл g:/nmpp/include/nmtl/tnmmtrpack.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tnmmtrpack.h
1
2// //
3// Header file of template of class nmmtrpack //
4// //
6#ifndef _Tnmmtrpack_H_INCLUDED_
7#define _Tnmmtrpack_H_INCLUDED_
8
9
10
11
12#include "tnmvec.h"
13#include <string.h>
14
16//
17// Class of nmmtrpackes
18//
19
20 //--------------------------------------------------------------------
30 //--------------------------------------------------------------------
31
32 //--------------------------------------------------------------------
35 //--------------------------------------------------------------------
36
37template<class T> class nmmtrpack
38{
39protected:
40 T* m_container;
41 bool m_flag_new;
42public:
43 int m_height,m_width,m_size,m_stride,m_border;
44 T* m_data;
45
46 nmmtrpack(int Height, int Width,int Border=0):m_height(Height), m_width(Width),m_flag_new(true)
47 {
48 m_border=Border;
49 //m_container=new T[(m_height+2*m_border)*m_width];
50 //m_data=m_container+m_width*m_border;
51 nmppsMalloc_64s(&m_container,(m_height+2*m_border)*m_width);
52 m_data=nmppsAddr_(m_container,m_border*m_width);
53 m_size=m_width*m_height;
54 m_stride=m_width;
55 _ASSERTE(m_data!=NULL);
56 }
57
58//#ifndef NMTL_DISABLE_INDEX_CHECK
59// __INLINE__ nmint<T>* operator[](int y)
60// {
61// _ASSERTE(y>=-m_border);
62// _ASSERTE(y<m_height+m_border);
63//
64// return (nmint<T>*) (m_data+y*m_stride);
65// }
66//#else
67 __INLINE__ nmvecpack<T> operator [](int y) const
68 {
69 _ASSERTE(y>=-m_border);
70 _ASSERTE(y<m_height+m_border);
71 return nmvecpack<T>(nmppsAddr_(m_data,y*m_stride),m_width);
72 }
73//#endif
74
75 nmmtrpack(const nmmtrpack<T>& mtr)
76 {
77 m_height=mtr.m_height;
78 m_width =mtr.m_width;
79 m_border=mtr.m_border;
80 m_size =mtr.m_size;
81 //m_container=new T[(m_height+2*m_border)*m_width];
82 //m_data=m_container+m_width*m_border;
83 nmppsMalloc_64s(&m_container,(m_height+2*m_border)*m_width);
84 m_data=nmppsAddr_(m_container,m_border*m_width);
85
86 m_flag_new=true;
87 m_stride=m_width;
88 for(int y=0; y<m_height; y++)
89 //memcpy(m_data+y*m_stride,mtr.m_data+y*mtr.m_stride,m_width*sizeof(T));
90 //nmppsCopy_(nmppsAddr_(mtr.m_data),y*mtr.m_stride)
91 (*this)[y]=mtr[y];
92
93 };
94 nmmtrpack(T* Data,int Height,int Width,int Stride=0):m_height(Height), m_width(Width), m_data(Data),m_flag_new(false),m_stride(Stride),m_border(0)
95 {
96 if (m_stride==0)
97 m_stride=m_width;
98 m_size =m_height*m_width;
99 m_container=0;
100 };
101
102 nmmtrpack(const T* Data,int Height,int Width,int Stride=0):m_height(Height), m_width(Width), m_data((T*)Data),m_flag_new(false),m_stride(Stride),m_border(0)
103 {
104 if (m_stride==0)
105 m_stride=m_width;
106 m_size =m_height*m_width;
107 m_container=0;
108 };
109
110 ~nmmtrpack()
111 {
112 if (m_flag_new)
113 //delete m_container;
114 nmppsFree(m_container);
115 }
116
117 nmmtrpack<T>& operator= (const nmmtrpack<T>& mtr)
118 {
119 _ASSERTE(mtr.m_height==m_height);
120 _ASSERTE(mtr.m_width ==m_width);
121 for(int y=0; y<m_height; y++)
122 (*this)[y]=mtr[y];
123 return *this;
124 }
125
126 nmmtrpack<T>& operator*= (const nmint<T>& val)
127 {
128 T* pData=m_data;
129 for(int y=0; y< m_height; y++,pData+=m_stride)
130 for(int x=0; x<m_width; x++)
131 pData[x]*=val.m_value;
132 return *this;
133 }
134
135 template <class T2> nmmtrpack<T2> operator* (const nmint<T2>& val)
136 {
137 nmmtrpack<T2> mRes(m_height,m_width);
138 T* pResData=mRes.m_data;
139 T* pData =m_data;
140 for(int y=0; y< m_height; y++,pResData+=m_stride,pData+=m_stride)
141 for(int x=0; x<m_width; x++)
142 pResData[x]=pData[x]*val.m_value;
143 return mRes;
144 }
145
146 template <class T2> nmvec<T2> operator* (const nmvec<T2>& vec)
147 {
148 _ASSERTE(m_width==vec.m_size);
149 nmvec<T2> vRes(m_height);
150 T* pData =m_data;
151 for(int y=0;y<m_height;y++,pData+=m_stride)
152 {
153 T2 nSum(0);
154 for(int x=0; x<m_width; x++)
155 nSum+=pData[x]*vec.m_data[x];
156 vRes[y]=nSum;
157 }
158 return vRes;
159 }
160
161 template <class T2> nmmtrpack<T2> operator* (const nmmtrpack<T2>& mtr)
162 {
163 _ASSERTE(m_width==mtr.m_height);
164 nmmtrpack<T2> mRes(m_height,mtr.m_width);
165 for(int y=0; y<mRes.m_height; y++)
166 for(int x=0; x<mRes.m_width; x++)
167 {
168 T2 sum(0);
169 for(int i=0;i<m_width;i++)
170 sum+=m_data[m_stride*y+i]*mtr.m_data[mtr.m_stride*i+x];
171 mRes.m_data[y*mRes.m_stride+x]=sum;
172 }
173 return mRes;
174 }
175
176 nmvec<T>& operator+= (const nmint<T> &val)
177 {
178 T* pData =m_data;
179 for(int y=0; y< m_height; y++,pData+=m_stride)
180 for(int x=0; x<m_width; x++)
181 pData[x]+=val.m_value;
182 return (*this);
183 }
184
185 nmmtrpack<T>& operator+= (const nmmtrpack<T> &mtr)
186 {
187 _ASSERTE (mtr.m_size==m_size);
188
189 T* pParData =mtr.m_data;
190 T* pData =m_data;
191 for(int y=0; y< m_height; y++,pParData+=mtr.m_stride,pData+=m_stride)
192 for(int x=0; x<m_width; x++)
193 pData[x]+=pParData[x];
194
195 return (*this);
196 }
197
198 nmmtrpack<T> operator+ (const nmmtrpack<T>& mtr) const
199 {
200 _ASSERTE (mtr.m_size==m_size);
201 nmmtrpack<T> res(*this);
202 res+=mtr;
203 return res;
204 }
205
206 nmmtrpack<T>& operator-= (const nmmtrpack<T> &mtr)
207 {
208 _ASSERTE (mtr.m_size==m_size);
209 T* pParData =mtr.m_data;
210 T* pData =m_data;
211 for(int y=0; y< m_height; y++,pParData+=mtr.m_stride,pData+=m_stride)
212 for(int x=0; x<m_width; x++)
213 pData[x]-=pParData[x];
214 return (*this);
215 }
216
217 nmmtrpack<T> operator- (const nmmtrpack<T>& mtr) const
218 {
219 _ASSERTE (mtr.m_size==m_size);
220 nmmtrpack <T> res(*this);
221 res-=mtr;
222 return res;
223 }
224
225 nmmtrpack<T> operator- () const
226 {
227 nmmtrpack<T> mRes(m_height,m_width);
228 T* pResData =mRes.m_data;
229 T* pData =m_data;
230 for(int y=0; y< m_height; y++, pResData+=mRes.m_stride, pData+=m_stride)
231 for(int x=0; x<m_width; x++)
232 pResData[x]=-pData[x];
233 return mRes;
234 }
235
236 nmmtrpack<T>& operator/=(const T val)
237 {
238 //_ASSERTE(val.m_value!=0);
239 T* pData =m_data;
240 for(int y=0; y<m_height; y++, pData+=m_stride)
241 for(int x=0; x<m_width; x++)
242 pData[x]/=val;
243
244 return (*this);
245 }
246
247 nmmtrpack<T> operator/ (const nmint<T> val) const
248 {
249 nmmtrpack<T> mRes(*this);
250 mRes/=val.m_value;
251 return mRes;
252 }
253
254 nmmtrpack<T>& operator>>=(const int shr)
255 {
256 _ASSERTE(shr>=0);
257 if (shr==0)
258 return(*this);
259 T* pData =m_data;
260 for(int y=0; y<m_height; y++, pData+=m_stride)
261 for(int x=0; x<m_width; x++)
262 pData[x]>>=shr;
263 return (*this);
264 }
265
266 nmmtrpack<T> operator>> (const int shr) const
267 {
268 _ASSERTE(shr>=0);
269 nmmtrpack<T> mRes(*this);
270 mRes>>=shr;
271 return mRes;
272 }
273
274 nmmtrpack<T>& operator<<=(const int shl)
275 {
276 _ASSERTE(shl>=0);
277 if (shl==0)
278 return(*this);
279 T* pData =m_data;
280 for(int y=0; y<m_height; y++, pData+=m_stride)
281 for(int x=0; x<m_width; x++)
282 pData[x]<<=shl;
283 return (*this);
284 }
285
286 nmmtrpack<T> operator<< (const int shl) const
287 {
288 _ASSERTE(shl>=0);
289 nmmtrpack<T> mRes(*this);
290 mRes<<=shl;
291 return mRes;
292 }
293
294 nmmtrpack<T>& operator|= (const nmmtrpack<T> &mtr)
295 {
296 _ASSERTE (mtr.m_size==m_size);
297 T* pParData =mtr.m_data;
298 T* pData =m_data;
299 for(int y=0; y< m_height; y++,pParData+=mtr.m_stride,pData+=m_stride)
300 for(int x=0; x<m_width; x++)
301 pData[x]|=pParData[x];
302 return (*this);
303 }
304
305 nmmtrpack<T> operator| (const nmmtrpack<T>& mtr) const
306 {
307 _ASSERTE (mtr.m_size==m_size);
308 nmmtrpack <T> res(*this);
309 res|=mtr;
310 return res;
311 }
312
313 nmmtrpack<T>& operator&= (const nmmtrpack<T> &mtr)
314 {
315 _ASSERTE (mtr.m_size==m_size);
316 T* pParData =mtr.m_data;
317 T* pData =m_data;
318 for(int y=0; y< m_height; y++,pParData+=mtr.m_stride,pData+=m_stride)
319 for(int x=0; x<m_width; x++)
320 pData[x]&=pParData[x];
321 return (*this);
322 }
323
324 nmmtrpack<T> operator& (const nmmtrpack<T>& mtr) const
325 {
326 _ASSERTE (mtr.m_size==m_size);
327 nmmtrpack<T> res(*this);
328 res&=mtr;
329 return res;
330 }
331
332 nmmtrpack<T>& operator^= (const nmint<T> &val)
333 {
334 T* pData =m_data;
335 for(int y=0; y< m_height; y++,pData+=m_stride)
336 for(int x=0; x<m_width; x++)
337 pData[x]^=val.m_value;
338 return (*this);
339 }
340
341 nmmtrpack<T> operator^ (const nmint<T>& val) const
342 {
343 nmmtrpack<T> res(*this);
344 res&=val;
345 return res;
346 }
347
348 nmmtrpack<T> operator~ () const
349 {
350 nmmtrpack<T> res(m_height,m_width);
351 T* pResData =res.m_data;
352 T* pData =m_data;
353 for(int y=0; y< m_height; y++,pResData+=res.m_stride,pData+=m_stride)
354 for(int x=0; x<m_width; x++)
355 pResData[x]=~pData[x];
356 return res;
357 }
358
359
360// template<class T2> void SetData(T2* Data)
361// {
362// for(int i=0;i<m_size;i++)
363// m_data[i]=Data[i];
364// }
365//
366// template<class T2> void GetData(T2* Data)
367// {
368// for(int i=0;i<m_size;i++)
369// Data[i]=(T2)m_data[i].value;
370// }
371
372 __INLINE__ nmvec<T> GetVec(int y)
373 {
374 _ASSERTE(y>=0);
375 _ASSERTE(y<m_height);
376 return nmvec<T>(m_data+y*m_stride,m_width);
377 }
378
379 __INLINE__ nmvec<T> GetVec(int y,int x,int len)
380 {
381 _ASSERTE(y>=0);
382 _ASSERTE(y<m_height);
383 return nmvec<T>(m_data+y*m_stride+x,len);
384 }
385
386 __INLINE__ nmmtrpack<T>& SetMtr(int y,int x,nmmtrpack<T>& mSrc)
387 {
388 T* dst=m_data+y*m_width+x;
389 T* src=mSrc.m_data;
390 for(int i=0;i<mSrc.m_height;i++)
391 {
392 memcpy(dst,src,mSrc.m_stride*sizeof(T));
393 dst+=m_stride;
394 src+=mSrc.m_stride;
395 }
396 return *this;
397 }
398
399 __INLINE__ nmmtrpack<T>& GetMtr(int y,int x,nmmtrpack<T>& mRes)
400 {
401 T* src=m_data+y*m_stride+x;
402 T* dst=mRes.m_data;
403 for(int i=0;i<mRes.m_height;i++)
404 {
405 memcpy(dst,src,mRes.m_stride*sizeof(T));
406 dst+=mRes.m_stride;
407 src+=m_stride;
408 }
409 return mRes;
410 }
411
412 __INLINE__ nmmtrpack<T> GetMtr(int y,int x,int height,int width)
413 {
414 nmmtrpack<T> Res(height,width);
415 GetMtr(y,x,Res);
416 return Res;
417 }
418
419 __INLINE__ T* Addr(int y, int x)
420 {
421 return m_data+y*m_stride+x;
422 }
423
424// template<class T2> nmmtrpack<T2>& DotMul(const nmmtrpack<T2>& mMtr,nmmtrpack<T2>& mRes) const
425// {
426// T2* pMtrData =mMtr.m_data;
427// T2* pResData =mRes.m_data;
428// T* pData =m_data;
429// for(int y=0; y< m_height; y++, pResData+=mRes.m_stride, pMtrData+=mMtr.m_stride,pData +=m_stride)
430// for(int x=0; x<m_width; x++)
431// pResData[x]=pData[x]*pMtrData[x];
432// return mRes;
433// }
434//
435// template<class T2> nmmtrpack<T2> DotMul(const nmmtrpack<T2>& Mtr) const
436// {
437// nmmtrpack<T2> Res;
438// DotMul(Mtr,Res);
439// return Res;
440// }
441//
442// template<class T2> void GetSum(nmint<T2>& nRes) const
443// {
444// nRes=0;
445// T* pData =m_data;
446// for(int y=0; y< m_height; y++, pData+=m_stride)
447// for(int x=0; x<m_width; x++)
448// nRes+=pData[x];
449//
450// return nRes;
451// }
452
453// template<class T2> nmmtrpack<T>& DotMul(nmmtrpack<T2>& mMtr1, nmmtrpack<T>& mMtr2)
454// {
455// T2* pMtr1 =mMtr1.m_data;
456// T* pMtr2 =mMtr2.m_data;
457// T* pMtrRes=m_data;
458// for(int y=0; y< m_height; y++, pMtr1+=mMtr1.m_stride, pMtr2+=mMtr2.m_stride,pMtrRes+=m_stride)
459// for(int x=0; x<m_width; x++)
460// pMtrRes[x]=pMtr1[x]*pMtr2[x];
461// return (*this);
462// }
463
464// template<class T2> nmmtrpack<T2>& Convert(nmmtrpack<T2>& mRes) const
465// {
466// T* pData =m_data;
467// T* pResData=mRes.m_data;
468// for(int y=0; y< m_height; y++, pData+=m_stride, pResData+=mRes.m_stride)
469// for(int x=0; x<m_width; x++)
470// pResData[x]=pData[x];
471// return mRes;
472// }
473
474 template<class T2> void Set(nmmtrpack<T2>& mSrcMtr) const
475 {
476 T* pSrcData=mSrcMtr.m_data;
477 T* pDstData=m_data;
478 for(int y=0; y< m_height; y++, pDstData+=m_stride, pSrcData+=mSrcMtr.m_stride)
479 for(int x=0; x<m_width; x++)
480 *pDstData[x]=pSrcData[x];
481 }
482
483
484 void InitConst(nmint<T> &nVal)
485 {
486 T* pData =m_data;
487 for(int y=0; y< m_height; y++, pData+=m_stride)
488 for(int x=0; x<m_width; x++)
489 pData[x]=nVal.m_value;;
490 }
491
492 nmmtrpack<T> transpose()
493 {
494 nmmtrpack<T> Z(m_width,m_height);
495 for(int y=0;y<m_height;y++)
496 for(int x=0;x<m_width;x++)
497 Z[x][y]=(*this)[y][x];
498 return Z;
499 }
500
501
502// template<class T2> void SetMatrix(mtr<T2> &Mtr)
503// {
504// T* pData =m_data;
505// for(int y=0; y< m_height; y++, pData+=m_stride)
506// for(int x=0; x<m_width; x++)
507// pData[x]=Mtr[y][x];
508// }
509
510 void reset()
511 {
512 if (m_width==m_stride)
513 {
514 if (m_container)
515 memset(m_container,0,m_stride*(m_height+m_border*2)*sizeof(T));
516 else
517 memset(m_data,0,m_stride*m_height*sizeof(T));
518 }
519 else
520 {
521 T* p=m_data;
522 for(int y=0;y<m_width;y++,p+=m_stride)
523 memset(p,0,m_width*sizeof(T));
524 }
525 }
526
527};
528
529typedef nmmtrpack<nm1> nmmtr1;
530typedef nmmtrpack<nm2s> nmmtr2s;
531typedef nmmtrpack<nm2u> nmmtr2u;
532typedef nmmtrpack<nm4s> nmmtr4s;
533typedef nmmtrpack<nm4u> nmmtr4u;
534
535#ifndef WIN32
536typedef nmmtrpack<nm8s> nmmtr8s;
537typedef nmmtrpack<nm8u> nmmtr8u;
538typedef nmmtrpack<nm16s> nmmtr16s;
539typedef nmmtrpack<nm16u> nmmtr16u;
540#endif
541
542
543
544
545
546
547# endif
548
mtr
Definition: tmatrix.h:88
nmmtr
Definition: tnmmtr.h:38
nmmtrpack
Definition: tnmmtrpack.h:38
nmvecpack
Definition: tnmvecpack.h:138
vec
Definition: tvector.h:80
GetVec
#define GetVec
Definition: tmatrix.h:60


nmpp: Исходный файл g:/nmpp/include/nmtl/tnmvec.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tnmvec.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: tnmvec. $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.2 $ $Date: 2004/12/21 16:52:31 $
10//
19//------------------------------------------------------------------------
20#ifndef _TNMVEC_H_INCLUDED_
21#define _TNMVEC_H_INCLUDED_
22#ifdef __cplusplus
23
24#include <string.h>
25#include "tnmint.h"
26//#include "nmpl.h"
27
28
29//*****************************************************************************
48//*****************************************************************************
49
50
51
52template<class T> class nmvec
53{
54protected:
55 T* m_container;
56 int m_border;
57public:
58 int size;
59 T* m_data;
60
61 nmvec(void* Data, int Size, int Border=0):m_data((T*)Data),size(Size),m_container(0),m_border(Border)
62 {
63
64 };
65
66 nmvec(int Size, int Border=0):size(Size),m_border(Border)
67 {
68 m_container=new T[size+2*m_border];
69 m_data=m_container+m_border;
70 //tmalloc(m_container,size+2*m_border);
71// nmppsMalloc_64s(&m_container,size+2*m_border);
72// m_data=nmppsAddr_(m_container,m_border);
73 }
74
75 nmvec(const nmvec<T> &vec)
76 {
77 size=vec.size;
78 m_border=vec.m_border;
79 m_container=new T[size+2*m_border];
80 m_data=m_container+m_border;
81 memcpy(m_data,vec.m_data,size*sizeof(T));
82// nmppsMalloc_64s(&m_container,size+2*m_border);
83// m_data=nmppsAddr_(m_container,m_border);
84// nmppsCopy_(vec.m_data,m_data,size);
85 };
86
87
88 ~nmvec()
89 {
90 if (m_container)
91 //delete []m_container;
92// nmppsFree(m_container);
93 m_container=0;
94
95
96 }
97
98 inline nmvec<T>& operator= (const nmvec<T>& vec) // спец. добавил const - nmcpp ругается
99 {
100 ASSERTE(vec.size==size);
101 memcpy(m_data,vec.m_data,size*sizeof(T));
102// nmppsCopy_(vec.m_data,m_data,size);
103 return *this;
104 }
105
106 inline nmint<T>& operator [] (int idx)
107 {
108 ASSERTE(idx>=-m_border);
109 ASSERTE(idx<size+m_border);
110 nmint<T>* res=(nmint<T>*)(m_data+idx);
111 return *res;
112 }
113
114 template <class T2> nmvec<T2>& operator*= (const nmint<T2> val)
115 {
116 for(int idx=0;idx<size;idx++)
117 m_data[idx]*=val.m_value;
118 return (*this);
119 }
120
122
123 template <class T2> nmvec<T2> operator* (const nmint<T2>& val) const
124 {
125 nmvec<T2> res(size);
126 for(int idx=0;idx<size;idx++)
127 res.m_data[idx]=m_data[idx]*val.m_value;
128 return res;
129 }
130 template <class T2> nmint<T2> operator* (const nmvec<T2>& vec) const
131 {
132 ASSERTE(size==vec.size);
133 nmint<T2> res;
134 for (int idx=0;idx<size;idx++)
135 res.m_value+=m_data[idx]*vec.m_data[idx];
136 return res;
137 }
138
140
141 nmvec<T>& operator+= (const nmint<T> &val)
142 {
143 for(int idx=0;idx<size;idx++)
144 m_data[idx]+=val.m_value;
145 return (*this);
146 }
147
148 nmvec<T>& operator+= (const nmvec<T> &vec)
149 {
150 ASSERTE (vec.size==size);
151 for(int idx=0;idx<size;idx++)
152 m_data[idx]+=vec.m_data[idx];
153 return (*this);
154 }
155
157
158 nmvec<T> operator+ (const nmint<T>& val) const
159 {
160 nmvec<T> res(*this);
161 res+=val;
162 return res;
163 }
164
165 nmvec<T> operator+ (const nmvec<T>& vec) const
166 {
167 ASSERTE (vec.size==size);
168 nmvec<T> res(*this);
169 res+=vec;
170 return res;
171 }
173
174 nmvec<T>& operator-= (const nmint<T> &val)
175 {
176 for(int idx=0;idx<size;idx++)
177 m_data[idx]-=val.m_value;
178 return (*this);
179 }
180
181 nmvec<T>& operator-= (const nmvec<T> &vec)
182 {
183 ASSERTE (vec.size==size);
184 for(int idx=0;idx<size;idx++)
185 m_data[idx]-=vec.m_data[idx];
186 return (*this);
187 }
188
190
191 nmvec<T> operator- () const
192 {
193 nmvec<T> res(*this);
194 for(int idx=0;idx<size;idx++)
195 m_data[idx]=-m_data[idx];
196 return res;
197 }
198
199 nmvec<T> operator- (const nmint<T>& val) const
200 {
201 nmvec<T> res(*this);
202 res-=val;
203 return res;
204 }
205
206
207 nmvec<T> operator- (const nmvec<T>& vec) const
208 {
209 ASSERTE (vec.size==size);
210 nmvec <T> res(*this);
211 res-=vec;
212 return res;
213 }
214
216
217
218 nmvec<T>& operator/=(const nmint<T> val)
219 {
220 ASSERTE(val.m_value!=0);
221 for(int idx=0;idx<size;idx++)
222 m_data[idx]/=val.m_value;
223 return (*this);
224 }
225
227 nmvec<T> operator/ (const T val) const
228 {
229 nmvec<T> res(*this);
230 res/=val;
231 return res;
232 }
233
235 nmvec<T>& operator>>=(const int shr)
236 {
237 ASSERTE(shr>=0);
238 if (shr==0)
239 return(*this);
240 for(int idx=0;idx<size;idx++)
241 m_data[idx]>>=shr;
242 return (*this);
243 }
244
245 nmvec<T> operator>> (const int shr) const
246 {
247 ASSERTE(shr>=0);
248 nmvec<T> res(*this);
249 res>>=shr;
250 return res;
251 }
252
253 nmvec<T>& operator<<=(const int shl)
254 {
255 ASSERTE(shl>=0);
256 if (shl==0)
257 return(*this);
258 for(int idx=0;idx<size;idx++)
259 m_data[idx]<<=shl;
260 return (*this);
261 }
262
263 nmvec<T> operator<< (const int shl) const
264 {
265 ASSERTE(shl>=0);
266 nmvec<T> res(*this);
267 res<<=shl;
268 return res;
269 }
271 nmvec<T>& operator|= (const nmint<T> &val)
272 {
273 for(int idx=0;idx<size;idx++)
274 m_data[idx]|=val;
275 return (*this);
276 }
277
278 nmvec<T>& operator|= (const nmvec<T> &vec)
279 {
280 ASSERTE (vec.size==size);
281 for(int idx=0;idx<size;idx++)
282 m_data[idx]|=vec.m_data[idx];
283 return (*this);
284 }
285
287 nmvec<T> operator| (const nmint<T>& val) const
288 {
289 nmvec <T> res(*this);
290 res|=val;
291 return res;
292 }
293
294 nmvec<T> operator| (const nmvec<T>& vec) const
295 {
296 ASSERTE (vec.size==size);
297 nmvec <T> res(*this);
298 res-=vec;
299 return res;
300 }
301
303 nmvec<T>& operator&= (const nmint<T> &val)
304 {
305 for(int idx=0;idx<size;idx++)
306 m_data[idx]&=val;
307 return (*this);
308 }
309
310 nmvec<T>& operator&= (const nmvec<T> &vec)
311 {
312 ASSERTE (vec.size==size);
313 for(int idx=0;idx<size;idx++)
314 m_data[idx]&=vec.m_data[idx];
315 return (*this);
316 }
318 nmvec<T> operator& (const nmint<T>& val) const
319 {
320 nmvec <T> res(*this);
321 res&=val;
322 return res;
323 }
324
325 nmvec<T> operator& (const nmvec<T>& vec) const
326 {
327 ASSERTE (vec.size==size);
328 nmvec <T> res(*this);
329 res&=vec;
330 return res;
331 }
332
334 nmvec<T>& operator^= (const nmint<T> &val)
335 {
336 for(int idx=0;idx<size;idx++)
337 m_data[idx]^=val;
338 return (*this);
339 }
340
341 nmvec<T>& operator^= (const nmvec<T> &vec)
342 {
343 ASSERTE (vec.size==size);
344 for(int idx=0;idx<size;idx++)
345 m_data[idx]^=vec.m_data[idx];
346 return (*this);
347 }
348
350 nmvec<T> operator^ (const nmint<T>& val) const
351 {
352 nmvec <T> res(*this);
353 res^=val;
354 return res;
355 }
356
357 nmvec<T> operator^ (const nmvec<T>& vec) const
358 {
359 nmvec <T> res(*this);
360 res^=vec;
361 return res;
362 }
363
364
365 nmvec<T>& operator~ () const
366 {
367 nmvec<T> res(*this);
368 for(int idx=0;idx<size;idx++)
369 res.m_data[idx]=~m_data[idx];
370 return res;
371 }
372
373
374 bool operator== (const nmvec<T>& vec) const
375 {
376 ASSERTE (vec.size==size);
377 for(int idx=0;idx<size;idx++)
378 if (m_data[idx]!=vec.m_data[idx])
379 return false;
380 return true;
381
382 }
383
384 bool operator!= (const nmvec<T>& vec) const
385 {
386 ASSERTE (vec.size==size);
387 for(int idx=0;idx<size;idx++)
388 if (m_data[idx]==vec.m_data[idx])
389 return false;
390 return true;
391 }
392
393// template<class T2> void setetData(T2* Data)
394// {
395// for(int i=0;i<size;i++)
396// m_data[i]=Data[i];
397// }
398//
399// template<class T2> void GetData(T2* Data)
400// {
401// for(int i=0;i<size;i++)
402// Data[i]=(T2)m_data[i].value;
403// }
404 void set(const T& val)
405 {
406 nmppsSet_(m_data,val,size);
407 }
408
409 void reset()
410 {
411 memset(m_container,0,(size+2*m_border)*sizeof(T));
412 }
413
414};
415
416#ifdef __NM__
417#else
418typedef nmvec<char> nmvec8s;
419typedef nmvec<unsigned char> nmvec8u;
420
421typedef nmvec< short> nmvec16s;
422typedef nmvec<unsigned short> nmvec16u;
423#endif
424
425typedef nmvec<int> nmvec32s;
426typedef nmvec<long long> nmvec64s;
427
428typedef nmvec<unsigned int> nmvec32u;
429typedef nmvec<unsigned long long> nmvec64u;
430
431
432#endif
433#endif
nmvecpack
Definition: tnmvecpack.h:138
vec
Definition: tvector.h:80
operator<<
__INLINE__ ostream & operator<<(ostream &s, mtr< unsigned char > &mtr)
Definition: nmtlio.h:64


nmpp: Исходный файл g:/nmpp/include/nmtl/tnmvecpack.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tnmvecpack.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: tnmvec. $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.1 $ $Date: 2004/11/22 13:50:17 $
10//
19//------------------------------------------------------------------------
20#ifndef _TNMVECPACK_H_INCLUDED_
21#define _TNMVECPACK_H_INCLUDED_
22
23#include <string.h>
24#include "tnmint.h"
25#include "nmpl.h"
26
27
28template <class T> class nmintpack
29{
30public:
31 T *m_container;
32 int m_disp;
33 nmintpack(T* base,int idx)
34 {
35 m_container=base;//(T*)((int*)(base)+intdisp(idx));
36 m_disp=idx;//bitdisp(idx);
37 }
38
39 nmintpack<T>& operator= (const nmintpack<T>& val)
40 {
41 int n=val;
42 nmppsPut_((T*)m_container,m_disp,n);
43 return (*this);
44 }
45
46 nmintpack<T>& operator= (const int& val)
47 {
48 nmppsPut_((T*)m_container,m_disp,val);
49 return (*this);
50 }
51
52 operator int (void) const
53 {
54
55 int n;
56 n=nmppsGetVal_((T*)m_container,m_disp);
57 return n;//get();
58 }
59
60
61 __INLINE__ int intdisp(int indx);
62 __INLINE__ int bitdisp(int indx);
63};
64
65__INLINE__ int nmintpack<nm1>::intdisp(int indx)
66{
67 return indx>>5;
68}
69
70__INLINE__ int nmintpack<nm2s>::intdisp(int indx)
71{
72 return indx>>4;
73}
74
75__INLINE__ int nmintpack<nm4s>::intdisp(int indx)
76{
77 return indx>>3;
78}
79
80__INLINE__ int nmintpack<nm8s>::intdisp(int indx)
81{
82 return indx>>2;
83}
84
85__INLINE__ int nmintpack<nm16s>::intdisp(int indx)
86{
87 return indx>>1;
88}
89
90__INLINE__ int nmintpack<nm1>::bitdisp(int indx)
91{
92 return indx&0x1F;
93}
94__INLINE__ int nmintpack<nm2s>::bitdisp(int indx)
95{
96 return indx&0xF;
97}
98__INLINE__ int nmintpack<nm4s>::bitdisp(int indx)
99{
100 return indx&0x7;
101}
102
103__INLINE__ int nmintpack<nm8s>::bitdisp(int indx)
104{
105 return indx&3;
106}
107
108__INLINE__ int nmintpack<nm16s>::bitdisp(int indx)
109{
110 return indx&2;
111}
112
113
114//*****************************************************************************
133//*****************************************************************************
134
135
136
137template<class T> class nmvecpack
138{
139protected:
140 T* m_container;
141 int m_border;
142public:
143 int m_size;
144 T* m_data;
145
146
147
148 nmvecpack(void* Data, int Size, int Border=0):m_data((T*)Data),m_size(Size),m_container(0),m_border(Border){};
149
150 nmvecpack(int Size, int Border=0):m_size(Size),m_border(Border)
151 {
152 //m_container=new T[m_size+2*m_border];
153 //m_data=m_container+m_border;
154 //tmalloc(m_container,m_size+2*m_border);
155 nmppsMalloc_64s((T**)&m_container,m_size+2*m_border);
156 nmintpack<T> first(m_container,m_border);
157 m_data=first.m_container;// ERROR here nmppsAddr_((T*)m_container,m_border);
158 reset();
159
160 }
161
162 nmvecpack(const nmvecpack<T> &vec)
163 {
164 m_size=vec.m_size;
165 m_border=vec.m_border;
166 //m_container=new T[m_size+2*m_border];
167 //m_data=m_container+m_border;
168 //memcpy(m_data,vec.m_data,m_size*sizeof(T));
169 nmppsMalloc_64s(&m_container,m_size+2*m_border);
170 m_data=nmppsAddr_(m_container,m_border);
171 nmppsCopy_(vec.m_data,m_data,m_size);
172 };
173
174
175 ~nmvecpack()
176 {
177 if (m_container)
178 //delete []m_container;
179 nmppsFree(m_container);
180 m_container=0;
181 }
182
183 nmvecpack<T>& operator= (const nmvecpack<T>& vec) // спец. добавил const - nmcpp ругается
184 {
185 _ASSERTE(vec.m_size==m_size);
186 //memcpy(m_data,vec.m_data,m_size*sizeof(T));
187 nmppsCopy_(vec.m_data,m_data,m_size);
188 return *this;
189 }
190
191 __INLINE__ nmintpack<T> operator [] (int idx)
192 {
193 //_ASSERTE(idx>=-m_border);
194 //_ASSERTE(idx<m_size+m_border);
195 nmintpack<T> nm(m_data,idx);
196 return nm;
197 }
198
199 template <class T2> nmvecpack<T2>& operator*= (const nmint<T2> val)
200 {
201 for(int idx=0;idx<m_size;idx++)
202 m_data[idx]*=val.m_value;
203 return (*this);
204 }
205
207
208 template <class T2> nmvecpack<T2> operator* (const nmint<T2>& val) const
209 {
210 nmvecpack<T2> res(m_size);
211 for(int idx=0;idx<m_size;idx++)
212 res.m_data[idx]=m_data[idx]*val.m_value;
213 return res;
214 }
215 template <class T2> nmint<T2> operator* (const nmvecpack<T2>& vec) const
216 {
217 _ASSERTE(m_size==vec.m_size);
218 nmint<T2> res;
219 for (int idx=0;idx<m_size;idx++)
220 res.m_value+=m_data[idx]*vec.m_data[idx];
221 return res;
222 }
223
225
226 nmvecpack<T>& operator+= (const nmint<T> &val)
227 {
228 for(int idx=0;idx<m_size;idx++)
229 m_data[idx]+=val.m_value;
230 return (*this);
231 }
232
233 nmvecpack<T>& operator+= (const nmvecpack<T> &vec)
234 {
235 _ASSERTE (vec.m_size==m_size);
236 for(int idx=0;idx<m_size;idx++)
237 m_data[idx]+=vec.m_data[idx];
238 return (*this);
239 }
240
242
243 nmvecpack<T> operator+ (const nmint<T>& val) const
244 {
245 nmvecpack<T> res(*this);
246 res+=val;
247 return res;
248 }
249
250 nmvecpack<T> operator+ (const nmvecpack<T>& vec) const
251 {
252 _ASSERTE (vec.m_size==m_size);
253 nmvecpack<T> res(*this);
254 res+=vec;
255 return res;
256 }
258
259 nmvecpack<T>& operator-= (const nmint<T> &val)
260 {
261 for(int idx=0;idx<m_size;idx++)
262 m_data[idx]-=val.m_value;
263 return (*this);
264 }
265
266 nmvecpack<T>& operator-= (const nmvecpack<T> &vec)
267 {
268 _ASSERTE (vec.m_size==m_size);
269 for(int idx=0;idx<m_size;idx++)
270 m_data[idx]-=vec.m_data[idx];
271 return (*this);
272 }
273
275
276 nmvecpack<T> operator- () const
277 {
278 nmvecpack<T> res(*this);
279 for(int idx=0;idx<m_size;idx++)
280 m_data[idx]=-m_data[idx];
281 return res;
282 }
283
284 nmvecpack<T> operator- (const nmint<T>& val) const
285 {
286 nmvecpack<T> res(*this);
287 res-=val;
288 return res;
289 }
290
291
292 nmvecpack<T> operator- (const nmvecpack<T>& vec) const
293 {
294 _ASSERTE (vec.m_size==m_size);
295 nmvecpack <T> res(*this);
296 res-=vec;
297 return res;
298 }
299
301
302
303 nmvecpack<T>& operator/=(const nmint<T> val)
304 {
305 _ASSERTE(val.m_value!=0);
306 for(int idx=0;idx<m_size;idx++)
307 m_data[idx]/=val.m_value;
308 return (*this);
309 }
310
312 nmvecpack<T> operator/ (const T val) const
313 {
314 nmvecpack<T> res(*this);
315 res/=val;
316 return res;
317 }
318
320 nmvecpack<T>& operator>>=(const int shr)
321 {
322 _ASSERTE(shr>=0);
323 if (shr==0)
324 return(*this);
325 for(int idx=0;idx<m_size;idx++)
326 m_data[idx]>>=shr;
327 return (*this);
328 }
329
330 nmvecpack<T> operator>> (const int shr) const
331 {
332 _ASSERTE(shr>=0);
333 nmvecpack<T> res(*this);
334 res>>=shr;
335 return res;
336 }
337
338 nmvecpack<T>& operator<<=(const int shl)
339 {
340 _ASSERTE(shl>=0);
341 if (shl==0)
342 return(*this);
343 for(int idx=0;idx<m_size;idx++)
344 m_data[idx]<<=shl;
345 return (*this);
346 }
347
348 nmvecpack<T> operator<< (const int shl) const
349 {
350 _ASSERTE(shl>=0);
351 nmvecpack<T> res(*this);
352 res<<=shl;
353 return res;
354 }
356 nmvecpack<T>& operator|= (const nmint<T> &val)
357 {
358 for(int idx=0;idx<m_size;idx++)
359 m_data[idx]|=val;
360 return (*this);
361 }
362
363 nmvecpack<T>& operator|= (const nmvecpack<T> &vec)
364 {
365 _ASSERTE (vec.m_size==m_size);
366 for(int idx=0;idx<m_size;idx++)
367 m_data[idx]|=vec.m_data[idx];
368 return (*this);
369 }
370
372 nmvecpack<T> operator| (const nmint<T>& val) const
373 {
374 nmvecpack <T> res(*this);
375 res|=val;
376 return res;
377 }
378
379 nmvecpack<T> operator| (const nmvecpack<T>& vec) const
380 {
381 _ASSERTE (vec.m_size==m_size);
382 nmvecpack <T> res(*this);
383 res-=vec;
384 return res;
385 }
386
388 nmvecpack<T>& operator&= (const nmint<T> &val)
389 {
390 for(int idx=0;idx<m_size;idx++)
391 m_data[idx]&=val;
392 return (*this);
393 }
394
395 nmvecpack<T>& operator&= (const nmvecpack<T> &vec)
396 {
397 _ASSERTE (vec.m_size==m_size);
398 for(int idx=0;idx<m_size;idx++)
399 m_data[idx]&=vec.m_data[idx];
400 return (*this);
401 }
403 nmvecpack<T> operator& (const nmint<T>& val) const
404 {
405 nmvecpack <T> res(*this);
406 res&=val;
407 return res;
408 }
409
410 nmvecpack<T> operator& (const nmvecpack<T>& vec) const
411 {
412 _ASSERTE (vec.m_size==m_size);
413 nmvecpack <T> res(*this);
414 res&=vec;
415 return res;
416 }
417
419 nmvecpack<T>& operator^= (const nmint<T> &val)
420 {
421 for(int idx=0;idx<m_size;idx++)
422 m_data[idx]^=val;
423 return (*this);
424 }
425
426 nmvecpack<T>& operator^= (const nmvecpack<T> &vec)
427 {
428 _ASSERTE (vec.m_size==m_size);
429 for(int idx=0;idx<m_size;idx++)
430 m_data[idx]^=vec.m_data[idx];
431 return (*this);
432 }
433
435 nmvecpack<T> operator^ (const nmint<T>& val) const
436 {
437 nmvecpack <T> res(*this);
438 res^=val;
439 return res;
440 }
441
442 nmvecpack<T> operator^ (const nmvecpack<T>& vec) const
443 {
444 nmvecpack <T> res(*this);
445 res^=vec;
446 return res;
447 }
448
449
450 nmvecpack<T>& operator~ () const
451 {
452 nmvecpack<T> res(*this);
453 for(int idx=0;idx<m_size;idx++)
454 res.m_data[idx]=~m_data[idx];
455 return res;
456 }
457
458
459 bool operator== (const nmvecpack<T>& vec) const
460 {
461 _ASSERTE (vec.m_size==m_size);
462 for(int idx=0;idx<m_size;idx++)
463 if (m_data[idx]!=vec.m_data[idx])
464 return false;
465 return true;
466
467 }
468
469 bool operator!= (const nmvecpack<T>& vec) const
470 {
471 _ASSERTE (vec.m_size==m_size);
472 for(int idx=0;idx<m_size;idx++)
473 if (m_data[idx]==vec.m_data[idx])
474 return false;
475 return true;
476 }
477
478 template<class T2> void SetData(T2* Data)
479 {
480 for(int i=0;i<m_size;i++)
481 m_data[i]=Data[i];
482 }
483
484 template<class T2> void GetData(T2* Data)
485 {
486 for(int i=0;i<m_size;i++)
487 Data[i]=(T2)m_data[i].value;
488 }
489
490 void reset()
491 {
492 memset(m_container,0,(m_size+2*m_border)*sizeof(T));
493 }
494
495
496
497};
498
499
500
501
502typedef nmvecpack<nm1> nmvec1;
503typedef nmvecpack<nm2s> nmvec2s;
504typedef nmvecpack<nm2u> nmvec2u;
505typedef nmvecpack<nm4s> nmvec4s;
506typedef nmvecpack<nm4u> nmvec4u;
507
508#ifndef WIN32
509typedef nmvecpack<nm8s> nmvec8s;
510typedef nmvecpack<nm8u> nmvec8u;
511typedef nmvecpack<nm16s> nmvec16s;
512typedef nmvecpack<nm16u> nmvec16u;
513#endif
514
515
516#endif
nmintpack
Definition: tnmvecpack.h:29
nmvecpack
Definition: tnmvecpack.h:138
vec
Definition: tvector.h:80


nmpp: Исходный файл g:/nmpp/include/nmtl/tvector.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmtl
tvector.h
1//------------------------------------------------------------------------
2//
3// $Workfile:: tVector. $
4//
5// Векторно-матричная библиотека
6//
7// Copyright (c) RC Module Inc.
8//
9// $Revision: 1.7 $ $Date: 2005/06/29 14:14:06 $
10//
19//------------------------------------------------------------------------
20#ifndef _TVECTOR_H_INCLUDED_
21#define _TVECTOR_H_INCLUDED_
22
23#ifdef ENABLE_ASSERTE
24#include <crtdbg.h>
25#define ASSERTE _ASSERTE
26#else
27#define ASSERTE(expression)
28#endif
29
30
31#include<string.h>
32#include "nmtype.h"
33#include <math.h>
34
35
36
37
38
39template <class T> class mtr;
40
41
42//#include "tMatrix.h"
43
44//*****************************************************************************
75//*****************************************************************************
76
77//void* allocate()
78
79template<class T> class vec
80{
81protected:
82 T* m_container;
83public:
84 int m_border;
85 int size;
86 T *m_data;
87
88 explicit vec()
89 {
90 size=0;
91 m_border=0;
92 m_container=0;
93 m_data=0;
94 }
95
96 void resize(int Size, int Border=0)
97 {
98 if (m_container)
99 delete []m_container;
100 size=Size;
101 m_border=Border;
102 m_container=new T[size+2*m_border];
103 m_data=m_container+m_border;
104 }
105
106 explicit vec(T * Data, int Size, int Border=0):m_data(Data),size(Size),m_border(Border),m_container(0)
107 {
108
109 };
110
111 explicit vec(int Size, int Border=0)
112 {
113 size=Size;
114 m_border=Border;
115 m_container=new T[size+2*m_border];
116 m_data=m_container+m_border;
117 }
118
119 /*explicit*/ vec(const vec<T> &vect)
120 {
121 m_border=vect.m_border;
122 size =vect.size;
123 m_container=new T[size+2*m_border];
124 m_data=m_container+m_border;
125 for (int idx=0;idx<size;idx++)
126 m_data[idx]=vect.m_data[idx];
127 };
128/*
129 template<class T2> explicit vec(const vec<T2> &vect)
130 {
131 m_border=vect.m_border;
132 size =vect.size;
133 m_container=new T[size+2*m_border];
134 m_data=m_container+m_border;
135 for (int idx=0;idx<size;idx++)
136 m_data[idx]=vect.m_data[idx];
137 };
138
139*/
140 ~vec()
141 {
142 if (m_container)
143 delete []m_container;
144 }
145
146 void reset()
147 {
148 ASSERTE(m_container);
149 if (m_container)
150 memset(m_container,0,(size+2*m_border)*sizeof(T));
151 else
152 memset(m_data,0,size*sizeof(T));
153 }
154
155 vec<T>& InitRamp(T StartValue, T Increment)
156 {
157 m_data[0]=StartValue;
158 for(int i=1; i<size; i++){
159 m_data[i]=m_data[i-1]+Increment;
160 }
161 return *this;
162 }
163
164 int MaxPos(T& maxval)
165 {
166 maxval=m_data[0];
167 int maxpos=0;
168 for(int i=1; i<size; i++) {
169 if (maxval<m_data[i]){
170 maxpos=i;
171 maxval=m_data[i];
172 }
173 }
174 return maxpos;
175 }
176 int MinPos(T& minval)
177 {
178 minval=m_data[0];
179 int minpos=0;
180 for(int i=1; i<size; i++) {
181 if (minval>m_data[i]){
182 minpos=i;
183 minval=m_data[i];
184 }
185 }
186 return minpos;
187 }
188
189 double Mean()
190 {
191 T Res=m_data[0];
192 for(int i=1; i<size; i++) {
193 Res+=m_data[i];
194 }
195 return double(Res)/size;
196 }
197
198 T& CustomMax()
199 {
200 T max=m_data[0];
201 //int maxpos=0;
202 for(int i=1; i<size; i++) {
203 max = tCustomMax(max,m_data[i]);
204 }
205 return max;
206 }
207 vec<T>& operator= (const T& val)
208 {
209 for(int idx=0;idx<size;idx++)
210 m_data[idx]=val;
211 return *this;
212 }
213
214 vec<T>& operator= (const vec<T>& vect)
215 {
216 ASSERTE(vect.size==size);
217 for(int idx=0;idx<size;idx++)
218 m_data[idx]=vect.m_data[idx];
219 return *this;
220 }
221
222 inline T* addr(int idx)
223 {
224 ASSERTE(idx>=-m_border);
225 ASSERTE(idx<size+m_border);
226 return m_data+idx;
227 }
228
229 inline T& operator [] (size_t idx)
230 {
231 ASSERTE(idx>=-m_border);
232 ASSERTE(idx<size+m_border);
233 T* res=(T*)(m_data+idx);
234 return *res;
235 }
236
237 vec<T>& operator*= (const T& val)
238 {
239 for(int idx=0;idx<size;idx++)
240 m_data[idx]*=val;
241 return (*this);
242 }
243
244 vec<T> operator* (const T& val) const
245 {
246 vec<T> res(size);
247 for(int idx=0;idx<size;idx++)
248 res.m_data[idx]=m_data[idx]*val;
249 return res;
250 }
251
252 T operator* (const vec<T>& vect) const
253 {
254 ASSERTE(size==vect.size);
255 T res=0;
256 for (int idx=0;idx<size;idx++)
257 res+=m_data[idx]*vect.m_data[idx];
258 return res;
259 }
260
261 vec<T> operator* (const mtr<T> matr) const
262 {
263 ASSERTE(size==matr.m_height);
264 vec<T> res(matr.m_width);
265 for(int i=0; i<matr.m_width; i++){
266 T sum=matr[0][i]*m_data[0];
267 for(int j=1; j<matr.m_height; j++){
268 sum+=matr[j][i]*m_data[j];
269 }
270 res[i]=sum;
271 }
272 return res;
273 }
274 vec<T>& operator+= (const T &val)
275 {
276 for(int idx=0;idx<size;idx++)
277 m_data[idx]+=val;
278 return (*this);
279 }
280
281 vec<T>& operator+= (const vec<T> &vect)
282 {
283 ASSERTE (vect.size==size);
284 for(int idx=0;idx<size;idx++)
285 m_data[idx]+=vect.m_data[idx];
286 return (*this);
287 }
288
289 vec<T> operator+ (const T& val) const
290 {
291 vec<T> res(*this);
292 res+=val;
293 return res;
294 }
295
296 vec<T> operator+ (const vec<T>& vect) const
297 {
298 ASSERTE (vect.size==size);
299 vec<T> res(*this);
300 res+=vect;
301 return res;
302 }
303
304 vec<T>& operator-= (const T &val)
305 {
306 for(int idx=0;idx<size;idx++)
307 m_data[idx]-=val;
308 return (*this);
309 }
310
311 vec<T>& operator-= (const vec<T> &vect)
312 {
313 ASSERTE (vect.size==size);
314 for(int idx=0;idx<size;idx++)
315 m_data[idx]-=vect.m_data[idx];
316 return (*this);
317 }
318
319 vec<T> operator- (const vec<T>& vect) const
320 {
321 ASSERTE (vect.size==size);
322 vec<T> res(*this);
323 res-=vect;
324 return res;
325 }
326
327 vec<T> operator- () const
328 {
329 vec<T> res(*this);
330 for(int idx=0;idx<size;idx++)
331 res.m_data[idx]=-m_data[idx];
332 return res;
333 }
334
335 vec<T>& operator/=(const T val)
336 {
337 ASSERTE(val!=0);
338 for(int idx=0;idx<size;idx++)
339 m_data[idx]/=val;
340 return (*this);
341 }
342
343 vec<T> operator/ (const T val) const
344 {
345 vec<T> res(*this);
346 res/=val;
347 return res;
348 }
349
350 vec<T>& operator>>=(const int shr)
351 {
352 ASSERTE(shr>=0);
353 if (shr==0) return(*this);
354 for(int idx=0;idx<size;idx++)
355 m_data[idx]>>=shr;
356 return (*this);
357 }
358
359 vec<T> operator>> (const int shr) const
360 {
361 ASSERTE(shr>=0);
362 vec<T> res(*this);
363 res>>=shr;
364 return res;
365 }
366
367 vec<T>& operator<<=(const int shl)
368 {
369 ASSERTE(shl>=0);
370 if (shl==0) return(*this);
371 for(int idx=0;idx<size;idx++)
372 m_data[idx]<<=shl;
373 return (*this);
374 }
375
376 vec<T> operator<< (const int shl) const
377 {
378 ASSERTE(shl>=0);
379 vec<T> res(*this);
380 res<<=shl;
381 return res;
382 }
383
384 //-----------------------------------------
385 vec<T>& operator&=(const T& val)
386 {
387 for(int idx=0;idx<size;idx++)
388 m_data[idx]&=val;
389 return (*this);
390 }
391
392 vec<T>& operator&=(const vec<T>& vect)
393 {
394 for(int idx=0;idx<size;idx++)
395 m_data[idx]&=vect.m_data[idx];
396 return (*this);
397 }
398
399 vec<T> operator& (const T& val) const
400 {
401 vec<T> res(*this);
402 res&=val;
403 return res;
404 }
405
406 vec<T> operator& (const vec<T>& vect) const
407 {
408 vec<T> res(*this);
409 res&=vect;
410 return res;
411 }
412 //-----------------------------------------
413 vec<T>& operator|=(const T& val)
414 {
415 for(int idx=0;idx<size;idx++)
416 m_data[idx]|=val;
417 return (*this);
418 }
419
420 vec<T>& operator|=(const vec<T>& vect)
421 {
422 for(int idx=0;idx<size;idx++)
423 m_data[idx]|=vect.m_data[idx];
424 return (*this);
425 }
426
427 vec<T> operator| (const T& val) const
428 {
429 vec<T> res(*this);
430 res|=val;
431 return res;
432 }
433
434 vec<T> operator| (const vec<T>& vect) const
435 {
436 vec<T> res(*this);
437 res|=vect;
438 return res;
439 }
440 //-----------------------------------------
441 vec<T>& operator^=(const T& val)
442 {
443 for(int idx=0;idx<size;idx++)
444 m_data[idx]^=val;
445 return (*this);
446 }
447
448 vec<T>& operator^=(const vec<T>& vect)
449 {
450 for(int idx=0;idx<size;idx++)
451 m_data[idx]^=vect.m_data[idx];
452 return (*this);
453 }
454
455 vec<T> operator^ (const T& val) const
456 {
457 vec<T> res(*this);
458 res^=val;
459 return res;
460 }
461
462 vec<T> operator^ (const vec<T>& vect) const
463 {
464 vec<T> res(*this);
465 res^=vect;
466 return res;
467 }
468 int sum()
469 {
470 int summ=0;
471 for(int i=0;i<size;i++)
472 summ+=m_data[i];
473 return summ;
474 }
475
476 bool operator== (const vec<T> &vect)
477 {
478 ASSERTE (vect.size==size);
479 for(int idx=0;idx<size;idx++)
480 if (m_data[idx]!=vect.m_data[idx])
481 return false;
482 return true;
483 }
484
485 bool operator!= (const vec<T> &vect)
486 {
487 ASSERTE (vect.size==size);
488 for(int idx=0;idx<size;idx++)
489 if (m_data[idx]!=vect.m_data[idx])
490 return true;
491 return false;
492 }
493 //-----------------------------------------
494
495
496/*
497 template<class T2> void SetData(T2* Data)
498 {
499 for(int i=0;i<size;i++)
500 m_data[i]=Data[i];
501 }
502
503 template<class T2> void GetData(T2* Data)
504 {
505 for(int i=0;i<size;i++)
506 Data[i]=(T2)m_data[i].value;
507 }
508*/
509//void InitConst(T Value)
510//{
511// for (int idx=0;idx<size;idx++)
512// m_data[idx]=Value;
513//}
514};
515//template <class T> void InitInc(vec<T>& A,T StartValue=0,T Increment=1)
516//{
517// for (int idx=0;idx<A.size;idx++,StartValue+=Increment)
518// A[idx]=StartValue;
519//}
520
521 template<class T1, class T2> void Convert(vec<T1>& vSrc, vec<T2>& vDst){
522 ASSERTE(vSrc.size==vDst.size);
523 for(int i=0; i<vSrc.size; i++){
524 vDst[i]=(T2)vSrc[i];
525 }
526 }
527
528//bool operator== (const vec<T>& vec) const
529//bool operator!= (const vec<T>& vec) const;
530
531
532//*****************************************************************************
533//* Math function *
534//*****************************************************************************
536/*
537template <class T> T Norm2(vec<T>& X)
538{
539 T Buffer(0);
540 for(int idx=0;idx<X.size;idx++)
541 for(int col=0;col<X.width;col++)
542 Buffer+=X[idx]*X[idx];
543 return sqrt(Buffer);
544}
545
546template <class T> double vectorError(vec<T>& A,double *B)
547{
548 double Buffer=0;
549 double diff;
550 int idx=0;
551 for(int idx=0;idx<A.size;idx++,idx++)
552 for(int col=0;col<A.width;col++)
553 {
554 diff=double_(A[idx])-B[idx];
555 Buffer+=diff*diff;
556 }
557 return sqrt(Buffer)/(A.width*A.size);
558}
559*/
560template <class T> vec<T> Sqr(vec<T>& A)
561{
562 vec<T> Res(A);
563 for (int i=0;i<A.size;i++)
564 Res[i]=A[i]*A[i];
565 return Res;
566}
567template <class T> vec<T> Sqrt(vec<T>& A)
568{
569 vec<T> Res(A);
570 for (int i=0;i<A.size;i ++)
571 Res[i]=(T)sqrt((double)A[i]);
572 return Res;
573}
574
575template <class T> T Summ(vec<T>& A)
576{
577 T Sum(0);
578 for (int i=0;i<A.size;i ++)
579 Sum+=A[i];
580 return Sum;
581}
582
583template <class T> void Clear(vec<T>& A)
584{
585 for (int idx=0;idx<A.size;idx++)
586 A[idx]=0;
587}
588
589
590
591
592#endif
mtr
Definition: tmatrix.h:88
vec
Definition: tvector.h:80
nmtype.h


nmpp: Содержание директории g:/nmpp/include/nmvcore

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmvcore
Содержание директории nmvcore

Файлы

файл vCore.h [Исходные тексты]


nmpp: Исходный файл g:/nmpp/include/nmvcore/vCore.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmvcore
vCore.h
1
2
90//-----------------------------------------------------------------------------
91
92
93
94//---------------------------------------------------------------------------------
139
140 void vec_0_sub_data(nmreg nb1, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6);
142
143
144//-----------------------------------------------------------------------------
187
188 void vec_activate_data(nmreg f1cr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6);
190
191
192//-----------------------------------------------------------------------------
237
238 void vec_activate_data_add_0(nmreg f1cr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6);
240
241
242//-----------------------------------------------------------------------------
288
289 void vec_activate_data_xor_data(nmreg f1cr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6);
291
292
293//-----------------------------------------------------------------------------
346
347 void vec_activate_data_add_ram(nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6);
349
350
351//-----------------------------------------------------------------------------
418
419 void vec_Add_VV_shift(nmreg nb1, nmreg sb, nmreg woper, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr5, nmreg ar6, nmreg gr6);
421
422
423//-----------------------------------------------------------------------------
461
462 void vec_afifo(nmreg ar0, nmreg gr5, nmreg ar6, nmreg gr6);
464
465
466//-----------------------------------------------------------------------------
507
508 void vec_data(nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6);
510
511 //-----------------------------------------------------------------------------
544
545 void vec_CopyEvenToEven_32f(nmreg ar0, nmreg ar6, nmreg gr5);
547
548
549 //-----------------------------------------------------------------------------
583
584void vec_CopyOddToEven_32f(nmreg ar0, nmreg ar6, nmreg gr5);
586
587
588//-----------------------------------------------------------------------------
633
634 void vec_data_add_afifo(nmreg nb1, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6);
636
637
638//-----------------------------------------------------------------------------
687
688 void vec_data_add_ram(nmreg nb1, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6);
690
691
692//-----------------------------------------------------------------------------
737
738 void vec_data_and_ram(nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6);
740
741
742//-----------------------------------------------------------------------------
787
788 void vec_data_or_ram(nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6);
790
791
792//-----------------------------------------------------------------------------
841
842 void vec_data_sub_ram(nmreg nb1, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6);
844
845
846//-----------------------------------------------------------------------------
891
892 void vec_data_xor_ram(nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6);
894
895
896//-----------------------------------------------------------------------------
897
909 void vec_FilterCoreRow2(nmreg ar0, nmreg ar4, nmreg ar6, nmreg gr1, nmreg gr4, nmreg gr6);
911
912
913//-----------------------------------------------------------------------------
923
924 void vec_FilterCoreRow4(nmreg ar0, nmreg ar4, nmreg ar6, nmreg gr1, nmreg gr4, nmreg gr6);
926
927
928//-----------------------------------------------------------------------------
938
939 void vec_FilterCoreRow8(nmreg ar0, nmreg ar4, nmreg ar6, nmreg gr1, nmreg gr4, nmreg gr6);
941
942
943//-----------------------------------------------------------------------------
992
993 void vec_And(nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6);
995
996
997//-----------------------------------------------------------------------------
1054
1055 void vec_Mask(nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar2, nmreg gr2, nmreg gr5, nmreg ar6, nmreg gr6);
1057
1058
1059//-----------------------------------------------------------------------------
1109
1110 void vec_Or(nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6);
1112
1113
1114//-----------------------------------------------------------------------------
1164
1165 void vec_Xor(nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6);
1167
1168
1169//-----------------------------------------------------------------------------
1225
1226 void vec_Abs(nmreg nb1, nmreg sb, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6);
1228
1229
1230//-----------------------------------------------------------------------------
1284
1285 void vec_Add(nmreg nb1, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6);
1287
1288
1289//-----------------------------------------------------------------------------
1356
1357 void vec_ClipExt(nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg ar2, nmreg ar3, nmreg gr5, nmreg ar6, nmreg gr6);
1359
1360
1361//-----------------------------------------------------------------------------
1434
1435 void vec_ClipMul2D2W8_AddVr(nmreg nb1, nmreg sb, nmreg f1cr, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6);
1437
1438
1439//-----------------------------------------------------------------------------
1440
1441
1534 void vec_ClipMulNDNW2_AddVr(nmreg nb1, nmreg sb, nmreg f1cr, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6);
1536
1537
1538//-----------------------------------------------------------------------------
1539
1540
1632 void vec_ClipMulNDNW4_AddVr(nmreg nb1, nmreg sb, nmreg f1cr, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6);
1634
1635// \restr
1636 // \ru При выходе из функции изменяется содержимое регистров: ar0,ar1,gr1,ar2,gr2,ar3,gr3,ar4,ar6,gr7.
1637 // \en On exiting the function the contents of registers changes: ar0,ar1,gr1,ar2,gr2,ar3,gr3,ar4,ar6,gr7.
1638
1639
1640//-----------------------------------------------------------------------------
1641
1642
1732 void vec_ClipMulNDNW8_AddVr(nmreg nb1, nmreg sb, nmreg f1cr, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6);
1734
1735
1736//-----------------------------------------------------------------------------
1788
1789 void vec_IncNeg(nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6);
1791
1792
1793//-----------------------------------------------------------------------------
1862
1863 void vec_Mul2D2W1_AddVr(nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6);
1865
1866
1867//-----------------------------------------------------------------------------
1936
1937 void vec_Mul2D2W2_AddVr(nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6);
1939
1940
1941//-----------------------------------------------------------------------------
2010
2011 void vec_Mul2D2W4_AddVr(nmreg nb1, nmreg sb, nmreg f1cr, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr5, nmreg ar6, nmreg gr6);
2013
2014
2015//-----------------------------------------------------------------------------
2084
2085 void vec_Mul2D2W8_AddVr(nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6);
2087
2088
2089//-----------------------------------------------------------------------------
2166
2167 void vec_Mul3D3W2_AddVr(nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar2, nmreg gr2, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6);
2169
2170
2171
2172//-----------------------------------------------------------------------------
2249
2250 void vec_Mul3D3W8_AddVr(nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar2, nmreg gr2, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6);
2252
2253
2254
2255//-----------------------------------------------------------------------------
2340
2341 void vec_Mul4D4W2_AddVr(nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar2, nmreg gr2, nmreg ar3, nmreg gr3, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6);
2343
2344
2345//-----------------------------------------------------------------------------
2408
2409 void vec_MulVN_AddVN(nmreg nb1, nmreg sb, nmreg f1cr, nmreg woper, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6);
2411
2412
2413//-----------------------------------------------------------------------------
2464
2465 void vec_Sub(nmreg nb1, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6);
2467
2468
2469//-----------------------------------------------------------------------------
2534
2535 void vec_SubAbs(nmreg nb1, nmreg sb, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr5, nmreg ar6, nmreg gr6);
2537
2538
2539//*****************************************************************************
2540
2610 void vec_SubVN_Abs(nmreg nb1, nmreg sb, nmreg f1cr, nmreg woper, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr5, nmreg ar6, nmreg gr6);
2612
2613
2614//-----------------------------------------------------------------------------
2678
2679 void vec_Swap(nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6);
2681
2682
2683//-----------------------------------------------------------------------------
2755
2756 void vec_MUL_2V4toW8_shift(nmreg nb1, nmreg sb, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar3, nmreg gr4, nmreg ar5, nmreg gr5, nmreg ar6, nmreg gr6);
2758
2759
2760//-----------------------------------------------------------------------------
2832
2833 void vec_MUL_2V8toW16_shift(nmreg nb1, nmreg sb, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar3, nmreg gr4, nmreg ar5, nmreg gr5, nmreg ar6, nmreg gr6);
2835
2836
2837//-----------------------------------------------------------------------------
2877
2878 void vec_not_data(nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6);
2880
2881
2882//-----------------------------------------------------------------------------
2923
2924 void vec_ram(nmreg ar0, nmreg gr5, nmreg ar6, nmreg gr6);
2926
2927
2928//-----------------------------------------------------------------------------
2973
2974 void vec_ram_sub_data(nmreg nb1, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6);
2976
2977
2978//-----------------------------------------------------------------------------
3036
3037 void vec_vsum_activate_data_0(nmreg nb1, nmreg sb, nmreg f1cr, nmreg woper, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg gr5, nmreg ar6, nmreg gr6);
3039
3040
3041//-----------------------------------------------------------------------------
3089
3090 void vec_vsum_data_0(nmreg nb1, nmreg sb, nmreg woper, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6);
3092
3093
3094//-----------------------------------------------------------------------------
3147
3148 void vec_vsum_data_afifo(nmreg nb1, nmreg sb, nmreg woper, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6);
3150
3151
3152//-----------------------------------------------------------------------------
3208
3209 void vec_vsum_data_vr(nmreg nb1, nmreg sb, nmreg woper, nmreg vr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6);
3211
3212
3213//-----------------------------------------------------------------------------
3261
3262 void vec_vsum_shift_data_0(nmreg nb1, nmreg sb, nmreg woper, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6);
3264
3265
3266//-----------------------------------------------------------------------------
3318
3319 void vec_vsum_shift_data_vr(nmreg nb1, nmreg sb, nmreg woper, nmreg vr, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6, nmreg gr6);
3321
3322//-----------------------------------------------------------------------------
3373
3374 void vec_vsum_shift_data_afifo(nmreg nb1, nmreg sb, nmreg f1cr, nmreg woper, nmreg ar0, nmreg gr0, nmreg gr5, nmreg ar6);
3376
3377//-----------------------------------------------------------------------------
3378
3379
3380
3436 void vec_CompareMinV(nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar3, nmreg gr3, nmreg gr5, nmreg ar6, nmreg gr6);
3438
3439//-----------------------------------------------------------------------------
3494
3495 void vec_CompareMaxV(nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar3, nmreg gr3, nmreg gr5, nmreg ar6, nmreg gr6);
3497
3498
3499//-----------------------------------------------------------------------------
3500
3534 void vec_DupValueInVector8(nmreg ar1, nmreg gr1);
3536
3537
3538//-----------------------------------------------------------------------------
3539
3572 void vec_DupValueInVector16(nmreg ar1, nmreg gr1);
3574
3575
3576//-----------------------------------------------------------------------------
3577
3601 void vec_BuildDiagWeights8(nmreg ar1, nmreg gr1);
3603
3604
3605//-----------------------------------------------------------------------------
3606
3607
3630 void vec_BuildDiagWeights16(nmreg ar1, nmreg gr1);
3632
3633//-----------------------------------------------------------------------------
3634
3635
3659 void vec_MaxVal_v8nm8s(nmreg ar0, nmreg gr7);
3661
3662//-----------------------------------------------------------------------------
3684
3685 void vec_MaxVal_v4nm16s(nmreg ar0, nmreg gr7);
3687
3688//-----------------------------------------------------------------------------
3689
3690
3691
3736 void vec_MaxVal( nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar4, nmreg gr5, nmreg ar6);
3738
3739//-----------------------------------------------------------------------------
3740
3741
3765 void vec_MinVal_v8nm8s(nmreg ar0, nmreg gr7);
3767
3768//-----------------------------------------------------------------------------
3790
3791 void vec_MinVal_v4nm16s(nmreg ar0, nmreg gr7);
3793
3794//-----------------------------------------------------------------------------
3795
3796
3797
3840 void vec_MinVal( nmreg nb1, nmreg f1cr, nmreg ar0, nmreg gr0, nmreg ar4, nmreg gr5, nmreg ar6);
3842
3843
3844//-----------------------------------------------------------------------------
3845
3846
3911 void vec_AccMul1D1W32_AddVr(nmreg nb1, nmreg sb, nmreg vr, nmreg ar0, nmreg gr0, nmreg ar4, nmreg gr4, nmreg gr5, nmreg ar6, nmreg gr6);
3913
3914
3915
3916
vec_Mask
void vec_Mask(nmreg ar0, nmreg gr0, nmreg ar1, nmreg gr1, nmreg ar2, nmreg gr2, nmreg gr5, nmreg ar6, nmreg gr6)
nmreg
Definition: nmtype.h:57


nmpp: Содержание директории g:/nmpp/include/rpc

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • rpc
Содержание директории rpc

Файлы

файл | rpc-host.h [Исходные тексты]
файл | rpc-nmc-func.h [Исходные тексты]
файл | rpc-nmc.h [Исходные тексты]


nmpp: Исходный файл g:/nmpp/include/rpc/rpc-host.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • rpc
rpc-host.h
1#ifdef RPC
2#include <aura/aura.h>
3#include <ion/ion.h>
4#include <memory.h>
5
6
7extern struct aura_node *n;
8/*
9#define RPC_HOST_P(func) \
10 int ret; \
11 struct aura_buffer *iobuf_src = aura_buffer_request(n, size); \
12 memcpy(iobuf_src->data,src,size); \
13 struct aura_buffer *retbuf; \
14 ret = aura_call(n, func, &retbuf, iobuf_src, iobuf_dst, size); \
15 if (ret != 0) \
16 BUG(n, "Call func failed!"); \
17 memcpy(dst,iobuf_dst->data,size); \
18 aura_buffer_release( iobuf_src); \
19 aura_buffer_release( retbuf); \
20 slog(3, SLOG_INFO, "ARM: Call func ok");
21
22
23#define RPC_HOST_PI(func,ptr) \
24 int ret; \
25 struct aura_buffer *iobuf_src = aura_buffer_request(n, size); \
26 struct aura_buffer *iobuf_dst = aura_buffer_request(n, size); \
27 memcpy(iobuf_src->data,src,size); \
28 struct aura_buffer *retbuf; \
29 ret = aura_call(n, func, &retbuf, iobuf_src, iobuf_dst, size); \
30 if (ret != 0) \
31 BUG(n, "Call func failed!"); \
32 memcpy(dst,iobuf_dst->data,size*k); \
33 aura_buffer_release( iobuf_dst); \
34 aura_buffer_release( iobuf_src); \
35 aura_buffer_release( retbuf); \
36 slog(3, SLOG_INFO, "ARM: Call " #func " -ok");
37*/
38#define RPC_HOST_I(func, val) \
39 int ret; \
40 struct aura_buffer *retbuf; \
41 ret = aura_call(n, func, &retbuf, val); \
42 if (ret != 0) \
43 BUG(n, "Call" #func "failed!"); \
44 aura_buffer_release( retbuf); \
45 slog(3, SLOG_INFO, "ARM: Call func ok");
46
47#define RPC_HOST_PPI(func,src,dst,size,k) \
48 int ret; \
49 struct aura_buffer *iobuf_src = aura_buffer_request(n, size*k); \
50 struct aura_buffer *iobuf_dst = aura_buffer_request(n, size*k); \
51 memcpy(iobuf_src->data,src,size*k); \
52 struct aura_buffer *retbuf; \
53 ret = aura_call(n, func, &retbuf, iobuf_src, iobuf_dst, size); \
54 if (ret != 0) {\
55 printf ("bug = %d\r\n",ret);\
56 BUG(n, "Call " #func " failed!"); }\
57 memcpy(dst,iobuf_dst->data,size*k); \
58 aura_buffer_release( iobuf_dst); \
59 aura_buffer_release( iobuf_src); \
60 aura_buffer_release( retbuf); \
61 slog(3, SLOG_INFO, "ARM: Call " #func " -ok");
62
63#define RPC_HOST_PPI_R64_k0k1(func,src0,src1,size,ret,k0,k1) \
64 int ret; \
65 struct aura_buffer *iobuf_src0 = aura_buffer_request(n, size*k0); \
66 struct aura_buffer *iobuf_src1 = aura_buffer_request(n, size*k1); \
67 memcpy(iobuf_src0->data,src0,size*k0); \
68 memcpy(iobuf_src1->data,src1,size*k1); \
69 struct aura_buffer *retbuf; \
70 ret = aura_call(n, func, &retbuf, iobuf_src0,iobuf_src1, size); \
71 if (ret != 0) {\
72 printf ("bug = %d\r\n",ret);\
73 BUG(n, "Call " #func " failed!"); }\
74 *res = aura_buffer_get_u32(retbuf);\
75 aura_buffer_release( iobuf_src0); \
76 aura_buffer_release( iobuf_src1); \
77 aura_buffer_release( retbuf); \
78 slog(3, SLOG_INFO, "ARM: Call " #func " -ok");
79
80
81
82#define RPC_HOST_PPPI(func,src0,src1,dst,size,k) \
83 int ret; \
84 struct aura_buffer *iobuf_src0 = aura_buffer_request(n, size*k); \
85 struct aura_buffer *iobuf_src1 = aura_buffer_request(n, size*k); \
86 struct aura_buffer *iobuf_dst = aura_buffer_request(n, size*k); \
87 memcpy(iobuf_src0->data,src0,size*k); \
88 memcpy(iobuf_src1->data,src1,size*k); \
89 struct aura_buffer *retbuf; \
90 ret = aura_call(n, func, &retbuf, iobuf_src0, iobuf_src1, iobuf_dst, size); \
91 if (ret != 0) \
92 BUG(n, "Call " #func " failed!"); \
93 memcpy(dst,iobuf_dst->data,size*k); \
94 aura_buffer_release( iobuf_dst); \
95 aura_buffer_release( iobuf_src1); \
96 aura_buffer_release( iobuf_src0); \
97 aura_buffer_release( retbuf); \
98 slog(3, SLOG_INFO, "ARM: Call " #func " -ok");
99
100
101#define RPC_HOST_PIPI(func,src,val,dst,size,k) \
102 int ret; \
103 struct aura_buffer *iobuf_src = aura_buffer_request(n, size*k); \
104 struct aura_buffer *iobuf_dst = aura_buffer_request(n, size*k); \
105 memcpy(iobuf_src->data,src,size*k); \
106 struct aura_buffer *retbuf; \
107 ret = aura_call(n, func, &retbuf, iobuf_src, val, iobuf_dst, size); \
108 if (ret != 0) {\
109 printf ("bug = %d\r\n",ret);\
110 BUG(n, "Call " #func " failed!"); }\
111 memcpy(dst,iobuf_dst->data,size*k); \
112 aura_buffer_release( iobuf_dst); \
113 aura_buffer_release( iobuf_src); \
114 aura_buffer_release( retbuf); \
115 slog(3, SLOG_INFO, "ARM: Call " #func " -ok");
116
117#define RPC_HOST_PIPI2(func,src,val,dst,size,k1,k2) \
118 int ret; \
119 struct aura_buffer *iobuf_src = aura_buffer_request(n, size*k1); \
120 struct aura_buffer *iobuf_dst = aura_buffer_request(n, size*k2); \
121 memcpy(iobuf_src->data,src,size*k1); \
122 struct aura_buffer *retbuf; \
123 ret = aura_call(n, func, &retbuf, iobuf_src, val, iobuf_dst, size); \
124 if (ret != 0) {\
125 printf ("bug = %d\r\n",ret);\
126 BUG(n, "Call " #func " failed!"); }\
127 memcpy(dst,iobuf_dst->data,size*k2); \
128 aura_buffer_release( iobuf_dst); \
129 aura_buffer_release( iobuf_src); \
130 aura_buffer_release( retbuf); \
131 slog(3, SLOG_INFO, "ARM: Call " #func " -ok");
132
133#define RPC_HOST_PLPI(func,src,val,dst,size,k1,k2) \
134 int ret; \
135 struct aura_buffer *iobuf_src = aura_buffer_request(n, size*k1); \
136 struct aura_buffer *iobuf_dst = aura_buffer_request(n, size*k2); \
137 memcpy(iobuf_src->data,src,size*k1); \
138 struct aura_buffer *retbuf; \
139 ret = aura_call(n, func, &retbuf, iobuf_src, val, iobuf_dst, size); \
140 if (ret != 0) {\
141 printf ("bug = %d\r\n",ret);\
142 BUG(n, "Call " #func " failed!"); }\
143 memcpy(dst,iobuf_dst->data,size*k2); \
144 aura_buffer_release( iobuf_dst); \
145 aura_buffer_release( iobuf_src); \
146 aura_buffer_release( retbuf); \
147 slog(3, SLOG_INFO, "ARM: Call " #func " -ok");
148
149#define RPC_HOST_PPLI(func,src,val,dst,size,k) \
150 int ret; \
151 struct aura_buffer *iobuf_src = aura_buffer_request(n, size*k); \
152 struct aura_buffer *iobuf_dst = aura_buffer_request(n, size*k); \
153 memcpy(iobuf_src->data,src,size*k); \
154 struct aura_buffer *retbuf; \
155 ret = aura_call(n, func, &retbuf, iobuf_src, iobuf_dst, val, size); \
156 if (ret != 0) {\
157 printf ("bug = %d\r\n",ret);\
158 BUG(n, "Call " #func " failed!"); }\
159 memcpy(dst,iobuf_dst->data,size*k); \
160 aura_buffer_release( iobuf_dst); \
161 aura_buffer_release( iobuf_src); \
162 aura_buffer_release( retbuf); \
163 slog(3, SLOG_INFO, "ARM: Call " #func " -ok");
164
165
166#define RPC_HOST_PIR(func,src,size,res,k) \
167 int ret; \
168 struct aura_buffer *iobuf_src = aura_buffer_request(n, size*k); \
169 memcpy(iobuf_src->data,src,size*k); \
170 struct aura_buffer *retbuf; \
171 ret = aura_call(n, func, &retbuf, iobuf_src, size); \
172 if (ret != 0) \
173 BUG(n, "Call " #func " failed!"); \
174 *res = aura_buffer_get_u32(retbuf);\
175 aura_buffer_release( iobuf_src); \
176 aura_buffer_release( retbuf); \
177 slog(3, SLOG_INFO, "ARM: Call " #func " -ok");
178
179#define RPC_HOST_PPI_I(func,src,dst,handle,ret,k) \
180 int ret; \
181 struct aura_buffer *iobuf_src = aura_buffer_request(n, size*k); \
182 struct aura_buffer *iobuf_dst = aura_buffer_request(n, size*k); \
183 memcpy(iobuf_src->data,src,size*k); \
184 memcpy(iobuf_dst->data,dst,size*k); \
185 struct aura_buffer *retbuf; \
186 ret = aura_call(n, func, &retbuf, iobuf_src, iobuf_dst, handle); \
187 if (ret != 0) \
188 BUG(n, "Call " #func " failed!"); \
189 *res = aura_buffer_get_u32(retbuf);\
190 aura_buffer_release( iobuf_src); \
191 aura_buffer_release( iobuf_dst); \
192 aura_buffer_release( retbuf); \
193 slog(3, SLOG_INFO, "ARM: Call " #func " -ok");
194
195
196#define RPC_HOST_PIR64(func,src,size,res,k) \
197 int ret; \
198 struct aura_buffer *iobuf_src = aura_buffer_request(n, size*k); \
199 memcpy(iobuf_src->data,src,size*k); \
200 struct aura_buffer *retbuf; \
201 ret = aura_call(n, func, &retbuf, iobuf_src, size); \
202 if (ret != 0) \
203 BUG(n, "Call " #func " failed!"); \
204 *res = aura_buffer_get_u64(retbuf);\
205 aura_buffer_release( iobuf_src); \
206 aura_buffer_release( retbuf); \
207 slog(3, SLOG_INFO, "ARM: Call " #func " -ok");
208
209 //memcpy(iobuf_src1->data,pSrcMtr,nHeight*nWidth*k1);
210
211 //memcpy(iobuf_src1->data,pSrcMtr1,nHeight1*nWidth1*k1); \
212 //memcpy(iobuf_src2->data,pSrcMtr2,nWidth1*nWidth2*k2 );
213 // memcpy(pDstMtr, iobuf_dst->data, nHeight1*nWidth2*k2);
214
215
216
217
218#define RPC_HOST_PPIR64(func,srcVec0,srcVec1, size, dst,k1,k2) \
219 int ret; \
220 struct aura_buffer *iobuf_src1 = aura_buffer_request(n, size*k1); \
221 struct aura_buffer *iobuf_src2 = aura_buffer_request(n, size*k2 ); \
222 memcpy(iobuf_src1->data,srcVec0,size*k1); \
223 memcpy(iobuf_src2->data,srcVec1,size*k2); \
224 struct aura_buffer *retbuf; \
225 ret = aura_call(n, func, &retbuf, iobuf_src1, iobuf_src2, size); \
226 if (ret != 0) {\
227 slog(3, SLOG_ERROR, "bug = %d", ret);\
228 BUG(n, "Call " #func " failed!"); } \
229 *dst = aura_buffer_get_u64(retbuf); \
230 aura_buffer_release( iobuf_src1); \
231 aura_buffer_release( iobuf_src2); \
232 aura_buffer_release( retbuf); \
233 slog(3, SLOG_INFO, "ARM: Call " #func " -ok");
234
235
236#endif


nmpp: Исходный файл g:/nmpp/include/rpc/rpc-nmc-func.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • rpc
rpc-nmc-func.h
1#include "rpc/rpc-nmc.h"
2
3
4//--------------------------
5#ifdef RPC_nmppsAbs_64s
6NMC_RPC_PPI(nmppsAbs_64s);
7#endif
8
9#ifdef RPC_nmppsAbs_32s
10NMC_RPC_PPI(nmppsAbs_32s);
11#endif
12
13#ifdef RPC_nmppsAbs_16s
14NMC_RPC_PPI(nmppsAbs_16s);
15#endif
16
17#ifdef RPC_nmppsAbs_8s
18NMC_RPC_PPI(nmppsAbs_8s);
19#endif
20//-------------------------
21#ifdef RPC_nmppsAbs1_8s
22NMC_RPC_PPI(nmppsAbs1_8s);
23#endif
24
25#ifdef RPC_nmppsAbs1_16s
26NMC_RPC_PPI(nmppsAbs1_16s);
27#endif
28
29#ifdef RPC_nmppsAbs1_32s
30NMC_RPC_PPI(nmppsAbs1_32s);
31#endif
32
33#ifdef RPC_nmppsAbs1_64s
34NMC_RPC_PPI(nmppsAbs1_64s);
35#endif
36
37//--------------------------
38#ifdef RPC_nmppsAdd_8s
39NMC_RPC_PPPI(nmppsAdd_8s);
40#endif
41
42#ifdef RPC_nmppsAdd_16s
43NMC_RPC_PPPI(nmppsAdd_16s);
44#endif
45
46#ifdef RPC_nmppsAdd_32s
47NMC_RPC_PPPI(nmppsAdd_32s);
48#endif
49
50#ifdef RPC_nmppsAdd_64s
51NMC_RPC_PPPI(nmppsAdd_64s);
52#endif
53//--------------------------
54#ifdef RPC_nmppsSub_8s
55NMC_RPC_PPPI(nmppsSub_8s);
56#endif
57
58#ifdef RPC_nmppsSub_16s
59NMC_RPC_PPPI(nmppsSub_16s);
60#endif
61
62#ifdef RPC_nmppsSub_32s
63NMC_RPC_PPPI(nmppsSub_32s);
64#endif
65
66#ifdef RPC_nmppsSub_64s
67NMC_RPC_PPPI(nmppsSub_64s);
68#endif
69//--------------------------
70#ifdef RPC_nmppsAddC_8s
71NMC_RPC_PIPI(nmppsAddC_8s);
72#endif
73
74#ifdef RPC_nmppsAddC_16s
75NMC_RPC_PIPI(nmppsAddC_16s);
76#endif
77
78#ifdef RPC_nmppsAddC_32s
79NMC_RPC_PIPI(nmppsAddC_32s);
80#endif
81
82#ifdef RPC_nmppsAddC_64s
83NMC_RPC_PLPI(nmppsAddC_64s);
84#endif
85
86//--------------------------
87#ifdef RPC_nmppsSubC_8s
88NMC_RPC_PIPI(nmppsSubC_8s);
89#endif
90
91#ifdef RPC_nmppsSubC_16s
92NMC_RPC_PIPI(nmppsSubC_16s);
93#endif
94
95#ifdef RPC_nmppsSubC_32s
96NMC_RPC_PIPI(nmppsSubC_32s);
97#endif
98
99#ifdef RPC_nmppsSubC_64s
100NMC_RPC_PLPI(nmppsSubC_64s);
101#endif
102
103//--------------------------
104#ifdef RPC_nmppsSubCRev_8s
105NMC_RPC_PIPI(nmppsSubCRev_8s);
106#endif
107
108#ifdef RPC_nmppsSubCRev_16s
109NMC_RPC_PIPI(nmppsSubCRev_16s);
110#endif
111
112#ifdef RPC_nmppsSubCRev_32s
113NMC_RPC_PIPI(nmppsSubCRev_32s);
114#endif
115
116#ifdef RPC_nmppsSubCRev_64s
117NMC_RPC_PLPI(nmppsSubCRev_64s);
118#endif
119
120//--------------------------
121#ifdef RPC_nmppsRShiftC_8s
122NMC_RPC_PIPI(nmppsRShiftC_8s);
123#endif
124
125#ifdef RPC_nmppsRShiftC_16s
126NMC_RPC_PIPI(nmppsRShiftC_16s);
127#endif
128
129#ifdef RPC_nmppsRShiftC_32s
130NMC_RPC_PIPI(nmppsRShiftC_32s);
131#endif
132
133#ifdef RPC_nmppsRShiftC_64s
134NMC_RPC_PIPI(nmppsRShiftC_64s);
135#endif
136
137//--------------------------
138#ifdef RPC_nmppsMin_8s7b
139NMC_RPC_PIR(nmppsMin_8s7b);
140#endif
141
142#ifdef RPC_nmppsMin_16s15b
143NMC_RPC_PIR(nmppsMin_16s15b);
144#endif
145
146#ifdef RPC_nmppsMin_32s31b
147NMC_RPC_PIR(nmppsMin_32s31b);
148#endif
149
150#ifdef RPC_nmppsMin_64s63b
151NMC_RPC_PIR64(nmppsMin_64s63b);
152#endif
153
154//--------------------------
155#ifdef RPC_nmppsMax_8s7b
156NMC_RPC_PIR(nmppsMax_8s7b);
157#endif
158
159#ifdef RPC_nmppsMax_16s15b
160NMC_RPC_PIR(nmppsMax_16s15b);
161#endif
162
163#ifdef RPC_nmppsMax_32s31b
164NMC_RPC_PIR(nmppsMax_32s31b);
165#endif
166
167#ifdef RPC_nmppsMax_64s63b
168NMC_RPC_PIR64(nmppsMax_64s63b);
169#endif
170
171//--------------------------
172#ifdef RPC_nmppsAndC_8u
173NMC_RPC_PIPI(nmppsAndC_8u);
174#endif
175
176#ifdef RPC_nmppsAndC_16u
177NMC_RPC_PIPI(nmppsAndC_16u);
178#endif
179
180#ifdef RPC_nmppsAndC_32u
181NMC_RPC_PIPI(nmppsAndC_32u);
182#endif
183
184#ifdef RPC_nmppsAndC_64u
185NMC_RPC_PLPI(nmppsAndC_64u);
186#endif
187//--------------------------
188#ifdef RPC_nmppsOrC_8u
189NMC_RPC_PIPI(nmppsOrC_8u);
190#endif
191
192#ifdef RPC_nmppsOrC_16u
193NMC_RPC_PIPI(nmppsOrC_16u);
194#endif
195
196#ifdef RPC_nmppsOrC_32u
197NMC_RPC_PIPI(nmppsOrC_32u);
198#endif
199
200#ifdef RPC_nmppsOrC_64u
201NMC_RPC_PLPI(nmppsOrC_64u);
202#endif
203//--------------------------
204#ifdef RPC_nmppsXorC_8u
205NMC_RPC_PIPI(nmppsXorC_8u);
206#endif
207
208#ifdef RPC_nmppsXorC_16u
209NMC_RPC_PIPI(nmppsXorC_16u);
210#endif
211
212#ifdef RPC_nmppsXorC_32u
213NMC_RPC_PIPI(nmppsXorC_32u);
214#endif
215
216#ifdef RPC_nmppsXorC_64u
217NMC_RPC_PLPI(nmppsXorC_64u);
218#endif
219//--------------------------
220#ifdef RPC_nmppsNot_64u
221NMC_RPC_PPI(nmppsNot_64u);
222#endif
223
224#ifdef RPC_nmppsNot_32u
225NMC_RPC_PPI(nmppsNot_32u);
226#endif
227
228#ifdef RPC_nmppsNot_16u
229NMC_RPC_PPI(nmppsNot_16u);
230#endif
231
232#ifdef RPC_nmppsNot_8u
233NMC_RPC_PPI(nmppsNot_8u);
234#endif
235//--------------------------
236#ifdef RPC_nmppsAnd_64u
237NMC_RPC_PPPI(nmppsAnd_64u);
238#endif
239
240#ifdef RPC_nmppsAnd_32u
241NMC_RPC_PPPI(nmppsAnd_32u);
242#endif
243
244#ifdef RPC_nmppsAnd_16u
245NMC_RPC_PPPI(nmppsAnd_16u);
246#endif
247
248#ifdef RPC_nmppsAnd_8u
249NMC_RPC_PPPI(nmppsAnd_8u);
250#endif
251//--------------------------
252#ifdef RPC_nmppsOr_64u
253NMC_RPC_PPPI(nmppsOr_64u);
254#endif
255
256#ifdef RPC_nmppsOr_32u
257NMC_RPC_PPPI(nmppsOr_32u);
258#endif
259
260#ifdef RPC_nmppsOr_16u
261NMC_RPC_PPPI(nmppsOr_16u);
262#endif
263
264#ifdef RPC_nmppsOr_8u
265NMC_RPC_PPPI(nmppsOr_8u);
266#endif
267//--------------------------
268#ifdef RPC_nmppsXor_64u
269NMC_RPC_PPPI(nmppsXor_64u);
270#endif
271
272#ifdef RPC_nmppsXor_32u
273NMC_RPC_PPPI(nmppsXor_32u);
274#endif
275
276#ifdef RPC_nmppsXor_16u
277NMC_RPC_PPPI(nmppsXor_16u);
278#endif
279
280#ifdef RPC_nmppsXor_8u
281NMC_RPC_PPPI(nmppsXor_8u);
282#endif
283//--------------------------
284#ifdef RPC_nmppsRShiftC_8u
285NMC_RPC_PIPI(nmppsRShiftC_8u);
286#endif
287
288#ifdef RPC_nmppsRShiftC_16u
289NMC_RPC_PIPI(nmppsRShiftC_16u);
290#endif
291
292#ifdef RPC_nmppsRShiftC_32u
293NMC_RPC_PIPI(nmppsRShiftC_32u);
294#endif
295
296#ifdef RPC_nmppsRShiftC_64u
297NMC_RPC_PIPI(nmppsRShiftC_64u);
298#endif
299
300//--------------------------
301#ifdef RPC_nmppsSum_8s
302NMC_RPC_PIR(nmppsSum_8s);
303#endif
304
305#ifdef RPC_nmppsSum_16s
306NMC_RPC_PIR64(nmppsSum_16s);
307#endif
308
309#ifdef RPC_nmppsSum_32s
310NMC_RPC_PIR64(nmppsSum_32s);
311#endif
312
313#ifdef RPC_nmppsSum_64s
314NMC_RPC_PIR64(nmppsSum_64s);
315#endif
316//--------------------------
317#ifdef RPC_nmppsCmpNe0_64s
318NMC_RPC_PPI(nmppsCmpNe0_64s);
319#endif
320
321#ifdef RPC_nmppsCmpNe0_32s
322NMC_RPC_PPI(nmppsCmpNe0_32s);
323#endif
324
325#ifdef RPC_nmppsCmpNe0_16s
326NMC_RPC_PPI(nmppsCmpNe0_16s);
327#endif
328
329#ifdef RPC_nmppsCmpNe0_8s
330NMC_RPC_PPI(nmppsCmpNe0_8s);
331#endif
332//--------------------------
333#ifdef RPC_nmppsCmpLt0_64s
334NMC_RPC_PPI(nmppsCmpLt0_64s);
335#endif
336
337#ifdef RPC_nmppsCmpLt0_32s
338NMC_RPC_PPI(nmppsCmpLt0_32s);
339#endif
340
341#ifdef RPC_nmppsCmpLt0_16s
342NMC_RPC_PPI(nmppsCmpLt0_16s);
343#endif
344
345#ifdef RPC_nmppsCmpLt0_8s
346NMC_RPC_PPI(nmppsCmpLt0_8s);
347#endif
348
349//--------------------------
350#ifdef RPC_nmppsCmpNeC_64s
351NMC_RPC_PLPI(nmppsCmpNeC_64s);
352#endif
353
354#ifdef RPC_nmppsCmpNeC_32s
355NMC_RPC_PIPI(nmppsCmpNeC_32s);
356#endif
357
358#ifdef RPC_nmppsCmpNeC_16s
359NMC_RPC_PIPI(nmppsCmpNeC_16s);
360#endif
361
362#ifdef RPC_nmppsCmpNeC_8s
363NMC_RPC_PIPI(nmppsCmpNeC_8s);
364#endif
365//--------------------------
366//#ifdef RPC_nmppsCmpNeC_64s8u
367//NMC_RPC_PLPI(nmppsCmpNeC_64s8u);
368//#endif
369//
370//#ifdef RPC_nmppsCmpNeC_32s8u
371//NMC_RPC_PIPI(nmppsCmpNeC_32s8u);
372//#endif
373//
374//#ifdef RPC_nmppsCmpNeC_16s8u
375//NMC_RPC_PIPI(nmppsCmpNeC_16s8u);
376//#endif
377//
378//#ifdef RPC_nmppsCmpNeC_8s8u
379//NMC_RPC_PIPI(nmppsCmpNeC_8s8u);
380//#endif
381
382//--------------------------
383//#ifdef RPC_nmppsCmpNe_64s8um
384//NMC_RPC_PPPI(nmppsCmpNe_64s8um);
385//#endif
386//
387//#ifdef RPC_nmppsCmpNe_32s8um
388//NMC_RPC_PPPI(nmppsCmpNe_32s8um);
389//#endif
390//
391//#ifdef RPC_nmppsCmpNe_16s8um
392//NMC_RPC_PPPI(nmppsCmpNe_16s8um);
393//#endif
394//
395//#ifdef RPC_nmppsCmpNe_8s8um
396//NMC_RPC_PPPI(nmppsCmpNe_8s8um);
397//#endif
398
399
400
401//--------------------------
402#ifdef RPC_nmppsCmpLtC_64s
403NMC_RPC_PLPI(nmppsCmpLtC_64s);
404#endif
405
406#ifdef RPC_nmppsCmpLtC_32s
407NMC_RPC_PIPI(nmppsCmpLtC_32s);
408#endif
409
410#ifdef RPC_nmppsCmpLtC_16s
411NMC_RPC_PIPI(nmppsCmpLtC_16s);
412#endif
413
414#ifdef RPC_nmppsCmpLtC_8s
415NMC_RPC_PIPI(nmppsCmpLtC_8s);
416#endif
417
418//--------------------------
419//#ifdef RPC_nmppsCmpLtC_64s8u
420//NMC_RPC_PLPI(nmppsCmpLtC_64s8u); // Not supported by simulink
421//#endif
422//
423//#ifdef RPC_nmppsCmpLtC_32s8um
424//NMC_RPC_PIPI(nmppsCmpLtC_32s8um);
425//#endif
426//
427//#ifdef RPC_nmppsCmpLtC_16s8um
428//NMC_RPC_PIPI(nmppsCmpLtC_16s8um);
429//#endif
430//
431//#ifdef RPC_nmppsCmpLtC_8s8um
432//NMC_RPC_PIPI(nmppsCmpLtC_8s8um);
433//#endif
434
435//--------------------------
436//#ifdef RPC_nmppsCmpLt_64s8um
437//NMC_RPC_PPPI(nmppsCmpLt_64s8um);
438//#endif
439//
440//#ifdef RPC_nmppsCmpLt_32s8um
441//NMC_RPC_PPPI(nmppsCmpLt_32s8um);
442//#endif
443//
444//#ifdef RPC_nmppsCmpLt_16s8um
445//NMC_RPC_PPPI(nmppsCmpLt_16s8um);
446//#endif
447//
448//#ifdef RPC_nmppsCmpLt_8s8um
449//NMC_RPC_PPPI(nmppsCmpLt_8s8um);
450//#endif
451
452
453
454//-----------------------------
455
456#if defined(RPC_nmppmMul_mm_8s8s) || defined(RPC_nmppmMul_mm_colmajor_8s8s)
457NMC_RPC_PIIPPI(nmppmMul_mm_8s8s);
458#endif
459
460#if defined(RPC_nmppmMul_mm_8s16s) || defined(RPC_nmppmMul_mm_colmajor_8s16s)
461NMC_RPC_PIIPPI(nmppmMul_mm_8s16s);
462#endif
463
464#if defined(RPC_nmppmMul_mm_8s32s) || defined(RPC_nmppmMul_mm_colmajor_8s32s)
465NMC_RPC_PIIPPI(nmppmMul_mm_8s32s);
466#endif
467
468#if defined(RPC_nmppmMul_mm_8s64s) || defined(RPC_nmppmMul_mm_colmajor_8s64s)
469NMC_RPC_PIIPPI(nmppmMul_mm_8s64s);
470#endif
471
472#if defined(RPC_nmppmMul_mm_16s16s) || defined(RPC_nmppmMul_mm_colmajor_16s16s)
473NMC_RPC_PIIPPI(nmppmMul_mm_16s16s);
474#endif
475
476#if defined(RPC_nmppmMul_mm_16s32s) || defined(RPC_nmppmMul_mm_colmajor_16s32s)
477NMC_RPC_PIIPPI(nmppmMul_mm_16s32s);
478#endif
479
480#if defined(RPC_nmppmMul_mm_16s64s) || defined(RPC_nmppmMul_mm_colmajor_16s64s)
481NMC_RPC_PIIPPI(nmppmMul_mm_16s64s);
482#endif
483
484#if defined(RPC_nmppmMul_mm_32s32s) || defined(RPC_nmppmMul_mm_colmajor_32s32s)
485NMC_RPC_PIIPPI(nmppmMul_mm_32s32s);
486#endif
487
488#if defined(RPC_nmppmMul_mm_32s64s) || defined(RPC_nmppmMul_mm_colmajor_32s64s)
489NMC_RPC_PIIPPI(nmppmMul_mm_32s64s);
490#endif
491
492//-----------------------------
493//#ifdef RPC_nmppsDotProd_8s8sm
494//NMC_RPC_PPIR64(nmppsDotProd_8s8sm);
495//#endif
496//
497//#ifdef RPC_nmppsDotProd_8s16sm
498//NMC_RPC_PPIR64(nmppsDotProd_8s16sm);
499//#endif
500//
501//#ifdef RPC_nmppsDotProd_8s32sm
502//NMC_RPC_PPIR64(nmppsDotProd_8s32sm);
503//#endif
504//
505//#ifdef RPC_nmppsDotProd_8s64s
506//NMC_RPC_PPIR64(nmppsDotProd_8s64s);
507//#endif
508//
509//#ifdef RPC_nmppsDotProd_16s16sm
510//NMC_RPC_PPIR64(nmppsDotProd_16s16sm);
511//#endif
512//
513//#ifdef RPC_nmppsDotProd_16s32sm
514//NMC_RPC_PPIR64(nmppsDotProd_16s32sm);
515//#endif
516//
517//#ifdef RPC_nmppsDotProd_16s64s
518//NMC_RPC_PPIR64(nmppsDotProd_16s64s);
519//#endif
520//
521//#ifdef RPC_nmppsDotProd_32s32sm
522//NMC_RPC_PPIR64(nmppsDotProd_32s32sm);
523//#endif
524//
525//#ifdef RPC_nmppsDotProd_32s64s
526//NMC_RPC_PPIR64(nmppsDotProd_32s64s);
527//#endif
528//
529//#ifdef RPC_nmppsDotProd_64s64s
530//NMC_RPC_PPIR64(nmppsDotProd_64s64s);
531//#endif
532
533//--------------------------
534#if defined(RPC_nmppmMul_mv_8s64s) || defined(RPC_nmppmMul_mv_colmajor_8s64s)
535NMC_RPC_PPPII(nmppmMul_mv_8s64s);
536#endif
537
538#if defined(RPC_nmppmMul_mv_16s64s) || defined(RPC_nmppmMul_mv_colmajor_16s64s)
539NMC_RPC_PPPII(nmppmMul_mv_16s64s);
540#endif
541
542#if defined(RPC_nmppmMul_mv_32s64s) || defined(RPC_nmppmMul_mv_colmajor_32s64s)
543NMC_RPC_PPPII(nmppmMul_mv_32s64s);
544#endif
545//----------------------------
546#ifdef RPC_nmppsMulC_8s
547NMC_RPC_PIPI(nmppsMulC_8s );
548#endif
549#ifdef RPC_nmppsMulC_8s16s
550NMC_RPC_PIPI(nmppsMulC_8s16s );
551#endif
552#ifdef RPC_nmppsMulC_8s32s
553NMC_RPC_PIPI(nmppsMulC_8s32s );
554#endif
555#ifdef RPC_nmppsMulC_8s64s
556NMC_RPC_PLPI(nmppsMulC_8s64s );
557#endif
558#ifdef RPC_nmppsMulC_16s
559NMC_RPC_PIPI(nmppsMulC_16s );
560#endif
561#ifdef RPC_nmppsMulC_16s32s
562NMC_RPC_PIPI(nmppsMulC_16s32s );
563#endif
564#ifdef RPC_nmppsMulC_16s64s
565NMC_RPC_PLPI(nmppsMulC_16s64s );
566#endif
567#ifdef RPC_nmppsMulC_32s
568NMC_RPC_PIPI(nmppsMulC_32s );
569#endif
570#ifdef RPC_nmppsMulC_32s64s
571NMC_RPC_PLPI(nmppsMulC_32s64s );
572#endif
573#ifdef RPC_nmppsMulC_64s
574NMC_RPC_PLPI(nmppsMulC_64s );
575#endif
576
nmppsMax_8s7b
void nmppsMax_8s7b(const nm8s7b *pSrcVec, int nSize, int8b *nMaxValue)
nmppsMax_16s15b
void nmppsMax_16s15b(const nm16s15b *pSrcVec, int nSize, int16b *nMaxValue)
nmppsMax_32s31b
void nmppsMax_32s31b(const nm32s31b *pSrcVec, int nSize, int *nMaxValue)
nmppsMin_8s7b
void nmppsMin_8s7b(const nm8s7b *pSrcVec, int nSize, int8b *nMinValue)
nmppsMin_16s15b
void nmppsMin_16s15b(const nm16s15b *pSrcVec, int nSize, int16b *nMinValue)
nmppsMin_32s31b
void nmppsMin_32s31b(const nm32s31b *pSrcVec, int nSize, int *nMinValue)


nmpp: Исходный файл g:/nmpp/include/rpc/rpc-nmc.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • rpc
rpc-nmc.h
1#include "easynmc\aura.h"
2
3
4//typedef void (func_p_t)(void*);
5//typedef void*(func_i_p_t)(int);
6typedef void (func_ppi_t)(void*,void*,int);
7typedef int (func_ppi_i_t)(void*,void*,int);
8typedef int (func_ppr_i_t)(void*,void*,int*);
9typedef void (func_pppi_t)(void*,void*,void*,int);
10typedef void (func_pipi_t)(void*,int,void*,int);
11typedef void (func_plpi_t)(void*,long,void*,int);
12typedef void (func_pip_t)(void*,int,void*);
13typedef void (func_ppp_t)(void*,void*,void*);
14typedef int (func_ppp_i_t)(void*,void*,void*);
15typedef void (func_pppii_t) (void*,void*,void*,int,int);
16typedef void (func_piippi_t) (void*,int,int,void*,void*,int);
17typedef void (func_ppip_t) (void*,void*,int,void*);
18
19#include <time.h>
20
21//#define NMC_RPC_I_P(func) \
22//void rpc_ ## func(void *in, void *out) \
23//{ \
24// unsigned i = aura_get_u32(); \
25// func_i_t *unifunc=(func_i_t*)func; \
26// void* p=unifunc(i); \
27// aura_put_u32((int)p); \
28//}
29//
30//#define NMC_RPC_I(func) \
31//void rpc_ ## func(void *in, void *out) \
32//{ \
33// unsigned i = aura_get_u32(); \
34// func_i_p_t *unifunc=(func_i_p_t*)func; \
35// unifunc(i); \
36//}
37
38
39#define NMC_RPC_PPI(func) \
40void rpc_ ## func(void *in, void *out) \
41{ \
42 clock_t t0,t1,t2; \
43 t0=clock(); \
44 aura_buffer buf_src = aura_get_buf(); \
45 aura_buffer buf_dst = aura_get_buf(); \
46 int *src = aura_buffer_to_ptr(buf_src); \
47 int *dst = aura_buffer_to_ptr(buf_dst); \
48 unsigned size = aura_get_u32(); \
49 func_ppi_t *unifunc=(func_ppi_t*)func; \
50 unifunc(src,dst,size); \
51}
52
53#define NMC_RPC_PPI_I(func) \
54void rpc_ ## func(void *in, void *out) \
55{ \
56 aura_buffer buf_src = aura_get_buf(); \
57 aura_buffer buf_dst = aura_get_buf(); \
58 int *src = aura_buffer_to_ptr(buf_src); \
59 int *dst = aura_buffer_to_ptr(buf_dst); \
60 unsigned size = aura_get_u32(); \
61 func_ppi_i_t *unifunc=(func_ppi_i_t*)func; \
62 int ret=unifunc(src,dst,size); \
63 aura_put_u32(ret); \
64}
65
66
67
68#define NMC_RPC_PPPI(func) \
69void rpc_ ## func(void *in, void *out) \
70{ \
71 aura_buffer buf_src0 = aura_get_buf(); \
72 aura_buffer buf_src1 = aura_get_buf(); \
73 aura_buffer buf_dst = aura_get_buf(); \
74 int *src0 = aura_buffer_to_ptr(buf_src0); \
75 int *src1 = aura_buffer_to_ptr(buf_src1); \
76 int *dst = aura_buffer_to_ptr(buf_dst); \
77 unsigned size = aura_get_u32(); \
78 func_pppi_t *unifunc=(func_pppi_t*)func; \
79 unifunc(src0,src1,dst,size); \
80}
81
82#define NMC_RPC_PIPI(func) \
83void rpc_ ## func(void *in, void *out) \
84{ \
85 aura_buffer buf_src = aura_get_buf(); \
86 unsigned val = aura_get_u32(); \
87 aura_buffer buf_dst = aura_get_buf(); \
88 int *src = aura_buffer_to_ptr(buf_src); \
89 int *dst = aura_buffer_to_ptr(buf_dst); \
90 unsigned size = aura_get_u32(); \
91 func_pipi_t *unifunc=(func_pipi_t*)func; \
92 unifunc(src,val,dst,size); \
93}
94
95
96
97#define NMC_RPC_PLPI(func) \
98void rpc_ ## func(void *in, void *out) \
99{ \
100 aura_buffer buf_src = aura_get_buf(); \
101 unsigned long long val = aura_get_u64(); \
102 aura_buffer buf_dst = aura_get_buf(); \
103 int *src = aura_buffer_to_ptr(buf_src); \
104 int *dst = aura_buffer_to_ptr(buf_dst); \
105 unsigned size = aura_get_u32(); \
106 func_plpi_t *unifunc=(func_plpi_t*)func; \
107 unifunc(src,val,dst,size); \
108}
109
110#define NMC_RPC_PPLI(func) \
111void rpc_ ## func(void *in, void *out) \
112{ \
113 aura_buffer buf_src = aura_get_buf(); \
114 aura_buffer buf_dst = aura_get_buf(); \
115 unsigned long long val = aura_get_u64(); \
116 int *src = aura_buffer_to_ptr(buf_src); \
117 int *dst = aura_buffer_to_ptr(buf_dst); \
118 unsigned size = aura_get_u32(); \
119 func_pipi_t *unifunc=(func_pipi_t*)func; \
120}
121
122#define NMC_RPC_PPP(func) \
123void rpc_ ## func(void *in, void *out) \
124{ \
125 aura_buffer buf_src0 = aura_get_buf(); \
126 aura_buffer buf_src1 = aura_get_buf(); \
127 aura_buffer buf_dst = aura_get_buf(); \
128 int *src0 = aura_buffer_to_ptr(buf_src0); \
129 int *src1 = aura_buffer_to_ptr(buf_src1); \
130 int *dst = aura_buffer_to_ptr(buf_dst); \
131 unsigned size = aura_get_u32(); \
132 func_ppp_t *unifunc=(func_ppp_t*)func; \
133 unifunc(src0,src1,dst); \
134}
135
136#define NMC_RPC_PPP_I(func) \
137void rpc_ ## func(void *in, void *out) \
138{ \
139 aura_buffer buf_src0 = aura_get_buf(); \
140 aura_buffer buf_src1 = aura_get_buf(); \
141 aura_buffer buf_dst = aura_get_buf(); \
142 int *src0 = aura_buffer_to_ptr(buf_src0); \
143 int *src1 = aura_buffer_to_ptr(buf_src1); \
144 int *dst = aura_buffer_to_ptr(buf_dst); \
145 unsigned size = aura_get_u32(); \
146 func_ppp_t *unifunc=(func_ppp_t*)func; \
147 int ret = unifunc(src0,src1,dst); \
148 aura_put_u32(ret); \
149}
150
151
152#define NMC_RPC_PIR(func) \
153void rpc_ ## func(void *in, void *out) \
154{ \
155 aura_buffer buf_src0 = aura_get_buf(); \
156 int *src0 = aura_buffer_to_ptr(buf_src0); \
157 unsigned size = aura_get_u32(); \
158 func_pip_t *unifunc=(func_pip_t*)func; \
159 int ret ; \
160 unifunc(src0,size,&ret); \
161 aura_put_u32(ret); \
162}
163
164#define NMC_RPC_PPR_I(func) \
165void rpc_ ## func(void *in, void *out) \
166{ \
167 int handle=123; \
168 aura_buffer buf_src = aura_get_buf(); \
169 aura_buffer buf_dst = aura_get_buf(); \
170 int *src = aura_buffer_to_ptr(buf_src); \
171 int *dst = aura_buffer_to_ptr(buf_dst); \
172 func_ppr_i_t *unifunc=(func_ppr_i_t*)func; \
173 int ret = unifunc(src,dst,&handle); \
174 aura_put_u32(handle); \
175 aura_put_u32(ret); \
176}
177
178
179
180#define NMC_RPC_PIR64(func) \
181void rpc_ ## func(void *in, void *out) \
182{ \
183 aura_buffer buf_src0 = aura_get_buf(); \
184 int *src0 = aura_buffer_to_ptr(buf_src0); \
185 unsigned size = aura_get_u32(); \
186 func_pip_t *unifunc=(func_pip_t*)func; \
187 long ret ; \
188 unifunc(src0,size,&ret); \
189 aura_put_u64(ret); \
190}
191
192//#define NMC_RPC_PPIR64(func) \
193//void rpc_ ## func(void *in, void *out) \
194//{ \
195// aura_buffer buf_src0 = aura_get_buf(); \
196// aura_buffer buf_src1 = aura_get_buf(); \
197// int *src0 = aura_buffer_to_ptr(buf_src0); \
198// int *src1 = aura_buffer_to_ptr(buf_src1); \
199// unsigned size = aura_get_u32(); \
200// func_ppip_t *unifunc=(func_ppip_t*)func; \
201// long ret ; \
202// unifunc(src0,src1,size,&ret); \
203// aura_put_u64(ret); \
204//}
205//
206
207#define NMC_RPC_PPPII(func) \
208void rpc_ ## func(void *in, void *out) \
209{ \
210 aura_buffer buf_src0 = aura_get_buf(); \
211 aura_buffer buf_src1 = aura_get_buf(); \
212 aura_buffer buf_dst = aura_get_buf(); \
213 int *src0 = aura_buffer_to_ptr(buf_src0); \
214 int *src1 = aura_buffer_to_ptr(buf_src1); \
215 int *dst = aura_buffer_to_ptr(buf_dst); \
216 unsigned height = aura_get_u32(); \
217 unsigned width = aura_get_u32(); \
218 func_pppii_t *unifunc=(func_pppii_t*)func; \
219 unifunc(src0,src1,dst,height,width); \
220}
221
222#define NMC_RPC_PIIPPI(func) \
223void rpc_ ## func(void *in, void *out) \
224{ \
225 aura_buffer buf_src0 = aura_get_buf(); \
226 unsigned height = aura_get_u32(); \
227 unsigned width0 = aura_get_u32(); \
228 aura_buffer buf_src1 = aura_get_buf(); \
229 aura_buffer buf_dst = aura_get_buf(); \
230 unsigned width1 = aura_get_u32(); \
231 int *src0 = aura_buffer_to_ptr(buf_src0); \
232 int *src1 = aura_buffer_to_ptr(buf_src1); \
233 int *dst = aura_buffer_to_ptr(buf_dst); \
234 func_piippi_t *unifunc=(func_piippi_t*)func; \
235 unifunc(src0,height,width0,src1,dst,width1); \
236}


nmpp: Исходный файл g:/nmpp/include/crtdbg2.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
crtdbg2.h
1#ifdef ENABLE_ASSERTE
2#ifndef __NM__
3#include <crtdbg.h>
4#else
5#define _ASSERTE
6#endif
7
8#define ASSERTE _ASSERTE
9#else
10#define ASSERTE(expression)
11#endif


nmpp: Исходный файл g:/nmpp/include/fft.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
fft.h
1#include "./nmpls/fft.h"


nmpp: Исходный файл g:/nmpp/include/fft_32fcr.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
fft_32fcr.h
1#ifndef _FFT_32FCR_H_INCLUDED_
2#define _FFT_32FCR_H_INCLUDED_
3
4#ifdef __cplusplus
5 extern "C" {
6#endif
7
8#include "nmtype.h"
9
10#define NUMBUFF1 21
11#define NUMBUFF2 4
12
13#define pSrcVecFFTFwdInitAlloc_32fcr(SPEC, SIZE) nmppsFFT##SIZE##FwdInitAlloc_32fcr(SPEC)
14#define FFTFwdInitAlloc_32fcr(SPEC, SIZE) pSrcVecFFTFwdInitAlloc_32fcr(SPEC, SIZE)
15
16#define pSrcVecFFTInvInitAlloc_32fcr(SPEC, SIZE) nmppsFFT##SIZE##InvInitAlloc_32fcr(SPEC)
17#define FFTInvInitAlloc_32fcr(SPEC, SIZE) pSrcVecFFTInvInitAlloc_32fcr(SPEC, SIZE)
18
19#define pSrcVecFFTFwd_32fcr(SRC, DST, SPEC, SIZE) nmppsFFT##SIZE##Fwd_32fcr(SRC, DST, SPEC)
20#define FFTFwd_32fcr(SRC, DST, SPEC, SIZE) pSrcVecFFTFwd_32fcr(SRC, DST, SPEC, SIZE)
21
22#define pSrcVecFFTInv_32fcr(SRC, DST, SPEC, SIZE) nmppsFFT##SIZE##Inv_32fcr(SRC, DST, SPEC)
23#define FFTInv_32fcr(SRC, DST, SPEC, SIZE) pSrcVecFFTInv_32fcr(SRC, DST, SPEC, SIZE)
24
25typedef struct
26{
27 nm32fcr* Buffers[NUMBUFF1];
28 nm32fcr* Buffs[NUMBUFF2];
29 int order;
30} NmppsFFTSpec_32fcr;
31
32// sFFT_32fcr
33
45int nmppsFFT16FwdInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
46int nmppsFFT32FwdInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
47int nmppsFFT64FwdInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
48int nmppsFFT128FwdInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
49int nmppsFFT256FwdInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
50int nmppsFFT512FwdInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
51int nmppsFFT1024FwdInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
52int nmppsFFT2048FwdInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
53int nmppsFFT4096FwdInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
55
67int nmppsFFT16InvInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
68int nmppsFFT32InvInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
69int nmppsFFT64InvInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
70int nmppsFFT128InvInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
71int nmppsFFT256InvInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
72int nmppsFFT512InvInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
73int nmppsFFT1024InvInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
74int nmppsFFT2048InvInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
75int nmppsFFT4096InvInitAlloc_32fcr(NmppsFFTSpec_32fcr** addr);
77
92void nmppsDFT8Fwd_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
94
106void nmppsFFT16Fwd_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
108
134void nmppsFFT32Fwd_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
136
162void nmppsFFT64Fwd_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
164
186void nmppsFFT128Fwd_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
188
211void nmppsFFT256Fwd_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
213
239void nmppsFFT512Fwd_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
241
266void nmppsFFT1024Fwd_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
268
293void nmppsFFT2048Fwd_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
295
319void nmppsFFT4096Fwd_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
321
322
335void nmppsDFT8Inv_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
337
338
349void nmppsFFT16Inv_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
351
352
377void nmppsFFT32Inv_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
379
380
405void nmppsFFT64Inv_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
407
408
433void nmppsFFT128Inv_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
435
460void nmppsFFT256Inv_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
462
463
488void nmppsFFT512Inv_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
490
519void nmppsFFT1024Inv_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
521
546void nmppsFFT2048Inv_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
548
573void nmppsFFT4096Inv_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
575
589//int nmppsFFTFwd_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr *Spc);
590
591
601//int nmppsFFTFwdInitAlloc_32fcr(NmppsFFTSpec_32fcr** spec, int order);
602
603
604
605
606
618//int nmppsFFTInv_32fcr(const nm32fcr* pSrcVec, nm32fcr* pDstVec, NmppsFFTSpec_32fcr* spec);
619
620
630//int nmppsFFTInvInitAlloc_32fcr(NmppsFFTSpec_32fcr** spec, int order);
631
632
633
634
635
636
637
646int nmppsFFTFree_32fcr(NmppsFFTSpec_32fcr* spec);
647
648#ifdef __cplusplus
649 };
650#endif
651
652#endif // _FFT_32FCR_H_INCLUDED_
nmppsDFT8Fwd_32fcr
void nmppsDFT8Fwd_32fcr(const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)
Функция для вычисления прямого ДПФ с плавающей точкой над вектором, состоящим из 8 комплексных чисел
nmppsFFTFree_32fcr
int nmppsFFTFree_32fcr(NmppsFFTSpec_32fcr *spec)
Функция инициализации структуры коэффициентов, необходимых для вычисления обратного БПФ с плавающей т...
nmppsFFT1024Inv_32fcr
void nmppsFFT1024Inv_32fcr(const nm32fcr *pSrcVec, nm32fcr *pDstVec, NmppsFFTSpec_32fcr *spec)
Функция для вычисления обратного БПФ с плавающей точкой над вектором, состоящим из 1024 комплексных ч...
nmtype.h
NmppsFFTSpec_32fcr
Definition: fft_32fcr.h:26
s_nm32fcr
Definition: nmtype.h:1335


nmpp: Исходный файл g:/nmpp/include/fftexp.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
fftexp.h
1#include "fft.h"
2//#include "fftext.h"
3//#include "nmtl/tcmplx_spec.h"
4#include "nmtl/tcmplx.h"
5#include <math.h>
6
7#ifndef PI
8#define PI 3.14159265359
9#endif
10
11
12template<int power> void expFFT(int arg, float* re, float* im)
13{
14 float rad=-2.0*PI/power*arg;
15 *re=cosf((float)rad);
16 *im=sinf((float)rad);
17}
18
19template<int power> void expIFFT(int arg, float* re, float* im)
20{
21 float rad=2.0*PI/power*arg;
22 *re=cosf(rad);
23 *im=sinf(rad);
24}
25
26
27template<int power> void expFFT(int arg, int amplitude, nm32sc* z)
28{
29 float re;
30 float im;
31 expFFT<power>(arg,&re,&im);
32 z->re=floor(amplitude*re+0.5);
33 z->im=floor(amplitude*im+0.5);
34}
35
36template<int power> void expFFT127(int arg, int amplitude, nm32sc* z)
37{
38 float re;
39 float im;
40 expFFT<power>(arg,&re,&im);
41 z->re=floor(amplitude*re+0.5);
42 z->im=floor(amplitude*im+0.5);
43 z->re= z->re > 127 ? 127:z->re;
44 z->im= z->im > 127 ? 127:z->im;
45}
46
47template<int power> void expIFFT127(int arg, int amplitude, nm32sc* z)
48{
49 float re;
50 float im;
51 expIFFT<power>(arg,&re,&im);
52 z->re=floor(amplitude*re+0.5);
53 z->im=floor(amplitude*im+0.5);
54 z->re= z->re > 127 ? 127:z->re;
55 z->im= z->im > 127 ? 127:z->im;
56}
57
58template<int power> void expFFT127(int arg, int amplitude, cmplx<int>* z)
59{
60 float re;
61 float im;
62 expFFT<power>(arg,&re,&im);
63 z->re=floor(amplitude*re+0.5);
64 z->im=floor(amplitude*im+0.5);
65 z->re= z->re > 127 ? 127:z->re;
66 z->im= z->im > 127 ? 127:z->im;
67}
68
69template<int power> void expIFFT127(int arg, int amplitude, cmplx<int>* z)
70{
71 float re;
72 float im;
73 expIFFT<power>(arg,&re,&im);
74 z->re=floor(amplitude*re+0.5);
75 z->im=floor(amplitude*im+0.5);
76 z->re= z->re > 127 ? 127:z->re;
77 z->im= z->im > 127 ? 127:z->im;
78}
79
80template<int power> cmplx<int> expFFT127(int arg, int amplitude=128)
81{
82 cmplx<int> z;
83 float re;
84 float im;
85 expFFT<power>(arg,&re,&im);
86 z.re=floor(amplitude*re+0.5);
87 z.im=floor(amplitude*im+0.5);
88 z.re= z.re > 127 ? 127:z.re;
89 z.im= z.im > 127 ? 127:z.im;
90 return z;
91}
92
93
94template<int power> cmplx<int> expFFT(int arg, int amplitude)
95{
96 float re;
97 float im;
98 expFFT<power>(arg,&re,&im);
99 cmplx<int> z;
100 z.re=floor(amplitude*re+0.5);
101 z.im=floor(amplitude*im+0.5);
102 return z;
103}
104
105template<int power> cmplx<long long> lexpFFT(int arg, int amplitude)
106{
107 float re;
108 float im;
109 expFFT<power>(arg, &re, &im);
110 cmplx<long long> z;
111 z.re = floor(amplitude*re + 0.5);
112 z.im = floor(amplitude*im + 0.5);
113 return z;
114}
115
116
117template<int power> cmplx<int> expIFFT(int arg, int amplitude)
118{
119 float re;
120 float im;
121 expIFFT<power>(arg,&re,&im);
122 cmplx<int> z;
123 z.re=floor(amplitude*re+0.5);
124 z.im=floor(amplitude*im+0.5);
125 return z;
126}
127
128
129
130template<int power> cmplx<double> expFFT(int arg)
131{
132 cmplx<double> z;
133 double im=-2.0*PI/power*arg;
134 z.re=cos(im);
135 z.im=sin(im);
136 return z;
137}
138template<int power> cmplx<double> expIFFT(int arg)
139{
140 cmplx<double> z;
141 double im=2.0*PI/power*arg;
142 z.re=cos(im);
143 z.im=sin(im);
144 return z;
145}
146
147void load_wfifo(nm64s* wfifoData, int wfifoStep, int size);
148void load_wfifo(cmplx<int>* wcoef, int wstep, int size);
149void load_wfifo(nm32sc* wcoef, int wstep, int size);
150
151void vsum_data(nm8s* data, nm32sc* afifo, int vr);
152void vsum_data(nm16s* data, nm32sc* afifo, int vr);
153void vsum_data(nm8s* data, cmplx<int>* afifo, int vr);
nm64s
long long nm64s
Definition: nmtype.h:375
nm16s
short nm16s
Definition: nmtype.h:243
nm8s
char nm8s
Definition: nmtype.h:167
s_nm32sc
Definition: nmtype.h:1301


nmpp: Исходный файл g:/nmpp/include/macros_fpu.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
macros_fpu.h
1
2#define ALL_FPU( instr ) "fpu 0 " instr "\n\t" \
3 "fpu 1 " instr "\n\t" \
4 "fpu 2 " instr "\n\t" \
5 "fpu 3 " instr "\n\t"
6
7// код для исправления аппаратной ошибки №5 процессора 6407
8// замедляет выполнение процентов на 8, можно отключить для 6408
9#if NMC_CORE_VERSION > NM6407
10#define ALL_FPU_ANTI_MASK
11#else
12#define ALL_FPU_ANTI_MASK "fp0_lmask = fp0_lmask; \n\t" \
13 "fp1_lmask = fp1_lmask; \n\t" \
14 "fp2_lmask = fp2_lmask; \n\t" \
15 "fp3_lmask = fp3_lmask; \n\t"
16#endif
17
18#define DUP(x) x,x
19
20// Запрещаем прерывания и прочее в том же духе, деструктор возвращает обратно
21class EnterHardMode
22{
23 static int inst;
24public:
25 EnterHardMode()
26 {
27 inst++;
28 asm volatile( "pswr clear 01e0h; \n\t" // block interrupts
29// ".int 0xf7990000 \n\t"//set fp_wait
30 );
31 }
32 ~EnterHardMode()
33 {
34 if (--inst==0)
35 asm volatile( "pswr set 01e0h; \n\t" // allow interrupts"
36// ".int 0xf7d90000 \n\t"//set fp_branch
37 );
38 }
39};
EnterHardMode
Definition: macros_fpu.h:22


nmpp: Исходный файл g:/nmpp/include/malloc32.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
malloc32.h
1#ifndef MALLOC32_DEFINED
2#define MALLOC32_DEFINED
3#include <malloc.h>
4#include "nmtype.h"
5
6//#define void* malloc32 (unsigned size_int32 );
7//#define malloc32 nmppsMalloc_32s
8typedef void (*t_free_func)(void*);
9#ifdef __cplusplus
10 extern "C" {
11#endif
12
13
14#define HEAP_0 1
15#define HEAP_1 2
16#define HEAP_2 4
17#define HEAP_3 8
18
19
20void* malloc0(unsigned int size);
21void* malloc1(unsigned int size);
22void* malloc2(unsigned int size);
23void* malloc3(unsigned int size);
24
25//void* malloc32 (unsigned size_int32, unsigned bank_mask);
26//#define malloc32 (unsigned size_int32)
27void free32(void* p);
28
29
30#ifdef __NM__
31 #define malloc32(size) malloc(size)
32
33#else
34 #define malloc32(size) malloc((size)<<2)
35#endif
36
37// universal malloc for nmc-gcc and nmcc (универсальный маллок для nmc-gcc и nmcc)
38// size - размер выделяемой памяти в 32-битных словах
39// heap_num - номер кучи, в которой будет выделена память (для nmcc от 0 до 3, для nmc-gcc от 0 до 15)
40void* nmppMalloc(unsigned size, int heap_num);
41
42typedef void (Free32Func)(void*);
43typedef void* (Malloc32Func)(unsigned int);
44
45#define NMPP_OPTIMIZE_ALLOC 1
46#define NMPP_CUSTOM_ALLOC 2
47
48
49#define ENABLE_HISTORY 1
50#define ENABLE_RANDOM 1
51enum MALLOC32_MODE {MALLOC32_RING_MODE,MALLOC32_HISTORY_MODE,MALLOC32_PRIORITY_MODE, MALLOC32_ROUTE_MODE, MALLOC32_LONG_ROUTE_MODE, MALLOC32_FIXED_MODE, MALLOC32_RANDOM_MODE };
52#define NMPPS_MALLOC_LIMIT 128
53#define NMPPS_MALLOC_MAX_POS NMPPS_MALLOC_LIMIT-1
54
55struct NmppsMallocSpec{
56 Malloc32Func* allocator[4];
57 enum MALLOC32_MODE mode;
58 uint32 random; // bit-mask of available heaps
59 fseq32 priority; // heap allocation sequence in decdendnig priority terminated by 0xF
60 uint32 status; // error status
61 uint32 time;
62 uint32 timeBest;
63 uint32 routePos;
64 fseq64 route[NMPPS_MALLOC_LIMIT/16];
65 fseq64 bestRoute[NMPPS_MALLOC_LIMIT/16];
66 void* allocHistory[NMPPS_MALLOC_LIMIT];
67 void* freeHistory[NMPPS_MALLOC_LIMIT];
68 uint32 allocHistoryPos;
69 uint32 freeHistoryPos;
70 uint32 firstPass;
71};
72
73struct NmppsTmpSpec {
74 void* buffer0;
75 void* buffer1;
76} ;
77
78
79
80//nm1* nmppsMalloc_1 (unsigned sizeInt1) ;
81//nm2s* nmppsMalloc_2s (unsigned sizeInt2) ;
82//nm2u* nmppsMalloc_2u (unsigned sizeInt2) ;
83//nm4s* nmppsMalloc_4s (unsigned sizeInt4) ;
84//nm4u* nmppsMalloc_4u (unsigned sizeInt4) ;
85//nm8s* nmppsMalloc_8s (unsigned sizeInt8) ;
86//nm8u* nmppsMalloc_8u (unsigned sizeInt8) ;
87//nm16s* nmppsMalloc_16s(unsigned sizeInt16);
88//nm16u* nmppsMalloc_16u(unsigned sizeInt16);
89//nm32s* nmppsMalloc_32s(unsigned sizeInt32);
90//nm32u* nmppsMalloc_32u(unsigned sizeInt32);
91//nm64s* nmppsMalloc_64s(unsigned sizeInt64);
92//nm64u* nmppsMalloc_64u(unsigned sizeInt64);
93//void nmppsFree32(void* buffer);
94
95typedef struct {
96 void* pull;
97 nm8u* data;
98}NmppsFrame_8u;
99
100typedef struct {
101 void* pull;
102 nm8s* data;
103}NmppsFrame_8s;
104
105typedef struct {
106 void* pull;
107 nm16u* data;
108}NmppsFrame_16u;
109
110typedef struct {
111 void* pull;
112 nm16s* data;
113}NmppsFrame_16s;
114
115typedef struct {
116 void* pull;
117 nm32u* data;
118}NmppsFrame_32u;
119
120typedef struct {
121 void* pull;
122 nm32s* data;
123}NmppsFrame_32s;
124
125typedef struct {
126 void* pull;
127 nm64u* data;
128}NmppsFrame_64u;
129
130typedef struct {
131 void* pull;
132 nm64s* data;
133}NmppsFrame_64s;
134
135//NmppsFrame_32s* nmppsMallocFrame32 (unsigned sizeInt32, unsigned boundaryInt32);
136 nm8s* nmppsMallocFrame_8s (unsigned sizeInt8 , unsigned boundaryInt8 , NmppsFrame_8s * pFrame) ;
137 nm8u* nmppsMallocFrame_8u (unsigned sizeInt8 , unsigned boundaryInt8 , NmppsFrame_8u * pFrame) ;
138 nm16s* nmppsMallocFrame_16s(unsigned sizeInt16, unsigned boundaryInt16, NmppsFrame_16s* pFrame);
139 nm16u* nmppsMallocFrame_16u(unsigned sizeInt16, unsigned boundaryInt16, NmppsFrame_16u* pFrame);
140 nm32s* nmppsMallocFrame_32s(unsigned sizeInt32, unsigned boundaryInt32, NmppsFrame_32s* pFrame);
141 nm32u* nmppsMallocFrame_32u(unsigned sizeInt32, unsigned boundaryInt32, NmppsFrame_32u* pFrame);
142 nm64s* nmppsMallocFrame_64s(unsigned sizeInt64, unsigned boundaryInt64, NmppsFrame_64s* pFrame);
143 nm64u* nmppsMallocFrame_64u(unsigned sizeInt64, unsigned boundaryInt64, NmppsFrame_64u* pFrame);
144void nmppsFreeFrame(void* pFrame);
145
146
147/*
148typedef struct ss {
149 void* pull;
150 void* data;
151}NmppiFrame;
152
153nm8s* nmppiMallocFrame_8s (unsigned width, unsigned height, unsigned border, NmppiFrame_8s * pFrame);
154nm8u* nmppiMallocFrame_8u (unsigned width, unsigned height, unsigned border, NmppiFrame_8u * pFrame);
155nm16s* nmppiMallocFrame_16s(unsigned width, unsigned height, unsigned border, NmppiFrame_16s* pFrame);
156nm16u* nmppiMallocFrame_16u(unsigned width, unsigned height, unsigned border, NmppiFrame_16u* pFrame);
157nm32s* nmppiMallocFrame_32s(unsigned width, unsigned height, unsigned border, NmppiFrame_32s* pFrame);
158nm32u* nmppiMallocFrame_32u(unsigned width, unsigned height, unsigned border, NmppiFrame_32u* pFrame);
159nm64s* nmppiMallocFrame_64s(unsigned width, unsigned height, unsigned border, NmppiFrame_64s* pFrame);
160nm64u* nmppiMallocFrame_64u(unsigned width, unsigned height, unsigned border, NmppiFrame_64u* pFrame);
161void nmppsFreeFrame32(void* buffer);
162*/
163
164
165
166typedef struct {
167 void* buffer;
168 int status;
169 int mode;
170 fseq64 route;
171} SpecTmp1;
172//
173//typedef struct {
174// nm8s* buffer0;
175// nm8s* buffer1;
176// int status;
177// int mode;
178// fseq64 route;
179//} Spec8s;
180
181//int nmppsMallocCreate(int limit);
182//int nmppsMallocDestroy();
183//int nmppsMallocMode(WIPE_ENABLE|REC_HISTORY|REC_ROUTE);
184
185//void* nmppsMallocSpec_8s(SpecTmp1* spec,int size, int mode);
186void* nmppsMallocSpec1(SpecTmp1* spc,int sizeBuf0,int , int);
187void* nmppsFreeSpec1 (SpecTmp1* spc);
188
189int nmppsMallocResetPos();
190int nmppsMallocResetRoute ();
191void nmppsMallocSetRouteMode ();
192void nmppsMallocSetRingMode ();
193//void nmppsMallocSetRouteModeEx(seq64* heapSeq, int routeSize, int routeLimit);
194
195//void nmppsMallocSetBigRouteMode(seq64* heapSeq, int heapCount);
196//void nmppsMallocSetRandomMode(uint32 heapSet, int heapCount);
197//void nmppsMallocSetPriorityMode (seq64 heapSeq, int heapCount);
198//void nmppsMallocSetHistoryMode(seq64* addrSeq, void** allocSeq);
199void nmppsMallocSetHistoryMode();
200void nmppsMallocRecHistory (void** allocSeq, void** freeSeq);
201//int nmppsMallocStopAddrRec ();
202//void nmppsMallocStartRouteRec (seq64* heapSeq, int maxHeapCount);
203//int nmppsMallocStopRouteRec ();
204//void nmppsMallocSetBoundary32 (int size32 );
205//void nmppsMallocSetFill32(int borderColor, int dataColor );
206//int nmppsMallocCheckBoundary(void*);
207//int nmppsMallocIsErrorStatus();
208int nmppsMallocSuccess();
209int nmppsMallocFail();
210int nmppsMallocStatus();
211void nmppsMallocResetStatus ();
212//int nmppsMallocGetHistory (fseq64* heapSeq, int seqSize);
213//int nmppsMallocSaveState();
214//int nmppsMallocRestoreState();
215//void nmppsMallocReset(seq64* currRoute,void** allocHistory,void** freeHistory, int size);
216
217void nmppsMallocTimerStart();
218void nmppsMallocTimerResume();
219void nmppsMallocTimerStop();
220
221//void nmppsMallocNextRoute(seq64* currRoute, int mode);
222void nmppsMallocRandomRoute();
223int nmppsMallocIncrementRoute0();
224int nmppsMallocIncrementRoute(int routeLength, int heapMask );
225int nmppsMallocWipe();
226int nmppsMallocBetterRoute();
227void nmppsMallocSetBestRoute(int historyEnable);
228int nmppsMallocSetRoute(fseq64* route, int count); // implemented
229void nmppsMallocSetShortRoute(fseq64 route);
230void nmppsMallocSetRoute16(fseq64 route);
231void nmppsMallocGetRoute16(fseq64* route);
232extern struct NmppsMallocSpec nmppsMallocSpec;
233
234
260void* nmppsMalloc32 (unsigned sizeInt32);
261 nm64s* nmppsMalloc_64s (unsigned nSize);
262 nm1* nmppsMalloc_1 (unsigned nSize) ;//{return (nm1* )nmppsMalloc_64s((nSize>>6) +1);}
263 nm2s* nmppsMalloc_2s (unsigned nSize) ;//{return (nm2s* )nmppsMalloc_64s((nSize>>5) +1);}
264 nm2u* nmppsMalloc_2u (unsigned nSize) ;//{return (nm2u* )nmppsMalloc_64s((nSize>>5) +1);}
265 nm4s* nmppsMalloc_4s (unsigned nSize) ;//{return (nm4s* )nmppsMalloc_64s((nSize>>4) +1);}
266 nm4u* nmppsMalloc_4u (unsigned nSize) ;//{return (nm4u* )nmppsMalloc_64s((nSize>>4) +1);}
267 nm8u* nmppsMalloc_8u (unsigned nSize) ;//{return (nm8u* )nmppsMalloc_64s((nSize>>3) +1);}
268 nm8s* nmppsMalloc_8s (unsigned nSize) ;//{return (nm8s* )nmppsMalloc_64s((nSize>>3) +1);}
269 nm16u* nmppsMalloc_16u (unsigned nSize) ;//{return (nm16u*)nmppsMalloc_64s((nSize>>2) +1);}
270 nm16s* nmppsMalloc_16s (unsigned nSize) ;//{return (nm16s*)nmppsMalloc_64s((nSize>>2) +1);}
271 nm32u* nmppsMalloc_32u (unsigned nSize) ;//{return (nm32u*)nmppsMalloc_64s((nSize>>1) +1);}
272 nm32s* nmppsMalloc_32s (unsigned nSize) ;//{return (nm32s*)nmppsMalloc_64s((nSize>>1) +1);}
273 nm64u* nmppsMalloc_64u (unsigned nSize) ;//{return (nm64u*)nmppsMalloc_64s(nSize);}
274 nm64sc* nmppsMalloc_64sc (unsigned nSize) ;//{return (nm64u*)nmppsMalloc_64s(nSize);}
275 nm32sc* nmppsMalloc_32sc (unsigned sizeCmplxInt32);
276 nm32fc* nmppsMalloc_32fc (unsigned sizeCmplxFloat);
277 nm32fcr* nmppsMalloc_32fcr(unsigned sizeCmplxFloat);
278float* nmppsMalloc_32f (unsigned sizeFloat);
279double* nmppsMalloc_64f (unsigned sizeDouble);
280
281
282/*
283__INLINE__ void nmppsMalloc_1 (nm1** pptr, int nSize, int hint ) { nmppsMalloc_64s((nm64s**)pptr, (nSize>>6) +1, hint);}
284__INLINE__ void nmppsMalloc_2s(nm2s** pptr, int nSize, int hint ) { nmppsMalloc_64s((nm64s**)pptr, (nSize>>5) +1, hint);}
285__INLINE__ void nmppsMalloc_2u(nm2u** pptr, int nSize, int hint ) { nmppsMalloc_64s((nm64s**)pptr, (nSize>>5) +1, hint);}
286__INLINE__ void nmppsMalloc_4s(nm4s** pptr, int nSize, int hint ) { nmppsMalloc_64s((nm64s**)pptr, (nSize>>4) +1, hint);}
287__INLINE__ void nmppsMalloc_4u(nm4u** pptr, int nSize, int hint ) { nmppsMalloc_64s((nm64s**)pptr, (nSize>>4) +1, hint);}
288__INLINE__ void nmppsMalloc_8u(nm8u** pptr, int nSize, int hint ) { nmppsMalloc_64s((nm64s**)pptr, (nSize>>3) +1, hint);}
289__INLINE__ void nmppsMalloc_8s(nm8s** pptr, int nSize, int hint ) { nmppsMalloc_64s((nm64s**)pptr, (nSize>>3) +1, hint);}
290__INLINE__ void nmppsMalloc_16u(nm16u** pptr, int nSize, int hint) { nmppsMalloc_64s((nm64s**)pptr, (nSize>>2) +1, hint);}
291__INLINE__ void nmppsMalloc_16s(nm16s** pptr, int nSize, int hint) { nmppsMalloc_64s((nm64s**)pptr, (nSize>>2) +1, hint);}
292__INLINE__ void nmppsMalloc_32u(nm32u** pptr, int nSize, int hint) { nmppsMalloc_64s((nm64s**)pptr, (nSize>>1) +1, hint);}
293__INLINE__ void nmppsMalloc_32s(nm32s** pptr, int nSize, int hint) { nmppsMalloc_64s((nm64s**)pptr, (nSize>>1) +1, hint);}
294__INLINE__ void nmppsMalloc_64u(nm64u** pptr, int nSize, int hint) { nmppsMalloc_64s((nm64s**)pptr, nSize, hint);}
295*/
297
298//*****************************************************************************
299
316
317
318 void nmppsFree(void* ptr);
319
321
322
323
324#ifdef __cplusplus
325 };
326#endif
327
328#endif
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm32s
int nm32s
Definition: nmtype.h:292
nm4u
void nm4u
Definition: nmtype.h:417
nm16u
unsigned short nm16u
Definition: nmtype.h:481
nm64s
long long nm64s
Definition: nmtype.h:375
nm2s
void nm2s
Definition: nmtype.h:116
nm2u
void nm2u
Definition: nmtype.h:404
nm1
int nm1
Definition: nmtype.h:100
nm16s
short nm16s
Definition: nmtype.h:243
nm32u
unsigned int nm32u
Definition: nmtype.h:509
nm4s
void nm4s
Definition: nmtype.h:129
nm64u
unsigned long long nm64u
Definition: nmtype.h:536
nm8s
char nm8s
Definition: nmtype.h:167
nmtype.h
NmppsFrame_16s
Definition: malloc32.h:110
NmppsFrame_16u
Definition: malloc32.h:105
NmppsFrame_32s
Definition: malloc32.h:120
NmppsFrame_32u
Definition: malloc32.h:115
NmppsFrame_64s
Definition: malloc32.h:130
NmppsFrame_64u
Definition: malloc32.h:125
NmppsFrame_8s
Definition: malloc32.h:100
NmppsFrame_8u
Definition: malloc32.h:95
NmppsMallocSpec
Definition: malloc32.h:55
NmppsTmpSpec
Definition: malloc32.h:73
SpecTmp1
Definition: malloc32.h:166
s_nm32fc
Definition: nmtype.h:1328
s_nm32fcr
Definition: nmtype.h:1335
s_nm32sc
Definition: nmtype.h:1301
s_nm64sc
Definition: nmtype.h:1364


nmpp: Исходный файл g:/nmpp/include/metric.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
metric.h
1#include "nmtype.h"
2
3#ifdef __cplusplus
4 extern "C" {
5#endif
6
7float nmppsMSD_32sc(const nm32sc* x0, const nm32sc* x1, int size);
8float nmppsRMSD_32fcr(const nm32fcr *src1, const nm32fcr *src2, int num);
9
10void nmppsNormDiff_L1_32s (const nm32s* pSrc1, const nm32s* pSrc2, int len, float* pNorm);
11void nmppsNormDiff_L2_32s (const nm32s* pSrc1, const nm32s* pSrc2, int len, float* pNorm);
12void nmppsNormDiff_L2_32f(const float* pSrc1, const float* pSrc2, int len, float* pNorm);
13void nmppsNormDiff_L2_32fcr(const nm32fcr *src1, const nm32fcr *src2, int num, float* pNorm);
14void nmppsNormDiff_Inf_32s(const nm32s* pSrc1, const nm32s* pSrc2, int len, float* pNorm);
15void nmppsNormDiff_Inf_32f(const float* pSrc1, const float* pSrc2, int len, float* pNorm);
16
17
18#ifdef __cplusplus
19 };
20#endif
nm32s
int nm32s
Definition: nmtype.h:292
nmtype.h
s_nm32fcr
Definition: nmtype.h:1335
s_nm32sc
Definition: nmtype.h:1301


nmpp: Исходный файл g:/nmpp/include/minrep.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
minrep.h
1#define NMPP_MIN_REP 1


nmpp: Исходный файл g:/nmpp/include/multiheap.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
multiheap.h
1#ifndef MULTIHEAP_INCLUDED
2#define MULTIHEAP_INCLUDED
3typedef unsigned size_t32;
4typedef unsigned size_t32;
5
6
7
8#include "nmpp.h"
9
10
11#define GUARD_BITS 0x600DB1D5
12#define MAX_BUFFER32_SIZE 16*1024*1024/4
14struct S_BufferInfo{
15 int guardInfoBits0;
16 size_t32 size32Buffer;
17 S_BufferInfo* pPrevBuffer;
18 S_BufferInfo* pNextBuffer;
19 bool isLocked;
20 int guardInfoBits1;
21
22
24 int* DataBegin(){
25 return ((int*)this+sizeof(S_BufferInfo)/sizeof(int));
26 };
27
29 int* DataEnd(){
30 int *p=((int*)this+sizeof(S_BufferInfo)/sizeof(int)+size32Buffer);
31 return p;
32 }
34 int* EndGuardBits(){
35 return DataEnd()-2;
36 }
37 unsigned CheckGuardBits(){
38 if (guardInfoBits0!=GUARD_BITS){
39 return 0xBADB00F1;
40 }
41 if (guardInfoBits1!=GUARD_BITS){
42 return 0xBADB00F2;
43 }
44 if (size32Buffer){
45 int* pFinalGuardBits=EndGuardBits();
46 if ((*pFinalGuardBits)!=GUARD_BITS){
47 return 0xBADB00F3;
48 }
49 if (*(pFinalGuardBits+1)!=GUARD_BITS){
50 return 0xBADB00F4;
51 }
52 if (size32Buffer<0)
53 return 0xBADB00FF;
54
55 if (size32Buffer>MAX_BUFFER32_SIZE)
56 return 0xBADB00FE;
57 }
58 return 0;
59 }
60};
61
62
64class C_Heap{
65public:
66 S_BufferInfo* pZeroBuffer;
67 int* pHeapEnd;
68 int size32HeapAvail;
69 bool isHeapLocked;
70 int status;
71 C_Heap() {
72 pZeroBuffer = 0;
73 pHeapEnd = 0;
74 size32HeapAvail=0;
75 isHeapLocked=false;
76 status =0;
77 }
79 C_Heap (void* addrHeap, size_t32 size32Heap){
80 Create(addrHeap,size32Heap);
81 }
82
84 void Create( void* addrHeap, size_t32 size32Heap){
85
86 pZeroBuffer= (S_BufferInfo*)addrHeap; // начальный адрес кучи
87 pZeroBuffer->pPrevBuffer=0;
88 pZeroBuffer->pNextBuffer=0;
89 pZeroBuffer->size32Buffer=0;
90 pZeroBuffer->isLocked=true;
91 pZeroBuffer->guardInfoBits0=GUARD_BITS;
92 pZeroBuffer->guardInfoBits1=GUARD_BITS;
93
94 pHeapEnd = (int*)addrHeap+size32Heap; // конечный адрес кучи (следующий за последним байтом кучи)
95 size32HeapAvail=pHeapEnd-(int*)pZeroBuffer->DataEnd();
96 }
97
99 int IsMine(void* addr){
100 if ((int*)pZeroBuffer < (int*)addr && (int*)addr < pHeapEnd)
101 return 1;
102 return 0;
103 }
104
106 //int HeapAvail(){
107 // return (size32FreeMem-sizeof(S_BufferInfo)/sizeof(int));
108 //}
109
110 //size_t32 TotalAvail(){
111 // return size32HeapAvail;
112 //}
113
115 size_t32 AllocateMaxAvail(){
116 int size32Max=0;
117 S_BufferInfo* pBuffer=pZeroBuffer;
118 for ( ; pBuffer->pNextBuffer!=0; pBuffer=pBuffer->pNextBuffer) {
119 int size32Between=(int*)pBuffer->pNextBuffer - pBuffer->DataEnd();
120 if (size32Between>size32Max)
121 size32Max=size32Between;
122 }
123 // находимся на последнем буфере
124 int size32Between=(int*)pHeapEnd - pBuffer->DataEnd();
125 if (size32Between>size32Max)
126 size32Max=size32Between;
127 size32Max-=sizeof(S_BufferInfo)/sizeof(int);
128 return size32Max;
129 }
130
132 int* Allocate(size_t32 size32Buffer){
133 if (isHeapLocked)
134 return 0;
135 if (size32Buffer==0)
136 return 0;
137 size32Buffer+=(size32Buffer&1); // округляем вверх до четного размера
138 size32Buffer+=2; // добавляем 2 слова для защитного поля
139 S_BufferInfo* pBuffer=pZeroBuffer;
140 int size32Between=0;
141 for(; pBuffer->pNextBuffer!=0; pBuffer=pBuffer->pNextBuffer){
142 // проверяем влезает ли массив в промежуток между буферами
143 size32Between=(int*)pBuffer->pNextBuffer - pBuffer->DataEnd();
144 if (size32Between>=size32Buffer+sizeof(S_BufferInfo)/sizeof(int)){
145 // создаем новый буфер
146 S_BufferInfo* pAllocateBuffer=(S_BufferInfo*)pBuffer->DataEnd();
147 // устанавливаем связи в следующем буфере
148 pBuffer->pNextBuffer->pPrevBuffer=pAllocateBuffer;
149 // устнавливаем связи в новом буфере
150 pAllocateBuffer->pPrevBuffer=pBuffer;
151 pAllocateBuffer->pNextBuffer=pBuffer->pNextBuffer;
152 pAllocateBuffer->size32Buffer=size32Buffer;
153 pAllocateBuffer->isLocked=false;
154 // устанавливаем защитные биты
155 pAllocateBuffer->guardInfoBits0=GUARD_BITS;
156 pAllocateBuffer->guardInfoBits1=GUARD_BITS;
157 int* guardEndBits=pAllocateBuffer->EndGuardBits();
158 *guardEndBits =GUARD_BITS;
159 *(guardEndBits+1)=GUARD_BITS;
160 // устанавливаем связи в предыдущем буфере
161 pBuffer->pNextBuffer=pAllocateBuffer;
162 // уменьшаем сободный размер
163 size32HeapAvail-=(size32Buffer+sizeof(S_BufferInfo)/sizeof(int));
164
165 return pAllocateBuffer->DataBegin();
166 }
167 }
168 // дошли до последнего буфера (у которого ->pNextBuffer=0)
169 size32Between=(int*)pHeapEnd - pBuffer->DataEnd();
170 if (size32Between>=size32Buffer+sizeof(S_BufferInfo)/sizeof(int)){
171 // создаем новый буфер
172 S_BufferInfo* pAllocateBuffer=(S_BufferInfo*)pBuffer->DataEnd();
173 // устнавливаем связи в новом буфере
174 pAllocateBuffer->pPrevBuffer=pBuffer;
175 pAllocateBuffer->pNextBuffer=0;
176 pAllocateBuffer->size32Buffer=size32Buffer;
177 pAllocateBuffer->isLocked=false;
178 // устанавливаем защитные биты
179 pAllocateBuffer->guardInfoBits0=GUARD_BITS;
180 pAllocateBuffer->guardInfoBits1=GUARD_BITS;
181 int* guardEndBits=pAllocateBuffer->EndGuardBits();
182 *guardEndBits =GUARD_BITS;
183 *(guardEndBits+1)=GUARD_BITS;
184 // устанавливаем связи в предыдущем буфере
185 pBuffer->pNextBuffer=pAllocateBuffer;
186 size32HeapAvail-=(size32Buffer+sizeof(S_BufferInfo)/sizeof(int));
187 // уменьшаем сободный размер
188 return pAllocateBuffer->DataBegin();
189 }
190 return 0;
191 }
192
194 int ReleaseBuffer(S_BufferInfo* pDelBuffer){
195 if (isHeapLocked)
196 return 0;
197 if (pDelBuffer->isLocked)
198 return 0;
199 if (pDelBuffer->size32Buffer==0)
200 return 0;
201
202 pDelBuffer->pPrevBuffer->pNextBuffer=pDelBuffer->pNextBuffer; // связываем ссылку предыдущего буфера на следующий
203 if (pDelBuffer->pNextBuffer) // если есть следующий
204 pDelBuffer->pNextBuffer->pPrevBuffer=pDelBuffer->pPrevBuffer; // связываем ссылку следующего буфера на предыдущий
205 size32HeapAvail+=(pDelBuffer->size32Buffer+sizeof(S_BufferInfo)/sizeof(int));
206 pDelBuffer->size32Buffer=0;
207 return 1;
208 }
209
211 int Release(void* p){
212 if (isHeapLocked)
213 return 0;
214 S_BufferInfo* pDelBuffer=(S_BufferInfo*)p-1;
215 return ReleaseBuffer(pDelBuffer);
216 }
217
219 void Lock(void* p){
220 S_BufferInfo* pBuffer=(S_BufferInfo*)p-1;
221 pBuffer->isLocked=true;
222 }
223
225 void LockAll(){
226 S_BufferInfo* pBuffer=pZeroBuffer->pNextBuffer;
227 while (pBuffer) {
228 pBuffer->isLocked=true;
229 pBuffer=pBuffer->pNextBuffer;
230 }
231 }
233 void UnlockAll(){
234 S_BufferInfo* pBuffer=pZeroBuffer->pNextBuffer;
235 while (pBuffer) {
236 pBuffer->isLocked=false;
237 pBuffer=pBuffer->pNextBuffer;
238 }
239 }
240
242 void Unlock(void* p){
243 S_BufferInfo* pBuffer=(S_BufferInfo*)p-1;
244 pBuffer->isLocked=false;
245 //numHeapLocked--;
246 }
247
249 void ReleaseAll(){
250 S_BufferInfo* pBuffer=pZeroBuffer->pNextBuffer;
251 if (isHeapLocked)
252 return ;
253 while (pBuffer) {
254 if (!pBuffer->isLocked){
255 ReleaseBuffer(pBuffer);
256 }
257 pBuffer=pBuffer->pNextBuffer;
258 }
259 }
261 void LockHeap(){
262 isHeapLocked=true;
263 }
265 void UnlockHeap(){
266 isHeapLocked=false;
267 }
268 int Check(){
269 if (status)
270 return status;
271
272 if (pZeroBuffer->pPrevBuffer){
273 status=0xBADB00F0;
274 return status;
275 }
276 if (pZeroBuffer->size32Buffer){
277 status=0xBADB00FF;
278 return status;
279 }
280 // if (status=pZeroBuffer->CheckGuardBits()){
281 // return status;
282 // }
283
284 S_BufferInfo* pBuffer=pZeroBuffer->pNextBuffer;
285
286 int AllocatedMemory=0;
287 int MaxHeapSize=(int*)pHeapEnd-(int*)pZeroBuffer;
288
289 for(int i=0;i<100;i++){
290 if (pBuffer==0)
291 break;
292
293
294 if (!IsMine(pBuffer)){
295 status =0xBADB00FA;
296 return status;
297 }
298
299 if (status=pBuffer->CheckGuardBits()){
300 return status;
301 }
302
303 if (pBuffer->pPrevBuffer->pNextBuffer!=pBuffer){
304 status =0xBADB00FB;
305 return status;
306 }
307
308 AllocatedMemory+=sizeof(S_BufferInfo)/sizeof(int);
309 AllocatedMemory+=pBuffer->size32Buffer;
310 if (AllocatedMemory>MaxHeapSize){
311 status=0xBADB00FD;
312 return status;
313 }
314 if ((int)pBuffer&1){
315 status=0xBADB00FC;
316 return status;
317 }
318 pBuffer=pBuffer->pNextBuffer;
319 }
320 return 0;
321 }
322};
323
324
325#define ALLOCATE_FORWARD 1
326#define ALLOCATE_BACKWARD 2
327#define ALLOCATE_RANDOM 4
328#define ALLOCATE_CUSTOM 8
329#define MAX_NUM_BANKS 6
330class C_Allocator32 {
331 public:
332 void* Allocate();
333 int Release();
334};
335
336class C_MultiHeap: public C_Allocator32 {
337 unsigned m_z;
338 unsigned m_w;
339public:
340 C_Heap pHeap[MAX_NUM_BANKS];
341 unsigned numHeaps;
342 unsigned numAllocateFails;
343 unsigned AllocateMode ;
344 void** pAllocateLegend;
345 unsigned idxAllocateLegend;
346 long long allocateHistory;
347 C_MultiHeap(int Mode=ALLOCATE_FORWARD) {
348 allocateHistory=0;
349 numHeaps=0;
350 numAllocateFails=0;
351 m_z=3141516;
352 m_w=3141516;
353 AllocateMode=Mode;
354 pAllocateLegend=0;
355 }
356
357 int Error(){
358 return numAllocateFails;
359 }
360 void Mode(int mode, void** legend=0){
361
362 idxAllocateLegend=0;
363 pAllocateLegend=legend;
364 AllocateMode=mode;
365 }
366
368 unsigned Rand()
369 {
370 m_z = 36969 * (m_z & 0xFFFF) + (m_z >> 16);
371 m_w = 18000 * (m_w & 0xFFFF) + (m_w >> 16);
372 return (m_z << 16) + m_w;
373 }
374 unsigned Rand(unsigned min, unsigned max){
375 unsigned r=Rand();
376 r=(r-min)%(max-min+1)+min;
377 return r;
378
379 }
380
381 C_Heap& operator [](int idxHeap){
382 return pHeap[idxHeap];
383 }
384
386 int CreateHeap(void* addrHeap, size_t32 size32Heap){
387 if (numHeaps>MAX_NUM_BANKS)
388 return 0;
389
390 pHeap[numHeaps].Create(addrHeap,size32Heap);
391 if (pHeap[numHeaps].size32HeapAvail)
392 numHeaps++;
393 return 1;
394 }
395
397 void* Allocate(size_t32 size32Buffer){
398
399 void *p;
400 unsigned i;
401
402 switch (AllocateMode){
403 case ALLOCATE_FORWARD:
404 for(i=0; i<numHeaps; i++){
405 p=pHeap[i].Allocate(size32Buffer);
406 if (p){
407 allocateHistory<<=4;
408 allocateHistory|=i;
409 if (pAllocateLegend){
410 //pAllocateLegend[idxAllocateLegend>>3]&=~(0xFF<<((idxAllocateLegend&7)<<4));
411 //pAllocateLegend[idxAllocateLegend>>3]|=~( i<<((idxAllocateLegend&7)<<4));
412 pAllocateLegend[idxAllocateLegend]=p;
413 idxAllocateLegend++;
414 }
415 return p;
416 }
417 }
418 numAllocateFails++;
419 break;
420
421 case ALLOCATE_BACKWARD:
422 for(i=numHeaps-1; i>=0; i--){
423 p=pHeap[i].Allocate(size32Buffer);
424 if (p){
425 allocateHistory<<=4;
426 allocateHistory|=i;
427 if (pAllocateLegend){
428 //pAllocateLegend[idxAllocateLegend>>3]&=~(0xFF<<((idxAllocateLegend&7)<<4));
429 //pAllocateLegend[idxAllocateLegend>>3]|=~( i<<((idxAllocateLegend&7)<<4));
430 pAllocateLegend[idxAllocateLegend]=p;
431 idxAllocateLegend++;
432 }
433 return p;
434 }
435
436 }
437 numAllocateFails++;
438 break;
439
440 case ALLOCATE_RANDOM:{
441 unsigned mapAllocateFails=0;
442 unsigned mapNoMemory=0xFFFFFFFF>>(32-numHeaps);
443 while(mapAllocateFails!=mapNoMemory){
444 i=Rand()%numHeaps;
445 mapAllocateFails|=(1<<i);
446 p=pHeap[i].Allocate(size32Buffer);
447 if (p){
448 allocateHistory<<=4;
449 allocateHistory|=i;
450 if (pAllocateLegend){
451 //pAllocateLegend[idxAllocateLegend>>3]&=~(0xFF<<((idxAllocateLegend&7)<<4));
452 //pAllocateLegend[idxAllocateLegend>>3]|=~( i<<((idxAllocateLegend&7)<<4));
453 pAllocateLegend[idxAllocateLegend]=p;
454 idxAllocateLegend++;
455 }
456 return p;
457 }
458 }
459 numAllocateFails++;
460 break;
461 }
462 case ALLOCATE_CUSTOM:{
463 //unsigned mapAllocateFails=0;
464 //unsigned mapNoMemory=0xFFFFFFFF>>(32-numHeaps);
465 //i=pAllocateLegend[idxAllocateLegend];
466 //idxAllocateLegend++;
467 //p=pHeap[i].Allocate(size32Buffer);
468 //if (p){
469 // return p;
470 //}
471 //numAllocateFails++;
472 return pAllocateLegend[idxAllocateLegend++];
473 }
474 }
475 return 0;
476 }
477
479 void* Allocate(size_t32 size32Buffer, int nPriorHeap0, int nPriorHeap1=-1,int nPriorHeap2=-1,int nPriorHeap3=-1,int nPriorHeap4=-1,int nPriorHeap5=-1){
480
481 int* p;
482 p=pHeap[nPriorHeap0].Allocate(size32Buffer);
483 if (p) {
484 if (pAllocateLegend){
485 pAllocateLegend[idxAllocateLegend]=p;
486 idxAllocateLegend++;
487 }
488 return p;
489 }
490
491 if (nPriorHeap1!=-1){
492 p=pHeap[nPriorHeap1].Allocate(size32Buffer);
493 if (p) {
494 if (pAllocateLegend){
495 pAllocateLegend[idxAllocateLegend]=p;
496 idxAllocateLegend++;
497 }
498 return p;
499 }
500 }
501 if (nPriorHeap2!=-1){
502 p=pHeap[nPriorHeap2].Allocate(size32Buffer);
503 if (p) {
504 if (pAllocateLegend){
505 pAllocateLegend[idxAllocateLegend]=p;
506 idxAllocateLegend++;
507 }
508 return p;
509 }
510
511 }
512 if (nPriorHeap3!=-1){
513 p=pHeap[nPriorHeap3].Allocate(size32Buffer);
514 if (p) {
515 if (pAllocateLegend){
516 pAllocateLegend[idxAllocateLegend]=p;
517 idxAllocateLegend++;
518 }
519 return p;
520 }
521 }
522 if (nPriorHeap4!=-1){
523 p=pHeap[nPriorHeap4].Allocate(size32Buffer);
524 if (p) {
525 if (pAllocateLegend){
526 pAllocateLegend[idxAllocateLegend]=p;
527 idxAllocateLegend++;
528 }
529 return p;
530 }
531
532 }
533 if (nPriorHeap5!=-1){
534 p=pHeap[nPriorHeap5].Allocate(size32Buffer);
535 if (p) {
536 if (pAllocateLegend){
537 pAllocateLegend[idxAllocateLegend]=p;
538 idxAllocateLegend++;
539 }
540 return p;
541 }
542
543 }
544 numAllocateFails++;
545 return 0;
546 }
548 void* AllocateWith(size_t32 size32Buffer, void* addrInTheSameHeap){
549 for(int i=0; i<numHeaps; i++){
550 if (pHeap[i].IsMine(addrInTheSameHeap)){
551 void *p=pHeap[i].Allocate(size32Buffer);
552 if (p) {
553 if (pAllocateLegend){
554 pAllocateLegend[idxAllocateLegend]=p;
555 idxAllocateLegend++;
556 }
557 return p;
558 }
559 }
560 }
561 return 0;
562 }
563
565 int Which(void *addr){
566 for(int i=0; i<numHeaps; i++){
567 if (pHeap[i].IsMine(addr))
568 return i;
569 }
570 return -1;
571 }
572
573 void Lock(void* addr){
574 S_BufferInfo* pBuffer=(S_BufferInfo*)addr-1;
575 pBuffer->isLocked=true;
576 }
577
578 int Unlock(void* addr){
579 S_BufferInfo* pBuffer=(S_BufferInfo*)addr-1;
580 pBuffer->isLocked=false;
581 return 0;
582 }
583
584 int LockAll(){
585 for(int i=0; i<numHeaps; i++){
586 pHeap[i].LockAll();
587 }
588 return 0;
589 }
590 int UnlockAll(){
591 for(int i=0; i<numHeaps; i++){
592 pHeap[i].UnlockAll();
593 }
594 return 0;
595 }
596 int Release(void* addr){
597 if (AllocateMode==ALLOCATE_CUSTOM)
598 return 0;
599 if (addr)
600 for(int i=0; i<numHeaps; i++){
601 if (pHeap[i].IsMine(addr)){
602 return pHeap[i].Release(addr);
603 }
604 }
605 return 0;
606 }
607
609 void ReleaseAll(){
610 for(int i=0; i<numHeaps; i++){
611 pHeap[i].ReleaseAll();
612 }
613 }
614
616 void LockHeap(int idxHeap){
617 pHeap[idxHeap].LockHeap();
618 }
620 void UnlockHeap(int idxHeap){
621 pHeap[idxHeap].UnlockHeap();
622 }
623 int Check(){
624 for(int i=0; i<numHeaps; i++){
625 if (pHeap[i].Check())
626 return pHeap[i].status;
627 }
628 return 0;
629
630 }
631};
632
633
634template<class T> class C_BoxVec
635{
636public:
637 int sizeData;
638 int sizeBox;
639 int nBorder;
640 T* pBox;
641 T* pData;
642 C_MultiHeap* pHeap;
643
644 C_BoxVec(){
645 sizeBox=0;
646 sizeData=0;
647 nBorder=0;
648 pBox=0;
649 pData=0;
650 pHeap=0;
651 }
652
653 C_BoxVec(T* Data, int SizeData, int SizeBorder=0){
654 pHeap=0;
655 Assign(Data, SizeData, SizeBorder);
656 }
657
658 C_BoxVec(C_MultiHeap& MultiHeap, int SizeData, int Border=0){
659 sizeData=SizeData;
660 nBorder =Border;
661 Allocate(MultiHeap);
662 }
663
664
665 T* Addr(int idx){
666 return nmppsAddr_(pData,idx);
667 }
668
669 int Assign (T* Data, int SizeData, int SizeBorder=0){
670 pData =Data;
671 pBox =nmppsAddr_(pData,-SizeBorder);
672 sizeData=SizeData;
673 sizeBox =SizeData+2*SizeBorder;
674 }
675 T* Allocate(C_MultiHeap& MultiHeap, int SizeData, int Border=0){
676 sizeData=SizeData;
677 nBorder =Border;
678 Allocate(MultiHeap);
679 }
680
681 T* Allocate(C_MultiHeap& MultiHeap){
682 pHeap=&MultiHeap;
683 pData=0;
684 sizeBox =sizeData+2*nBorder;
685 int sizeBox32=(int)nmppsAddr_((T*)0,sizeBox)/sizeof(int);
686 pBox =(T*)MultiHeap.Allocate(sizeBox32);
687 if (pBox){
688 pData=nmppsAddr_(pBox,(sizeBox-sizeData)/2);
689 }
690 return pData;
691 }
692
693 int Release(){
694 if (pBox)
695 if (pHeap){
696 pHeap->Release(pBox);
697 pBox=0;
698 }
699 return 0;
700 }
701
702 ~C_BoxVec() {
703 if (pHeap)
704 if (pBox)
705 pHeap->Release(pBox);
706 }
707 //__INLINE__ T& operator [] (int idx){
708 // return *nmppsAddr_(pData,idx);
709 //}
710};
711
712#define BOX_nmppiFILL_NONE 0xF111DEAD
713#define BOX_nmppiFILL_RAND 0xF1110123
714#define BOX_nmppiFILL_00 0
715#define BOX_nmppiFILL_01 1
716#define BOX_nmppiFILL_FF -1
717template<class T> class C_BoxImg
718{
719
720public:
721 int nWidth;
722 int nHeight;
723 int sizeBox;
724 int sizeData;
725 int nBorder;
726 T* pBox;
727 T* pData;
728 C_MultiHeap* pHeap;
729
730 C_BoxImg(){
731 nWidth=0;
732 nHeight=0;
733 sizeBox=0;
734 sizeData=0;
735 nBorder=0;
736 pBox=0;
737 pData=0;
738 pHeap=0;
739 }
740
741
742 C_BoxImg(C_MultiHeap& MultiHeap, int Width, int Height, int BorderHeight=0, int FillMode=BOX_nmppiFILL_FF){
743 nWidth=Width;
744 nHeight=Height;
745 nBorder=BorderHeight;
746 pBox =(T*)0;
747 pData=(T*)0xcbcbcbcb;
748 pHeap=0;
749 if (Allocate(MultiHeap))
750 Fill(FillMode);
751 }
752 void Lock(){
753 S_BufferInfo* Info=((S_BufferInfo*)pBox)-1;
754 Info->isLocked=true;
755 }
756 void Unlock(){
757 S_BufferInfo* Info=((S_BufferInfo*)pBox)-1;
758 Info->isLocked=false;
759 }
760 void Fill(int FillMode){
761 if (FillMode==BOX_nmppiFILL_NONE)
762 return;
763 if (FillMode==BOX_nmppiFILL_RAND){
764 nmppsRandUniform_(pBox,sizeBox);
765 return;
766 }
767 nmppsSet_(pBox,FillMode,sizeBox);
768 }
769
770 C_BoxImg(T* Data, int Width, int Height, int BorderHeight=0){
771 pHeap =0;
772 pData =Data;
773 nWidth =Width;
774 nHeight =Height;
775 nBorder =BorderHeight;
776 pBox =nmppsAddr_(pData,-nBorder*nWidth);
777 sizeData=nWidth*nHeight;
778 sizeBox =sizeData+2*nBorder*nWidth;
779 }
780 void Init(T* Data, int Width, int Height, int BorderHeight=0){
781 pHeap =0;
782 pData =Data;
783 nWidth =Width;
784 nHeight =Height;
785 nBorder =BorderHeight;
786 pBox =nmppsAddr_(pData,-nBorder*nWidth);
787 sizeData=nWidth*nHeight;
788 sizeBox =sizeData+2*nBorder*nWidth;
789 }
790 T* Addr(int y, int x){
791 return nmppsAddr_(pData,y*nWidth+x);
792 }
793
794 T* Allocate(C_MultiHeap& MultiHeap, int Width, int Height, int BorderHeight=0){
795 nWidth=Width;
796 nHeight=Height;
797 nBorder=BorderHeight;
798 return Allocate(MultiHeap);
799
800 }
801
802 T* Allocate(C_MultiHeap& MultiHeap){
803 if (MultiHeap.Check())
804 return 0;
805 pHeap =&MultiHeap;
806 pData =0;
807 sizeData=nWidth*nHeight;
808 sizeBox =sizeData+2*nBorder*nWidth;
809 int sizeBox32=(int)nmppsAddr_((T*)0,sizeBox)/sizeof(int);
810 pBox=(T*)MultiHeap.Allocate(sizeBox32);
811 if (pBox)
812 pData=nmppsAddr_(pBox,(sizeBox-sizeData)/2);
813 return pData;
814 }
815 int Release(){
816 if (pHeap)
817 if (pBox){
818 pHeap->Release(pBox);
819 pHeap=0;
820 //pBox=0;
821 //pData=0;
822
823 }
824 return 1;
825 }
826 __INLINE__ T* operator [] (int idx){
827 return nmppsAddr_(pData,idx);
828 }
829 ~C_BoxImg() {
830 if (pHeap)
831 if (pBox)
832 pHeap->Release(pBox);
833 }
834
835};
836
837#endif
C_Allocator32
Definition: multiheap.h:330
C_BoxImg
Definition: multiheap.h:718
C_BoxVec
Definition: multiheap.h:635
C_Heap
класс - куча
Definition: multiheap.h:64
C_Heap::Allocate
int * Allocate(size_t32 size32Buffer)
Выделяет буфер в куче
Definition: multiheap.h:132
C_Heap::C_Heap
C_Heap(void *addrHeap, size_t32 size32Heap)
конструктор - создает кучу в указанной памяти
Definition: multiheap.h:79
C_Heap::UnlockAll
void UnlockAll()
разблокирует все указатели для удаления через Release
Definition: multiheap.h:233
C_Heap::Unlock
void Unlock(void *p)
разблокирует все указатели для удаления через Release
Definition: multiheap.h:242
C_Heap::IsMine
int IsMine(void *addr)
устанавливает принадлежность к куче
Definition: multiheap.h:99
C_Heap::ReleaseAll
void ReleaseAll()
удаляет все указатели из кучи
Definition: multiheap.h:249
C_Heap::LockHeap
void LockHeap()
Запрещает операции с кучей
Definition: multiheap.h:261
C_Heap::Lock
void Lock(void *p)
блокирует указатель от удаления через Release
Definition: multiheap.h:219
C_Heap::size32HeapAvail
int size32HeapAvail
< размер общей свободной памяти в куче
Definition: multiheap.h:68
C_Heap::Release
int Release(void *p)
осообождат память по адресу
Definition: multiheap.h:211
C_Heap::AllocateMaxAvail
size_t32 AllocateMaxAvail()
Возвращает объем свободной памяти в пуле в 32р. словах
Definition: multiheap.h:115
C_Heap::ReleaseBuffer
int ReleaseBuffer(S_BufferInfo *pDelBuffer)
удаляет структуру буфера из списка
Definition: multiheap.h:194
C_Heap::pZeroBuffer
S_BufferInfo * pZeroBuffer
< указатель на нулевой буфер в списке (c нулевым размером)
Definition: multiheap.h:66
C_Heap::LockAll
void LockAll()
блокирует все указатели от удаления через Release
Definition: multiheap.h:225
C_Heap::Create
void Create(void *addrHeap, size_t32 size32Heap)
создает кучу в указанной памяти
Definition: multiheap.h:84
C_Heap::UnlockHeap
void UnlockHeap()
Разрещает операции с кучей
Definition: multiheap.h:265
C_Heap::pHeapEnd
int * pHeapEnd
< указатель на слово следуюшее за концом кучи
Definition: multiheap.h:67
C_Heap::isHeapLocked
bool isHeapLocked
< запрещает операции с кучей
Definition: multiheap.h:69
C_MultiHeap
Definition: multiheap.h:336
C_MultiHeap::ReleaseAll
void ReleaseAll()
Удваляет все назаблокированные указатели из куч
Definition: multiheap.h:609
C_MultiHeap::CreateHeap
int CreateHeap(void *addrHeap, size_t32 size32Heap)
создает кучу по адресууказанного размера (полный размер со служебными данными)
Definition: multiheap.h:386
C_MultiHeap::Which
int Which(void *addr)
Возвращает номер кучи к которой принадлежит адрес
Definition: multiheap.h:565
C_MultiHeap::pAllocateLegend
void ** pAllocateLegend
история номеров куч использованных в последних 8 Allocate
Definition: multiheap.h:344
C_MultiHeap::AllocateMode
unsigned AllocateMode
порядок обхода куч при поиске свободного места
Definition: multiheap.h:343
C_MultiHeap::UnlockHeap
void UnlockHeap(int idxHeap)
Разрещает операции Allocate и Release с кучей
Definition: multiheap.h:620
C_MultiHeap::numAllocateFails
unsigned numAllocateFails
число ошибок выделения куч
Definition: multiheap.h:342
C_MultiHeap::LockHeap
void LockHeap(int idxHeap)
Запрещает операции Allocate и Release с кучей
Definition: multiheap.h:616
C_MultiHeap::Allocate
void * Allocate(size_t32 size32Buffer)
обходит кучи в заднном в AllocateMode порядке и выделяет память заданного размера
Definition: multiheap.h:397
C_MultiHeap::Rand
unsigned Rand()
Генератор случайных чисел
Definition: multiheap.h:368
C_MultiHeap::pHeap
C_Heap pHeap[MAX_NUM_BANKS]
массив куч
Definition: multiheap.h:340
C_MultiHeap::Allocate
void * Allocate(size_t32 size32Buffer, int nPriorHeap0, int nPriorHeap1=-1, int nPriorHeap2=-1, int nPriorHeap3=-1, int nPriorHeap4=-1, int nPriorHeap5=-1)
обходит кучи в заднном порядке и выделяет память заданного размера
Definition: multiheap.h:479
C_MultiHeap::AllocateWith
void * AllocateWith(size_t32 size32Buffer, void *addrInTheSameHeap)
выделяет массив в той же куче где и указатель
Definition: multiheap.h:548
C_MultiHeap::numHeaps
unsigned numHeaps
число проининицализированных куч
Definition: multiheap.h:341
S_BufferInfo
класс буфер - заголовок в начале выделяемой данамической памяти
Definition: multiheap.h:14
S_BufferInfo::pPrevBuffer
S_BufferInfo * pPrevBuffer
< указатель на предыдущий буфер в списке
Definition: multiheap.h:17
S_BufferInfo::EndGuardBits
int * EndGuardBits()
Возвращает указатель на конечные защитные поля (2 слова)
Definition: multiheap.h:34
S_BufferInfo::pNextBuffer
S_BufferInfo * pNextBuffer
< указатель на следующий буфер в списке
Definition: multiheap.h:18
S_BufferInfo::DataBegin
int * DataBegin()
Возвращает указатель на данные в буфере
Definition: multiheap.h:24
S_BufferInfo::DataEnd
int * DataEnd()
Возвращает указатель на конец данных в буфере (следу)
Definition: multiheap.h:29
S_BufferInfo::isLocked
bool isLocked
< флаг блокировки буфера, запрещаюий его удаление с помощью Release()
Definition: multiheap.h:19
S_BufferInfo::size32Buffer
size_t32 size32Buffer
< размер массива данных в буфере в 32-р словах
Definition: multiheap.h:16


nmpp: Файл g:/nmpp/include/nmblas.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
Перечисления | Функции
Файл nmblas.h

nmblas (NeuroMatrix Basic Linear Algebra Subroutines) Подробнее...

#include <nmblas/nmblas_sgemm.h>

См. исходные тексты.

Перечисления

enum nm_trans { nm_n =0 , nm_t =1 }

Функции

double | nmblas_dasum (const int N, const double *X, const int INCX)
takes the sum of the absolute values <> Подробнее...
void | MullMatrix_f (void *A, int pI, int ldA, void *B, int pK, int ldB, void *C, int pJ, int ldC, int plusC)
void | nmblas_daxpy (const int N, const double A, const double *X, const int INCX, double *Y, const int INCY)
constant times a vector plus a vector <> Подробнее...
void | nmblas_dcopy (const int N, const double *X, const int INCX, double *Y, const int INCY)
copies a vector, X, to a vector, Y Подробнее...
double | nmblas_ddot (const int N, const double *X, const int INCX, const double *Y, const int INCY)
forms the dot product of two vectors. Подробнее...
double | nmblas_dnrm2 (const int N, const double *x, const int INCX)
returns the euclidean norm of a vector via the function name, so that SCNRM2 := sqrt( x**H*x ) Подробнее...
void | nmblas_drot (const int N, double *X, const int INCX, double *Y, const int INCY, const double C, const double S)
applies a plane rotation <> Подробнее...
void | nmblas_drotg (double *A, double *B, double *C, double *S)
construct givens plane rotation <> Подробнее...
void | nmblas_drotm (const int N, double *X, const int INCX, double *Y, const int INCY, double *param)
Apply a Given's rotation constructed by DROTMG. <> Подробнее...
void | nmblas_dscal (const int N, const double ALPHA, double *X, const int INCX)
scales a vector by a constant <> Подробнее...
double | nmblas_dsdot (const int N, const float *X, const int INCX, const float *Y, const int INCY)
Compute the inner product of two vectors with double precision accumulation. <> Подробнее...
void | nmblas_dswap (const int N, double *X, const int INCX, double *Y, const int INCY)
interchanges two vectors <> Подробнее...
double | nmblas_dznrm2 (const int N, const double *X, const int INCX)
returns the euclidean norm of a vector via the function name, so that DZNRM2 := sqrt( x**H*x ) <> Подробнее...
int | nmblas_idamax (const int N, const double *X, const int INCX)
finds the index of the first element having maximum absolute value. Подробнее...
int | nmblas_isamax (const int N, const float *X, const int INCX)
finds the index of the first element having maximum absolute value. Подробнее...
float | nmblas_sasum (const int N, const float *X, const int INCX)
takes the sum of the absolute values Подробнее...
void | nmblas_saxpy (int N, const float A, const float *X, const int INCX, float *Y, const int INCY)
constant times a vector plus a vector Подробнее...
float | nmblas_scnrm2 (const int N, const float *X, const int INCX)
returns the euclidean norm of a vector via the function name, so that SCNRM2 := sqrt( x**H*x ) Подробнее...
void | nmblas_scopy (const int N, const float *X, const int INCX, float *Y, const int INCY)
copies a vector, X, to a vector, Y Подробнее...
float | nmblas_sdot (const int N, const float *X, const int INCX, const float *Y, const int INCY)
SDOT forms the dot product of two vectors. Подробнее...
float | nmblas_sdsdot (const int N, const float B, const float *X, const int INCX, const float *Y, const int INCY)
Compute the inner product of two vectors with double precision accumulation. <> Подробнее...
float | nmblas_snrm2 (const int N, const float *X, const int INCX)
SNRM2 returns the euclidean norm of a vector via the function name, so that SNRM2 := sqrt( x'*x ). <> Подробнее...
void | nmblas_srot (const int N, float *X, const int INCX, float *Y, const int INCY, const float C, const float S)
applies a plane rotation <> Подробнее...
void | nmblas_srotm (const int N, float *X, const int INCX, float *Y, const int INCY, float *param)
Apply a Given's rotation constructed by SROTMG. <> Подробнее...
void | nmblas_sscal (const int N, const float A, const float *X, const int INCX)
scales a vector by a constant <> Подробнее...
void | nmblas_sswap (const int N, const float *X, const int INCX, const float *Y, const int INCY)
interchanges two vectors <> Подробнее...
void | nmblas_sgemv (const enum nm_trans TRANS, const int M, const int N, const float ALPHA, const float *A, const int LDA, const float *X, const int INCX, const float BETA, float *Y, const int INCY)
performs one of the matrix-vector operations y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, where alpha and beta are scalars, x and y are vectors and A is an m by n matrix. Подробнее...
void | nmblas_dgemv (const enum nm_trans TRANS, const int M, const int N, const double ALPHA, const double *A, const int LDA, const double *X, const int INCX, const double BETA, double *Y, const int INCY)
performs one of the matrix-vector operations y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, where alpha and beta are scalars, x and y are vectors and A is an m by n matrix. Подробнее...
void | nmblas_sger (const int M, const int N, const float ALPHA, const float *X, const int INCX, const float *Y, const int INCY, float *A, const int LDA)
perform the rank 1 operation A := alpha*x*y' + A, where alpha is a scalar, x is an m element vector, y is an n element vector and A is an m by n matrix. Подробнее...

Подробное описание

nmblas (NeuroMatrix Basic Linear Algebra Subroutines)

This class is used to demonstrate a number of section commands.

Автор
Alexandr Bolotnikov
Версия
1.0
Дата
2017-05-23T15:13:13
Предупреждения

Авторство
(c) RC Module Inc.


nmpp: Исходный файл g:/nmpp/include/nmchar.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
nmchar.h
1#ifndef NMCHAR
2#define NMCHAR
3
4#include <stdlib.h>
5#include <string.h>
6//extern unsigned int crc;
7#ifndef inline
8#define inline inline
9#endif
10
11class uint8ptr;
12#define nmcharptr uint8ptr
13class nmchar{
14public:
15 unsigned int *adr;
16 int idx;
17 nmchar(){
18 adr=0;
19 idx=0;
20 }
21 nmchar(unsigned int*p, int offset) {
22 adr = p + (offset >> 2);
23 idx = offset & 3;
24 }
25
26 nmchar(nmchar& ch){
27 adr=ch.adr;
28 idx=ch.idx;
29// crc^=ch;
30 }
31 nmchar& operator = (nmchar ch){
32 unsigned char val=(ch);
33 (*adr) &= ~(0xFF<<(idx*8));
34 (*adr) |= (val) <<(idx*8);
35// crc^=ch;
36 //adr=ch.adr;
37 //idx=ch.idx;
38 return *this;
39 }
40 unsigned int operator + (nmchar& ch){
41 unsigned int a=(ch);
42 unsigned int b=(*this);
43 a+=b;
44// crc^=a;
45 return a;
46 }
47
48 nmchar& operator &= (unsigned int val) {
49 //(*adr) &= 0xFFFFFFFF & ((0xFF & val) << (idx * 8));
50 val = (~val) & 0xFF;
51 (*adr) &= ~(val << (idx * 8));
52 return *this;
53 }
54
55 inline nmchar& operator |= (unsigned int val) {
56 (*adr) |= ((0xFF & val) << (idx * 8));
57 return *this;
58 }
59
60 inline nmchar& operator = (unsigned int val){
61 (*adr) &= ~(0xFF<<(idx*8));
62 (*adr) |= (val&0xFF) <<(idx*8);
63// crc^=val;
64 return *this;
65 }
66 inline operator unsigned char(){
67 unsigned char ret=((*adr)>>(idx*8));
68 ret&=0xFF;
69// crc^=ret;
70 return ret;
71 }
72
73 inline uint8ptr operator &();
74
75};
76
77
78
79class uint8ptr {
80public:
81 unsigned int *addr;
82 int indx;
83 nmchar arref;
84 inline uint8ptr (){
85 addr=0;
86 indx=0;
87 }
88 //uint8ptr(uint8ptr& p){
89 // indx=p.indx;
90 // addr=p.addr;
91 //}
92
93 //uint8ptr(uint8ptr& p){
94 // indx=p.indx;
95 // addr=p.addr;
96 //}
97
98 inline unsigned char* x86addr(){
99 return ((unsigned char*)addr)+indx;
100 }
101 inline uint8ptr (const void* p){
102 addr=(unsigned int*)p;
103 indx=0;
104 }
105 inline uint8ptr (const unsigned char* p){
106 addr=(unsigned int*)p;
107 indx=0;
108 }
109 //inline uint8ptr (unsigned char* p){
110 // addr=(unsigned int*)p;
111 // indx=0;
112 //}
113 inline uint8ptr (const char* p){
114 addr=(unsigned int*)p;
115 indx=0;
116 }
117
118 inline uint8ptr(const uint8ptr& p){
119 indx=p.indx;
120 addr=p.addr;
121 }
122 //uint8ptr(int* p){
123 // addr=(unsigned*)p;
124 // indx=0;
125 //}
126 inline uint8ptr(unsigned int*p){
127 addr=p;
128 indx=0;
129 }
130 inline uint8ptr(unsigned int*p,int offset){
131 addr=p+(offset>>2);
132 indx=offset&3;
133 }
134
135 //operator int(){
136 // return int(addr);
137 //}
138
139 inline nmchar & operator [](int idx){
140
141 arref.adr = addr + (indx + idx) / 4;
142 arref.idx = (indx + idx) % 4;
143 //nmchar arref(addr+(indx+idx)/4,(indx+idx)%4);
144 return arref;
145 }
146
147 //uint8ptr& operator = (unsigned ptr){
148 // addr=(unsigned*)ptr;
149 // indx=0;
150 // return (*this);
151 //}
152
153
154 inline uint8ptr& operator = (unsigned int* ptr){
155 addr=(unsigned*)ptr;
156 indx=0;
157 return (*this);
158 }
159
160 inline bool operator < (uint8ptr ptr){
161#ifdef __NM__
162 if (addr<ptr.addr)
163 return 1;
164 if (addr==ptr.addr)
165 if (indx<ptr.indx)
166 return 1;
167 return 0;
168#else
169 return ((unsigned long long)(addr) + indx < (unsigned long long)(ptr.addr) + ptr.indx);
170#endif
171 }
172 inline bool operator > (uint8ptr ptr){
173#ifdef __NM__
174 if (addr>ptr.addr)
175 return true;
176 if (addr==ptr.addr)
177 if (indx>ptr.indx)
178 return false;
179 return 0;
180#else
181 return ((unsigned long long)(addr) + indx > (unsigned long long)(ptr.addr) + ptr.indx);
182#endif
183 }
184
185 inline bool operator >= (uint8ptr ptr){
186#ifdef __NM__
187 if (addr>ptr.addr)
188 return 1;
189 if (addr==ptr.addr)
190 if (indx>=ptr.indx)
191 return 1;
192 return 0;
193#else
194 return ((unsigned long long)(addr) + indx >= (unsigned long long)(ptr.addr) + ptr.indx);
195#endif
196 }
197
198
199 inline int operator - (uint8ptr ptr){
200
201
202
203#ifdef __NM__
204 int a=(int)addr;
205 int b=(int)ptr.addr;
206 //a&=0x0FFFFFFF;
207 //b&=0x0FFFFFFF;
208 a<<=2;
209 b<<=2;
210 a+=indx;
211 b+=ptr.indx;
212 return a-b;
213#else
214 //a+=indx;
215 //b+=ptr.indx;
216 return (unsigned long long)addr-(unsigned long long)ptr.addr+indx-ptr.indx;
217#endif
218 }
219
220
221// uint8ptr& operator = (unsigned char* ptr){
222// addr=(unsigned int*)ptr;
223// indx=0;
224// return (*this);
225// }
226
227
228
229 inline uint8ptr& operator = (const uint8ptr& p){
230 addr=p.addr;
231 indx=p.indx;
232 return (*this);
233 }
234
235 inline unsigned int* ptr(){
236 if (indx==0)
237 return addr;
238 //}
239 else {
240 int g=1;
241 return (unsigned int*)-1;
242 }
243 }
244 inline nmchar& operator *(){
245
246 return (nmchar&)(*this);
247 }
248
249/*
250uint8ptr operator + (int idx){
251uint8ptr tmp(*this);
252tmp.addr=addr+(indx+idx)/4;
253tmp.indx=(indx+idx)&0x3;
254return tmp;
255}
256
257uint8ptr operator- (int idx){
258uint8ptr tmp(*this);
259tmp.addr=addr+(indx-idx)/4;
260tmp.indx=(indx-idx)&0x3;
261return tmp;
262}
263
264uint8ptr& operator+= (int idx){
265addr=addr+(indx+idx)/4;
266indx=(indx+idx)&0x3;
267return *this;
268}
269
270uint8ptr& operator-= (int idx){
271addr=addr+(indx-idx)/4;
272indx=(indx-idx)&0x3;
273return *this;
274}
275*/
276 inline uint8ptr operator + (int idx){
277 uint8ptr tmp(*this);
278 tmp.addr=addr+((indx+idx)>>2);
279 tmp.indx=(indx+idx)&0x3;
280 return tmp;
281 }
282
283 inline uint8ptr operator- (int idx){
284 uint8ptr tmp(*this);
285 tmp.addr=addr+((indx-idx)>>2);
286 tmp.indx=(indx-idx)&0x3;
287 return tmp;
288 }
289
290
291 inline uint8ptr& operator+= (int idx){
292 addr=addr+((indx+idx)>>2);
293 indx=(indx+idx)&0x3;
294 return *this;
295 }
296
297 inline uint8ptr& operator-= (int idx){
298 addr=addr+((indx-idx)>>2);
299 indx=(indx-idx)&0x3;
300 return *this;
301 }
302
303 inline uint8ptr operator++ (int){
304 uint8ptr tmp(*this);
305 if (indx==3){
306 indx=0;
307 addr++;
308 }
309 else {
310 indx++;
311 }
312 return tmp;
313 }
314
315 inline uint8ptr& operator++ (){
316 if (indx==3){
317 indx=0;
318 addr++;
319 }
320 else {
321 indx++;
322 }
323 return *this;
324 }
325
326 //inline unsigned int operator== (unsigned int N){
327 // return (((unsigned int)addr)==N);
328 //}
329
330 inline bool operator == (uint8ptr ptr){
331 if (addr==ptr.addr && indx==ptr.indx)
332 return 1;
333 return 0;
334 }
335
336};
337
338inline uint8ptr nmchar::operator &(){
339 uint8ptr p;
340 p.addr=adr;
341 p.indx=idx;
342 return p;
343}
344
345template <int Y,int X> class nmchar2D {
346public:
347 uint8ptr arr;
348 unsigned int data[Y*X/4];
349
350 nmchar2D(){
351 }
352
353 uint8ptr& operator [](int idx){
354 arr.addr=data+X*idx/4;
355 arr.indx=0;
356 return arr;
357 }
358 unsigned int* ptr(){
359 return data;
360 }
361};
362
363template<int N> class nmchar1D {
364public:
365 nmchar deref;
366 unsigned int data[(N+3)/4];
367
368 nmchar1D(){
369 }
370
371 inline nmchar& operator [](int idx){
372 deref.adr=data+idx/4;
373 deref.idx=idx%4;
374
375 return deref;
376 }
377
378 inline operator uint8ptr(){
379 uint8ptr p;
380 p.addr=data;
381 p.indx=0;
382 return p;
383 }
384 inline unsigned int* ptr(){
385 return data;
386 }
387
388
389};
390
391void free(uint8ptr& p);
392//{
393// free(p.addr);
394//}
395
396void nmchar_memcpy (uint8ptr dst, uint8ptr src, unsigned int len);
397//{
398//
399//
400// #ifdef __NM__
401// memcpy((void*)dst.x86addr(), (void*)src.x86addr(),len);
402// #else
403// if (dst.indx==src.indx){
404// // copy n bytes to align pointers
405// if (dst.indx){
406// int n=4-dst.indx;
407// if (len<n)
408// n=len;
409// for(int i=0; i<n; i++){
410// *dst=*src;
411// dst++;
412// src++;
413// }
414// len-=n;
415// }
416// int words=len>>2;
417// memcpy(dst.addr, src.addr, words);
418// dst.addr+=words;
419// src.addr+=words;
420// len%=4;
421// // copy rest bytes
422// for(int i=0;i<len;i++){
423// *dst=*src;
424// dst++;
425// src++;
426// }
427// }
428// else {
429// for(int i=0; i<len; i++){
430// *dst=*src;
431// src++;
432// dst++;
433// }
434// }
435//
436// #endif
437//}
438//
439void nmchar_memset (uint8ptr dst, int setvalue, unsigned int len);
440//{
441//
442//
443// #ifdef __NM__
444// memset((void*)dst.x86addr(), setvalue,len);
445// #else
446//
447// // copy n bytes to align pointers
448// if (dst.indx){
449// int n=4-dst.indx;
450// if (len<n)
451// n=len;
452// for(int i=0; i<n; i++){
453// *dst=setvalue;
454// dst++;
455// }
456// len-=n;
457// }
458// int words=len>>2;
459//
460// setvalue&=0xFF;
461// setvalue|=(setvalue<<8);
462// setvalue|=(setvalue<<16);
463// memset(dst.addr, setvalue, words);
464// dst.addr+=words;
465// len%=4;
466// // copy rest bytes
467// setvalue&=0xFF;
468// for(int i=0;i<len;i++){
469// *dst=setvalue;
470// dst++;
471// }
472//
473//
474// #endif
475//}
476//
477
478#undef inline
479#endif
nmchar1D
Definition: nmchar.h:363
nmchar2D
Definition: nmchar.h:345
nmchar
Definition: nmchar.h:13
uint8ptr
Definition: nmchar.h:79


nmpp: Исходный файл g:/nmpp/include/nmdef.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
nmdef.h
1
2#ifndef __NMDEF_H
3#define __NMDEF_H
4
5#ifdef __NM__
6 #ifndef NMDEF
7 #define NMDEF
8 #endif
9#endif
10
11#ifdef NM6403
12 #ifndef NMDEF
13 #define NMDEF
14 #endif
15#endif
16
17
18#ifndef NULL
19 #define NULL 0
20#endif
21/*
22#ifndef ADDR
23 #ifdef __NM__
24 #define ADDR(base,disp) \
25 ( sizeof(*(base)) == 1 ? nmppsAddr_((base),(disp)): \
26 ((base)+(disp)) \
27 )
28 #else
29 #define ADDR(base,disp) ((base)+(disp))
30 #endif //NMDEF
31#endif //ADDR
32*/
33#ifndef MIN
34#define MIN(a,b) ((a) > (b) ? (b) : (a))
35#endif
36
37#ifndef MAX
38#define MAX(a,b) ((a) < (b) ? (b) : (a))
39#endif
40
41#ifndef ABS
42#define ABS(a) ((a) < (0) ? -(a): (a))
43#endif
44
45#ifndef ROUND2INT
46#define ROUND2INT(a) ((a) >= 0 ? (int((a)+0.5)) : (int((a)-0.5)))
47#endif
48
49#ifdef __NM__
50#define GET_CHAR(pArray,Index,val) (nmppsGetVal_((pArray),(Index),(val)))
51#define GET_SHORT(pArray,Index,val) (nmppsGetVal_((pArray),(Index),(val)))
52#define SET_CHAR(pArray,Index,Char) (nmppsPut_((pArray),(Index),(Char)))
53#define SET_SHORT(pArray,Index,Short) (nmppsPut_((pArray),(Index),(Short)))
54#else
55#define GET_CHAR(pArray,Index,val) ((val)=(pArray)[(Index)])
56#define GET_SHORT(pArray,Index,val) ((val)=(pArray)[(Index)])
57#define SET_CHAR(pArray,Index,Char) ((pArray)[(Index)]=(Char))
58#define SET_SHORT(pArray,Index,Short) ((pArray)[(Index)]=(Short))
59#endif
60
61#define LONG2INT(size) ((size)<<1)
62
63#define long2INT(size) ((size)<<1)
64#define int2INT(size) ((size))
65#define short2INT(size) ((size)>>1)
66#define char2INT(size) ((size)>>2)
67
68
69#define LONG2long(size) ((size))
70#define LONG2int(size) ((size)<<1)
71#define LONG2short(size) ((size)<<2)
72#define LONG2char(size) ((size)<<3)
73
74#define long2long(size) ((size))
75#define long2int(size) ((size)<<1)
76#define long2short(size) ((size)<<2)
77#define long2char(size) ((size)<<3)
78
79#define int2long(size) ((size)>>1)
80#define int2int(size) ((size))
81#define int2short(size) ((size)<<1)
82#define int2char(size) ((size)<<2)
83
84#define short2long(size) ((size)>>2)
85#define short2int(size) ((size)>>1)
86#define short2short(size) ((size))
87#define short2char(size) ((size)<<1)
88
89#define char2long(size) ((size)>>3)
90#define char2int(size) ((size)>>2)
91#define char2short(size) ((size)>>1)
92#define char2char(size) ((size))
93
94
95#endif


nmpp: Исходный файл g:/nmpp/include/nmplc.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
nmplc.h
1#include "./nmplc/nmplc.h"


nmpp: Исходный файл g:/nmpp/include/nmpli.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
nmpli.h
1#include "./nmpli/nmpli.h"


nmpp: Исходный файл g:/nmpp/include/nmplm.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
nmplm.h
1#include "./nmplm/nmplm.h"


nmpp: Исходный файл g:/nmpp/include/nmpls.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
nmpls.h
1#include "./nmpls/nmpls.h"


nmpp: Исходный файл g:/nmpp/include/nmplv.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
nmplv.h
1#include "./nmplv/nmplv.h"


nmpp: Исходный файл g:/nmpp/include/nmpp-cpp.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
nmpp-cpp.h
1#ifndef NMPP_CPP_DEFINED
2#define NMPP_CPP_DEFINED
3//inline void nmppsSet(nm4s *pSrcVec, int val, int nSize) {
4// nmppsSet_4s(pSrcVec, val, nSize);
5//}
6//inline void nmppsSet(nm8s *pSrcVec, int val, int nSize) {
7// nmppsSet_8s(pSrcVec, val, nSize);
8//}
9
10//inline void nmppsSet(nm16s *pSrcVec, int val, int nSize) {
11// nmppsSet_16s(pSrcVec, val, nSize);
12//}
13inline void nmppsSet(nm8s *pSrcVec, int val, int nSize) {
14 nmppsSet_8s((nm8s*)pSrcVec, val, nSize);
15}
16
17inline void nmppsSet(nm16s *pSrcVec, int val, int nSize) {
18 nmppsSet_16s((nm16s*)pSrcVec, val, nSize);
19}
20
21
22inline void nmppsSet(nm32s *pSrcVec, int val, int nSize) {
23 nmppsSet_32s(pSrcVec, val, nSize);
24}
25
26inline void nmppsSet(nm64s *pSrcVec, int val, int nSize){
27 nmppsSet_64s(pSrcVec, val, nSize);
28}
29
30
31
32
33//inline void nmppsPut_1 (nm1* pVec, int nIndex, int1b nVal) nmppsPut_1 (nm1* pVec, int nIndex, int1b nVal);
34//inline void nmppsPut_2s (nm2s* pVec, int nIndex, int2b nVal) nmppsPut_2s(nm2s* pVec, int nIndex, int2b nVal);
35//inline void nmppsPut_4s (nm4s* pVec, int nIndex, int4b nVal) nmppsPut_4s(nm4s* pVec, int nIndex, int4b nVal);
36inline void nmppsPut(nm8s* pVec, int nIndex, int8b nVal) {nmppsPut_8s((nm8s*) pVec, nIndex, nVal);}
37//inline void nmppsPut(nm8s7b* pVec, int nIndex, int8b nVal) {nmppsPut_8s((nm8s*) pVec, nIndex, nVal);}
38//inline void nmppsPut(nm16s* pVec, int nIndex, int16b nVal) {nmppsPut_16s((nm16s*) pVec, nIndex, nVal);}
39inline void nmppsPut(nm16s15b* pVec,int nIndex, int16b nVal) {nmppsPut_16s((nm16s*) pVec, nIndex, nVal);}
40//inline void nmppsPut(nm8s7b* pVec, int nIndex, int32b nVal) {pVec[nIndex]=nVal;}
41inline void nmppsPut(nm32s* pVec, int nIndex, int32b nVal) {pVec[nIndex]=nVal;}
42inline void nmppsPut(nm64s* pVec, int nIndex, int64b nVal) {pVec[nIndex]=nVal;}
43
44
45
46#endif
int8b
int int8b
Definition: nmtype.h:618
int32b
int int32b
Definition: nmtype.h:683
int16b
int int16b
Definition: nmtype.h:644
int64b
INT64 int64b
Definition: nmtype.h:709
nm32s
int nm32s
Definition: nmtype.h:292
nm64s
long long nm64s
Definition: nmtype.h:375
nm16s
short nm16s
Definition: nmtype.h:243
nm16s15b
nm16s nm16s15b
Definition: nmtype.h:265
nm8s
char nm8s
Definition: nmtype.h:167


nmpp: Исходный файл g:/nmpp/include/nmpp.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
nmpp.h
1
18#include "./nmplv/nmplv.h"
19
31#include "./nmplm/nmplm.h"
32
40#include "./nmpls/nmpls.h"
41
45#include "./nmpli/nmpli.h"
46
50#include "./nmplc/nmplc.h"
51
68#include "./malloc32.h"
69#include "./metric.h"
70#include "./nmplv/vStat.h"
71
72


nmpp: Исходный файл g:/nmpp/include/nmshort.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
nmshort.h
1#ifndef NMSHORT_DEFINED
2#define NMSHORT_DEFINED
3
4#include <stdlib.h>
5#include <string.h>
6//extern unsigned int crc;
7class uint16ptr;
8class nmshort{
9public:
10 unsigned int *adr;
11 int idx;
12 __INLINE__ nmshort(){
13 //adr=0;
14 //idx=0;
15 }
16 __INLINE__ nmshort(nmshort& ch){
17 adr=ch.adr;
18 idx=ch.idx;
19// crc^=ch;
20 }
21 __INLINE__ nmshort& operator = (nmshort ch){
22 unsigned char val=(ch);
23 (*adr) &= ~(0xFFFF<<(idx*16));
24 (*adr) |= (val) <<(idx*16);
25// crc^=ch;
26 //adr=ch.adr;
27 //idx=ch.idx;
28 return *this;
29 }
30 __INLINE__ unsigned int operator + (nmshort& ch){
31 unsigned int a=(ch);
32 unsigned int b=(*this);
33 a+=b;
34// crc^=a;
35 return a;
36 }
37
38 __INLINE__ nmshort& operator = (unsigned int val){
39 (*adr) &= ~(0xFFFF<<(idx*16));
40 (*adr) |= (val&0xFFFF) <<(idx*16);
41// crc^=val;
42 return *this;
43 }
44 __INLINE__ operator unsigned char(){
45 unsigned char ret=((*adr)>>(idx*4));
46 ret&=0xFF;
47// crc^=ret;
48 return ret;
49 }
50
51 __INLINE__ uint16ptr operator &();
52
53};
54
55
56
57class uint16ptr {
58public:
59 unsigned int *addr;
60 int indx;
61 nmshort arref;
62 __INLINE__ uint16ptr (){
63 addr=0;
64 indx=0;
65 }
66 //uint16ptr(uint16ptr& p){
67 // indx=p.indx;
68 // addr=p.addr;
69 //}
70
71 //uint16ptr(uint16ptr& p){
72 // indx=p.indx;
73 // addr=p.addr;
74 //}
75
76 __INLINE__ unsigned char* x86addr(){
77 return ((unsigned char*)addr)+indx;
78 }
79 __INLINE__ uint16ptr (void* p){
80 addr=(unsigned int*)p;
81 indx=0;
82 }
83 __INLINE__ uint16ptr (unsigned short* p){
84 addr=(unsigned int*)p;
85 indx=0;
86 }
87 __INLINE__ uint16ptr (short* p){
88 addr=(unsigned int*)p;
89 indx=0;
90 }
91
92 __INLINE__ uint16ptr(const uint16ptr& p){
93 indx=p.indx;
94 addr=p.addr;
95 }
96 //uint16ptr(int* p){
97 // addr=(unsigned*)p;
98 // indx=0;
99 //}
100 __INLINE__ uint16ptr(unsigned int*p){
101 addr=p;
102 indx=0;
103 }
104 __INLINE__ uint16ptr(unsigned int*p,int offset){
105 addr=p+(offset>>1);
106 indx=offset&1;
107 }
108
109 //operator int(){
110 // return int(addr);
111 //}
112
113 __INLINE__ nmshort& operator [](int idx){
114
115 arref.adr=addr+(indx+idx)/2;
116 arref.idx=(indx+idx)%2;
117 return arref;
118 }
119
120 //uint16ptr& operator = (unsigned ptr){
121 // addr=(unsigned*)ptr;
122 // indx=0;
123 // return (*this);
124 //}
125
126
127 __INLINE__ uint16ptr& operator = (unsigned int* ptr){
128 addr=(unsigned*)ptr;
129 indx=0;
130 return (*this);
131 }
132
133 __INLINE__ bool operator < (uint16ptr ptr){
134 if (addr<ptr.addr)
135 return 1;
136 if (addr==ptr.addr)
137 if (indx<ptr.indx)
138 return 1;
139 return 0;
140 }
141
142 __INLINE__ bool operator >= (uint16ptr ptr){
143 if (addr>ptr.addr)
144 return 1;
145 if (addr==ptr.addr)
146 if (indx>=ptr.indx)
147 return 1;
148 return 0;
149 }
150
151
152 __INLINE__ int operator - (uint16ptr ptr){
153 int a=(int)addr;
154 int b=(int)ptr.addr;
155
156#ifdef __NM__
157 //a&=0x0FFFFFFF;
158 //b&=0x0FFFFFFF;
159 a<<=1;
160 b<<=1;
161#endif
162 a+=indx;
163 b+=ptr.indx;
164 return a-b;
165 }
166
167
168// uint16ptr& operator = (unsigned char* ptr){
169// addr=(unsigned int*)ptr;
170// indx=0;
171// return (*this);
172// }
173
174
175
176 __INLINE__ uint16ptr& operator = (const uint16ptr& p){
177 addr=p.addr;
178 indx=p.indx;
179 return (*this);
180 }
181
182 __INLINE__ unsigned int* ptr(){
183 if (indx==0)
184 return addr;
185 //}
186 else {
187 int g=1;
188 return (unsigned int*)-1;
189 }
190 }
191 __INLINE__ nmshort& operator *(){
192
193 return (nmshort&)(*this);
194 }
195
196/*
197uint16ptr operator + (int idx){
198uint16ptr tmp(*this);
199tmp.addr=addr+(indx+idx)/2;
200tmp.indx=(indx+idx)&0x1;
201return tmp;
202}
203
204uint16ptr operator- (int idx){
205uint16ptr tmp(*this);
206tmp.addr=addr+(indx-idx)/2;
207tmp.indx=(indx-idx)&0x1;
208return tmp;
209}
210
211uint16ptr& operator+= (int idx){
212addr=addr+(indx+idx)/2;
213indx=(indx+idx)&0x1;
214return *this;
215}
216
217uint16ptr& operator-= (int idx){
218addr=addr+(indx-idx)/2;
219indx=(indx-idx)&0x1;
220return *this;
221}
222*/
223 __INLINE__ uint16ptr operator + (int idx){
224 uint16ptr tmp(*this);
225 tmp.addr=addr+((indx+idx)>>1);
226 tmp.indx=(indx+idx)&0x1;
227 return tmp;
228 }
229
230 __INLINE__ uint16ptr operator- (int idx){
231 uint16ptr tmp(*this);
232 tmp.addr=addr+((indx-idx)>>1);
233 tmp.indx=(indx-idx)&0x1;
234 return tmp;
235 }
236
237
238 __INLINE__ uint16ptr& operator+= (int idx){
239 addr=addr+((indx+idx)>>1);
240 indx=(indx+idx)&0x1;
241 return *this;
242 }
243
244 __INLINE__ uint16ptr& operator-= (int idx){
245 addr=addr+((indx-idx)>>1);
246 indx=(indx-idx)&0x1;
247 return *this;
248 }
249
250 __INLINE__ uint16ptr operator++ (int){
251 uint16ptr tmp(*this);
252 if (indx==1){
253 indx=0;
254 addr++;
255 }
256 else {
257 indx++;
258 }
259 return tmp;
260 }
261
262 __INLINE__ uint16ptr& operator++ (){
263 if (indx==1){
264 indx=0;
265 addr++;
266 }
267 else {
268 indx++;
269 }
270 return *this;
271 }
272
273 __INLINE__ unsigned int operator== (unsigned int N){
274 return (((unsigned int)addr)==N);
275 }
276
277 __INLINE__ bool operator == (uint16ptr ptr){
278 if (addr==ptr.addr && indx==ptr.indx)
279 return 1;
280 return 0;
281 }
282
283};
284
285__INLINE__ uint16ptr nmshort::operator &(){
286 uint16ptr p;
287 p.addr=adr;
288 p.indx=idx;
289 return p;
290}
291
292template <int Y,int X> class nmshort2D {
293public:
294 uint16ptr arr;
295 unsigned int data[Y*X/2];
296
297 nmshort2D(){
298 }
299
300 uint16ptr& operator [](int idx){
301 arr.addr=data+X*idx/2;
302 arr.indx=0;
303 return arr;
304 }
305 unsigned int* ptr(){
306 return data;
307 }
308};
309/*
310template<int N> class nmshort1D {
311public:
312 nmshort deref;
313 unsigned int data[(N+3)/4];
314
315 nmshort1D(){
316 }
317
318 __INLINE__ nmshort& operator [](int idx){
319 addr=data+idx/4;
320 indx=idx%4;
321 return deref;
322 }
323
324 __INLINE__ operator uint16ptr(){
325 uint16ptr p;
326 p.addr=data;
327 p.indx=0;
328 return p;
329 }
330 __INLINE__ unsigned int* ptr(){
331 return data;
332 }
333
334
335};
336*/
337__INLINE__ void free(uint16ptr& p){
338 free(p.addr);
339}
340
341__INLINE__ void nmshort_memcpy (uint16ptr dst, uint16ptr src, unsigned int len){
342
343
344 #ifdef __NM__
345 memcpy((void*)dst.x86addr(), (void*)src.x86addr(),len);
346 #else
347 if (dst.indx==src.indx){
348 // copy n bytes to align pointers
349 if (dst.indx){
350 int n=4-dst.indx;
351 if (len<n)
352 n=len;
353 for(int i=0; i<n; i++){
354 *dst=*src;
355 dst++;
356 src++;
357 }
358 len-=n;
359 }
360 int words=len>>2;
361 memcpy(dst.addr, src.addr, words);
362 dst.addr+=words;
363 src.addr+=words;
364 len%=4;
365 // copy rest bytes
366 for(int i=0;i<len;i++){
367 *dst=*src;
368 dst++;
369 src++;
370 }
371 }
372 else {
373 for(int i=0; i<len; i++){
374 *dst=*src;
375 src++;
376 dst++;
377 }
378 }
379
380 #endif
381}
382
383__INLINE__ void nmshort_memset (uint16ptr dst, int setvalue, unsigned int len){
384
385
386 #ifdef __NM__
387 memset((void*)dst.x86addr(), setvalue,len);
388 #else
389
390 // copy n bytes to align pointers
391 if (dst.indx){
392 int n=4-dst.indx;
393 if (len<n)
394 n=len;
395 for(int i=0; i<n; i++){
396 *dst=setvalue;
397 dst++;
398 }
399 len-=n;
400 }
401 int words=len>>2;
402
403 setvalue&=0xFF;
404 setvalue|=(setvalue<<8);
405 setvalue|=(setvalue<<16);
406 memset(dst.addr, setvalue, words);
407 dst.addr+=words;
408 len%=4;
409 // copy rest bytes
410 setvalue&=0xFF;
411 for(int i=0;i<len;i++){
412 *dst=setvalue;
413 dst++;
414 }
415
416
417 #endif
418}
419
420#endif
nmshort2D
Definition: nmshort.h:292
nmshort
Definition: nmshort.h:8
uint16ptr
Definition: nmshort.h:57


nmpp: Исходный файл g:/nmpp/include/nmtl.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
nmtl.h
1#include "./nmtl/nmtl.h"


nmpp: Файл g:/nmpp/include/nmtype.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
Структуры данных | Макросы | Определения типов
Файл nmtype.h

См. исходные тексты.

Структуры данных

struct | nmreg
struct | int15in16x4
struct | s_int32x2
struct | int31in32x2
struct | int30in32x2
struct | v16nm4s
struct | v4nm8s
struct | s_v8nm8s
struct | s_v16nm8s
struct | s_v4nm16s
struct | s_v8nm16s
struct | s_v16nm16s
struct | s_v2nm32s
struct | s_v4nm32s
struct | s_v8nm32s
struct | s_v16nm32s
struct | s_v16nm4u
struct | s_v4nm8u
struct | s_v8nm8u
struct | s_v16nm8u
struct | s_v4nm16u
struct | s_v8nm16u
struct | s_v16nm16u
struct | s_v2nm32u
struct | s_v4nm32u
struct | s_v8nm32u
struct | s_v16nm32u
struct | nm16sc
struct | s_nm32sc
struct | s_v2nm32f
struct | s_v4nm32f
struct | s_v4nm64f
struct | s_nm32fc
struct | s_nm32fcr
struct | s_nm64sc
struct | Tmp2BuffSpec

Макросы

#define | MEM_LOCAL 0
#define | MEM_GLOBAL 1
#define | HEAP0 0
#define | HEAP1 1
#define | HEAP2 2
#define | HEAP3 3
#define | sizeof32(t) (sizeof(t)/4)
#define | VEC_NM1(X) unsigned data[(X)/32];
#define | VEC_NM2U(X) unsigned data[(X)/16];
#define | VEC_NM2S(X) int data[(X)/16];
#define | VEC_NM4U(X)
#define | VEC_NM4S(X) int data[(X)/8];
#define | VEC_NM8U(X) unsigned int data[(X)/4];
#define | VEC_NM8S(X)
#define | VEC_NM16U(X)
#define | VEC_NM16S(X)
#define | VEC_NM32U(X) nm32u data[(X)];
#define | VEC_NM32S(X)
#define | CAPACITY_nm64s 1

#define | CAPACITY_nm32s 2
#define | CAPACITY_nm16s 4
#define | CAPACITY_nm8s 8
#define | CAPACITY_nm4s 16
#define | CAPACITY_nm2s 32
#define | CAPACITY_nm1 64
#define | NM16S(vec, size) nm64s vec##__64s[size/4]; nm16s* vec=(nm16s*)vec##__64s
#define | NM32S(vec, size) nm64s vec##__64s[size/2]; nm32s* vec=(nm32s*)vec##__64s
#define | __INLINE__ static __inline
#define | NM16Sx4(x0, x1, x2, x3)
#define | NM32Sx2(x0, x1)
#define | NM32Sx4(x0, x1, x2, x3) NM32Sx2(x0,x1),NM32Sx2(x2,x3)

Определения типов

typedef signed long long | INT64
typedef unsigned long long | UINT64
typedef int | nm1
typedef void | nm2s
typedef void | nm4s
typedef char | nm8s
typedef nm8s | nm8s7b
typedef short | nm16s
typedef nm16s | nm16s15b
typedef int | nm32s
typedef struct s_int32x2 | int32x2
typedef int | nm32s31b
typedef int | nm32s30b
typedef long long | nm64s
typedef nm64s | nm64s63b
typedef void | nm2u
typedef void | nm4u
typedef nm4u | nm4u3b
typedef unsigned char | nm8u
typedef nm8u | nm8u7b
typedef unsigned short | nm16u
typedef nm16u | nm16u15b
typedef unsigned int | nm32u
typedef unsigned int | nm32u31b
typedef unsigned long long | nm64u
typedef int | int1b
typedef int | int2b
typedef int | int3b
typedef int | int4b
typedef int | int7b
typedef int | int8b
typedef int | int15b
typedef int | int16b
typedef int | int30b
typedef int | int31b
typedef int | int32b
typedef INT64 | int63b
typedef INT64 | int64b
typedef unsigned int | uint1b
typedef unsigned int | uint2b
typedef unsigned int | uint3b
typedef unsigned int | uint4b
typedef unsigned int | uint7b
typedef unsigned int | uint8b
typedef unsigned int | uint15b
typedef unsigned int | uint16b
typedef unsigned int | uint31b
typedef unsigned int | uint32b
typedef UINT64 | uint63b
typedef nm64u | uint64b
typedef struct s_v8nm8s | v8nm8s
typedef struct s_v16nm8s | v16nm8s
typedef struct s_v4nm16s | v4nm16s
typedef struct s_v8nm16s | v8nm16s
typedef struct s_v16nm16s | v16nm16s
typedef struct s_v2nm32s | v2nm32s
typedef struct s_v4nm32s | v4nm32s
typedef struct s_v8nm32s | v8nm32s
typedef struct s_v16nm32s | v16nm32s
typedef v16nm8s | v16nm8s7b
typedef struct s_v16nm4u | v16nm4u
typedef struct s_v4nm8u | v4nm8u
typedef struct s_v8nm8u | v8nm8u
typedef struct s_v16nm8u | v16nm8u
typedef struct s_v4nm16u | v4nm16u
typedef struct s_v8nm16u | v8nm16u
typedef struct s_v16nm16u | v16nm16u
typedef struct s_v2nm32u | v2nm32u
typedef struct s_v4nm32u | v4nm32u
typedef struct s_v8nm32u | v8nm32u
typedef struct s_v16nm32u | v16nm32u
typedef v16nm4u | v16nm4b3u
typedef struct s_nm32sc | nm32sc
typedef struct s_v2nm32f | v2nm32f
typedef struct s_v4nm32f | v4nm32f
typedef struct s_v4nm64f | v4nm64f
typedef struct s_nm32fc | nm32fc
typedef struct s_nm32fcr | nm32fcr
typedef float | nm32f
typedef double | nm64f
typedef struct s_nm64sc | nm64sc
typedef unsigned long long | uint64
typedef unsigned int | uint32
typedef nm64sc | int64sc
typedef uint64 | fifo64
typedef uint32 | fseq32
typedef uint64 | seq64
typedef uint64 | fseq64

Подробное описание

Файл, содержащий определения типов упакованных данных.

Макросы

◆ NM16Sx4

#define NM16Sx4 | ( | x0,
 |  | x1,
 |  | x2,
 |  | x3
 | ) |
Макроопределение:
((long long)(x3&0xFFFFl)<<48)| \
((long long)(x2&0xFFFFl)<<32)| \
((long long)(x1&0xFFFFl)<<16)| \
((long long)(x0&0xFFFFl))

◆ NM32Sx2

#define NM32Sx2 | ( | x0,
 |  | x1
 | ) |
Макроопределение:
((long long)(unsigned(x1))<<32)| \
((long long)(unsigned(x0)))

◆ VEC_NM16S

#define VEC_NM16S ( X )
Макроопределение:
int data[(X)/2]; \
void set(int i, int val){ ((unsigned short*)data)[i]=val;} \
short operator[] (int index){ return ((unsigned short*)data)[index];}

◆ VEC_NM16U

#define VEC_NM16U ( X )
Макроопределение:
unsigned int data[(X)/2]; \
void set(int i, int val){ ((unsigned short*)data)[i]=val;} \
unsigned short operator[] (int index){ return ((unsigned short*)data)[index];}

◆ VEC_NM32S

#define VEC_NM32S ( X )
Макроопределение:
int data[(X)]; \
void set(int i, int val){ ((int*)data)[i]=val;} \
int operator[] (int index){ return ((int*)data)[index];}

◆ VEC_NM4U

#define VEC_NM4U ( X )
Макроопределение:
unsigned data[(X)/8]; \
uint4b get(int nIndex){return nmget((nm4u*)data,nIndex); }\
uint4b operator[] (int index){ return nmget((nm4u*)data,index);}
uint4b
unsigned int uint4b
Definition: nmtype.h:761
nm4u
void nm4u
Definition: nmtype.h:417

◆ VEC_NM8S

#define VEC_NM8S ( X )
Макроопределение:
int data[(X)/4]; \
void set(int i, int val){ ((char*)data)[i]=val;} \
char operator[] (int index){ return ((char*)data)[index];}


nmpp: Исходный файл g:/nmpp/include/ownmalloc.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
ownmalloc.h


nmpp: Исходный файл g:/nmpp/include/ringbuffer_.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
ringbuffer_.h
1#ifndef RING_INCLUDED
2#define RING_INCLUDED
3#include <string.h>
4#include <time.h>
5
6#ifdef __NM__
7#undef CLOCKS_PER_SEC
8#define CLOCKS_PER_SEC 320000000
9#endif
10
11
12#define MIN(a,b) ((a) > (b) ? (b) : (a))
13
14#define RING_BUFFER_DECLARED 0xDEC1A8ED
15#define RING_BUFFER_ALLOCATED 0xA10CA7ED
16#define RING_BUFFER_MEM_ERROR 0xDEADF00D
17#define RING_BUFFER_ERROR 0xBEDABEDA
18#define RING_BUFFER_OK 0x0
19
20#define EXIT_ON_TIMEOUT 1
21#define EXIT_ON_COMPLETED 0
22#define EXIT_ON_FULL_BUFFER 2
23#define EXIT_ON_EMPTY_BUFFER 2
24
25#ifdef __NM__
26#define bytesizeof(T) (sizeof(T)<<2)
27#else
28#define bytesizeof(T) sizeof(T)
29#endif
30
31typedef void *(*memcpy_ptr)(void *, void const *, size_t) ;
32typedef void *(*t_bytecpy)(void *to, int toIndex, void const *from, int fromIndex, size_t size) ;
33template <class T> class C_RingBuffer{
34public:
35 T* data;
36 size_t size;
37 size_t head;
38 size_t tail;
39 size_t* head_addr;
40 size_t* tail_addr;
41 size_t id;
42
43 t_bytecpy push_memcpy;
44 t_bytecpy pop_memcpy;
45
46 // ------------- dma --------------
47 memcpy_ptr dma_init;
48 size_t(*dma_check)();
49 T* dma_ptr;
50 size_t dma_left;
51 size_t dma_size;
52 //----------------------------------
53 unsigned timeout; // msec
54 unsigned time2sleep; // msec
55 int pad[16-3-5*sizeof(memcpy_ptr)/sizeof(int)];
56
57
58 void Sleep(clock_t msec ){
59 #ifdef __NM__
60 clock_t dt=msec*(CLOCKS_PER_SEC/1000);
61 clock_t t0=clock();
62 while(clock()-t0<dt){
63 __asm{
64 rep 32 with vfalse;
65 rep 32 with afifo and afifo;
66 rep 32 with afifo and afifo;
67 rep 32 with afifo and afifo;
68 rep 32 with afifo and afifo;
69 rep 32 with afifo and afifo;
70 rep 32 with afifo and afifo;
71 rep 32 with afifo and afifo;
72 rep 32 with afifo and afifo;
73 rep 32 [ar7] = afifo;
74 }
75 }
76
77 #else
78 ::Sleep(msec);
79 #endif
80 }
81 C_RingBuffer(){
82
83 //sizeof_size_t=sizeof(size_t);
84 //sizeof_T=sizeof(T);
85 //Init(0,0,(memcpy_ptr)memcpy,(memcpy_ptr)memcpy);
86 Init(0,0,0,0);
87 }
88 C_RingBuffer(T* buffer,size_t count, t_bytecpy pushmemcpy, t_bytecpy popmemcpy ){
89 Init(buffer,count,pushmemcpy,popmemcpy);
90 }
91 //void Init(T* buffer,size_t count, memcpy_ptr pushmemcpy, memcpy_ptr popmemcpy ){
92 bool Init(T* buffer,size_t count, t_bytecpy pushmemcpy, t_bytecpy popmemcpy ){
93 if (buffer==0) return false;
94 if (count&(count-1)!=0) return false ;
95 data=buffer;
96 size=count;
97 head=0;
98 tail=0;
99 head_addr=&head;
100 tail_addr=&tail;
101 id=0x600DB00F;
102 push_memcpy=(t_bytecpy)pushmemcpy;
103 pop_memcpy =(t_bytecpy)popmemcpy;
104 dma_init=0;
105 dma_check=0;
106 dma_ptr =0;
107 dma_left=0;
108 dma_size=0;
109 time2sleep=1; // msec
110 timeout=100; //
111 return true;
112
113 }
114
115 __INLINE__ bool IsFull(){
116 return (head-tail==size);
117 }
118 __INLINE__ bool IsEmpty(){
119 return (head==tail);
120 }
121 __INLINE__ size_t PushAvail(){
122 return (size-(head-tail));
123 }
124 __INLINE__ size_t PopAvail(){
125 return (head-tail);
126 }
127
128
129 T* Head(){
130 if (PushAvail()==0)
131 return 0;
132 size_t headPointer=head&(size-1);
133 T* pElement=data+headPointer;
134 return pElement;
135 }
136 T* Tail(){
137 if (PopAvail()==0)
138 return 0;
139 size_t tailPointer=tail&(size-1);
140 T* pElement=data+tailPointer;
141 return pElement;
142 }
143
144 bool MoveHead(int numElements){
145 size_t h=head+numElements;
146 if (h>tail+size)
147 return RING_BUFFER_ERROR;
148 head=h;
149 return RING_BUFFER_OK;
150 }
151
152 bool MoveTail(int numElements){
153 size_t t=tail+numElements;
154 if (t>head)
155 return RING_BUFFER_ERROR;
156 tail=t;
157 return RING_BUFFER_OK;
158 }
159
160
161 size_t Push(T* pSrcElements, size_t numElements, int ExitMode= EXIT_ON_COMPLETED)
162 {
163 size_t initHead=head;
164 size_t count;
165 size_t diff;
166 clock_t t0=clock();
167 size_t posSrc=0;
168 while (numElements){
169 size_t Tail=tail;
170 size_t posHead=head&(size-1);
171 size_t posTail=Tail&(size-1);
172 if (posTail<posHead || head==Tail)
173 diff=size-posHead;
174 else if (posHead<posTail)
175 diff=posTail-posHead;
176 else if (ExitMode&EXIT_ON_FULL_BUFFER) // buffer is full
177 return (head-initHead);
178 else if (ExitMode&EXIT_ON_TIMEOUT){
179 if ((clock()-t0)>timeout*(CLOCKS_PER_SEC/1000))
180 return (head-initHead);
181 Sleep(time2sleep);
182 continue;
183 } else { // EXIT_ON_COMPLETED
184 Sleep(time2sleep);
185 continue;
186 }
187
188 count=MIN(numElements,diff);
189 if (push_memcpy(data,posHead*bytesizeof(T),pSrcElements,posSrc*bytesizeof(T),count*bytesizeof(T))){
190 head+=count;
191 posSrc+=count;
192 numElements -=count;
193 }
194 }
195 return (head-initHead);
196 }
197
198 size_t Push(T pSrcElement)
199 {
200 return Push(&pSrcElement,1,EXIT_ON_COMPLETED);
201 }
202
203 void PushRequest(T* pSrcElements, size_t numElements)
204 {
205 size_t posHead;
206 size_t posTail;
207 size_t diff=0;
208 while(diff==0){
210 posHead=head&(size-1);
211 posTail=tail&(size-1);
212 if (posTail<posHead || head==tail)
213 diff=size-posHead;
214 else if (posHead<posTail)
215 diff=posTail-posHead;
216 else { // buffer is full
217 Sleep(time2sleep);
218 continue;
219 }
220 }
221 dma_ptr =pSrcElements;
222 dma_left =numElements;
223 dma_size =MIN(dma_left,diff);
224 //dma_init(data,posHead,pSrcElements,0,dma_size*sizeof(T));
225 }
226
227 bool isPushCompleted()
228 {
229 if (dma_left==0)
230 return true;
231 if (dma_check())
232 return false;
233
234 head +=dma_size;
235 dma_ptr +=dma_size;
236 dma_left -=dma_size;
237 if (dma_left){
238 PushRequest(dma_ptr,dma_left);//?
239 return false;
240 }
241 return true;
242
243 }
244
245
246
247
248
249
250 size_t Pop(T* pDstElements, size_t numElements, int ExitMode= EXIT_ON_COMPLETED)
251 {
252 size_t initTail=tail;
253 size_t count;
254 size_t diff;
255 clock_t t0=clock();
256 size_t posDst=0;
257 while (numElements){
258 size_t Head=head;
259 size_t posHead=Head&(size-1);
260 size_t posTail=tail&(size-1);
261 if (posTail<posHead )
262 diff=posHead-posTail;
263 else if (posHead<=posTail && Head!=tail)
264 diff=size-posTail;
265 else if (ExitMode&EXIT_ON_EMPTY_BUFFER) // buffer is empty
266 return (tail-initTail);
267 else if (ExitMode&EXIT_ON_TIMEOUT){
268 if ((clock()-t0)>timeout)
269 return (tail-initTail);
270 Sleep(time2sleep);
271 continue;
272 } else {
273 //Sleep(time2sleep);
274 continue;
275 }
276
277 count=MIN(numElements,diff);
278 pop_memcpy(pDstElements,posDst*bytesizeof(T),data,posTail*bytesizeof(T),count*bytesizeof(T));
279 tail+=count;
280 posDst+=count;
281 numElements -=count;
282 }
283 return (tail-initTail);
284 }
285
286
287
288
289
290
291
292};
293
294
295#endif
C_RingBuffer
Definition: ringbuffer_.h:33
C_RingBuffer::pad
int pad[16-3-5 *sizeof(memcpy_ptr)/sizeof(int)]
резервные поля
Definition: ringbuffer_.h:55
C_RingBuffer::PushRequest
void PushRequest(T *pSrcElements, size_t numElements)
Definition: ringbuffer_.h:203
C_RingBuffer::size
size_t size
размер кольцевого буфера входных данных (в элементах; гарантируется что это степень двойки)
Definition: ringbuffer_.h:36
C_RingBuffer::tail
size_t tail
сколько элементов ОТ НАЧАЛА ПОТОКА код SLAVE уже прочитал (обработал) [заполняется SLAVE]
Definition: ringbuffer_.h:38
C_RingBuffer::head
size_t head
сколько элементов ОТ НАЧАЛА ПОТОКА код MASTER уже записал в буфер входных данных [заполняется MASTER]
Definition: ringbuffer_.h:37
C_RingBuffer::data
T * data
физический адрес кольцевого буфера входных данных
Definition: ringbuffer_.h:35


nmpp: Исходный файл g:/nmpp/include/ringremote.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
ringremote.h
1#ifndef RINGREMOTE_INCLUDED
2#define RINGREMOTE_INCLUDED
3#include <string.h>
4#include <time.h>
5
6#define MIN(a,b) ((a) > (b) ? (b) : (a))
7
8#define RING_BUFFER_DECLARED 0xDEC1A8ED
9#define RING_BUFFER_ALLOCATED 0xA10CA7ED
10#define RING_BUFFER_MEM_ERROR 0xDEADF00D
11#define RING_BUFFER_ERROR 0xBEDABEDA
12#define RING_BUFFER_OK 0x0
13
14#define EXIT_ON_TIMEOUT 1
15#define EXIT_ON_COMPLETED 0
16#define EXIT_ON_FULL_BUFFER 2
17#define EXIT_ON_EMPTY_BUFFER 2
18
19//void Sleep(int msec);
20
21typedef void *(*t_memcpy)(void *to, int toIndex, const void *from, int fromIndex, size_t size) ;
22typedef void *(*t_bytecpy)(void *to, int toIndex, void const *from, int fromIndex, size_t size) ;
23
24#ifdef __NM__
25 #define bytesizeof(T) (sizeof(T)<<2)
26#else
27 #define bytesizeof(T) sizeof(T)
28#endif
29
30#if defined(_WIN32) && !defined(__GNUC__)
31 #include "crtdbg.h"
32#else
33 #define _ASSERTE(val)
34#endif
35
36
37
38
39template <class T> class C_RingBufferRemote{
40private:
41
42public:
43 //size_t sizeof_size_t;
44 //size_t sizeof_T;
45 size_t data_addr;
46 size_t head_addr;
47 size_t tail_addr;
48
49 size_t size;
50 size_t head;
51 size_t tail;
52 size_t id;
53 bool isConnected;
54
55
56 t_bytecpy push_memcpy;
57 t_bytecpy pop_memcpy;
58
59 // ------------- dma --------------
60 t_memcpy dma_init;
61 size_t(*dma_check)();
62 T* dma_ptr;
63 size_t dma_left;
64 size_t dma_size;
65 //----------------------------------
66 unsigned timeout;
67 unsigned time2sleep;
68 int pad[16-3-5*sizeof(t_bytecpy)/sizeof(int)];
69
70
71
72 C_RingBufferRemote(){
73 isConnected=false;
74 }
75
76 C_RingBufferRemote(size_t ringbuffer_addr, t_bytecpy push_memcopy, t_bytecpy pop_memcopy){
77 Init( ringbuffer_addr, push_memcopy, pop_memcopy);
78 }
79
80 size_t GetHead(){
81 pop_memcpy(&head,0,(const void*)head_addr,0,bytesizeof(size_t));
82 return head;
83 }
84 size_t GetTail(){
85 pop_memcpy(&tail,0,(const void*)tail_addr,0,bytesizeof(size_t));
86 return tail;
87 }
88 void SetHead(){
89 push_memcpy((void*)head_addr,0,&head,0, bytesizeof(size_t));
90 }
91 void SetTail(){
92 push_memcpy((void*)tail_addr,0,&tail,0,bytesizeof(size_t));
93 }
94
95 bool Init(size_t ringbuffer_addr, t_bytecpy push_memcopy, t_bytecpy pop_memcopy){
96 //sizeof_size_t=0;
97 //sizeof_T=0;
98 data_addr=0xCCCCCCCC;
99 head_addr=0xCCCCCCCC;
100 tail_addr=0xCCCCCCCC;
101 size=0xCCCCCCCC;
102 head=0xCCCCCCCC;
103 tail=0xCCCCCCCC;
104 isConnected=false;
105
106 dma_init=0;
107 dma_check=0;
108 dma_ptr =0;
109 dma_left=0;
110 dma_size=0;
111 time2sleep=10;
112 timeout=100;
113
114
115 push_memcpy=push_memcopy;
116 pop_memcpy =pop_memcopy;
117
118 pop_memcpy(&data_addr,0,(void*)ringbuffer_addr,+0*bytesizeof(size_t),bytesizeof(size_t));
119 pop_memcpy(&size, 0,(void*)ringbuffer_addr,+1*bytesizeof(size_t),bytesizeof(size_t));
120 pop_memcpy(&head_addr,0,(void*)ringbuffer_addr,+4*bytesizeof(size_t),bytesizeof(size_t));
121 pop_memcpy(&tail_addr,0,(void*)ringbuffer_addr,+5*bytesizeof(size_t),bytesizeof(size_t));
122 pop_memcpy(&id, 0,(void*)ringbuffer_addr,+6*bytesizeof(size_t),bytesizeof(size_t));
123
124 if ((size&(size-1))!=0) // check that size is power of two
125 return false;
126
127
128 if (id!=0x600DB00F)
129 return false;
130
131 id = 0xB00F600D;
132 push_memcpy((void*)ringbuffer_addr,+6*bytesizeof(size_t),&id,0,bytesizeof(size_t));
133 id =0;
134 pop_memcpy(&id, 0,(void*)ringbuffer_addr,+6*bytesizeof(size_t),bytesizeof(size_t));
135 if (id!=0xB00F600D) // no access to remote rinbuffer.id
136 return false;
137
138
139 GetHead();
140 GetTail();
141 if (head==0xCCCCCCCC || tail==0xCCCCCCCC)
142 return false;
143
144
145 isConnected = true;
146 return true;
147 }
148
149 __INLINE__ bool IsFull(){
150 GetHead();
151 GetTail();
152 return (head-tail==size);
153 }
154 __INLINE__ bool IsEmpty(){
155 GetHead();
156 GetTail();
157 return (head==tail);
158 }
159 __INLINE__ size_t GetWriteAvail(){
160 GetHead();
161 GetTail();
162 return (size-(head-tail));
163 }
164 __INLINE__ size_t GetReadAvail(){
165 GetHead();
166 GetTail();
167 return (head-tail);
168 }
169
170 /*
171 T* Head(){
172 if (GetWriteAvail()==0)
173 return 0;
174 size_t headPointer=head&(size-1);
175 T* pElement=(T*)(data_addr+headPointer*bytesizeof(T));
176 return pElement;
177 }
178 T* Tail(){
179 if (GetReadAvail()==0)
180 return 0;
181 size_t tailPointer=tail&(size-1);
182 T* pElement=(T*)(data_addr+tailPointer*sizeof_T);
183 return pElement;
184 }*/
185
186 bool Push(int numElements){
187 GetHead();
188 GetTail();
189 size_t h=head+numElements;
190 if (h>tail+size)
191 return RING_BUFFER_ERROR;
192 head=h;
193 return RING_BUFFER_OK;
194 }
195
196 bool Pop(int numElements){
197 GetHead();
198 GetTail();
199 size_t t=tail+numElements;
200 if (t>head)
201 return RING_BUFFER_ERROR;
202 tail=t;
203 return RING_BUFFER_OK;
204 }
205
206
207 size_t Push(T* pSrcElements, size_t numElements, int ExitMode= EXIT_ON_COMPLETED)
208 {
209 GetHead();
210 size_t initHead=head;
211 size_t count;
212 size_t diff;
213 clock_t t0=clock();
214 size_t posSrc=0;
215 while (numElements){
216 GetHead();
217 GetTail();
218 _ASSERTE(head>=tail);
219 size_t posHead=head&(size-1);
220 size_t posTail=tail&(size-1);
221 if (posTail<posHead || head==tail)
222 diff=size-posHead;
223 else if (posHead<posTail)
224 diff=posTail-posHead;
225 else if (ExitMode&EXIT_ON_FULL_BUFFER) // buffer is full
226 return (head-initHead);
227 else if (ExitMode&EXIT_ON_TIMEOUT){
228 if ((clock()-t0)>timeout*(CLOCKS_PER_SEC/1000))
229 return (head-initHead);
230 Sleep(time2sleep);
231 continue;
232 } else {
233 Sleep(time2sleep);
234 continue;
235 }
236
237 count=MIN(numElements,diff);
238 if (push_memcpy((void*)data_addr,posHead*bytesizeof(T),pSrcElements,posSrc*bytesizeof(T),count*bytesizeof(T))){
239 head+=count;
240 posSrc+=count;
241 numElements -=count;
242 SetHead();
243 GetHead();
244 }
245
246 }
247 return (head-initHead);
248 }
249
250
251 /*
252 void PushRequest(T* pSrcElements, size_t numElements)
253 {
254 GetHead();
255 GetTail();
256 size_t posHead;
257 size_t posTail;
258 size_t diff=0;
259 while(diff==0){
260 posHead=head&(size-1);
261 posTail=tail&(size-1);
262 if (posTail<posHead || head==tail)
263 diff=size-posHead;
264 else if (posHead<posTail)
265 diff=posTail-posHead;
266 else { // buffer is full
267 Sleep(time2sleep);
268 continue;
269 }
270 }
271 dma_ptr =pSrcElements;
272 dma_left =numElements;
273 dma_size =MIN(dma_left,diff);
274 dma_init(data_addr+posHead*sizeof_T,pSrcElements,dma_size*sizeof_T);
275 }
276
277 bool isPushCompleted()
278 {
279 SetHead();
280 if (dma_left==0)
281 return true;
282 if (dma_check())
283 return false;
284
285 head +=dma_size;
286 dma_ptr +=dma_size;
287 dma_left -=dma_size;
288 SetHead();
289 if (dma_left){
290 PushRequest(dma_ptr,dma_left);
291 return false;
292 }
293 return true;
294
295 }
296
297 */
298
299
300
301
302 size_t Pop(T* pDstElements, size_t numElements, int ExitMode= EXIT_ON_COMPLETED)
303 {
304 GetTail();
305 size_t initTail=tail;
306 size_t count;
307 size_t diff;
308 clock_t t0=clock();
309 size_t posDst=0;
310 while (numElements){
311 //GetTail();
312 GetHead();
313 size_t posHead=head&(size-1);
314 size_t posTail=tail&(size-1);
315 if (posTail<posHead )
316 diff=posHead-posTail;
317 else if (posHead<=posTail && head!=tail)
318 diff=size-posTail;
319 else if (ExitMode&EXIT_ON_EMPTY_BUFFER) // buffer is empty
320 return (tail-initTail);
321 else if (ExitMode&EXIT_ON_TIMEOUT){
322 if ((clock()-t0)>timeout)
323 return (tail-initTail);
324 Sleep(time2sleep);
325 continue;
326 } else {
327 Sleep(time2sleep);
328 continue;
329 }
330
331 count=MIN(numElements,diff);
332 pop_memcpy(pDstElements,posDst*bytesizeof(T),(const void*)(data_addr),posTail*bytesizeof(T),count*bytesizeof(T));
333 tail+=count;
334 posDst+=count;
335 numElements -=count;
336 SetTail();
337 }
338 return (tail-initTail);
339 }
340
341 size_t View(T* pDstElements, size_t numElements, int ExitMode= EXIT_ON_COMPLETED)
342 {
343 GetTail();
344 size_t initTail=tail;
345 size_t count;
346 size_t diff;
347 clock_t t0=clock();
348 size_t posDst=0;
349 while (numElements){
350 //GetTail();
351 GetHead();
352 size_t posHead=head&(size-1);
353 size_t posTail=tail&(size-1);
354 if (posTail<posHead )
355 diff=posHead-posTail;
356 else if (posHead<=posTail && head!=tail)
357 diff=size-posTail;
358 else if (ExitMode&EXIT_ON_EMPTY_BUFFER){ // buffer is empty
359 size_t ret=tail-initTail;
360 tail=initTail;
361 return ret;
362 }
363 else if (ExitMode&EXIT_ON_TIMEOUT){
364 if ((clock()-t0)>timeout){
365 size_t ret=tail-initTail;
366 tail=initTail;
367 return ret;
368 }
369 Sleep(time2sleep);
370 continue;
371 } else {
372 Sleep(time2sleep);
373 continue;
374 }
375
376 count=MIN(numElements,diff);
377 pop_memcpy(pDstElements,posDst*bytesizeof(T),(const void*)data_addr,posTail*bytesizeof(T),count*bytesizeof(T));
378 tail+=count;
379 posDst+=count;
380 numElements -=count;
381 //SetTail();
382 }
383 size_t ret=tail-initTail;
384 tail=initTail;
385 return ret;
386 }
387
388
389
390};
391
392
393#endif
C_RingBufferRemote
Definition: ringremote.h:39
C_RingBufferRemote::head
size_t head
сколько элементов ОТ НАЧАЛА ПОТОКА код MASTER уже записал в буфер входных данных [заполняется MASTER]
Definition: ringremote.h:50
C_RingBufferRemote::tail
size_t tail
сколько элементов ОТ НАЧАЛА ПОТОКА код SLAVE уже прочитал (обработал) [заполняется SLAVE]
Definition: ringremote.h:51
C_RingBufferRemote::data_addr
size_t data_addr
физический адрес кольцевого буфера входных данных
Definition: ringremote.h:45
C_RingBufferRemote::head_addr
size_t head_addr
сколько элементов ОТ НАЧАЛА ПОТОКА код MASTER уже записал в буфер входных данных [заполняется MASTER]
Definition: ringremote.h:46
C_RingBufferRemote::id
size_t id
сколько элементов ОТ НАЧАЛА ПОТОКА код SLAVE уже прочитал (обработал) [заполняется SLAVE]
Definition: ringremote.h:52
C_RingBufferRemote::size
size_t size
размер кольцевого буфера входных данных (в элементах; гарантируется что это степень двойки)
Definition: ringremote.h:49
C_RingBufferRemote::pad
int pad[16-3-5 *sizeof(t_bytecpy)/sizeof(int)]
резервные поля
Definition: ringremote.h:68
C_RingBufferRemote::tail_addr
size_t tail_addr
сколько элементов ОТ НАЧАЛА ПОТОКА код SLAVE уже прочитал (обработал) [заполняется SLAVE]
Definition: ringremote.h:47


nmpp: Исходный файл g:/nmpp/include/test.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
test.h
1
2
3template <int K> void* nmppsMalloc(int size);
4template<> void* nmppsMalloc<8>(int size) { return nmppsMalloc_8s(size); }
5template<> void* nmppsMalloc<16>(int size){ return nmppsMalloc_16s(size); }
6template<> void* nmppsMalloc<32>(int size){ return nmppsMalloc_32s(size); }
7template<> void* nmppsMalloc<64>(int size){ return nmppsMalloc_64s(size);}
8
9#define XNM_TYPE(x) nm##x##s
10#define NM_TYPE(x) XNM_TYPE(x)
11
12#define xnmppsMalloc(bits,size) nmppsMalloc_##bits##s(size)
13#define nmppsMalloc(bits,size) xnmppsMalloc(bits,size)
14
15#define xnmppsSet(bits,buf,val,size) nmppsSet_##bits##s(buf,val,size)
16#define nmppsSet(bits,buf,val,size) xnmppsSet(bits,buf,val,size)
17
18#define xnmppsCrcAcc(bits,src,size,crc) nmppsCrcAcc_##bits##s(src,size, crc)
19#define nmppsCrcAcc(bits,src,size,crc) xnmppsCrcAcc(bits,src,size,crc)
20
21#define xnmppsRandUniform(bits,buf,size) nmppsRandUniform_##bits##s(buf,size)
22#define nmppsRandUniform(bits,buf,size) xnmppsRandUniform(bits,buf,size)
23
24
25inline int SIZE32(int bits, int size) {
26 switch (bits){
27 case(64):
28 return size << 1;
29 case(32):
30 return size ;
31 case(16):
32 return size >>1;
33 case(8):
34 return size >>2;
35 case(4):
36 return size >>3;
37 }
38 return 0;
39}
40
41inline int DIM(int bits) {
42 switch (bits) {
43 case(64):
44 return 1;
45 case(32):
46 return 2;
47 case(16):
48 return 4;
49 case(8):
50 return 8;
51 case(4):
52 return 16;
53 case(2):
54 return 32;
55 case(1):
56 return 64;
57 }
58 return 0;
59}
60
61#include "stdio.h"
62inline void dump(int bits,void* buf, int height, int width){
63 unsigned *p=(unsigned*)buf;
64 switch(bits){
65 case(64):
66 for(int y=0,i=0; y<height; y++){
67 for(int x=0; x<width; x++){
68 unsigned lo=nmppsGet_32u(p,i++);
69 unsigned hi=nmppsGet_32u(p,i++);
70 printf("%08X%08X", hi,lo);
71 }
72 printf("\n");
73 }
74 break;
75
76 case(32):
77 for(int y=0,i=0; y<height; y++){
78 for(int x=0; x<width; x++){
79 unsigned val=nmppsGet_32u(p,i++);
80 printf("%08X ", val);
81 }
82 printf("\n");
83 }
84 break;
85
86 case(16):
87 for(int y=0, i=0; y<height; y++){
88 for(int x=0; x<width; x++,i++){
89 unsigned val=nmppsGet_16u((nm16u*)buf,i);
90 printf("%04X ", val);
91 }
92 printf("\n");
93 }
94 break;
95 case(8):
96 for(int y=0, i=0; y<height; y++){
97 for(int x=0; x<width; x++,i++){
98 unsigned val=nmppsGet_8u((nm8u*)buf,i);
99 printf("%02X ", val);
100 }
101 printf("\n");
102 }
103 break;
104 }
105}
nm8u
unsigned char nm8u
Definition: nmtype.h:448
nm16u
unsigned short nm16u
Definition: nmtype.h:481


nmpp: Исходный файл g:/nmpp/include/tfixpoint.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
tfixpoint.h
1#include "./nmplv/nmtl/tfixpoint.h"


nmpp: Список членов всех файлов

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • Указатель
  • Функции
  • Определения типов
  • Макросы
  • c
  • i
  • n
  • u
  • v
Список всех документированных функций, переменных, макроопределений, перечислений и определений типов со ссылками на документацию.

- c -

  • CAPACITY_nm64s : nmtype.h

- i -

  • int15b : nmtype.h
  • int16b : nmtype.h
  • int1b : nmtype.h
  • int2b : nmtype.h
  • int30b : nmtype.h
  • int31b : nmtype.h
  • int32b : nmtype.h
  • int3b : nmtype.h
  • int4b : nmtype.h
  • int63b : nmtype.h
  • int64b : nmtype.h
  • int7b : nmtype.h
  • int8b : nmtype.h

- n -

  • nm1 : nmtype.h
  • nm16s : nmtype.h
  • nm16s15b : nmtype.h
  • nm16u : nmtype.h
  • nm16u15b : nmtype.h
  • nm2s : nmtype.h
  • nm2u : nmtype.h
  • nm32s : nmtype.h
  • nm32s30b : nmtype.h
  • nm32s31b : nmtype.h
  • nm32u : nmtype.h
  • nm32u31b : nmtype.h
  • nm4s : nmtype.h
  • nm4u : nmtype.h
  • nm4u3b : nmtype.h
  • nm64s : nmtype.h
  • nm64s63b : nmtype.h
  • nm64u : nmtype.h
  • nm8s : nmtype.h
  • nm8s7b : nmtype.h
  • nm8u : nmtype.h
  • nm8u7b : nmtype.h
  • nmblas_dasum() : nmblas.h
  • nmblas_daxpy() : nmblas.h
  • nmblas_dcopy() : nmblas.h
  • nmblas_ddot() : nmblas.h
  • nmblas_dgemv() : nmblas.h
  • nmblas_dnrm2() : nmblas.h
  • nmblas_drot() : nmblas.h
  • nmblas_drotg() : nmblas.h
  • nmblas_drotm() : nmblas.h
  • nmblas_dscal() : nmblas.h
  • nmblas_dsdot() : nmblas.h
  • nmblas_dswap() : nmblas.h
  • nmblas_dznrm2() : nmblas.h
  • nmblas_idamax() : nmblas.h
  • nmblas_isamax() : nmblas.h
  • nmblas_sasum() : nmblas.h
  • nmblas_saxpy() : nmblas.h
  • nmblas_scnrm2() : nmblas.h
  • nmblas_scopy() : nmblas.h
  • nmblas_sdot() : nmblas.h
  • nmblas_sdsdot() : nmblas.h
  • nmblas_sgemv() : nmblas.h
  • nmblas_sger() : nmblas.h
  • nmblas_snrm2() : nmblas.h
  • nmblas_srot() : nmblas.h
  • nmblas_srotm() : nmblas.h
  • nmblas_sscal() : nmblas.h
  • nmblas_sswap() : nmblas.h

- u -

  • uint15b : nmtype.h
  • uint16b : nmtype.h
  • uint1b : nmtype.h
  • uint2b : nmtype.h
  • uint31b : nmtype.h
  • uint32b : nmtype.h
  • uint3b : nmtype.h
  • uint4b : nmtype.h
  • uint63b : nmtype.h
  • uint64b : nmtype.h
  • uint7b : nmtype.h
  • uint8b : nmtype.h

- v -

  • v16nm16s : nmtype.h
  • v16nm16u : nmtype.h
  • v16nm32s : nmtype.h
  • v16nm32u : nmtype.h
  • v16nm4b3u : nmtype.h
  • v16nm4u : nmtype.h
  • v16nm8s : nmtype.h
  • v16nm8s7b : nmtype.h
  • v16nm8u : nmtype.h
  • v2nm32s : nmtype.h
  • v2nm32u : nmtype.h
  • v4nm16s : nmtype.h
  • v4nm16u : nmtype.h
  • v4nm32s : nmtype.h
  • v4nm32u : nmtype.h
  • v4nm8u : nmtype.h
  • v8nm16s : nmtype.h
  • v8nm16u : nmtype.h
  • v8nm32s : nmtype.h
  • v8nm32u : nmtype.h
  • v8nm8s : nmtype.h
  • v8nm8u : nmtype.h


nmpp: Список членов всех файлов

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • Указатель
  • Функции
  • Определения типов
  • Макросы
  • nmblas_dasum() : nmblas.h
  • nmblas_daxpy() : nmblas.h
  • nmblas_dcopy() : nmblas.h
  • nmblas_ddot() : nmblas.h
  • nmblas_dgemv() : nmblas.h
  • nmblas_dnrm2() : nmblas.h
  • nmblas_drot() : nmblas.h
  • nmblas_drotg() : nmblas.h
  • nmblas_drotm() : nmblas.h
  • nmblas_dscal() : nmblas.h
  • nmblas_dsdot() : nmblas.h
  • nmblas_dswap() : nmblas.h
  • nmblas_dznrm2() : nmblas.h
  • nmblas_idamax() : nmblas.h
  • nmblas_isamax() : nmblas.h
  • nmblas_sasum() : nmblas.h
  • nmblas_saxpy() : nmblas.h
  • nmblas_scnrm2() : nmblas.h
  • nmblas_scopy() : nmblas.h
  • nmblas_sdot() : nmblas.h
  • nmblas_sdsdot() : nmblas.h
  • nmblas_sgemv() : nmblas.h
  • nmblas_sger() : nmblas.h
  • nmblas_snrm2() : nmblas.h
  • nmblas_srot() : nmblas.h
  • nmblas_srotm() : nmblas.h
  • nmblas_sscal() : nmblas.h
  • nmblas_sswap() : nmblas.h


nmpp: Список членов всех файлов

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • Указатель
  • Функции
  • Определения типов
  • Макросы
  • i
  • n
  • u
  • v

- i -

  • int15b : nmtype.h
  • int16b : nmtype.h
  • int1b : nmtype.h
  • int2b : nmtype.h
  • int30b : nmtype.h
  • int31b : nmtype.h
  • int32b : nmtype.h
  • int3b : nmtype.h
  • int4b : nmtype.h
  • int63b : nmtype.h
  • int64b : nmtype.h
  • int7b : nmtype.h
  • int8b : nmtype.h

- n -

  • nm1 : nmtype.h
  • nm16s : nmtype.h
  • nm16s15b : nmtype.h
  • nm16u : nmtype.h
  • nm16u15b : nmtype.h
  • nm2s : nmtype.h
  • nm2u : nmtype.h
  • nm32s : nmtype.h
  • nm32s30b : nmtype.h
  • nm32s31b : nmtype.h
  • nm32u : nmtype.h
  • nm32u31b : nmtype.h
  • nm4s : nmtype.h
  • nm4u : nmtype.h
  • nm4u3b : nmtype.h
  • nm64s : nmtype.h
  • nm64s63b : nmtype.h
  • nm64u : nmtype.h
  • nm8s : nmtype.h
  • nm8s7b : nmtype.h
  • nm8u : nmtype.h
  • nm8u7b : nmtype.h

- u -

  • uint15b : nmtype.h
  • uint16b : nmtype.h
  • uint1b : nmtype.h
  • uint2b : nmtype.h
  • uint31b : nmtype.h
  • uint32b : nmtype.h
  • uint3b : nmtype.h
  • uint4b : nmtype.h
  • uint63b : nmtype.h
  • uint64b : nmtype.h
  • uint7b : nmtype.h
  • uint8b : nmtype.h

- v -

  • v16nm16s : nmtype.h
  • v16nm16u : nmtype.h
  • v16nm32s : nmtype.h
  • v16nm32u : nmtype.h
  • v16nm4b3u : nmtype.h
  • v16nm4u : nmtype.h
  • v16nm8s : nmtype.h
  • v16nm8s7b : nmtype.h
  • v16nm8u : nmtype.h
  • v2nm32s : nmtype.h
  • v2nm32u : nmtype.h
  • v4nm16s : nmtype.h
  • v4nm16u : nmtype.h
  • v4nm32s : nmtype.h
  • v4nm32u : nmtype.h
  • v4nm8u : nmtype.h
  • v8nm16s : nmtype.h
  • v8nm16u : nmtype.h
  • v8nm32s : nmtype.h
  • v8nm32u : nmtype.h
  • v8nm8s : nmtype.h
  • v8nm8u : nmtype.h


nmpp: Список членов всех файлов

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • Указатель
  • Функции
  • Определения типов
  • Макросы
  • CAPACITY_nm64s : nmtype.h


nmpp: Титульная страница

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
nmpp Документация


nmpp: Исходный файл g:/nmpp/include/nmblas.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
nmblas.h
См. документацию.
1
16
18
22
24
25
26#ifndef _NMBLAS_H_INCLUDED_
27#define _NMBLAS_H_INCLUDED_
28
29#ifdef __cplusplus
30 extern "C" {
31#endif
32
33
54double nmblas_dasum(
55 const int N,
56 const double *X,
57 const int INCX
58);
60
61enum nm_trans{nm_n=0,nm_t=1};
62
63
89void nmblas_daxpy(
90 const int N,
91 const double A,
92 const double *X,
93 const int INCX,
94 double *Y,
95 const int INCY
96);
98
99
123void nmblas_dcopy(
124 const int N,
125 const double* X,
126 const int INCX,
127 double* Y,
128 const int INCY
129);
131
156double nmblas_ddot(
157 const int N,
158 const double* X,
159 const int INCX,
160 const double* Y,
161 const int INCY
162);
164
184double nmblas_dnrm2(
185 const int N,
186 const double *x,
187 const int INCX
188);
190
217void nmblas_drot(
218 const int N,
219 double *X,
220 const int INCX,
221 double *Y,
222 const int INCY,
223 const double C,
224 const double S
225);
227
238void nmblas_drotg(
239 double *A,
240 double *B,
241 double *C,
242 double *S
243);
245
260void nmblas_drotm(
261 const int N,
262 double *X,
263 const int INCX,
264 double *Y,
265 const int INCY,
266 double *param
267);
269
290void nmblas_dscal(
291 const int N,
292 const double ALPHA,
293 double*X,
294 const int INCX
295);
297
325double nmblas_dsdot(
326 const int N,
327 const float* X,
328 const int INCX,
329 const float* Y,
330 const int INCY
331);
333
348void nmblas_dswap(
349 const int N,
350 double *X,
351 const int INCX,
352 double *Y,
353 const int INCY
354);
356
376double nmblas_dznrm2(
377 const int N,
378 const double *X,
379 const int INCX
380);
382
402int nmblas_idamax(
403 const int N,
404 const double* X,
405 const int INCX
406);
409
429int nmblas_isamax(
430 const int N,
431 const float* X,
432 const int INCX
433);
435
455float nmblas_sasum(
456 const int N,
457 const float *X,
458 const int INCX
459);
461
486void nmblas_saxpy(
487 int N,
488 const float A,
489 const float *X,
490 const int INCX,
491 float *Y,
492 const int INCY
493);
495
515float nmblas_scnrm2(
516 const int N,
517 const float* X,
518 const int INCX
519);
521
544void nmblas_scopy(
545 const int N,
546 const float* X,
547 const int INCX,
548 float* Y,
549 const int INCY
550);
552
576float nmblas_sdot(
577 const int N,
578 const float *X,
579 const int INCX,
580 const float *Y,
581 const int INCY
582);
584
603float nmblas_sdsdot(
604 const int N,
605 const float B,
606 const float* X,
607 const int INCX,
608 const float* Y,
609 const int INCY
610);
612
632float nmblas_snrm2(
633 const int N,
634 const float* X,
635 const int INCX
636);
638
653void nmblas_srot(
654 const int N,
655 float *X,
656 const int INCX,
657 float *Y,
658 const int INCY,
659 const float C,
660 const float S
661);
663
678void nmblas_srotm(
679 const int N,
680 float *X,
681 const int INCX,
682 float *Y,
683 const int INCY,
684 float *param
685);
687
707void nmblas_sscal(
708 const int N,
709 const float A,
710 const float *X,
711 const int INCX
712);
714
737void nmblas_sswap(
738 const int N,
739 const float *X,
740 const int INCX,
741 const float *Y,
742 const int INCY
743);
745
747
748//defgroup sgemv nmblas_sgemv
788
789void nmblas_sgemv(
790 const enum nm_trans TRANS,
791 const int M,
792 const int N,
793 const float ALPHA,
794 const float * A,
795 const int LDA,
796 const float * X,
797 const int INCX,
798 const float BETA,
799 float * Y,
800 const int INCY
801);
803
804//defgroup dgemv nmblas_dgemv
844
845void nmblas_dgemv(
846 const enum nm_trans TRANS,
847 const int M,
848 const int N,
849 const double ALPHA,
850 const double * A,
851 const int LDA,
852 const double * X,
853 const int INCX,
854 const double BETA,
855 double * Y,
856 const int INCY
857);
859
860//defgroup sger nmblas_sger
902
903void nmblas_sger(
904 const int M,//row
905 const int N,//coullum
906 const float ALPHA,
907 const float * X,
908 const int INCX,
909 const float * Y,
910 const int INCY,
911 float * A,
912 const int LDA
913);
915#include<nmblas/nmblas_sgemm.h>
916
917void MullMatrix_f(
918 void* A,
919 int pI,
920 int ldA,
921 void* B,
922 int pK,
923 int ldB,
924 void* C,
925 int pJ,
926 int ldC,
927 int plusC
928);
929
930
931#ifdef __cplusplus
932 };
933#endif
934
935#endif // _INIT_H_INCLUDED_
nmblas_idamax
int nmblas_idamax(const int N, const double *X, const int INCX)
finds the index of the first element having maximum absolute value.
nmblas_snrm2
float nmblas_snrm2(const int N, const float *X, const int INCX)
SNRM2 returns the euclidean norm of a vector via the function name, so that SNRM2 := sqrt( x'*x )....
nmblas_dswap
void nmblas_dswap(const int N, double *X, const int INCX, double *Y, const int INCY)
interchanges two vectors <>
nmblas_dscal
void nmblas_dscal(const int N, const double ALPHA, double *X, const int INCX)
scales a vector by a constant <>
nmblas_drot
void nmblas_drot(const int N, double *X, const int INCX, double *Y, const int INCY, const double C, const double S)
applies a plane rotation <>
nmblas_ddot
double nmblas_ddot(const int N, const double *X, const int INCX, const double *Y, const int INCY)
forms the dot product of two vectors.
nmblas_scnrm2
float nmblas_scnrm2(const int N, const float *X, const int INCX)
returns the euclidean norm of a vector via the function name, so that SCNRM2 := sqrt( x**H*x )
nmblas_srotm
void nmblas_srotm(const int N, float *X, const int INCX, float *Y, const int INCY, float *param)
Apply a Given's rotation constructed by SROTMG. <>
nmblas_scopy
void nmblas_scopy(const int N, const float *X, const int INCX, float *Y, const int INCY)
copies a vector, X, to a vector, Y
nmblas_isamax
int nmblas_isamax(const int N, const float *X, const int INCX)
finds the index of the first element having maximum absolute value.
nmblas_sswap
void nmblas_sswap(const int N, const float *X, const int INCX, const float *Y, const int INCY)
interchanges two vectors <>
nmblas_sdot
float nmblas_sdot(const int N, const float *X, const int INCX, const float *Y, const int INCY)
SDOT forms the dot product of two vectors.
nmblas_dsdot
double nmblas_dsdot(const int N, const float *X, const int INCX, const float *Y, const int INCY)
Compute the inner product of two vectors with double precision accumulation. <>
nmblas_sasum
float nmblas_sasum(const int N, const float *X, const int INCX)
takes the sum of the absolute values
nmblas_drotg
void nmblas_drotg(double *A, double *B, double *C, double *S)
construct givens plane rotation <>
nmblas_srot
void nmblas_srot(const int N, float *X, const int INCX, float *Y, const int INCY, const float C, const float S)
applies a plane rotation <>
nmblas_sdsdot
float nmblas_sdsdot(const int N, const float B, const float *X, const int INCX, const float *Y, const int INCY)
Compute the inner product of two vectors with double precision accumulation. <>
nmblas_dznrm2
double nmblas_dznrm2(const int N, const double *X, const int INCX)
returns the euclidean norm of a vector via the function name, so that DZNRM2 := sqrt( x**H*x ) <>
nmblas_daxpy
void nmblas_daxpy(const int N, const double A, const double *X, const int INCX, double *Y, const int INCY)
constant times a vector plus a vector <>
nmblas_dasum
double nmblas_dasum(const int N, const double *X, const int INCX)
takes the sum of the absolute values <>
nmblas_dnrm2
double nmblas_dnrm2(const int N, const double *x, const int INCX)
returns the euclidean norm of a vector via the function name, so that SCNRM2 := sqrt( x**H*x )
nmblas_drotm
void nmblas_drotm(const int N, double *X, const int INCX, double *Y, const int INCY, double *param)
Apply a Given's rotation constructed by DROTMG. <>
nmblas_sscal
void nmblas_sscal(const int N, const float A, const float *X, const int INCX)
scales a vector by a constant <>
nmblas_dcopy
void nmblas_dcopy(const int N, const double *X, const int INCX, double *Y, const int INCY)
copies a vector, X, to a vector, Y
nmblas_saxpy
void nmblas_saxpy(int N, const float A, const float *X, const int INCX, float *Y, const int INCY)
constant times a vector plus a vector
nmblas_sger
void nmblas_sger(const int M, const int N, const float ALPHA, const float *X, const int INCX, const float *Y, const int INCY, float *A, const int LDA)
perform the rank 1 operation A := alpha*x*y' + A, where alpha is a scalar, x is an m element vector,...
nmblas_sgemv
void nmblas_sgemv(const enum nm_trans TRANS, const int M, const int N, const float ALPHA, const float *A, const int LDA, const float *X, const int INCX, const float BETA, float *Y, const int INCY)
performs one of the matrix-vector operations y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y,...
nmblas_dgemv
void nmblas_dgemv(const enum nm_trans TRANS, const int M, const int N, const double ALPHA, const double *A, const int LDA, const double *X, const int INCX, const double BETA, double *Y, const int INCY)
performs one of the matrix-vector operations y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y,...
nmblas_sgemm.h
part of nmblas library, sgemm function implementation


nmpp: Исходный файл g:/nmpp/include/nmblas/nmblas_sgemm.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
  • nmblas
nmblas_sgemm.h
См. документацию.
1
35
37
38#ifdef __NM__
39#ifdef __GNUC__
40#ifndef NMBLAS_SGEMM_H_
41#define NMBLAS_SGEMM_H_
42
43// aux macros
44#define ALL_FPU( instr ) "fpu 0 " instr "\n\t" \
45 "fpu 1 " instr "\n\t" \
46 "fpu 2 " instr "\n\t" \
47 "fpu 3 " instr "\n\t"
48
49// aux functions
50
51// load old C for specific fpu
52static inline __attribute__((always_inline)) void
53loadCFromMemory( const float* pc, int ldc, const int fpu, int* dummy_to_link )
54{
55 asm (
56 "fpu %4 rep vlen vreg7= [%1++%2];\n\t"
57 : "+m"(*dummy_to_link)
58 : "RA0"( pc + fpu*2 ), "RG0"(ldc), "m" (*(const float (*)[])pc), "i"(fpu) );
59}
60
61// load A for all fpu-s
62static inline __attribute__((always_inline)) void
63loadAFromMemory( const float* pa, int lda, const int vrNum, int* dummy_to_link )
64{
65 asm (
66 "fpu 0 rep vlen vreg%3 = [%1++%2];\n\t"
67// All fpu-s got the same vector
68 "fpu 1 vreg%3 = fpu 0 vreg%3;\n\t"
69 "fpu 2 vreg%3 = fpu 1 vreg%3;\n\t"
70 "fpu 3 vreg%3 = fpu 2 vreg%3;\n\t"
71 : "+m" (*dummy_to_link), "+RA0" (pa)
72 : "RG0"(lda), "i"(vrNum), "m"(*(const float (*)[])pa) );
73}
74
75static inline __attribute__((always_inline)) void
76loadBAndMAdd( const float* pb, const float* pb1, int ldb, const int vrNum, int* dummy_to_link )
77{
78 asm (
79 "fpu 0 rep 1 vreg4 = [%1++];\n\t"
80 "fpu 0 rep 1 vreg5 = [%2++];\n\t"
81 "fpu 1 rep 1 vreg4 = [%1++];\n\t"
82 "fpu 1 rep 1 vreg5 = [%2++];\n\t"
83 "fpu 2 rep 1 vreg4 = [%1++];\n\t"
84 "fpu 2 rep 1 vreg5 = [%2++];\n\t"
85 "fpu 3 rep 1 vreg4 = [%1++];\n\t"
86 "fpu 3 rep 1 vreg5 = [%2++];\n\t"
87 ALL_FPU (".matrix vreg7= vreg%3 * .retrieve (vreg4,vreg5) + vreg7;")
88 : "+m" (*dummy_to_link), "+a" (pb), "+a" (pb1)
89 : "i"(vrNum), "m"(*(const float (*)[])pb), "m"(*(const float (*)[])pb1) );
90}
91
92// Same as loadBAndMAdd, but without "+C"
93static inline __attribute__((always_inline)) void
94loadBAndMultiply( const float* pb, const float* pb1, int ldb, const int vrNum, int* dummy_to_link )
95{
96 asm (
97 "fpu 0 rep 1 vreg4 = [%1++];\n\t"
98 "fpu 0 rep 1 vreg5 = [%2++];\n\t"
99 "fpu 1 rep 1 vreg4 = [%1++];\n\t"
100 "fpu 1 rep 1 vreg5 = [%2++];\n\t"
101 "fpu 2 rep 1 vreg4 = [%1++];\n\t"
102 "fpu 2 rep 1 vreg5 = [%2++];\n\t"
103 "fpu 3 rep 1 vreg4 = [%1++];\n\t"
104 "fpu 3 rep 1 vreg5 = [%2++];\n\t"
105 ALL_FPU (".matrix vreg7= vreg%3 * .retrieve (vreg4,vreg5);")
106 : "+m" (*dummy_to_link), "+a" (pb), "+a" (pb1)
107 : "i"(vrNum), "m"(*(const float (*)[])pb), "m"(*(const float (*)[])pb1) );
108}
109
110
111
112static inline __attribute__((always_inline)) void
113storeCToMemory( float* pc, int ldc, const int fpu, int* dummy_to_link )
114{
115 asm (
116 "fpu %4 rep vlen [ar0++gr0] = vreg7;\n\t"
117 : "=m"(*(float (*)[])pc)
118 : "RA0"(pc), "RG0"(ldc), "m"(*dummy_to_link), "i"(fpu) );
119}
120
121
122
123static inline void
124nmblas_sgemm( const enum nm_trans TransA,
125 const enum nm_trans TransB,
126 const int M,
127 const int N,
128 const int K,
129 const float alpha,
130 const float *A,
131 const int lda,
132 const float *B,
133 const int ldb,
134 const float _beta,
135 float *C,
136 const int ldc
137 )
138{
139 float beta= _beta;
140 if( TransA != nm_n || TransB != nm_n ){}
141
142 // Нижеследующие сравнения и деления должны быть локализованы строго до векторного кода,
143 // поскольку реализующие их интринсики испортят значения в векторных регистрах!
144 // { all float intrinsic calls must be here!
145 int beta0 = beta ==0.0f;
146 int alpha1 = alpha==1.0f;
147 int beta1;
148 if ( !beta0 ){
149 if ( !alpha1 && alpha !=0.0f )
150 beta /= alpha;
151 beta1 = beta ==1.0f;
152 }
153 // } all float intrinsic calls must be here!
154
155
156 const int I=M;
157 const int J=N;
158 int i, j, k;
159 int* dummy_to_link; // workaround to reflect dependence by vector registers
160
161 for(i=0; i<I; i+=32){
162 asm volatile(
163 "vlen= %0;\n\t"
164 :
165 : "g"( I-i-1 >= 31 ? 31 : I-i-1 ) );
166
167 for(j=0; j<J; j+=8){
168
169 k=0;
170 const float* pa;
171 const float* pb;
172 const float* pb1;
173 float bufScalar[2] __attribute__ ((aligned (8)));
174
175 asm("":"=m"(*dummy_to_link),"=a"(dummy_to_link));
176
177 if ( !beta0 ){
178 // read C[i][j]
179 loadCFromMemory( C + i *ldc +j, ldc, 0, dummy_to_link );
180 loadCFromMemory( C + i *ldc +j, ldc, 1, dummy_to_link );
181 loadCFromMemory( C + i *ldc +j, ldc, 2, dummy_to_link );
182 loadCFromMemory( C + i *ldc +j, ldc, 3, dummy_to_link );
183 if ( !beta1 ){
184 // C[i][j] *= beta
185 bufScalar[0]=beta;
186 bufScalar[1]=beta;
187 float* pbeta= bufScalar;
188 asm (
189 "fpu 0 rep 1 vreg4 = [%1++];\n\t"
190 "fpu 1 vreg4 = fpu 0 vreg4;\n\t"
191 "fpu 2 vreg4 = fpu 1 vreg4;\n\t"
192 "fpu 3 vreg4 = fpu 2 vreg4;\n\t"
193 ALL_FPU (".float vreg7= vreg7 * .retrieve (vreg4);")
194 : "+m" (*dummy_to_link), "+a" (pbeta)
195 : "m"(*bufScalar) );
196 }
197 }
198 else{
199 pa = A + i*lda +k;
200 pb = B + k*ldb +j;
201 pb1 = B +(k+1)*ldb +j;
202
203 asm("":"=m"(*dummy_to_link));
204 loadAFromMemory ( pa, lda, 0, dummy_to_link );
205
206 loadBAndMultiply( pb, pb1, ldb, 0, dummy_to_link );
207 k+=2;
208 }
209
210
211
212 for( ; k<K; k+=2){
213 //C[i][j] += A[i][k]*B[k][j];
214 pa = A + i*lda +k;
215 pb = B + k*ldb +j;
216 pb1 = B +(k+1)*ldb +j;
217
218 loadAFromMemory( pa, lda, 3, dummy_to_link );
219
220 loadBAndMAdd( pb, pb1, ldb, 3, dummy_to_link );
221
222 k+=2;
223 if ( !( k<K ) )
224 break;
225 pa = A + i*lda +k;
226 pb = B + k*ldb +j;
227 pb1 = B +(k+1)*ldb +j;
228
229 loadAFromMemory( pa, lda, 0, dummy_to_link );
230
231 loadBAndMAdd( pb, pb1, ldb, 0, dummy_to_link );
232 }
233
234 if ( !alpha1 ){
235 // C[i][j] *= alpha
236 bufScalar[0]=alpha;
237 bufScalar[1]=alpha;
238 float* palpha= bufScalar;
239 asm (
240 "fpu 0 rep 1 vreg4 = [%1++];\n\t"
241 "fpu 1 vreg4 = fpu 0 vreg4;\n\t"
242 "fpu 2 vreg4 = fpu 1 vreg4;\n\t"
243 "fpu 3 vreg4 = fpu 2 vreg4;\n\t"
244 ALL_FPU (".float vreg7= vreg7 * .retrieve (vreg4);")
245 : "+m" (*dummy_to_link), "+a" (palpha)
246 : "m"(*bufScalar) );
247 }
248
249 // write C[i][j]
250 storeCToMemory( C + i *ldc +j+0, ldc, 0, dummy_to_link );
251 if ( J-j<=2 )
252 break;
253 storeCToMemory( C + i *ldc +j+2, ldc, 1, dummy_to_link );
254 if ( J-j<=4 )
255 break;
256 storeCToMemory( C + i *ldc +j+4, ldc, 2, dummy_to_link );
257 if ( J-j<=6 )
258 break;
259 storeCToMemory( C + i *ldc +j+6, ldc, 3, dummy_to_link );
260 }
261 }
262}
263
264
265
266#endif /* NMBLAS_SGEMM_H_ */
267#endif /* __GNUC__ */
268#endif /* __NM__ */


nmpp: Исходный файл g:/nmpp/include/nmtype.h

nmpp
  • Титульная страница
  • nmpp
  • Структуры данных
  • Файлы
  • Файлы
  • Список членов всех файлов
  • include
nmtype.h
См. документацию.
1
2
3//------------------------------------------------------------------------
4//
5// $Workfile:: nmtype.h $
6//
7// Векторно-матричная библиотека
8//
9// Copyright (c) RC Module Inc.
10//
11// $Revision: 1.1 $ $Date: 2004/11/22 13:50:02 $
12//
13//------------------------------------------------------------------------
14
20
21#ifndef _NMTYPE_H_INCLUDED2_
22#define _NMTYPE_H_INCLUDED2_
23
24#define MEM_LOCAL 0
25#define MEM_GLOBAL 1
26#define HEAP0 0
27#define HEAP1 1
28#define HEAP2 2
29#define HEAP3 3
30
31#ifdef __GNUC__
32#define __int64 long long
33#endif
34// if new compiler
35#ifdef __NM__
36 //typedef long __int64;
37#endif
38 typedef signed long long INT64;
39 typedef unsigned long long UINT64;
40
41#ifdef __NM__
42#define sizeof32(t) sizeof(t)
43//#define malloc32(size_int32) malloc(size_int32)
44#else
45#define sizeof32(t) (sizeof(t)/4)
46//#define malloc32(size_int32) malloc(size_int32*4)
47#endif
48
49
50
51//-----------------------------------------------------------------------------
57struct nmreg { int nVal; };
58//-----------------------------------------------------------------------------
59
60//*****************************************************************************
61
84//-----------------------------------------------------------------------------
97 #ifdef __NM__
98typedef void nm1;
99#else
100 typedef int nm1;
101#endif
102//-----------------------------------------------------------------------------
116typedef void nm2s;
117//-----------------------------------------------------------------------------
129typedef void nm4s;
130//-----------------------------------------------------------------------------
142 /*
143struct int8x8{
144#ifdef __NM__
145 unsigned long items;
146#else
147 signed char item[8];
148#endif
149};*/
150
151//#ifdef __NM__
152// typedef void nm8s;
153//#else
154// typedef signed char nm8s;
155//#endif
156
157#ifdef __NM__
158#ifdef __cplusplus
159 typedef struct {
160 virtual void func() = 0;
161 } nm8s;
162#else
163 typedef void nm8s;
164#endif
165
166#else
167 typedef char nm8s;
168#endif
169
170
171
172//typedef signed char nm8s;
173//typedef void nm8s;
174//typedef struct s_nm8s{
175//#ifdef __NM__
176// unsigned long vec;
177//#else
178// char num[8];
179//#endif
180//} nm8s;
181//
182
183
184//-----------------------------------------------------------------------------
196//typedef signed char nm8s7b;
197 typedef nm8s nm8s7b;
198/*struct int7in8x8{
199#ifdef __NM__
200 unsigned long items;
201#else
202 char item[8];
203#endif
204};*/
205//-----------------------------------------------------------------------------
217/*
218struct int16x4{
219#ifdef __NM__
220 unsigned long items;
221#else
222 signed short item[4];
223#endif
224};
225*/
226
227//#ifdef __NM__
228//typedef void nm16s;
229//#else
230//typedef signed short nm16s;
231//#endif
232
233#ifdef __NM__
234#ifdef __cplusplus
235typedef struct {
236 virtual void func() = 0;
237} nm16s;
238#else
239typedef void nm16s;
240#endif
241
242#else
243typedef short nm16s;
244#endif
245
246
247
248
249
250//-----------------------------------------------------------------------------
265typedef nm16s nm16s15b;
266
267
268
269struct int15in16x4{
270#ifdef __NM__
271 unsigned long items;
272#else
273 signed short item[4];
274#endif
275};
276
277
278
279
280//-----------------------------------------------------------------------------
292typedef int nm32s;
293typedef struct s_int32x2{
294//public:
295 int hi;
296 int lo;
297 //unsigned long long data;
298// int32x2(){
299// data=0;
300// }
301// int32x2(int item0, int item1){
302// set(0,item0);
303// set(1,item1);
304// }
305// int32x2& operator = (unsigned long long value){
306// data = value;
307// return *this;
308// }
309// int &lo(){
310// return *((int*)&data);
311// }
312// int &hi(){
313// return *(((int*)&data)+1);
314// }
315// void set(int indx, int value){
316// ((int*)&data)[indx]=value;
317// }
318// int get(int indx){
319// return ((int*)&data)[indx];
320// }
321}int32x2;
322//-----------------------------------------------------------------------------
334typedef int nm32s31b;
335struct int31in32x2{
336#ifdef __NM__
337 unsigned long items;
338#else
339 int item[2];
340#endif
341};
342//-----------------------------------------------------------------------------
354typedef int nm32s30b;
355struct int30in32x2{
356#ifdef __NM__
357 unsigned long items;
358#else
359 int item[2];
360#endif
361};
362//-----------------------------------------------------------------------------
374//typedef __int64 nm64s;
375typedef long long nm64s;
376
377
378//-----------------------------------------------------------------------------
390typedef nm64s nm64s63b;
391//=============================================================================
404typedef void nm2u;
405//-----------------------------------------------------------------------------
417typedef void nm4u;
430typedef nm4u nm4u3b;
431
432//-----------------------------------------------------------------------------
433
445#ifdef __NM__
446 typedef void nm8u;
447#else
448 typedef unsigned char nm8u;
449#endif
450//-----------------------------------------------------------------------------
451
463typedef nm8u nm8u7b;
464//-----------------------------------------------------------------------------
478#ifdef __NM__
479 typedef void nm16u;
480#else
481 typedef unsigned short nm16u;
482#endif
483//-----------------------------------------------------------------------------
495typedef nm16u nm16u15b;
496//-----------------------------------------------------------------------------
509typedef unsigned int nm32u;
510
511//-----------------------------------------------------------------------------
523typedef unsigned int nm32u31b;
524//-----------------------------------------------------------------------------
536typedef unsigned long long nm64u;
537//=============================================================================
538
539
540
541//=============================================================================
553typedef int int1b;
554//-----------------------------------------------------------------------------
566typedef int int2b;
567//-----------------------------------------------------------------------------
579typedef int int3b;
580//-----------------------------------------------------------------------------
592typedef int int4b;
593//-----------------------------------------------------------------------------
605typedef int int7b;
606//-----------------------------------------------------------------------------
618typedef int int8b;
619//-----------------------------------------------------------------------------
631typedef int int15b;
632//-----------------------------------------------------------------------------
644typedef int int16b;
645//-----------------------------------------------------------------------------
657typedef int int30b;
658//-----------------------------------------------------------------------------
670typedef int int31b;
671//-----------------------------------------------------------------------------
683typedef int int32b;
684//-----------------------------------------------------------------------------
696typedef INT64 int63b;
697//-----------------------------------------------------------------------------
709typedef INT64 int64b;
710//=============================================================================
722typedef unsigned int uint1b;
723//-----------------------------------------------------------------------------
735typedef unsigned int uint2b;
736//-----------------------------------------------------------------------------
748typedef unsigned int uint3b;
749//-----------------------------------------------------------------------------
761typedef unsigned int uint4b;
762//-----------------------------------------------------------------------------
774typedef unsigned int uint7b;
775//-----------------------------------------------------------------------------
787typedef unsigned int uint8b;
788//-----------------------------------------------------------------------------
800typedef unsigned int uint15b;
801//-----------------------------------------------------------------------------
813typedef unsigned int uint16b;
814//-----------------------------------------------------------------------------
826typedef unsigned int uint31b;
827//-----------------------------------------------------------------------------
839typedef unsigned int uint32b;
840//-----------------------------------------------------------------------------
852typedef UINT64 uint63b;
853//-----------------------------------------------------------------------------
865typedef nm64u uint64b;
866
867
868
869
870//=============================================================================
871
872//================= nmget ===========================================
873/*
874int2b nmget_2s(struct nm2s* pVec, int nIndex)
875{
876 nm32u nBase=((nm32u)nIndex)/16;
877 nm32u nDisp=((nm32u)nIndex)%16;
878 nm32s nVal=((nm32s*)pVec)[nBase];
879 nDisp<<=1;
880 nVal<<=(32-2-nDisp);
881 nVal>>=30;
882 return nVal;
883}
884
885__INLINE__ int4b nmget_4s(nm4s* pVec, int nIndex)
886{
887 nm32u nBase=((nm32u)nIndex)/8;
888 nm32u nDisp=((nm32u)nIndex)%8;
889 nm32s nVal=((nm32s*)pVec)[nBase];
890 nDisp<<=2;
891 nVal<<=(32-4-nDisp);
892 nVal>>=28;
893 return nVal;
894}
895
896__INLINE__ int8b nmget_8s(nm8s* pVec, int nIndex)
897{
898 return (char*)pVec[nIndex];
899}
900
901__INLINE__ int16b nmget_16s(nm16s* pVec, int nIndex)
902{
903 return (hsort)pVec[nIndex];
904}
905
906---------------- uint ------------------------------------
907__INLINE__ uint1b nmget_1u(nm1* pVec, int nIndex)
908{
909 nm32u nBase=((nm32u)nIndex)/32;
910 nm32u nDisp=((nm32u)nIndex)%32;
911 nm32u nVal=((nm32u*)pVec)[nBase];
912 nVal>>=nDisp;
913 nVal&=1;
914 return nVal;
915}
916__INLINE__ uint2b nmget_2u(nm2u* pVec, int nIndex)
917{
918 nm32u nBase=((nm32u)nIndex)/16;
919 nm32u nDisp=((nm32u)nIndex)%16;
920 nm32u nVal=((nm32u*)pVec)[nBase];
921 nVal>>=nDisp*2;
922 nVal&=3;
923 return nVal;
924}
925
926
927__INLINE__ uint4b nmget_4u(nm4u* pVec, int nIndex)
928{
929 nm32u nBase=((nm32u)nIndex)/8;
930 nm32u nDisp=((nm32u)nIndex)%8;
931 nm32u nVal=((nm32u*)pVec)[nBase];
932 nVal>>=nDisp*4;
933 nVal&=15;
934 return nVal;
935}
936
937__INLINE__ uint8b nmget_8u(nm8u* pVec, int nIndex)
938{
939 return pVec[nIndex];
940}
941
942__INLINE__ uint16b nmget_16u(nm16u* pVec, int nIndex)
943{
944 return pVec[nIndex];
945}
946*/
947
948//=============================================================================
949#define VEC_NM1(X) unsigned data[(X)/32];
950#define VEC_NM2U(X) unsigned data[(X)/16];
951#define VEC_NM2S(X) int data[(X)/16];
952#define VEC_NM4U(X) \
953 unsigned data[(X)/8]; \
954 uint4b get(int nIndex){return nmget((nm4u*)data,nIndex); }\
955 uint4b operator[] (int index){ return nmget((nm4u*)data,index);}
956
957
958#define VEC_NM4S(X) int data[(X)/8];
959#define VEC_NM8U(X) unsigned int data[(X)/4];
960#define VEC_NM8S(X) \
961 int data[(X)/4]; \
962 void set(int i, int val){ ((char*)data)[i]=val;} \
963 char operator[] (int index){ return ((char*)data)[index];}
964
965#define VEC_NM16U(X) \
966 unsigned int data[(X)/2]; \
967 void set(int i, int val){ ((unsigned short*)data)[i]=val;} \
968 unsigned short operator[] (int index){ return ((unsigned short*)data)[index];}
969
970#define VEC_NM16S(X) \
971 int data[(X)/2]; \
972 void set(int i, int val){ ((unsigned short*)data)[i]=val;} \
973 short operator[] (int index){ return ((unsigned short*)data)[index];}
974
975#define VEC_NM32U(X) nm32u data[(X)];
976#define VEC_NM32S(X) \
977 int data[(X)]; \
978 void set(int i, int val){ ((int*)data)[i]=val;} \
979 int operator[] (int index){ return ((int*)data)[index];}
980
981
982
983
984//-----------------------------------------------------------------------------
990//struct v16nm4s {VEC_NM4S(16)};
991struct v16nm4s {
992 unsigned long long vec[1];
993};
994
995//-----------------------------------------------------------------------------
1002//struct v4{VEC_NM8S(4)};
1003struct v4nm8s {
1004 unsigned long long vec[1];
1005};
1006//-----------------------------------------------------------------------------
1013//struct v8nm8s {VEC_NM8S(8)};
1014typedef struct s_v8nm8s {
1015 unsigned long long vec[1];
1016}v8nm8s ;
1017//-----------------------------------------------------------------------------
1024//struct v16nm8s {VEC_NM8S(16)};
1025typedef struct s_v16nm8s {
1026 unsigned long long vec[2];
1027} v16nm8s;
1028//-----------------------------------------------------------------------------
1035//struct v4nm16s {VEC_NM16S(4)};
1036typedef struct s_v4nm16s {
1037 unsigned long long vec[1];
1038} v4nm16s;
1039
1040
1041//-----------------------------------------------------------------------------
1048//struct v8nm16s {VEC_NM16S(8)};
1049typedef struct s_v8nm16s {
1050 unsigned long long vec[2];
1051}v8nm16s ;
1052//-----------------------------------------------------------------------------
1059//struct v16nm16s {VEC_NM16S(16)};
1060typedef struct s_v16nm16s {
1061 unsigned long long vec[4];
1062}v16nm16s ;
1063
1064//-----------------------------------------------------------------------------
1071//struct v2nm32s {VEC_NM32S(2)};
1072typedef struct s_v2nm32s {
1073 unsigned long long vec[1];
1074}v2nm32s ;
1075//-----------------------------------------------------------------------------
1082//struct v4nm32s {VEC_NM32S(4)};
1083typedef struct s_v4nm32s {
1084 unsigned long long vec[2];
1085} v4nm32s ;
1086//-----------------------------------------------------------------------------
1093//struct v8nm32s {VEC_NM32S(8) };
1094typedef struct s_v8nm32s {
1095 unsigned long long vec[4];
1096} v8nm32s ;
1097//-----------------------------------------------------------------------------
1104//struct v16nm32s {VEC_NM32S(16) };
1105typedef struct s_v16nm32s {
1106 unsigned long long vec[8];
1107}v16nm32s ;
1108//-----------------------------------------------------------------------------
1120typedef v16nm8s v16nm8s7b;
1121
1122//=============================================================================
1123
1124//-----------------------------------------------------------------------------
1130//struct v16nm4u {VEC_NM4U(16) };
1131typedef struct s_v16nm4u {
1132 unsigned long long vec[1];
1133} v16nm4u;
1134//-----------------------------------------------------------------------------
1141//struct v4nm8u {VEC_NM8U(4) };
1142typedef struct s_v4nm8u {
1143 unsigned long long vec[1];
1144} v4nm8u;
1145//-----------------------------------------------------------------------------
1152//struct v8nm8u {VEC_NM8U(8) };
1153typedef struct s_v8nm8u {
1154 unsigned long long vec[1];
1155}v8nm8u;
1156//-----------------------------------------------------------------------------
1163//struct v16nm8u {VEC_NM8U(16) };
1164typedef struct s_v16nm8u {
1165 unsigned long long vec[2];
1166} v16nm8u;
1167//-----------------------------------------------------------------------------
1174//struct v4nm16u {VEC_NM16U(4) };
1175typedef struct s_v4nm16u {
1176 unsigned long long vec[1];
1177} v4nm16u;
1178//-----------------------------------------------------------------------------
1185//struct v8nm16u {VEC_NM16U(8) };
1186typedef struct s_v8nm16u {
1187 unsigned long long vec[2];
1188} v8nm16u;
1189//-----------------------------------------------------------------------------
1196//struct v16nm16u {VEC_NM16U(16) };
1197typedef struct s_v16nm16u {
1198 unsigned long long vec[4];
1199}v16nm16u;
1200//-----------------------------------------------------------------------------
1207//struct v2nm32u {VEC_NM32U(2) };
1208typedef struct s_v2nm32u {
1209 unsigned long long vec[1];
1210}v2nm32u ;
1211//-----------------------------------------------------------------------------
1218//struct v4nm32u {VEC_NM32U(4) };
1219typedef struct s_v4nm32u {
1220 unsigned long long vec[2];
1221}v4nm32u;
1222//-----------------------------------------------------------------------------
1229//struct v8nm32u {VEC_NM32U(8) };
1230typedef struct s_v8nm32u {
1231 unsigned long long vec[4];
1232} v8nm32u;
1233//-----------------------------------------------------------------------------
1240//struct v16nm32u {VEC_NM32U(16) };
1241typedef struct s_v16nm32u {
1242 unsigned long long vec[8];
1243} v16nm32u;
1244//-----------------------------------------------------------------------------
1245
1258typedef v16nm4u v16nm4b3u;
1259//=============================================================================
1260//-----------------------------------------------------------------------------
1276struct nm16sc
1277{
1278
1279 signed short r;
1280 signed short c;
1281
1282 //nm16sc() : r(0), c(0) {}
1283 //nm16sc(nm16s b) : r(b), c(0) {}
1284};
1285//-----------------------------------------------------------------------------
1300typedef struct s_nm32sc
1301{
1302
1303 nm32s re;
1304 nm32s im;
1305
1306 //nm32sc() : re(0), im(0) {}
1307 //nm32sc(nm32s b) : re(b), im(0) {}
1308}nm32sc;
1309
1310typedef struct s_v2nm32f
1311{
1312 float v0;
1313 float v1;
1314} v2nm32f;
1315
1316typedef struct s_v4nm32f
1317{
1318 float vec[4];
1319} v4nm32f;
1320
1321typedef struct s_v4nm64f
1322{
1323 double vec[4];
1324} v4nm64f;
1325
1326
1327typedef struct s_nm32fc
1328{
1329 float re;
1330 float im;
1331}nm32fc;
1332
1333
1334typedef struct s_nm32fcr
1335{
1336
1337 float im;
1338 float re;
1339
1340 //nm32sc() : re(0), im(0) {}
1341 //nm32sc(nm32s b) : re(b), im(0) {}
1342}nm32fcr;
1343
1344typedef float nm32f;
1345typedef double nm64f;
1346
1347//-----------------------------------------------------------------------------
1348
1363typedef struct s_nm64sc
1364{
1365
1370 long long re;
1371
1376 long long im;
1377//
1378// nm64sc() : re(0), im(0) {}
1379// nm64sc(nm64s b) : re(b), im(0) {}
1380//
1381// int Print();
1382//
1383} nm64sc;
1384
1386#ifndef uint64
1387typedef unsigned long long uint64;
1388#endif
1389
1390#ifndef uint32
1391typedef unsigned int uint32;
1392#endif
1393
1394typedef nm64sc int64sc;
1395typedef uint64 fifo64;
1396typedef uint32 fseq32;
1397
1398
1399typedef uint64 seq64;
1400typedef uint64 fseq64;
1401
1402 typedef struct {
1403 void* buffer0;
1404 void* buffer1;
1405 fseq64 route;
1406 int mode;
1407 int status;
1408 } Tmp2BuffSpec;
1409
1410//
1412//__INLINE__ int NM_CAPACITY(nm1*) {return 64;}
1413//
1414//__INLINE__ int NM_CAPACITY(nm2s*) {return 32;}
1415//__INLINE__ int NM_CAPACITY(nm4s*) {return 16;}
1416//__INLINE__ int NM_CAPACITY(nm8s*) {return 8;}
1417//__INLINE__ int NM_CAPACITY(nm16s*) {return 4;}
1418//__INLINE__ int NM_CAPACITY(nm32s*) {return 2;}
1419//__INLINE__ int NM_CAPACITY(nm64s*) {return 1;}
1420//
1421//__INLINE__ int NM_CAPACITY(nm2u*) {return 32;}
1422//__INLINE__ int NM_CAPACITY(nm4u*) {return 16;}
1423//__INLINE__ int NM_CAPACITY(nm8u*) {return 8;}
1424//__INLINE__ int NM_CAPACITY(nm16u*) {return 4;}
1425//__INLINE__ int NM_CAPACITY(nm32u*) {return 2;}
1426//__INLINE__ int NM_CAPACITY(nm64u*) {return 1;}
1427//*/
1428#define CAPACITY_nm64s 1
1429#define CAPACITY_nm32s 2
1430#define CAPACITY_nm16s 4
1431#define CAPACITY_nm8s 8
1432#define CAPACITY_nm4s 16
1433#define CAPACITY_nm2s 32
1434#define CAPACITY_nm1 64
1435
1436//#ifdef __NM__
1437#define NM16S(vec,size) nm64s vec##__64s[size/4]; nm16s* vec=(nm16s*)vec##__64s
1438//#else
1439//#define NM16S(vec,size) nm16s vec[size];
1440//#endif
1441
1442//#ifdef __NM__
1443#define NM32S(vec,size) nm64s vec##__64s[size/2]; nm32s* vec=(nm32s*)vec##__64s
1444//#else
1445//#define NM32S(vec,size) nm32s vec[size];
1446//#endif
1447
1448/*
1449#ifdef __NM__
1450#define MTR16S(mtr,ydim,xdim) static nm64s mtr##__64s[ydim][xdim/4]; nm16s* mtrvec=(nm16s*)vec##__64s
1451#else
1452#define MTR16S(mtr,ydim,xdim) nm16s vec[size];
1453#endif
1454*/
1455//
1456//
1457#ifdef __cplusplus
1458#define __INLINE__ static inline // because 1>d:\git\nmpp\include\nmchar.h(17) : error C2574 : 'nmchar::nmchar(void)' : cannot be declared static
1459//#define __INLINE__ inline
1460#else
1461 #ifdef __NM__
1462 #define __INLINE__ static inline
1463 #else
1464 #define __INLINE__ static __inline
1465 #endif
1466#endif
1467
1468#define NM16Sx4(x0,x1,x2,x3) ((long long)(x3&0xFFFFl)<<48)| \
1469 ((long long)(x2&0xFFFFl)<<32)| \
1470 ((long long)(x1&0xFFFFl)<<16)| \
1471 ((long long)(x0&0xFFFFl))
1472#define NM32Sx2(x0,x1) ((long long)(unsigned(x1))<<32)| \
1473 ((long long)(unsigned(x0)))
1474#define NM32Sx4(x0,x1,x2,x3) NM32Sx2(x0,x1),NM32Sx2(x2,x3)
1475
1476#endif
1477
1478 // _NMTYPE_H_INCLUDED_
vec
Definition: tvector.h:80
uint32b
unsigned int uint32b
Definition: nmtype.h:839
uint3b
unsigned int uint3b
Definition: nmtype.h:748
uint15b
unsigned int uint15b
Definition: nmtype.h:800
uint2b
unsigned int uint2b
Definition: nmtype.h:735
int4b
int int4b
Definition: nmtype.h:592
uint4b
unsigned int uint4b
Definition: nmtype.h:761
int2b
int int2b
Definition: nmtype.h:566
int3b
int int3b
Definition: nmtype.h:579
int31b
int int31b
Definition: nmtype.h:670
int30b
int int30b
Definition: nmtype.h:657
uint63b
UINT64 uint63b
Definition: nmtype.h:852
int8b
int int8b
Definition: nmtype.h:618
int63b
INT64 int63b
Definition: nmtype.h:696
int15b
int int15b
Definition: nmtype.h:631
uint16b
unsigned int uint16b
Definition: nmtype.h:813
uint31b
unsigned int uint31b
Definition: nmtype.h:826
uint1b
unsigned int uint1b
Definition: nmtype.h:722
int1b
int int1b
Definition: nmtype.h:553
int32b
int int32b
Definition: nmtype.h:683
uint8b
unsigned int uint8b
Definition: nmtype.h:787
int16b
int int16b
Definition: nmtype.h:644
int7b
int int7b
Definition: nmtype.h:605
int64b
INT64 int64b
Definition: nmtype.h:709
uint64b
nm64u uint64b
Definition: nmtype.h:865
uint7b
unsigned int uint7b
Definition: nmtype.h:774
nm8u
unsigned char nm8u
Definition: nmtype.h:448
v8nm8u
struct s_v8nm8u v8nm8u
v8nm32u
struct s_v8nm32u v8nm32u
v4nm32u
struct s_v4nm32u v4nm32u
v4nm16u
struct s_v4nm16u v4nm16u
v16nm32u
struct s_v16nm32u v16nm32u
nm32s
int nm32s
Definition: nmtype.h:292
nm4u
void nm4u
Definition: nmtype.h:417
v4nm8u
struct s_v4nm8u v4nm8u
nm32s31b
int nm32s31b
Definition: nmtype.h:334
nm16u
unsigned short nm16u
Definition: nmtype.h:481
nm8u7b
nm8u nm8u7b
Definition: nmtype.h:463
v16nm8s7b
v16nm8s v16nm8s7b
Definition: nmtype.h:1120
nm64s
long long nm64s
Definition: nmtype.h:375
v8nm16u
struct s_v8nm16u v8nm16u
nm4u3b
nm4u nm4u3b
Definition: nmtype.h:430
nm2s
void nm2s
Definition: nmtype.h:116
nm64s63b
nm64s nm64s63b
Definition: nmtype.h:390
v8nm32s
struct s_v8nm32s v8nm32s
nm2u
void nm2u
Definition: nmtype.h:404
v8nm8s
struct s_v8nm8s v8nm8s
v4nm32s
struct s_v4nm32s v4nm32s
v16nm16s
struct s_v16nm16s v16nm16s
nm1
int nm1
Definition: nmtype.h:100
v16nm8s
struct s_v16nm8s v16nm8s
nm8s7b
nm8s nm8s7b
Definition: nmtype.h:197
v16nm4b3u
v16nm4u v16nm4b3u
Definition: nmtype.h:1258
v4nm16s
struct s_v4nm16s v4nm16s
v2nm32u
struct s_v2nm32u v2nm32u
v16nm16u
struct s_v16nm16u v16nm16u
v16nm32s
struct s_v16nm32s v16nm32s
v8nm16s
struct s_v8nm16s v8nm16s
v2nm32s
struct s_v2nm32s v2nm32s
nm32s30b
int nm32s30b
Definition: nmtype.h:354
nm32u31b
unsigned int nm32u31b
Definition: nmtype.h:523
nm16s
short nm16s
Definition: nmtype.h:243
nm32u
unsigned int nm32u
Definition: nmtype.h:509
nm4s
void nm4s
Definition: nmtype.h:129
nm64u
unsigned long long nm64u
Definition: nmtype.h:536
nm16s15b
nm16s nm16s15b
Definition: nmtype.h:265
v16nm4u
struct s_v16nm4u v16nm4u
nm8s
char nm8s
Definition: nmtype.h:167
nm16u15b
nm16u nm16u15b
Definition: nmtype.h:495
v16nm8u
struct s_v16nm8u v16nm8u
Tmp2BuffSpec
Definition: nmtype.h:1402
int15in16x4
Definition: nmtype.h:269
int30in32x2
Definition: nmtype.h:355
int31in32x2
Definition: nmtype.h:335
nm16sc
Definition: nmtype.h:1277
nmreg
Definition: nmtype.h:57
s_int32x2
Definition: nmtype.h:293
s_nm32fc
Definition: nmtype.h:1328
s_nm32fcr
Definition: nmtype.h:1335
s_nm32sc
Definition: nmtype.h:1301
s_nm64sc
Definition: nmtype.h:1364
s_nm64sc::im
long long im
Definition: nmtype.h:1376
s_nm64sc::re
long long re
Definition: nmtype.h:1370
s_v16nm16s
Definition: nmtype.h:1060
s_v16nm16u
Definition: nmtype.h:1197
s_v16nm32s
Definition: nmtype.h:1105
s_v16nm32u
Definition: nmtype.h:1241
s_v16nm4u
Definition: nmtype.h:1131
s_v16nm8s
Definition: nmtype.h:1025
s_v16nm8u
Definition: nmtype.h:1164
s_v2nm32f
Definition: nmtype.h:1311
s_v2nm32s
Definition: nmtype.h:1072
s_v2nm32u
Definition: nmtype.h:1208
s_v4nm16s
Definition: nmtype.h:1036
s_v4nm16u
Definition: nmtype.h:1175
s_v4nm32f
Definition: nmtype.h:1317
s_v4nm32s
Definition: nmtype.h:1083
s_v4nm32u
Definition: nmtype.h:1219
s_v4nm64f
Definition: nmtype.h:1322
s_v4nm8u
Definition: nmtype.h:1142
s_v8nm16s
Definition: nmtype.h:1049
s_v8nm16u
Definition: nmtype.h:1186
s_v8nm32s
Definition: nmtype.h:1094
s_v8nm32u
Definition: nmtype.h:1230
s_v8nm8s
Definition: nmtype.h:1014
s_v8nm8u
Definition: nmtype.h:1153
v16nm4s
Definition: nmtype.h:991
v4nm8s
Definition: nmtype.h:1003