Re: Min-MaxPrecision?
- To: mathgroup at smc.vnet.net
- Subject: [mg115768] Re: Min-MaxPrecision?
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Thu, 20 Jan 2011 06:30:03 -0500 (EST)
Block had nothing to do with it.
In the block you subtracted 0.00000000000000000000000000000001`32, but in
the other code you subtracted 0.0000000000000000000000000000001.
Switching them about gives
$MinPrecision = $MaxPrecision = 32;
var = 1 - 0.00000000000000000000000000000001`32;
N[var, 32] // RealDigits
{{9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9}, 0}
Block[{$MinPrecision = 32, $MaxPrecision = 32},
1 - 0.0000000000000000000000000000001] // RealDigits
{{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 1}
The two subtracted objects are not identical:
0.0000000000000000000000000000001 === 0.00000000000000000000000000000001`32
False
and their precisions are different:
Precision /@ {0.0000000000000000000000000000001,
0.00000000000000000000000000000001`32}
{MachinePrecision, 32.}
Bobby
On Wed, 19 Jan 2011 04:25:57 -0600, Marco Masi <marco.masi at ymail.com>
wrote:
> I would like to run a program that makes always quad precison
> calculations in all variables. I thought Mathematica would do that
> internally by setting $MinPrecision = $MaxPrecision = nrd, with nrd the
> number of digits. However, if I try
>
> $MinPrecision = $MaxPrecision = 32;
> var = 1 - 0.0000000000000000000000000000001;
> N[var, 32]
>
> I get 1. Whereas I expected 0.9999999999999999999999999999999
>
> Block seems to do the job. In fact
>
> Block[{$MinPrecision = 32, $MaxPrecision = 32},
> 1 - 0.00000000000000000000000000000001`32]
>
> gives 0.99999999999999999999999999999999.
>
> But that's not very useful in my case because I would like to run a long
> program and can't apply it on all variables. Ideally I need something
> like
>
> Block[{$MinPrecision = 32, $MaxPrecision = 32},
> ....... var in long program with zillions of calculations.....]
>
> And after execution know what exactly var is to 32 digits precision and
> Exporting it to file with that precision. If I type var, or N[var,32] it
> will output only with the default 15 digits. Export will consequently do
> the same.
>
> Can anyone help?
>
> Marco.
>
--
DrMajorBob at yahoo.com