un4-funeral » 25 апр 2008, 15:09
somewhere писал(а):Это просто глупо, т.к. FPU сам следит за периодом и знаками и никаких тут проверок и кучи кода не надо. У меня такое чувство что вы в Microsoft'е работаете.
Код: Выделить всё
double sin_grad(double x)
{
double y,c;
c = 180;
__asm
{
fldpi;
fmul x;
fdiv c;
fsin;
fstp y;
}
return y;
}
Значение X в градусах не должно быть больше 2^63 / P086I * 180, что успешно отсеивается типом Double
ну и ?
введя 180 градусов, он выводит ответ -5, 42101086242752E-20
а должно 0
у меня по крайне мере точно всё выводит, хотя и не рационально
[quote="somewhere"]Это просто глупо, т.к. FPU сам следит за периодом и знаками и никаких тут проверок и кучи кода не надо. У меня такое чувство что вы в Microsoft'е работаете.
[code]
double sin_grad(double x)
{
double y,c;
c = 180;
__asm
{
fldpi;
fmul x;
fdiv c;
fsin;
fstp y;
}
return y;
}
[/code]
Значение X в градусах не должно быть больше 2^63 / P086I * 180, что успешно отсеивается типом Double[/quote]
ну и ?
введя 180 градусов, он выводит ответ -5, 42101086242752E-20
а должно 0
у меня по крайне мере точно всё выводит, хотя и не рационально