MathGroup Archive 1997

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

Search the Archive

RE: Domain of a function

  • To: mathgroup at
  • Subject: [mg8343] RE: [mg8225] Domain of a function
  • From: Ersek_Ted%PAX1A at
  • Date: Tue, 26 Aug 1997 02:22:36 -0400
  • Sender: owner-wri-mathgroup at

John Jowett wrote:

| Hello, I would like to extract the set of values on which a function is
| defined.
|I would like something
|that returns just the list {1,2}, ie, the domain or set of values for
|which the function has been explicitly defined.

Lets make an example (a little more complicated than John's example):

In[1]:=  f[1]=Sin[1];
             f[q_Rational] := Sin[Numerator[q]];
             f[n_?Negative] := Sin[-n];

(*   Lets look at the FullForm of the first DownValue.    *)

In[2]:=  FullForm[ Part[ DownValues[f], 1 ]]

Out[2]//  FullForm=
              RuleDelayed[ HoldPattern[ f[1] ], Sin[1] ]

(* It took a little tinkering, but I found that the code below works:  *)
(* The FullForm above helps explain why it works.  *)

In[3]:=  Domain[funct_]:=
              DownValues[funct] /. RuleDelayed[x_,_] :> First[First[x]]

(*  Now we try it out.  *)

In[4]:=  Domain[f]

Out[4]=  {1, 2, q_Rational, n_?Negative}

(* I wanted to get rid of the Blanks and stuff.  *)
(* Unfortunately I couldn't find an concise implementation.  *)

In[5]:=  Domain[funct_]:=Module[{temp,patts, pattest},
              temp=DownValues[funct]/.  RuleDelayed[x_,_]:>First[First[x]];

              t1=Select[temp, Head[#]==Pattern&];
              t2=Select[temp, Head[#]==PatternTest&];
              t2=Map[Part[#,2]&, t2];

In[6]:=  Domain[f]

Out[6]=  {1, 2, Rational, Negative}

(* Now that looks pretty good.  *)
(* Maybe some of the experts will find a better implementation.   *)

                       (***  Ted Ersek  ***)

  • Prev by Date: Re: method used in NonlinearFit
  • Next by Date: Sum[1/(n^2 +n+1)^2,{n,1,p}]
  • Previous by thread: Front end quirks
  • Next by thread: Sum[1/(n^2 +n+1)^2,{n,1,p}]