ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
907708 Топик полностью
fk0, легенда (01.03.2019 13:19, просмотров: 163) ответил fk0 на Про индусов ты таки прав. Для начала, на кой хер там плавучка? Некоторые вон, посмотри, и без таблиц обходятся. Там ж синус не рандомно в алгоритме нужен, а в какой-то последовательности, прошу меня поправить, я уж не помню. И в принципе когда
Это пиздец, таблицы можно делать хотя бы на пол-пи, а не два пи и миррорить. Кода больше? Зато промахов кеша в таблицах неебического размера меньше. Про что я выше писал, не осилил, но смотри таблицу разбили на 1/2n и она стала маленькой (по ссылке). Гигантская таблица для бит-реверса тоже, насколько она нужна? Классика жанра, здесь 100500 раз приводили: x = (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1)); x = (((x & 0xcccccccc) >> 2) | ((x & 0x33333333) << 2)); x = (((x & 0xf0f0f0f0) >> 4) | ((x & 0x0f0f0f0f) << 4)); x = (((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8)); return ((x >> 16) | (x << 16)); Повторюсь, табличные алгоритмы были хорошо на 8-битниках, а на современных процах могут выйти боком, пока он там строчку памяти читает кучу арифметических команд посчитать можно. Для 8-битного реверса (который может служить базой для любой разрядности, благо байты переставить уже не тяжело) есть экзотические варианты: // при наличии 32-битного умножителя x = ((x * 0x0802LU & 0x22110LU) | (x * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16; // при наличии 64-битого умножителя x = (x * 0x0202020202ULL & 0x010884422010ULL) % 1023; Если умножитель однотактный, то чего на спичках экономить.
[ZX]