# ListPlot with high precision

I have a list of numbers, e.g. {{1.,027.698970004336022},{2.,027.698970004336015}} but usually much longer, suitable for ListPlot. ListPlot however does not display anything, even if I reduce PlotRange manually. Obviously the numbers are too small for ListPlot. The numbers do indeed represent only noise, the relative deviation of two numerical computations at different precision. I do this because I want a visual ipression of the numerical error of a computation depending on one parameter. Can I give an argument to ListPlot or similar in order to force it to display the small numbers and, if not, how can I compactly multiply the second elements in the list by a suitable number to scale the plot range to 0...1?

• I got 2 points with ListPlot, what do you think 027.698970004336022 is?
– Kuba
Jan 4, 2014 at 14:22
• I get two points as well. They are both on the x-axis and the y-axis ranges from -1 to 1. I read 027.698970004336022 as 0.698970004336022*10^(-27) (do I read that incorrectly?) and I want a plot scaled such that this number can be seen to be different from the second one. Jan 4, 2014 at 14:32
• You have two zeroes with different uncertainty. How do you think should ListPlot turn your uncertainties into certain values different from zero? Are you sure that you understood what Accuracy means? Jan 4, 2014 at 14:32
• @halirutan So I read the numbers incorrectly? Jan 4, 2014 at 14:34
• @highsciguy No, you misunderstand the syntax. Please read the documentation for Accuracy. Jan 4, 2014 at 14:47

I think your reasoning about the numbers you want to plot is flawed. Let's make a simple example

15

(* 1.0000 *)


If you specify the accuracy like that, you say that you are uncertain of the digits that could possibly follow after 1.0000. Therefore, if you have an Accuracy of 5 and there are some digits after the zeroes, they are not taken into account

1.00001115 - 1.00000005
1.00001235 - 1.00001115

(* 0.*10^-5
0.*10^-5
*)


Both calculation give 0 with an accuracy of 5. It doesn't matter whether there are further digits.

In your example you are basically telling that you have two zeroes. The only difference is that you have different numbers of digits you are certain of. Therefore, plotting or even rescaling is useless, because you just don't know a specific difference between the numbers.

Rescale[{027.698970004336022, 027.698970004336015}]

(* {0, 0} *)


I hope this helps you understand why plotting does not work as you might have expected it.

### Edit

Is 27.698970004336015 the fractional accuracy?

Yes, you are right and you might want to look at the Input Syntax Tutorial in the documentation. Let me cite from there

The precision or accuracy s can be any real number; it does not need to be an integer.

• Thanks, I understand the notation 1.00001115, but in 027.698970004336015, what is the meaning of the digits after the dot? Is 27.698970004336015 the fractional accuracy? I don't find an example of this sort in the documentation of Accuracy Jan 4, 2014 at 15:01
• @highsciguy I updated my answer. Jan 4, 2014 at 15:18
• Ok, thanks that confused me, even though I knew that there are fractional accuracies. Jan 4, 2014 at 15:24
• The precision and accuracy are represented as real numbers, though in this case the difference between them is not significant. This is because Mathematica uses pseudo-first-order error propagation, so this value represents something like a derivative. But, ultimately, it is not a continuous scale, since calculations must be done with a particular number of base-2 digits of precision, rather than in some abstract base. Jan 4, 2014 at 19:54