powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вычисления с высокой точностью
25 сообщений из 30, страница 1 из 2
Вычисления с высокой точностью
    #38368998
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго времени суток!
Столкнулся с проблемой которую даже не знаю как решить.
Суть в следующем. В MATLAB есть алгоритм. Потребовалось его перенести в отдельное приложение (не нужно давать советы типа того что используй внутренний лабовский компилятор или типа того). Но проблема в точности вычислений.
В приложении на С++ после 1е-10 степени существенно уплывает точность.
Использую типы дубль. Пробовал лонг дубль. Та же хрень.
Может кто посоветовать как решить проблему с точностью вычислений???
Заранее благодарен.
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369016
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnixМожет кто посоветовать как решить проблему с точностью вычислений???

Можно проанализировать алгориитм и устранить место где теряется точность.

Или тупо перейти на длинную арифметику, библиотек для которой в сети полно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369026
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Буду очень признателен за ссылки
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369037
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix,

а в бусте есть эти вычисления?
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369060
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix,

а что это за алгоритм такой где аж long double не помогает?? Покажите код, что-ли.
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369072
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_,

лонг дубль работает только с плохой точностью
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369077
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос снимается, нашел все в BOOSTе
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369089
lnixsherzod_,

лонг дубль работает только с плохой точностью
Чето этот long double хуже обычного dobule: http://ideone.com/M8KMQK
Если GCC юзаете - попробуйте __float128
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369144
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
long double хуже обычного dobulelnixsherzod_,

лонг дубль работает только с плохой точностью
Чето этот long double хуже обычного dobule: http://ideone.com/M8KMQK
Если GCC юзаете - попробуйте __float128 Если не изменяет память, у long double точность 19 знаков, у double 15 знаков.
Что тест и показал. :)

Ну и на процессорах 8086:
"With the exception of the 80-bit double extended-precision floating-point format, all
of these data types exist in memory only. When they are loaded into x87 FPU data
registers, they are converted into double extended-precision floating-point format
and operated on in that format."
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture.

sherzod_lnix,
а что это за алгоритм такой где аж long double не помогает?? Покажите код, что-ли.Тоже любопытно.
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369150
long double хуже обычного dobulelnixsherzod_,

лонг дубль работает только с плохой точностью
Чето этот long double хуже обычного dobule: http://ideone.com/M8KMQK
Если GCC юзаете - попробуйте __float128
Хотя не - не хуже, чето я на последние цифры посмотрел, а dobule ещё раньше в сторону уходит.
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369173
m_Slalong double хуже обычного dobuleпропущено...

Чето этот long double хуже обычного dobule: http://ideone.com/M8KMQK
Если GCC юзаете - попробуйте __float128 Если не изменяет память, у long double точность 19 знаков, у double 15 знаков.
Что тест и показал. :)

А это зависит от компилятора:
C++03 ISO/IEC 14882There are three floating point types: float, double, and long double. ... The value representation of floating-point types is implementation-defined .
Допустим в GCC тип long double - 12 bit.
А в MSVS2012 - 8 bit. Даже с отключенной оптимизацией /Od и строгой моделью вычислений с плавающей точкой /fp:strict


m_SlaНу и на процессорах 8086:
"With the exception of the 80-bit double extended-precision floating-point format, all
of these data types exist in memory only. When they are loaded into x87 FPU data
registers, they are converted into double extended-precision floating-point format
and operated on in that format."
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture.
А это да - использование float вместо double на x86 на скорость вычислений не влияет - только на скорость доступа к памяти за счет меньшего размера.
В отличие от вычислений на GPU, где есть half float, float и double - вычисления каждой из которых значительно отличается по скорости.
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369199
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnixВ приложении на С++ после 1е-10 степени существенно уплывает точность.
Использую типы дубль. Пробовал лонг дубль. Та же хрень.
Может кто посоветовать как решить проблему с точностью вычислений???


Никуда ничего не уплывает. Как может уплыть то, чего нет?
double -- неточный тип данных.
Так что решить проблему можно только одним способом -- применяй другие алгоритмы, где либо меньше погрешность, либо тебе не так важна точность.
(а она тебе должна быть не важно, коль скоро ты считаешь в неточных, приблизительных числах).
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369201
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_SlaЕсли не изменяет память, у long double точность 19 знаков, у double 15 знаков.
Что тест и показал. :)

Блин, ну сколько долбить можно. Нет у них точности. У них есть погрешности. Точности нет совсем.
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369278
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все казалось бы супер, но как всегда в бочке меда есть ложка гадких какашек...
в бусте оствтствует файл gmp.h
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369289
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
везде есть такая строка
#include <gmp.h>
но этот файл везде отстутствует
попытка засунуть его вручную в каталог инклюде вызывает множественные ошибки.
Есть у кого какие идеи?
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369375
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnixвезде есть такая строка
#include <gmp.h>
но этот файл везде отстутствует
попытка засунуть его вручную в каталог инклюде вызывает множественные ошибки.
Есть у кого какие идеи?Есть.
Выкинь буст, возьми gmp.
http://g.zeos.in/?q=gmp&m=1
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369382
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix Но проблема в точности вычислений.
В приложении на С++ после 1е-10 степени существенно уплывает точность.
Использую типы дубль. Пробовал лонг дубль. Та же хрень.
Может кто посоветовать как решить проблему с точностью вычислений???
Заранее благодарен.
Что делаете? Летите в космос к пределу галлактики? Что это за алгоритм
которому нужны числа floating point и не хватает long double (extended) ?
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369424
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧто это за алгоритм
которому нужны числа floating point и не хватает long double (extended) ?Да алгоритм может быть почти любой. Меня когда-то угораздило число Пи посчитать с половиной неверных цифр в результате. Стоило сменить направление суммирование ряда (стало от меньших слагаемых к большим), так тут же стало все хорошо. Т.е. реализовывать алгоритмы тоже надо уметь.
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369452
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftmaytonЧто это за алгоритм
которому нужны числа floating point и не хватает long double (extended) ?Да алгоритм может быть почти любой. Меня когда-то угораздило число Пи посчитать с половиной неверных цифр в результате. Стоило сменить направление суммирование ряда (стало от меньших слагаемых к большим), так тут же стало все хорошо. Т.е. реализовывать алгоритмы тоже надо уметь. Вот именно, чтобы "вести предметный разговор" нужно посмотреть код. А то идет горячее обсуждение на тему "принеси мне то не знаю что".
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369454
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix,

есть.
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369469
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Библиотеку я нашел - BOOST.

он при

#include <boost/multiprecision/gmp.hpp>
using namespace boost::multiprecision;

выдает сообщение что нет файла gmp.h и mpfr.h

перекопал все. Их нет даже в файлах скачиваемых с официального сайта.
Может кто подсказать как бороться с данной проблемой?
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369471
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#include "stdafx.h"
#include <boost/multiprecision/gmp.hpp>

using namespace boost::multiprecision;

int _tmain(int argc, _TCHAR* argv[])
{

	mpf_float a = 2;

	return 0;
}

lnix,
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369472
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix,

выдает целый ворох ошибок
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369484
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ты думаешь что мы сейчас угадаем что у тебя в логе ошибок?
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369496
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix,
так тебе уже посоветовали не заморачиваться с бустом и взять напрямую GMP
http://gmplib.org/#WHAT

Можно, правда, ограничиться только MPFR
http://www.mpfr.org/

А в бусте, если я правильно помню, своей реализации нет (да и зачем, когда можно подключить эту).
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вычисления с высокой точностью
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]