Why is the int() function giving a different output for int(logBASE(512,2))?

  • Thread starter 24forChromium
  • Start date
In summary, the conversation discusses the concepts of the "int()" function, which takes the integer part of a number, and the output of "int(logBASE(512,2))" being 9 despite the mathematical expression being exactly 9. It is explained that calculators use algorithms, such as CORDIC, to approximate values and may have a limit on the number of iterations. The precision of the calculation can be improved by increasing the number of iterations. It is also noted that using double variables instead of integers can avoid truncation errors.
  • #1
24forChromium
155
7
Sorry, I know this is not really a math problem (move it to where you think fit, if you like), but I have no idea what on the crazy Earth is going on here:
20150716_113717.jpg

the "int()" function, as far as I know, takes the integer part of a number, for example:

int(24.83219) = 24

and I know that "int(9)" is just 9. However, as you can see, when I take the interger part of that log function, it is giving me a number that I can comprehend in this context. This has never happened to any other logs I tried. So, what's going on here and how can I get int(logBASE(512,2))'s output to be 9?
 
Mathematics news on Phys.org
  • #2
The calculator does log(512)/log(2) = 6.23832/0.693147 which is slightly less than 9, but is rounded up to 9. The integer part is still 8, even if the number is 8.99999999.
 
  • #3
Svein said:
The calculator does log(512)/log(2) = 6.23832/0.693147 which is slightly less than 9, but is rounded up to 9. The integer part is still 8, even if the number is 8.99999999.
Just to be clear, ln(512)/ln(2) is exactly 9, but the calculator uses an algorithm (probably a Taylor series) to estimate the value of ln(x). It's the calculator's approximation of log2(512) that is less than 9, not the mathematical expression itself.
 
  • #4
It's incredibly easy for log functions to have numbers of iterations into the 100's, 1000's or higher. Your calculator likely computed this a 8.999999999~ for hundreds if not thousands of iterations before it hit one that was not a 9 or reached it's limit of iterations and rounded it. Regardless, when you hit the int() key you're calculator was likely jumping for joy as it now only had to calculate a single iteration and stopped there.
Edit: no it actually isn't exactly 9 your calculator likely hit its limit on iterations for the calculation at which point it made the decision that 9 was actually the MORE EXACT output.
 
  • Like
Likes 24forChromium
  • #5
J.J.T. said:
It's incredibly easy for log functions to have numbers of iterations into the 100's, 1000's or higher.
I doubt that this is true. Calculators typically use the CORDIC algorithm to calculate trig, exponential, log functions, and others. They don't use Taylor series or other series to calculate these functions. See https://en.wikipedia.org/wiki/CORDIC.
J.J.T. said:
Your calculator likely computed this a 8.999999999~ for hundreds if not thousands of iterations before it hit one that was not a 9 or reached it's limit of iterations and rounded it. Regardless, when you hit the int() key you're calculator was likely jumping for joy as it now only had to calculate a single iteration and stopped there.
Edit: no it actually isn't exactly 9 your calculator likely hit its limit on iterations for the calculation at which point it made the decision that 9 was actually the MORE EXACT output.
 
  • #6
Mark44 said:
I doubt that this is true. Calculators typically use the CORDIC algorithm to calculate trig, exponential, log functions, and others. They don't use Taylor series or other series to calculate these functions. See https://en.wikipedia.org/wiki/CORDIC.

I will admit I did originally think it was a Taylor series, but it seems like it would run into the same problem as the system is described as "shift and add" there must be an upper limit on the number of iterations.
 
  • #7
J.J.T. said:
I will admit I did originally think it was a Taylor series, but it seems like it would run into the same problem as the system is described as "shift and add" there must be an upper limit on the number of iterations.
A lot of the calculation is done using lookup tables, so it doesn't take hundreds or thousands of iterations. I found a CORDIC implementation of the ln() function here: http://people.sc.fsu.edu/~jburkardt/m_src/cordic/ln_cordic.m. The implementation seems to have been done using matlab. I ported the implementation to C (I don't have matlab) and compared the results of the C standard library function log() with the ln_cordic() function in the link. Using 25 iterations I got exactly the same results from both functions out to 10 decimal places for ln(2). Using only 10 iterations I got agreement in 9 decimal places.
 
  • #8
Sometimes it depends on the type of calculators. I give 0.33333333*3 in mine and get 1 instead of 0.99999999...
 
  • #9
Only one additional decimal place for an extra 15 iterations? ln_cordic() should converge much faster than that, are you sure you are not running into arithmetical precision errors somewhere (a 32 bit integer has 10 decimal places so could this be a problem)?
 
  • #10
MrAnchovy said:
Only one additional decimal place for an extra 15 iterations? ln_cordic() should converge much faster than that, are you sure you are not running into arithmetical precision errors somewhere (a 32 bit integer has 10 decimal places so could this be a problem)?
The check I did was only a quick one. When my code did 25 iterations I was printing out only 10 decimal places of the results from ln_cordic() and from the standard library function log(). If I print 15 decimal places for the two functions, ln_cordic() agrees with the std. library function in 15 decimal places (with n = 25). The upshot is that in the calculation of ln(2.0), increasing the number of iterations from 10 to 25 increased the precision in ln_cordic() from 9 decimal places to 15 decimal places.

I am using double variables for all calculated values, not integers.
 
  • #11
Mark44 said:
The upshot is that in the calculation of ln(2.0), increasing the number of iterations from 10 to 25 increased the precision in ln_cordic() from 9 decimal places to 15 decimal places.
That makes more sense!

Mark44 said:
I am using double variables for all calculated values, not integers.
I just wondered - I have made mistakes similar to this particularly when translating between strongly and weakly typed languages and now when I see a truncation error O(232) it's the first thing I think of.
 
  • #12
MrAnchovy said:
I just wondered - I have made mistakes similar to this particularly when translating between strongly and weakly typed languages and now when I see a truncation error O(232) it's the first thing I think of.
That's a very large error! Did you mean O(2-32)?
 
  • Like
Likes pbuk

What is LogBASE(512,2)?

LogBASE(512,2) is a mathematical operation that represents the power to which the base (2) must be raised to equal the given number (512). In this case, it is asking for the power that 2 must be raised to in order to equal 512.

What does the equal sign mean in "LogBASE(512,2) = 9"?

The equal sign in this equation signifies that the result of the LogBASE(512,2) operation is equal to the number on the other side of the equal sign, which is 9 in this case.

Why is the base number (2) important in this equation?

The base number is important because it determines the type of logarithm that is being used. In this case, since the base is 2, it is a base 2 logarithm (also known as a binary logarithm).

What does the result (9) represent in this equation?

The result of 9 represents the power to which 2 must be raised in order to equal 512. In other words, 2 to the power of 9 is equal to 512.

What are some real-life applications of LogBASE(512,2) = 9?

Logarithms are commonly used in fields such as science, engineering, and finance to represent exponential growth or decay. In this case, LogBASE(512,2) = 9 could represent the doubling of a quantity 9 times, such as population growth or compound interest.

Similar threads

  • Engineering and Comp Sci Homework Help
Replies
3
Views
661
Replies
4
Views
386
Replies
8
Views
147
Replies
1
Views
1K
Replies
8
Views
394
Replies
6
Views
3K
Replies
6
Views
1K
  • Programming and Computer Science
Replies
12
Views
1K
Replies
2
Views
230
Back
Top