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