Здравствуйте, fk0, Вы писали:
fk0> Но компилятор же небось инлайнит как (a*(2^8) + b) * (c*(2^8) + d) = a*c*(2^16) + (b*c + a*d)*(2^8) + b*d fk0>(4 умножения, два сдвига и три сложения). Или по крайней мере вызывает встроенную функцию. fk0>Последнее кстати плохо (т.к. регистровый аллокатор уже не понимает какие регистры испортятся и вынужден fk0>что попало заталкивать в стек). fk0> А какой смысл в "фиксированной точке" и 8-битных числах??? Любые практические данные fk0>которые потребуется обрабатывать едва ли влезут в 16 бит. Хорошо бы иметь 24. А 32 может быть даже много. fk0>Звук например. Сам-то прекрасно в 12 бит влезает, но какая-то обработка в два раза больше потребует. fk0>Например, цифровой фильтр который выделяет узкую полосу частот. Помню сигнал с акселерометра обсчитывал. fk0>Там и 8 бит на входе более чем, но нужно же считать векторные произведения, потом тригонометрические функции, fk0>в итоге 16 не хватает для получения приемлемой точности. Вот 24 в самый раз.
Странные вопросы, потому что Я вроде уже несколько раз писал слово "AVR". Иногда полезно проветривать комнату и открывать окно, чтобы увидеть что-то кроме x86-64.
fk0> Просто нужно нормально писать код. Что на C, что на C++. Со временем пишешь сам так, что компилятор fk0>варнингов даже не даёт. Обычный набор варнингов для GCC/Clang: -Wall -Wextra -Wcast-align -fstrict-aliasing, fk0>ещё -Wconversion, но не все, от проекта зависит. И полезно прогонять с -fsanitize=undefined.
Это позиция вчерашнего студента. Сходи в большие корпорации, и посмотри, сколько там предупреждений компилятора, и какие проверки отключены.
fk0> Нет, это попахивает полезными практиками промышленного программирования. fk0>Потому, что когда ты будешь вбивать число пи руками в код, то можешь на одну циферку fk0>где-то недалеко от точки ошибиться. И никто не заметит даже. А потом Луна-25 улетает fk0>на полной скорости в Луну. И ошмётков не соберёшь. Потому, что орбиту с неправильным пи fk0>посчитало тоже неправильно.
Ты предлагаешь "5" вынести в константу, а потом эту константу использовать в шаблоне? Если так, то это шиза.
fk0> Число пи, кстати, в стандартной C/C++-библиотеке существует как константа M_PI.
Непереносимо, читай стандарт.
fk0> Мне как потенциальному код-ревьюверу, например, совершенно непонятно, почему 5, а не 6 или не 4.
Если бы ты проверял код Кармака с быстрым обратным корнем, то столкнулся бы с такой же проблемой. Это математика, в ней немножечко есть константы.
Я понимаю, что у тебя подгорает, что где-то кто-то что-то делает не так, как пишут в умных книжках. Я именно из-за этой проблемы и ушёл из программирования — надоели офисные крысы, которые знают много умных слов, но работающую программу с начала до конца никогда не напишут, потому что привыкли протирать штаны в корпорациях, где всего-то и нужно что подкрутить винтик тут, открутить там. Так что предлагаю прекратить дискуссию.