Загружаем изображение…

Data-Parallel Types: алгоритмы (C++26)



Библиотека «data-parallel types» для SIMD-векторов (пространство имён std::experimental, алиас stdx) предоставляет четыре специальных алгоритма: `min, max, minmax и clamp.

min, max, minmax

- min(a, b) и max(a, b) принимают два SIMD-вектора и возвращают вектор покомпонентных минимумов/максимумов.
- minmax(a, b) возвращает пару SIMD-векторов: первый — покомпонентные минимумы, второй — максимумы.
- Автор отмечает, что строка stdx::minmax(a, b) у него не компилировалась ни в GCC, ни в Clang (на момент публикации).

clamp

- stdx::clamp(v, lo, hi) применяет std::clamp к каждому элементу SIMD-вектора: значения ниже lo поднимаются до нижней границы, выше hi — опускаются до верхней.
- Показаны два примера: ограничение к диапазону INT8_MIN..INT8_MAX и к 0..UINT8_MAX; на выводах видно, как выходящие за пределы элементы прижимаются к границам.

Итог

- Для SIMD-векторов доступны привычные «минимумы/максимумы» и покомпонентный clamp.
- minmax задуман как удобный возврат пары (min/max), но в текущих компиляторах может не собираться.
- Дальше автор планирует разбирать новые возможности C++26 (в частности, контракты).

https://www.modernescpp.com/index.php/data-parallel-types-algorithms/


#cpp #programming

👉 @cpp_lib
Просмотры: 8 286
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти