Items tagged with precision

I have encountered a behavior of Maple that I find hard to explain and I am hoping for help. The command


was meant to be an example of "High-precision fraud" as in the 1992 paper of Borwein and Borwein, and indeed it gives 29/2 to within 531 digits. But I am unable to make Maple see this; indeed I get with evalf(%,1000)


I find it hard to guess why Maple gets this wrong, actually. The point of the example is that floor((exp(Pi)-Pi)*n)=20*n-1 for many n, but Maple has no problems finding the first failure at n=1112. It must hence be trying something more advanced than just adding up all summands until the tail sum is small enough to satisfy the precision? I guess an alternative approach would indeed be possible since what is being "floored" is relatively simple, but then that seems to be buggy?

Would be very grateful for any assistance!


Soren Eilers




I'm not really an expert in maple. I'm stuck with a problem that could be related to the precision of the computational engine...

I defined a function which is relatively complicated as follows:

m := proc (x, l, T) options operator, arrow; (exp(l*(x-T)/(1-exp(-l*T)))*exp(l*T/(1-exp(-l*T)))*(1-exp(-l*T))+(2-exp(-l*T)-exp(l*T))*exp(l*(x-T)/(1-exp(-l*T))))/(exp(l*T)-1)-(l*(x-T)*exp(l*(x-T)/(1-exp(-l*T)))-2*exp(-l*T)+4-2*exp(l*T))/(exp(l*T)-1) end proc

whenever i simplify the equation or factor some of the terms, I get completely different results.

As an example, you can define this function as follows

m := proc (x, l, T) options operator, arrow; (exp(x*l/(1-exp(-l*T)))*(1-exp(-l*T))+(2-exp(-l*T)-exp(l*T))*exp(l*(x-T)/(1-exp(-l*T))))/(exp(l*T)-1)-(l*(x-T)*exp(l*(x-T)/(1-exp(-l*T)))-2*exp(-l*T)+4-2*exp(l*T))/(exp(l*T)-1) end proc


By drawing the function, you can see how things get messy.

plot(m(450, (1/250)*x, 250), x = 0 .. 100)


I know the problem occurs as a results of computation round-off. How could I ameliorate that? I have already increase the precision in the option menu, but that didn't help. By the way, how can I be sure that the anwers maple gives me is correct, except using my intuition?


How to realize the Cantor staircase function in Maple? Mathematica has it.

I'd like to stress the three desired properties:

(i) The virtual Cantor function can be evaluated to arbitrary numerical precision.

(ii) For certain arguments, this function automatically evaluates to exact values.

(iii) Mathematical function, suitable for both symbolic and numeric manipulation.

Hi everybody,

Ever since i updated to maple 2015, the output of calculations display a disproportionate amount of zeros. For instance:

If i write:


i get:


Is there anyway to make maple NOT display the last 10 zeros? I've tried Tools ->Options ->Precision -> Round screen display to X. But then it rounds all results to that X amount of digits, wich is also anoying. Like, if i set X to be 10, it'll write 3.000000000 instead of just 3.

Hope someone can help me :-)


In the following code, the evalf prints -32.16... 

restart; S := 8;

sigma := 8/sqrt(2*Pi);

iprec := 151;

evalf(log[2](-(sum(log(round(2^iprec*exp(-j^2/(2*sigma^2)))/2^iprec*exp(-j^2/(2*sigma^2))))*round(2^iprec*exp(-j^2/(2*sigma^2)))/2^iprec, j = 0 .. 7))));


Change the last line to evalf[20](log[2](....)), and re-run *just that line*. It now prints -66.67...

Change the last line to evalf[200](log[2](...)) and re-run *just that line* again. It now prints -151.24... (I have strong evidence to support that the true value is near -151, so I believe this answer.)

Now remove the precision indicator from the command completely and re-run just the last line. It *still* prints -151.24...!


My two questions are: why do I need evalf[200] to get the first three digits of the answer to be correct? and why does setting the evalf precision and then removing it cause the previous precision to persist?

Below is a Maple ws describing the problem. I have some fixed values pr0 and pr1, and a four variations of a function "pdf". The problem is that when I use the function in a sum (either the "sum" function or the sigma notation), the result is different than if I write out the sum explicitly. It's very puzzling as to why they woudl be different in the first place, but even more strange is that the different versions have *different* deltas. Even version 3, with a delta of 10^-100 is too much for my application (moreover the delta gets larger when I sum over more terms).


In the worksheet below, I compare "sum(f(x),x=3..3)" to "f(3)". I expect this should always be identically 0, but that is not true for any of the four versions of my function. (The same is true for "Sum(f(x),x=3..3)".) However, "sum(f(3),x=3..3)" *is* (blessedly) identically "f(3)". What gives?


pr[0] := .499999999999999999999852096538403821434745813543502066245832554193147476551830440227306019620687012523264913799181385911651886999607086181640625:

pr[1] := .43394228095117646589504674154844928036961264935215813494922283329725383492977635163048065719014507668417797436877236805230495519936084747314453125:

pr0 := .499999999999999999999852096538403821434745813543502066245832554193147476551830440227306019620687012523264913799181385911651886999607086181640625:

pr1 := .43394228095117646589504674154844928036961264935215813494922283329725383492977635163048065719014507668417797436877236805230495519936084747314453125:

pdf1 := proc (x) local j, prob, y; prob := 1; y := x; for j from 0 to 1 do if `mod`(y, 2) = 1 then prob := prob*pr[j] else prob := prob*(1-pr[j]) end if; y := floor((1/2)*y) end do; return prob end proc:

Maple doesn't always like subscripted variables. Is that the problem?

pdf2 := proc (x) local prob, y; prob := 1; y := x; if `mod`(y, 2) = 1 then prob := prob*pr0 else prob := prob*(1-pr0) end if; y := floor((1/2)*y); if `mod`(y, 2) = 1 then prob := prob*pr1 else prob := prob*(1-pr1) end if; return prob end proc:

Maybe it's the binary expansion that's the issue

pdf3 := proc (arr) options operator, arrow; product(arr[2-j]*pr[j]+(1-arr[2-j])*(1-pr[j]), j = 0 .. 1) end proc:

No procedures, no arrays

pdf4 := proc (x) options operator, arrow; (`mod`(x, 2))*pr0+(1-(`mod`(x, 2)))*(1-pr0)+(`mod`(floor((1/2)*x), 2))*pr1+(1-(`mod`(floor((1/2)*x), 2)))*(1-pr1) end proc:

evalf[100](sum(pdf1(i), i = 3 .. 3)-pdf1(3));








evalf[100](sum(pdf2(i), i = 3 .. 3)-pdf2(3));





evalf[100](sum(sum(pdf3([i1, i2]), i2 = 1 .. 1), i1 = 1 .. 1)-pdf3([1, 1]));





evalf[100](sum(pdf4(i), i = 3 .. 3)-pdf4(3));











Hello all,


I'm experiencing an aggravating issue when substituting numerical values into a symbolic expression.  I'm using Maple 14.  I believe the issue may be related to floating point precision.  Either way, it's ruining my life.  If anyone has a solution or a work-around, I'd be most grateful.  The following code reproducibly produces the anomolay on my machine:


vx := Vector( 4, symbol=x ):

# A numerator and a denominator. They're equal.
num := (x[1]*x[3]+x[1]*x[4]+x[2]*x[3]+x[2]*x[4])^2:
den := ((x[1]+x[2])^2*(x[3]+x[4])^2):

# Prints true...

# This equals zero
y := 0.1 - 0.1*num/den;

# Prints 0...

# Prints 0...

# Prints 0...

# Prints 0.1 x 10^-10 !?!?


I need to show what happens to the zero r=20 of f(x)= (x-1)(x-2)..(x-20)-(1/10^8)*(x^19) and the hint given is that the secant method in double precision gives an approximate in [20,21].

At present, I'm calling the secant method on f with a tolerance of 1/(10^12) with an initial x=20, but I'm stuck as to what the second initial value would be. What is the right approach to this question?


  • here is an exercise I got from a text book                                                                                                              calculate the first 10 terms of the following sequence :                                                                                              

u[0]=1                                                                                                                                                             u[n+1]=1/2(u[n]+2/u[n]) n>=0                                                                                                                          

  • estimate the differences u[3]-sqrt(2) , u[4]-sqrt(2), u[5]-sqrt(2), and u[6]-sqrt(2) with a precision of 50 numbers                                    
  • what can we conjecture about the sequence ?
  • how to prove that conjecture with MAPLE ?


I have saved array calculated with Digits:=5000. Now I want to save it with Digits:=2500. I tried this

read "C:\\math\\lambda5000.mpl";

Digits := 2500;

LArr2500 := LArr5000;

save LArr2500, "C:\\math\\lambda2500.mpl"

But this don't work...


 I am using maple to do some numerics (bound to use it instead of mathematica because of university guidelines) and my problem is that as the plotting options of maple are a bit unsatisfactory I need to export my data. This has worked fine so far using the writedata-command while I was working on normal (10 digit) precision. Now however I need to increase the precision and to my dismay writedata just cuts everything after the normal 10 digits away and...


I want to calculate the IDs product :



When I export my MapleSim 5 results to a CSV file, I get only 6 digits, I'm looking for effects in the 1/1000 ppm or ppb region, I'm lost here

The global Settings window allows me to adapt epsilon abs and rel, thats nice, but nothing on the data export side.

I find it logical and usefull to have a settings on the export tab to decide on precision, and or selection of time series (usefull if one does not want all data, but just the last 100 values of a loooong run ;)



i have written the followin code that achieve Y from determinant of matric aa. but when i change digit my result changes. i dont know why? 


> restart;
> with(LinearAlgebra);
> Digits := 100;
> upsilon := .38;
> rho := 0.122e4;
> l := 0.176e-4;
> h := 2*0.176e-4;
> L := 20*h;
> E := 0.144e10;
> lambda := E*upsilon/((1+upsilon)*(1-2*upsilon));

1 2 Page 1 of 2