Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: SetPrecision vs N

  • To: mathgroup at smc.vnet.net
  • Subject: [mg71696] Re: [mg71683] SetPrecision vs N
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Mon, 27 Nov 2006 04:03:57 -0500 (EST)
  • References: <200611260849.DAA14687@smc.vnet.net>

On 26 Nov 2006, at 17:49, Andrew Moylan wrote:

> Hi all,
>
> Suppose I want to evaluate an expression at a given precision. What is
> the difference between using N[expr, precision] and using
> SetPrecision[expr, precision]?
>
> I've noticed that SetPrecision seems to be equivalent even in such
> situations as e.g. N[Integrate[...]] automatically calling
> NIntegrate[...] when the integral can't be done exactly:
>
> SetPrecision[Integrate[x^x, {x, 0, 1}], 20]
>   and
> N[Integrate[x^x, {x, 0, 1}], 20]
>   both give
> 0.78343051071213440706
>
> Are there important differences between SetPrecision and N that I
> should be aware of?
>
> Cheers,
> Andrew
>


They are actually completely different (though sometimes the effect  
may look the same). N[expr,p] computes expression to precision p. If  
expr is an exact expression Mathematica uses significance arithmetic  
to determine what precision it should use for the input to give you  
the output with p digits of precision. SetPrecison does nothing but  
simply changes the precision of expression to p, either by padding it  
with 0 or truncating. To see the difference just compare these two  
examples:


SetPrecision[2.2, 20]

2.20000000000000017763568394002504646778`19.999999999999996

2.2 was (essentially) padded to precision of around 20.


N[2.2, 20]

2.2

Nothing changed because N cannot compute a machine precision number  
with extended precision.

Here is a different example:


x = N[Pi - 22/7, 2]

-0.0012644892673496187`1.9999999999999998


y = SetPrecision[Pi - 22/7, 2]


0``1.2017327387937378


Precision/@{x,y}

{2.,0.}

Here x is the value of Pi - 22/7 computed to give you two significant  
digits, whereas y has actually precision 0, because what it does is  
this: SetPrecision[Pi, 2] - SetPrecision[22/7, 2], which for obvious  
reasons has precision 0.

Andrzej Kozlowski

Tokyo, Japan



  • Prev by Date: FindRoot with CDF inside
  • Next by Date: Re: Word permutations - frustrated by lists.
  • Previous by thread: SetPrecision vs N
  • Next by thread: Re: SetPrecision vs N