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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2010, 19:47   #1
shmel2
 
Регистрация: 09.11.2010
Сообщений: 5
По умолчанию Assembler FPU simple functions

вот я кое чего наваял используя ассемблерные вставки, все компилится но результат несовпадает с реальным((
Код:
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	/*Требуется вычислить выражение (argTG/(cos{i}+tg(i)))*cos(i*i)*/
	double a=0;//хранится результат cos(i)+tg(i)
    double b=0;//хранится результат argTG(i)/a
    double y=0;//хранится результат b * cos(i^2)
    int i = 3;
    int j = 9; //i^2
    _asm
    {
		finit
        fld i
        fcos
        fld i
        fptan
        fadd
        fstp a
            fld i
            fpatan
            fld a
            fdiv
            fstp b
                     fld b
                     fld j
                     fcos
                     fmul
                     fstp y
    }
cout<<"Результат операции: "<<y;
cout<<endl;
	return 0;
}
shmel2 вне форума Ответить с цитированием
Старый 10.11.2010, 11:23   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
все компилится но результат несовпадает с реальным((
Каков реальный результат?

Последний раз редактировалось p51x; 10.11.2010 в 11:26.
p51x вне форума Ответить с цитированием
Старый 10.11.2010, 11:35   #3
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Программу не смотрел, но позволю себе одно замечание - все синусы-косинусы и прочие тангенсы считаются сопроцессором в _радианах_. Поэтому при проверке результатов нужно это учитывать (либо на калькуляторе тоже считать в радианах, либо в программе переводить все в градусы).
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 10.11.2010, 11:48   #4
shmel2
 
Регистрация: 09.11.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Каков реальный результат?
программа выводит 1,5708
проверяю в OpenOffice функцией =(ATAN(3)/(COS(3)+TAN(3)))*COS(9) выходит 1,004860196
И там и там результат должно считать в радианах
shmel2 вне форума Ответить с цитированием
Старый 10.11.2010, 13:02   #5
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

неужели трудно читать описание команд
вот правленый ваш кривущий код
Код:
finit
fild i      
fcos
fild i
fptan
fstp a
fadd        
fstp a
fild i
fld1
fpatan
fld a
fdiv st(1),st(0)
fxch st(1)
fstp b
fld b
fild j
fcos
fmul st(0),st(1)
fstp y
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
e^x в FPU NiCola999 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 19 21.11.2009 23:16
работа с FPU NiCola999 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 04.11.2009 00:01
Access & API functions Sparxy Microsoft Office Access 3 23.10.2009 17:42
4 лабораторные на Си за $$$ (Structures, Functions, Files) velvetdust Фриланс 2 09.06.2009 21:08