Operation with large and small numbers

6 views (last 30 days)
Franklin on 5 Jan 2023
Commented: Image Analyst on 6 Jan 2023
1^4 + 1^4 + 23512^4 - 23512^4 = 2
Matlab says
1^4 + 1^4 + 23512^4 - 23512^4 = 0.
  1 Comment
Franklin on 5 Jan 2023
Please what is the quickest way to solve this problem? I need help with variable precision integer arithmetic.

Sign in to comment.

Answers (2)

VBBV on 5 Jan 2023
(1^4 + 1^4) + (23512^4 - 23512^4)
Franklin on 6 Jan 2023
Thank you.
My numbers are variable. The order in wich they are grouped in parenthesis is important. (1^4 + 23512^4) + (1^4 - 23512^4) = 0.

Sign in to comment.

Image Analyst
Image Analyst on 5 Jan 2023
It's called truncation error. You should have learned about it in your linear algebra or numerical analysis course.
Basically it's caused by adding a gigantic number to a small number (2). There are not enough digits in 64 bits to accurately represent the 2 in the ones column of the number. The number if basically truncated and the 2 and perhaps even some other digits (like the 10's place) are lost.
To fix, use parentheses:
result = (1^4 + 1^4) + (23512^4 - 23512^4)
The first term is 2 and the second term is 0. Those numbers are in the same range and can be added with no truncation.
Image Analyst
Image Analyst on 6 Jan 2023
See the FAQ:
You're still bound by truncation error.
Why is the order important, and why do you have such enormous numbers added to such tiny numbers?
You might have some luck with the symbolic toolbox, but I don't have that so can't advise you on that. Call tech support about that.

Sign in to comment.


Find more on Elementary Math in Help Center and File Exchange




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!