Кажется, есть ошибка в math.h
Заголовок предоставляется Visual Studio 2005.
double __cdecl atan2(__in double _Y, __in double _X);
inline float atan2f(__in float _X, __in float _Y)
{return ((float)atan2((double)_X, (double)_Y)); }
Параметры функции atan2f (), похоже, перевернуты.
Я не уверен, так ли это с более поздней версией Visual Studio. Кто-нибудь знает, какой здесь счет?
Не стоит беспокоиться о разнице, которая не оказывает никакого влияния.
Компилятор (по сути) игнорирует имена аргументов atan2()
потому что это не определение (то есть реализация функции). Пока определение функции (реализация) вычисляет арктангенс в радианах первого аргумента, деленного на второй, реализация atan2()
верно.
Важно избежать ошибки в этом определении atan2f()
является то, что первый и второй аргумент передаются atan2()
в том же порядке. Что происходит, так (при условии определения atan2()
правильно) нет функционального недостатка и выражения atan2f(a,b)
вычислит арктангенс a/b
— это то, что требует стандарт.
Единственный потенциальный недостаток в понимании людьми того, что делают функции. Но, вообще говоря, желательно, чтобы люди обращались к документации стандартных функций для понимания, а не к заголовочным файлам. Это стилистический недостаток, а не функциональный.