реклама на сайте
подробности

 
 
> Float-ядро для double операций, Как использовать Float-ядро для double операций
AlexeyT
сообщение Nov 16 2013, 11:18
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 5-06-07
Пользователь №: 28 207



Ожидаем поставку процессора с ядром Cortex-M4F с аппаратно реализованными операциями с плавающей точкой (32-битные float).

Точности float для некоторых наших вычислений недостаточно, приходится использовать 64-битный double.

Вопрос - есть ли способ использовать float-сопроцессор для операций формата double? Хотя бы для самых простых - сложение и вычитание?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Nov 19 2013, 08:32
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ну вот так как-то
(А+B ) * (D + C) = AD + BD + AC + BC
с этим я надеюсь все согласятся


далее мне кажется что число вида (для простоты будем оперировать целыми)
11112222 всегда можно представить в виде 1111 * 10000 + 2222

(A*B *C * D) == A*C*B*D

если число вида 1111 * 10000 считать А = 1111, B = 10000, то мы получаем
арифметику с числами 1111 2222 - половинного порядка, и выравнивание порядков и суммирование

я не утверждаю что все действия при перемножении даблов раскладываются в действия с флотами, мне просто кажется что часть действий при перемножении даблов может быть ускорена при наличии флоат умножителя. Правда не знаю будет ли выигрыш от работы с флотами или легче сразу все сводить к перемножению целых...
Go to the top of the page
 
+Quote Post
SII
сообщение Nov 19 2013, 10:18
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414



Цитата(Golikov A. @ Nov 19 2013, 12:32) *
ну вот так как-то


Ещё раз: изучите матчасть. А заодно повторите школьный курс математики, чтобы вспомнить, что такое экспоненциальное представление чисел.

Цитата(jcxz @ Nov 19 2013, 12:50) *
ну-ка разложите:
Код
(A+B)^(N+M)
(где: ^ - операция возвдения в степень) в сумму


У Вас описка: поскольку речь идёт об умножении, то
Код
A^N * B^M = (A*B)^(N+M)

Впрочем, сути дела это не меняет.

Для тех, кому всё ещё непонятно: при выполнении умножения чисел с плавающей запятой их мантиссы перемножаются, а порядки -- складываются. Чтобы выполнить умножение мантисс, умножитель должен обладать соответствующей разрядностью, ну а ППЗ, предназначенный для обработки лишь чисел одинарной точности, никак не сможет умножить мантиссы чисел с двойной точности: у него банально не хватит разрядности. Кстати говоря, то же самое относится к программной реализации операций с плавающей запятой: если для перемножения мантисс чисел одинарной точности достаточно лишь одной инструкции 32-разрядного целочисленного умножения, которая у ARMов есть, то для перемножения мантисс чисел двойной точности подходящей инструкции уже нет, и приходится выполнять умножение кусками, суммируя частичные произведения.

В общем, наличие ППЗ одинарной точности абсолютно бесполезно, если необходимо выполнять вычисления с двойной точностью: он не может помочь ничем.

Сообщение отредактировал SII - Nov 19 2013, 10:19
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AlexeyT   Float-ядро для double операций   Nov 16 2013, 11:18
- - scifi   Цитата(AlexeyT @ Nov 16 2013, 15:18) Вопр...   Nov 16 2013, 12:18
- - fatlortroll   Цитата(AlexeyT @ Nov 16 2013, 15:18) Вопр...   Nov 16 2013, 17:25
- - Rst7   QUOTE Вопрос - есть ли способ использовать float-с...   Nov 16 2013, 21:51
- - vlad_new   А я не знал что незяяяяя. Взял и включил сопр. В и...   Nov 17 2013, 02:01
|- - AlexeyT   Цитата(vlad_new @ Nov 17 2013, 06:01) А я...   Nov 17 2013, 07:14
|- - vlad_new   Цитата(AlexeyT @ Nov 17 2013, 11:14) Эвон...   Nov 17 2013, 14:48
- - SII   Как видим, для деления вызывается подпрограмма, чт...   Nov 18 2013, 06:37
- - etoja   Цитата(AlexeyT @ Nov 16 2013, 15:18) Ожид...   Nov 18 2013, 12:19
- - Golikov A.   число дабл - это мантисса + порядок. если его ра...   Nov 18 2013, 17:33
|- - AlexeyT   Цитата(etoja @ Nov 18 2013, 16:19) Вы в с...   Nov 18 2013, 19:37
|- - jcxz   Цитата(Golikov A. @ Nov 18 2013, 23:33) я...   Nov 19 2013, 06:53
|- - jcxz   Цитата(Golikov A. @ Nov 19 2013, 14:32) н...   Nov 19 2013, 08:50
|- - DASM   Цитата(SII @ Nov 19 2013, 14:18) если для...   Nov 19 2013, 10:43
|- - SII   Цитата(DASM @ Nov 19 2013, 14:43) ARM раз...   Nov 19 2013, 13:55
- - Golikov A.   я не ошибся, я имел ввиду другое двойная точность...   Nov 19 2013, 10:25
- - Golikov A.   а я о теоретической применимости 32 битного флотов...   Nov 19 2013, 16:28
- - SII   В третий раз повторяю: изучите матчасть, а заодно ...   Nov 20 2013, 05:35
- - Golikov A.   ну вот теперь понятно... а 32 битный умножитель ц...   Nov 20 2013, 07:05
|- - Сергей Борщ   QUOTE (Golikov A. @ Nov 20 2013, 10:05) в...   Nov 20 2013, 08:21
|- - SII   Цитата(Golikov A. @ Nov 20 2013, 11:05) а...   Nov 20 2013, 08:54
- - Golikov A.   в лоб без оптимизации [32]*[32] дает [32].... имее...   Nov 20 2013, 11:40
- - Сергей Борщ   QUOTE (Golikov A. @ Nov 20 2013, 14:40) б...   Nov 20 2013, 12:54


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01416 секунд с 7
ELECTRONIX ©2004-2016