Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2009, 12:50   #1
FPU128bit
Пользователь
 
Регистрация: 27.10.2009
Сообщений: 11
По умолчанию Почему мат процессор не считает точно sin(pi) = 0?

Здравствуйте Гуру программирования. Кто-нибудь подскажет с чем связан тот факт, что sin(pi) не равен нулю. Возможно что у меня процессор дефектный, но в это мало вериться.

Код:

Код:
#define M_PI  3.141592653589793238462643383279502884197169399376
#include <iostream>
#include "math.h"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	double pi, sinpi, cospi;
	__asm {
		fldpi
		fstp pi
		fldpi
		fsincos
		fstp cospi		
		fstp sinpi
	};
	cout.precision(20);
	cout<<pi<<endl;
	cout<<M_PI<<endl;
	cout<<cospi<<endl;
	cout<<sinpi<<endl;
	cout<<sin(M_PI)<<endl;
	return 0;
}

Последний раз редактировалось Stilet; 27.10.2009 в 17:09.
FPU128bit вне форума Ответить с цитированием
Старый 27.10.2009, 13:38   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

нормальное явление погрешность
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 27.10.2009, 13:46   #3
FPU128bit
Пользователь
 
Регистрация: 27.10.2009
Сообщений: 11
По умолчанию

Как то это странно, что FPU сначало возвращает значение pi, а потом считает от него sin с погрешностью. Я согласен что для других значений возможно погрешность в 15-16 знаке. Но как же тогда проводить расчеты?
У всех производителей процессоров наблюдается подобная ситуация?
FPU128bit вне форума Ответить с цитированием
Старый 27.10.2009, 17:03   #4
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

так оно ведь тоже не точно значение pi, ограничено разрядной сеткой, попробуйте не использовать fpu, а запустить на эмуляции программной и посмотреть результат.
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cos, Sin и непонятности с ними =\\ Zeraim Общие вопросы Delphi 3 25.07.2009 01:38
Ряд Тейлора, sin, cos... Kostia Общие вопросы Delphi 6 05.10.2008 10:13
Процедура, вычисляющая Y=a*cos(G) и X=a*sin(G) Vishez Помощь студентам 4 25.04.2007 17:41