
C/C++
текст скопирован с страницы и сохранен был для дальнейшего чтения на смартфоне
Стандартные библиотеки C++ не сильно точны?

Какие стандартные библиотеки? Для расчётов с хорошей практической точностью вещественные типы float, double, а тем более long double вполне годятся. А если надо что-то ещё, например, особо точные представления чисел, тогда конечно надо пользоваться чем-либо типа модулей gmp или mpfr. Вот пример расчёта ограниченных сумм гармонического ряда Σ(k=1;n)1/k:
#include
#include
#include
using namespace std;
mpz_class Euclid(mpz_class x, mpz_class y)
{
mpz_class z;
while (true)
{
z = x % y;
if (z == 0) return y;
else { x = y; y = z; }
}
}
void print(int i, mpz_class x, mpz_class y)
{
mpz_class z; z = x / y;
cout
15-16 точных цифр типа double вполне, и даже с лихвой, достаточно для всех практических задач :)
Александр Гильмутдинов
Исключая финансовые задачи, где плавающая запятая в принципе неприменима.
Руслан *****
И с конечными разностями такая точность - как-то не очень. Опа, что случилось с нашей относительной погрешностью? Вместо 10 в минус 15-й она стала 10 в минус третьей...
Петрик Севастьянов
Помню, читал об одном эксперименте психологов с группой студентов первых курсов, которым было предложено решить на компьютере задачи с потерей точности, кажется, в том числе с квадратными уравнениями. Вывод группы был таким: компьютеры на самом деле нельзя использовать, они делают ошибки ;)
Ну флоат 4 байта, а если те надо точность при большом количестве вычислений, юзай дабл 8 байтов.
Нет, стандартные библиотеки достаточно точны для стандартных задач. Если же вашей задачи "точности" не хватает - значит либо
1) Ваша задача не стандартная - имеет смысл рассмотреть использование нестандартных библиотек.
2) Вы что-то делаете не так.
А вот использование того же boost просто для точности зачастую выглядит как стрельба из пушки по воробьям. Для тех же "нестандартных" задач зачастую существуют специализированные библиотеки, предлагающие в рамках заданного контекста куда более эффективные решения, чем буст из-за его обобщенности.
1) Ваша задача не стандартная - имеет смысл рассмотреть использование нестандартных библиотек.
2) Вы что-то делаете не так.
А вот использование того же boost просто для точности зачастую выглядит как стрельба из пушки по воробьям. Для тех же "нестандартных" задач зачастую существуют специализированные библиотеки, предлагающие в рамках заданного контекста куда более эффективные решения, чем буст из-за его обобщенности.
Похожие вопросы
- C++ библиотека fstream. при использовании Кириллицы изменяется кодировка в создаваемом файле..
- C++, библиотека math.h
- Программирование на C++. Библиотека stdio.h
- Как написать функцию которая вычисляет арктангенс из любого числа на c++ без использования библиотек
- Как стандартно распараллелить ассоциативное умножение в C++? Перемножаем, например, 1000 элементов.
- Какие из этих книг вы посоветуете прочесть в первую очередь чтобы повысить свои знания в C/C++?
- Задача по C++
- День добрый \[-_-]/ вопрос по вузовскому программированию на си(C)
- В смысле С не поддерживает классы а как же библиотеки ?
- Программирование C++ ПРОШУ ПОМОЧЬ!