π++

Oct 28, 2015 22:13

в С++ нет числа π в стандартной библиотеке. M_PI/_USE_MATH_DEFINES зачем-то сломали в g++ при использовании -std=c++11, а взамен ничего не предложили ( Read more... )

c++

Leave a comment

Comments 8

_winnie October 28 2015, 22:21:19 UTC
( скриншот )

alll А зачем нужно число пи в стандартной библиотеке? Собственно, зачем вообще какие-то нетривиальные математические функции в стандартной библиотеке, являющейся частью языка? Типа "если б я был король, я б жил лучше, чем король - ведь я таки ещё немножечко шью"?

_winnie Не понял.
Если в стандартной библиотеке нет чего-то, что часто нужно, и при этом быстро реализуется копипастой 1-5 строк - то вскоре эта копипаста расползается по миллиону мест.
Например, данное решение об удалении M_PI - приведёт к куче разнобразных определений числа pi в каждом сотом .cpp файле.
Кстати, оценка каждый сотый файл с числом π - в данном случае не совсем с неба, я проверил на большой кодобазе с кучей библиотек (искал '\bM_PI\b' и '\b3.141', использование кастомных констант MY_LIBRARY_PI=3.14159... не считал)

alll Если что-то достаточно часто используется в нормальных проектах, то со временем появляются общедоступные библиотеки, реализующие это что-то. Впихивать без мыла в стандарт _языка_ то, что не относится собственно к языку - дешёвый популизм, ( ... )

Reply

bik_top October 28 2015, 23:03:06 UTC
Код сломался; там был пример шаблонного пи: boost::math::constants::pi()

Reply

alll October 28 2015, 23:06:34 UTC
> Hitler on C++17

Зачотно!

Reply


bik_top October 28 2015, 23:04:27 UTC
> Этот пост дубликат предыдущего, предыдущий я удалил из-за этого бага. Уже оставленные чужие коментарии достал из почты, скопирую в комментарии.

Удивительно трепетное отношение к комментариям!

Reply


sergegers1 October 29 2015, 03:02:16 UTC
Как уже сказали, в бусте есть.

Reply


antonz October 29 2015, 12:41:44 UTC

Зачем же в каждом cop писать? static const в свой хидер и включать его по надобности.

Reply

_winnie October 29 2015, 22:16:56 UTC
Протаскивать файл на все машины, и добавлять include/path в настройку компилятора, и протаскивать этот файл всем пользователям своего кода (преподавателям/однокурсникам/снипет кода в форуме) - менее тривиально, чем копипастить однострочники :(

А если бы оно было в math.h на всех компиляторах - тогда можно смело делиться компилирующимся снипетом кода, без "ну вы ещё инсталлируйте boost".

Reply

antonz October 30 2015, 07:21:33 UTC
Ну понятно, что если бы было, то было бы хорошо. Но я ж имел тоже вариант с уже готовым цельным проектом, где пути инклудов настраиваются под использующуся билд систему, а не какими-то непонятными обрывками.

Reply


Leave a comment

Up