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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2012, 03:56   #1
oxygen1992
 
Регистрация: 21.11.2012
Сообщений: 5
По умолчанию Погрешность в FPU. Вырожденный треугольник.

Доброй ночи всем. Работаю под линуксом. Пользуюсь gcc. У меня тривиальная задача на вырожденность треугольника. Работаю с FPU. Короткий ход решения: Нахожу площадь треугольника: area=0.5*((a.x-c.x)*(b.y-c.y)-(a.y-c.y)*(b.x-c.x)), и если area!=0.0, треугольник не вырожден.
Так вот, при работе возникают погрешности. И решение этой проблема - классика. Но самое смешное, не представляю как правильно объявить переменную дельта, положить ее в стек FPU и произвести вычитание с st(1).
Сами по себе все вычисления произведенны (кроме домножения на 0.5, так как посчитал лишним), уже в st(0). И сейчас пытаюсь написать что то вроде:
------------------- основной код программы--------------
mov eax, qword ptr 0.0000003
mov [esp-8], eax
fld qword ptr [esp-8]

Прошу, подскажите как правильно.

P.S. Возможно такая тема уже есть. Если есть - прошу скинуть ссылку. Сами понимаете - время позднее, а я еще на 2 языках проекты пишу.
oxygen1992 вне форума Ответить с цитированием
Старый 22.11.2012, 00:36   #2
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Код:
PUSH 34A10FB0h
FLD DWORD PTR [esp]
FCOMIP st(0), st(1)
...

POP eax / ADD esp, 4
f.hump вне форума Ответить с цитированием
Старый 24.11.2012, 16:35   #3
oxygen1992
 
Регистрация: 21.11.2012
Сообщений: 5
По умолчанию

Спасибо большое. Сделал правда вот так:
delta: .double 0.000001
--------------------------- code -------------------
fld qword delta
--------------------------- code -------------------
oxygen1992 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
php погрешность состоявляет более 15 мин php1990 Помощь студентам 1 12.08.2012 23:07
Погрешность в интегрировании Luzifer Общие вопросы C/C++ 0 30.05.2012 20:25
Погрешность интегрирования XemyL Помощь студентам 0 21.03.2012 22:05
Относительная погрешность A.M.G_Dig Помощь студентам 4 20.11.2010 22:57