Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Количество цифр результата #8

Open
ccaid opened this issue Feb 2, 2021 · 4 comments
Open

Количество цифр результата #8

ccaid opened this issue Feb 2, 2021 · 4 comments

Comments

@ccaid
Copy link

ccaid commented Feb 2, 2021

Результат вычислений запредельно длинный. Это не имеет никакого практического смысла, и это вносит неудобство. После каждого нажатия Enter мы видим дальний хвост цифр, который не имеет значения, а начальные, реально нужные цифры уходят за горизонт влево.
Возможны разные решения.

  • Уменьшить захардкоженое количество вычисляемых цифр до практического минимума.
  • Ввести диалоговое, через диалог настройки, или ручное, через параметр настройки, задание количества вычисляемых цифр.
  • То же самое, что в первых двух пунктах, но по отношению к результату, получаемому по нажатию Enter.
@ctapmex
Copy link
Member

ctapmex commented Feb 3, 2021

как я немного успел разобраться, уменьшение в ядре расчета числа знаков негативно повлияет на точность результата.
вот онлайн калькулятор на том же движке что и плагин https://www.ttmath.org/online_calculator , можно посмотреть как менzется точность расчета на примере sin(N*pi) при разной разрядности.
пока как идея

  1. устанавливать курсор всегда слева, чтобы было видно начало числа
  2. округлять результат вычислений до заданного разряда

@ccaid
Copy link
Author

ccaid commented Feb 3, 2021

1 — это не решение. 2 — да, это один из предложенных мной вариантов.
а что онлайн пример показывает?
что в чистый ноль результат не сходится при некоторых N? так это родовая проблема любой плавучки. типичный пример:

a=.3; b=.2; m=a/b; n=m*b;
printf("%.18f\n", n);

0.299999999999999990

чем больше цифр в мантиссе, тем выше отрицательный порядок ошибки, но она остается всегда.

@ctapmex
Copy link
Member

ctapmex commented Feb 3, 2021

пример показывает, что чем меньше цифр в мантисе, тем больше "ошибок" в простых вычислениях. Возможно проблема надумана и это не задача такого калькулятора (мы не маткад) , но не приятно получать не 0 при sin(3pi) . Вот если бы он выдал не 0, когда 3pi = pipi*(9+3)/4/pi .... (но ты этого не знаешь, т.к. не можешь в уме привести длинное выражение к 3pi) , то это было бы не обидно, не ошибка -)

@ccaid
Copy link
Author

ccaid commented Feb 4, 2021

1e-616 это такой же не ноль, как и 1e-153. Это для sin(7*pi).
Это не косяк библиотеки, калькулятора, метода. Это родовая травма плавучки. Это плата за возможности, предоставляемые плавучкой. И этот пример ещё цветочки, в сети можно найти примеры катастрофического нарастания ошибки при специально подобранном алгоритме вычислений. https://m.habr.com/ru/post/258483/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants