atan2 (y,x), когда y & x очень малы
Я старался atan2
в С с аргументом около 10-14. Это дает неправильный ответ: около 90 вместо нуля, например:
void main()
{
double a =3.4e-14;
double b=9e-10;
atan2(3.4e14,9.0e-9); // returns ~90 instead of zero or Not a number
}
2 ответа
Вы определили две переменные a
а также b
в вашем коде, но тогда вы используете константы в качестве аргументов atan2
,
Значения a
а также b
просто игнорируются.
atan2(a, b);
вернет значение, близкое к нулю, как и следовало ожидать.
То же самое для atan2(3.4e-14,9.0e-9)
(нота e-14
не e14
).
Похоже, что вы звоните atan2 на 3,4*10^14, а не 3,14*10^(-14)?