|
[Date Index]
[Thread Index]
[Author Index]
Re: N[] does not work inside Replace[] ?
- To: mathgroup at smc.vnet.net
- Subject: [mg53197] Re: [mg53185] N[] does not work inside Replace[] ?
- From: "David Park" <djmp at earthlink.net>
- Date: Tue, 28 Dec 2004 23:12:16 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Yehuda,
I don't understand why you don't just use the following...
s = Rule[a, 10/3]
% // N
a -> 10/3
a -> 3.33333
But if you want a Rule to change a Rule you have to use a delayed Rule.
s /. (x_ -> y_) :> x -> N[y]
a -> 3.33333
David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/
From: yehuda ben-shimol [mailto:benshimo at bgu.ac.il]
To: mathgroup at smc.vnet.net
Hi,
I just found a small but annoying problem with operating N[] inside a
replace rule
s was actually part of an answer I got from Solve[] and I wanted to
leave the Rule, but change the right hand side to a machine real number.
A reduced form of the problem is given below. I'm using version 5.0.0
(ver 5.1 is on the way ... )
s = Rule[a, 10/3]
and the output is
a->10/3
case 1:
now use a replace rule with N[]
s /. Rule[x_, y_] -> Rule[x, N[y]]
and the result is still a->10/3
case 2:
using some other header in place of N[]
s /. Rule[x_, y_] -> Rule[x, g[y]]
and the results is as expected
a->g[10/3]
Trying to convert the second argument to a machine real number in
different way
case 3:
s /. Rule[x_, y_] -> Rule[x, 1. y]
results with
a -> 3.33333
as expected.
Using Trace[] for the three cases reveals that N[y] is replaced by y
very early in the evaluation process, so it explains this unexpected
behavior.
I tried then a simpler example
b=Range[5]/3
and then tried the same replacement idea
b/.x_Rational->N[x]
and still the results leave the rational numbers unchanged
but with the b/.x_Rational->g[x] or b/.x_Rational->1.0 * x Mathematica
works as expected.
So, again, is this a bug? If it is so in version 5.0.0, does it still
exists in version 5.1?
Thanks in advanced
yehuda
Prev by Date:
Re: shuffling 10^8 numbers
Next by Date:
Re: shuffling 10^8 numbers
Previous by thread:
Re: N[] does not work inside Replace[] ?
Next by thread:
Re: N[] does not work inside Replace[] ?
|