Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.205.56.209] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Цитата Majestio @ Ну так ты заюзал целочисленный класс. Юзай вещественный. И так. Число 10 делим на 3, делим, делим, делим, а потом умножаем на то же 3. Барабаны, фейерверки ... и получаем число 9. Аплодисменты и занавес! |
Сообщ.
#17
,
|
|
|
Цитата Qraizer @ Ну так ты заюзал целочисленный класс. Юзай вещественный. Заюзал, но ... от перемены мест слагаемых - легче не становится! #include <gmp.h> int main() { mpf_t a, b, result; mpf_init(a); mpf_init(b); mpf_init(result); mpf_set_d(a, 234777440777777777777777777777777777777.7324856732495879347856398564739865473986739658739867398657349856734589673463371); mpf_set_d(b, 17.0); mpf_div(result, a, b); mpf_mul_ui(result, result, 17.0); gmp_printf("Qraizer, you should be sad: %.1Ff\n", result); mpf_clear(a); mpf_clear(b); mpf_clear(result); return 0; } Qraizer, you should be sad: 234777440777777784841000000000000000000.0 Не, ну может я где и накосячил - заюзал впервые либу вчера! Но как-то не впечатляет пока |
Сообщ.
#18
,
|
|
|
Нужную точность забыл выставить.
P.S. Я gmp тоже в глаза не видел до этой темы. Сужу исключительно по мануалам. Добавлено Ну так, положу тут просто. #include <iostream> #include <iomanip> #include <boost/multiprecision/cpp_bin_float.hpp> namespace bmp = boost::multiprecision; using longlongFloat = bmp::number<bmp::cpp_bin_float<400>>; int main() { longlongFloat a, b, result; a = longlongFloat("234777440777777777777777777777777777777.7324856732495879347856398564739865473986739658739867398657349856734589673463371"); b = 17.0; result = a / b; result*= 17.0; std::cout << "Are you fun now, Majestio? " << std::setprecision(120) << std::scientific << result << std::endl; } |
Сообщ.
#19
,
|
|
|
Qraizer, я в той же теме не так же плотно! Надо просто замутить стресс-тесты на числа "до запятой" порядка 5000-7000, и после запятой. Провести деление и умножение е на три. И оценить потом то, что преобразуется.
|
Сообщ.
#20
,
|
|
|
Вот конкретный пример, который у меня вызвал трудности.
Прикреплённая картинка
MathCAD как и ожидалось считает Result с большой точностью после запятой Хотелось бы сделать такую же функцию lsolve(A,B) моя выдает 9999, ... можно конечно округлить, но где гарантия что для другого случая не затрется нужная цифра. |
Сообщ.
#21
,
|
|
|
Кто-нибудь пробовал GSL ?
https://ru.wikipedia.org/wiki/GNU_Scientific_Library Там по документации есть функция gsl_linalg_HH_solve() Документация: https://www.gnu.org/software/gsl/doc/latex/gsl-ref.pdf |
Сообщ.
#22
,
|
|
|
метод Гаусса-Зейделя подходит, повышает точность.
|