powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вычисления с высокой точностью
30 сообщений из 30, показаны все 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
Вычисления с высокой точностью
    #38369503
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да подождите вы с бустами. Чел пишет.
В приложении на С++ после 1е-10 степени существенно уплывает точность
Пускай хоть конкретизирует. Что ему? Символьная точность?
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369563
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix,

Что за задача-то? Среднее из триллиона значений, различающихся на 20 порядков? Знаменитое "тангенс от десяти в сотой"?
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369638
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnixMasterZiv,

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

он при

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

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

перекопал все. Их нет даже в файлах скачиваемых с официального сайта.
Может кто подсказать как бороться с данной проблемой?

Поставить библиотеку GMP, разумеется.
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369692
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBagalnix,
так тебе уже посоветовали не заморачиваться с бустом и взять напрямую GMP
http://gmplib.org/#WHAT

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

А в бусте, если я правильно помню, своей реализации нет (да и зачем, когда можно подключить эту).

вся проблема
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
#include <stdio.h>

#include <gmp.h>
#include <mpfr.h>

int main (void)
{
  unsigned int i;
  mpfr_t s, t, u;

  mpfr_init2 (t, 200);
  mpfr_set_d (t, 1.0, MPFR_RNDD);
  mpfr_init2 (s, 200);
  mpfr_set_d (s, 1.0, MPFR_RNDD);
  mpfr_init2 (u, 200);
  for (i = 1; i <= 100; i++)
    {
      mpfr_mul_ui (t, t, i, MPFR_RNDU);
      mpfr_set_d (u, 1.0, MPFR_RNDD);
      mpfr_div (u, u, t, MPFR_RNDD);
      mpfr_add (s, s, u, MPFR_RNDD);
    }
  printf ("Sum is ");
  mpfr_out_str (stdout, 10, 0, s, MPFR_RNDD);
  putchar ('\n');
  mpfr_clear (s);
  mpfr_clear (t);
  mpfr_clear (u);
  return 0;
}



в этих двух файлах:
#include <gmp.h>
#include <mpfr.h>

они требуются везде, но те которые лежат в инете не подходят а в сборках их нет
как заговор какой-то.
...
Рейтинг: 0 / 0
Вычисления с высокой точностью
    #38369835
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нууу... тут одно из двух. lnix либо идиот, либо троль (что не далеко ушло от идиота).
Ему уже три человека сказали как решается задача, но он упорно бьется в открытые ворота.
Закрываем.
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вычисления с высокой точностью
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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