![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 21.11.2012
Сообщений: 5
|
![]()
Доброй ночи всем. Работаю под линуксом. Пользуюсь 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 языках проекты пишу. |
![]() |
![]() |
![]() |
#2 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]() Код:
|
![]() |
![]() |
![]() |
#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 |