MathGroup Archive 2007

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

Search the Archive

Re: Letting functions not evaluate

  • To: mathgroup at smc.vnet.net
  • Subject: [mg79486] Re: [mg79416] Letting functions not evaluate
  • From: DrMajorBob <drmajorbob at bigfoot.com>
  • Date: Fri, 27 Jul 2007 06:05:46 -0400 (EDT)
  • References: <16001744.1185445456705.JavaMail.root@m35>
  • Reply-to: drmajorbob at bigfoot.com

Pattern matching absolutely will do this:

Clear[g]
g[x_, y_] /; IntegerQ[x y] := Mod[10, x*y]
g[2, 1/2]

   0

g[2, 1/3]

   g[2, 1/3]

Bobby

On Thu, 26 Jul 2007 04:33:19 -0500, Josh Burkart <jburkart at ucdavis.edu> 
wrote:

> Say I have a function f[x], and, for certain values of the argument x, I  

> don't want it to evaluate to anything. E.g., say
>
> f[x_]:=Mod[10,x],
>
> and if x is not an integer, then I want f[x] to yield simply f[x]. One 
> way to achieve this is through pattern matching, i.e.,
>
> f[x_Integer]:=Mod[10,x]
>
> Although this works perfectly in this example, it is somewhat limited.  
> For instance, if I have a function taking two arguments and I want to 
> perform some check on both arguments together to see whether the  
> function should evaluate or not, pattern matching won't work. E.g.,
>
> g[x_,y_]:=Mod[10,x*y]
>
> only if x*y is an integer (even if x and y individually aren't  
> integers). I think there's some way to do this more generally than  
> pattern matching, since for instance if I enter
>
> In[11]: Integrate[Gamma[x]^5,x]//FullForm
> Out[11]//FullForm= Integrate[Power[Gamma[x],5],x]
>
> Mathematica just returns the input unevaluated after taking a little  
> time to decide it's not resolvable. Anyone know how to do this? Using an  
> If[] statement doesn't work, since
>
> In[1]:= f[x_]:=If[IntegerQ[x], Mod[10, x], f[x]]
> In[4]:= f[3]
> Out[4]= 1
> In[3]:= f[3.3]
> During evaluation of In[3]:= $IterationLimit::itlim: Iteration limit of  
> 4096 exceeded. >>
> Out[3]= Hold[f[3.3]]
>
> results in infinite recursion. HoldForm[] and Defer[] also produce  
> somewhat dissatisfactory results, since the FullForm[] of what they  
> return is actually HoldForm/Defer[blah blah].
>
>



-- 

DrMajorBob at bigfoot.com


  • Prev by Date: Re: Volterra Equation?
  • Next by Date: Re: Re: Cyclic permutations
  • Previous by thread: Re: Letting functions not evaluate
  • Next by thread: Re: Letting functions not evaluate