|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.11.2012, 03:56 | #1 |
Регистрация: 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 языках проекты пишу. |
22.11.2012, 00:36 | #2 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
Код:
|
24.11.2012, 16:35 | #3 |
Регистрация: 21.11.2012
Сообщений: 5
|
Спасибо большое. Сделал правда вот так:
delta: .double 0.000001 --------------------------- code ------------------- fld qword delta --------------------------- code ------------------- |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |