MathGroup Archive 2007

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

Search the Archive

Re: Rule and Module not working together

  • To: mathgroup at smc.vnet.net
  • Subject: [mg77920] Re: [mg77864] Rule and Module not working together
  • From: Carl Woll <carlw at wolfram.com>
  • Date: Tue, 19 Jun 2007 07:01:16 -0400 (EDT)
  • References: <200706181107.HAA19846@smc.vnet.net>

Steven Siew wrote:

>On Mathematica 5.2, I tried to write a function which applies the rule
>Log[A_] + Log[B_] -> Log[A * B] but somehow it does not work as I
>expected.
>  
>

Use Log[A_] + Log[B_] :> Log[A B] instead.

On another note, there is no need to use Return in your code below. The 
last expression in a Module is automatically returned.

Carl Woll
Wolfram Research

>Instead of Log[f] + Log[g] becoming Log[f * g], I get the result of
>Log[666 * f] even though I have marked both A and B as private
>variables.
>
>Can anyone help? I'm sure I made a big mistake somewhere in my
>understanding of Mathematica.
>
>
>
>In[1]:= AppendTo[$Echo,"stdout"]
>Out[1]= {stdout}
>
>In[2]:= (* Write your mathematica code below *)
>
>In[3]:= If[Length[Names["Global`*"]] > 0, Remove["Global`*"]]
>
>In[4]:= Off[General::spell, General::spell1]
>
>In[5]:= myfunc[x_] := Module[{s, A, B},
>   s = {Log[A_] + Log[B_] -> Log[A*B]}; Return[x /. s]]
>
>In[6]:= ? myfunc
>Global`myfunc
>
>myfunc[x_] := Module[{s, A, B}, s = {Log[A_] + Log[B_] -> Log[A*B]};
>     Return[x /. s]]
>
>In[7]:= B = 666;
>
>In[8]:= myfunc[Log[f] + Log[g]]
>
>Out[8]= Log[666 f]
>
>In[9]:= myfunc[Log[4] + Log[5]]
>
>Out[9]= Log[2664]
>
>In[10]:= (* End of mathematica code *)
>
>In[11]:= Quit[];
>
>  
>



  • Prev by Date: Re: Mathematica 6.0 not running in Fedora 7?
  • Next by Date: Re: Indefinate integrals, erroneus Natural log?
  • Previous by thread: Rule and Module not working together
  • Next by thread: Re: Rule and Module not working together