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

 
 
> Математика с float на Cortex-M3.
Jenya7
сообщение Sep 1 2015, 08:42
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Если я заменю (100/3.5) на (100 * 0.286) повлияет это на размер/скорость кода? или компилятор сам автоматически оптимизирует математические операции?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sigmaN
сообщение Oct 21 2015, 16:47
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Цитата
Выходит, компилятор внутре себя имеет неенку полноценный вычислитель всех стандартных C функций? А float d = sin(M_PI / 8); тоже вычислит?
На сколько я знаю, замена функций результатами - поведение не требуемое стандартом. Это я из практики просто знаю. Просто скомпилируйте и посмотрите, должен и sin() оптимизировать.

Цитата
И не забываем следить стоит ли литера f на конце floatpoint констант. Это сильно влияет на скорость.
Впрочем как и на точность )

И вообще я никогда не использую вычисления с плавающей точкой на процессорах без ее аппаратной поддержки. Такие трюки со свёрткой константных выражений хорошо подходят для того чтобы что-то посчиталось с плавающей точкой во время компиляции но на выходе дало int.
Если допустить появление плавучки в рантайме - к проекту сразу прилинкуется библиотека эмуляции. Не самая быстрая в любом случае.

Так что надо один раз и на всегда освоить fixed point math или использовать процы с аппаратной поддержкой плавучки.

P.S. В этом плане С++ с его перегрузкой операторов позволяет писать очень естественный и удобочитаемый код даже при вычислениях с фикс. точкой..
Лично я в начале этого года плотно пересел на плюсы и реализовал свою библиотеку. С фишками С++11 всё что возможно в ней тоже считается на этапе компиляции и я очень доволен! Си теперь кажется чем-то доисторическим))))))


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
dxp
сообщение Oct 22 2015, 10:56
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (sigmaN @ Oct 21 2015, 22:47) *
Если допустить появление плавучки в рантайме - к проекту сразу прилинкуется библиотека эмуляции. Не самая быстрая в любом случае.

И что, если это решает задачу?

QUOTE (sigmaN @ Oct 21 2015, 22:47) *
Так что надо один раз и на всегда освоить fixed point math или использовать процы с аппаратной поддержкой плавучки.

Гуд. Вот реальная задача (не выдуманная). Есть некий прибор, который по нажатию кнопки пользователем должен среди всего прочего вычислить некое значение из входного параметра и вывести на индикатор, т.е. время реакции - до 100 мс, чтобы не вызывать дискомфорт. Алгоритм вычисления - простой полином 3-го порядка:

y = a3*x^3 + a2*x^2 + a1*x + a0

коэффициенты:

a0 = 0.00244813186608
a1 = -2.23013987646e-005
a2 = 4.76311678518e-008
a3 = -6.46053293535e-012


На AVR о 8-ми мегагерцах тактовой оный полином вычисляется за время около 6 или 8 (не помню точно) мс. Плавучка тянет где-то полтора кБ кода. Задача решена (общий размер прошивки ~5 кБ из 8 доступных).

Предложите свой вариант решения? И оцените, сколько это потребует времени, и какая сложность реализации по сравнению с этим решением "в лоб"?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
blackfin
сообщение Oct 22 2015, 11:08
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(dxp @ Oct 22 2015, 13:56) *
Алгоритм вычисления - простой полином 3-го порядка:

y = a3*x^3 + a2*x^2 + a1*x + a0

Предложите свой вариант решения? И оцените, сколько это потребует времени, и какая сложность реализации по сравнению с этим решением "в лоб"?

Использовать Схему Горнера?

/Шутка, если што../
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Математика с float на Cortex-M3.   Sep 1 2015, 08:42
- - adnega   Цитата(Jenya7 @ Sep 1 2015, 11:42) Если я...   Sep 1 2015, 10:55
|- - Jenya7   Цитата(adnega @ Sep 1 2015, 15:55) 1/3.5 ...   Sep 1 2015, 11:56
||- - menzoda   Если есть FPU, то умножать быстрее будет, иначе то...   Sep 1 2015, 12:05
||- - Сергей Борщ   Цитата(Jenya7 @ Sep 1 2015, 14:56) что пр...   Sep 1 2015, 12:13
||- - zltigo   QUOTE (Сергей Борщ @ Sep 1 2015, 15:13) П...   Sep 1 2015, 12:18
||- - Jenya7   Цитата(zltigo @ Sep 1 2015, 17:18) Вообще...   Sep 1 2015, 12:22
||- - adnega   Цитата(Jenya7 @ Sep 1 2015, 15:22) да. за...   Sep 1 2015, 13:44
||- - zltigo   QUOTE (adnega @ Sep 1 2015, 16:44) Скорее...   Sep 1 2015, 14:06
||- - adnega   Цитата(zltigo @ Sep 1 2015, 17:06) Часто ...   Sep 1 2015, 14:51
||- - Jenya7   Цитата(adnega @ Sep 1 2015, 19:51) А хами...   Sep 1 2015, 15:26
||- - adnega   Цитата(Jenya7 @ Sep 1 2015, 18:26) помогу...   Sep 1 2015, 16:24
||- - Jenya7   Цитата(adnega @ Sep 1 2015, 21:24) Тут вс...   Sep 1 2015, 16:37
|- - ЯadiatoR   Цитата(adnega @ Sep 1 2015, 13:55) 1/3.5 ...   Sep 1 2015, 17:54
|- - adnega   Цитата(ЯadiatoR @ Sep 1 2015, 20:54) А ра...   Sep 1 2015, 18:04
||- - ViKo   Цитата(adnega @ Sep 1 2015, 21:04) Я про ...   Sep 2 2015, 05:42
||- - adnega   Цитата(ViKo @ Sep 2 2015, 08:42) Поясните...   Sep 2 2015, 05:58
||- - ViKo   Цитата(adnega @ Sep 2 2015, 08:58) Но опр...   Sep 2 2015, 07:47
||- - adnega   Цитата(ViKo @ Sep 2 2015, 10:47) Еще раз ...   Sep 2 2015, 08:29
|- - jcxz   Цитата(ЯadiatoR @ Sep 1 2015, 23:54) А ра...   Sep 2 2015, 02:24
- - ViKo   Проверил на своих макро в Кейле. DELAY(1, _MS); ...   Sep 2 2015, 09:48
|- - CrimsonPig   Цитата(ViKo @ Sep 2 2015, 10:48) Работают...   Sep 2 2015, 10:10
|- - ViKo   Цитата(CrimsonPig @ Sep 2 2015, 13:10) go...   Sep 2 2015, 10:59
|- - CrimsonPig   Цитата(ViKo @ Sep 2 2015, 11:59) Конкретн...   Sep 2 2015, 11:29
|- - megajohn   Цитата(CrimsonPig @ Sep 2 2015, 14:29) Ещ...   Sep 2 2015, 11:37
|- - ViKo   Цитата(CrimsonPig @ Sep 2 2015, 14:29) Ещ...   Sep 2 2015, 11:38
- - sigmaN   При компиляции с оптимизацией компилятор считает к...   Oct 21 2015, 13:14
|- - ViKo   Цитата(sigmaN @ Oct 21 2015, 16:14) Как м...   Oct 21 2015, 13:31
||- - dxp   QUOTE (blackfin @ Oct 22 2015, 17:08) Исп...   Oct 23 2015, 07:22
|- - _Pasha   Цитата(dxp @ Oct 22 2015, 13:56) На AVR о...   Oct 23 2015, 13:18
|- - ViKo   Цитата(_Pasha @ Oct 23 2015, 16:18) упс. ...   Oct 23 2015, 14:10
- - sigmaN   ЦитатаНа AVR о 8-ми мегагерцах тактовой оный полин...   Oct 22 2015, 16:25


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 21:04
Рейтинг@Mail.ru


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