Вход
Наше всё
Теги
codebook
PARTS
Поиск
Опросы
Закон
Понедельник
12 апреля
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
ARM, RISC-V
AVR
PIC
PLD, FPGA, DSP
Кибернетика
Технологии
Схемы, платы, компоненты
Средства и методы разработки
/910015
Топик полностью
йцукен
(13.03.2019 14:24 - 14:37, просмотров: 212)
в ответ на
Ваш код не совсем верный, т.к. младший coeffs[0] - свободный член, и на x он не множится. Но дело не в этом, а том, что на ассемблере такие вещи реализуются эффективней и работают они быстрее. Функция poly() полезна не сама по себе, а как
- автор:
Ксения
Это не мой код, и он вроде бы не умножает coeffs[0] на x. Я бы шаблон написал.
template<typename T> T poly(T x, int power, T coeffs[]) // coeffs[power+1] { T horner = 0.0; while (power >= 0) horner = horner * x + coeffs[power--]; return horner; }
Ответить
Ответы
Шаблон делу не поможет, т.к. после компиляции он выльется всё в тот же сишный код. Тогда как суть дела вот в чем: функции fmin(), fmax() и fma() появились потому, что в AVX/AVX2 появились новые процессорные инструкции, делающие эти операции "за
Ксения
(2147 знак.,
13.03.2019 16:57 - 17:11
)
Разумеется, шаблон не для оптимизации, а для того, чтобы не писать отдельно для типов float, double и complex. Всего 4 строчки, но обычно в проекте не одна функция.
-
йцукен
(
14.03.2019 00:12
)
Интересно, за счет чего все же разница образуется? fma и обычный FPU в проце по-разному считают дабловую плавучку, у них не все разряды достоверные?
-
Evgeny_CD
(
14.03.2019 00:12
)
В разрядами у FPU87 всё отлично, т.к. он
всегда
считает в разрядной сетке float80, а при чтении и записи в память делает конверсию в float80 и обратно. Я до сих пор им пользуюсь, когда нужна повышенная точность. Исключение поддержки float80
Ксения
(3348 знак.,
14.03.2019 15:03
)
Я так понимаю, обычный FPU - наследник пресловутого 8087 с 80-битными регистрами, а всякие SSE и другие слова из трёх букв используют стандартный 64-битный double.
-
йцукен
(
14.03.2019 10:28
)