Ask Your Question

Behavior of numerical_approx function

asked 2018-03-01 21:38:58 +0200

anonymous user


updated 2018-03-01 22:51:09 +0200

What I noticed is that the log function does not give a numerical approximation by default, and one has to use the numerical_approx (n) function for this purpose. Though, I found its behavior a bit interesting, or not what I expected. I have a Sage code that looks like this:

p = 2**372 * 3**239 - 1

log(p, 2).numerical_approx()           # 750.806037672356
log(p, 2).numerical_approx(digits = 4) # 750.8
log(p, 2).numerical_approx(digits = 7) # 750.8060

So, by default numerical_approx gives 12 digits after the decimal point, but I found that it optionally takes an argument called digits. The confusing part for me is that I thought that digits specifies how many digits to be displayed after the decimal point, but this clearly is not the case, as you can see from the examples above. It actually specifies how many digits in total (sum of digits before and after the decimal point) it should print. So, how can I get numerical approximation of logarithms with 4 digits after the decimal point (no matter how many digits there are before the decimal point)?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2018-03-01 22:25:28 +0200

tmonteil gravatar image

You can count the number of digits before the decimal point by looking at the (ceiling of the) log in base 10 of your number:

sage: p = 2**372 * 3**239 - 1
sage: a = log(p,2)
sage: ceil(log(a.n(),10))

So, you just have to add this number to the digits paramter:

sage: a.numerical_approx(digits = 4+ceil(log(a.n(),10)))

With another p:

sage: p = 2**3723 * 3**2394 - 1
sage: a = log(p,2)
sage: a.numerical_approx(digits = 4+ceil(log(a.n(),10)))
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2018-03-01 21:38:58 +0200

Seen: 313 times

Last updated: Mar 01 '18