Re: Patterns with conditions
- To: mathgroup at smc.vnet.net
- Subject: [mg116918] Re: Patterns with conditions
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Fri, 4 Mar 2011 03:40:37 -0500 (EST)
tab = {0, 1/3, 1/2, 2/3, 1, 4/3, 5/3, 2 }; ClearAll[sinc] SetAttributes[sinc, Listable] sinc[x_ /; x == 0] := 1; sinc[x_] := Sin[Pi x]/(Pi x); sinc[tab] == Sinc[Pi tab] True ClearAll[sinc] sinc[x_ /; x == 0] := 1; sinc[x_] := Sin[Pi x]/(Pi x); sinc[x_List] := sinc /@ x; sinc[tab] == Sinc[Pi tab] True Bob Hanlon ---- "=C5 er=C3=BDch Jakub" <Serych at panska.cz> wrote: ========================== Dear Mathematica group, I'm playing with function definitions and patterns based multiple definition of the function. I have defined this function: sinc[x_ /; x == 0] := 1; sinc[x_] := Sin[\[Pi] x]/(\[Pi] x); (I know, that Mathematica has Sinc function defined, it's just the test.) It works fine for let's say sinc[\[Pi]], even for sinc[0]. But if I define the table: tab = {0, \[Pi]/3, \[Pi]/2, \[Pi] 2/3, \[Pi], \[Pi] 4/3, \[Pi] 5/3, 2 \[Pi]}; and I let my function evaluate the results sinc[tab], it returns error messages: Power::infy: Infinite expression 1/0 encountered. >> and Infinity::indet: Indeterminate expression 0 ComplexInfinity encountered. >> I can understand, that "tab" doesn't fit to pattern condition /; x==0, also I know, that it is possible to Map my function to table Map[sinc, tab] and it works fine. I can imagine solution with IF[x==0,1, Sin[\[Pi] x]/(\[Pi] x), but my question is: Is it possible to make my function fully Listable using just pattern conditions? Thanks for responses Jakub P.S. Code in one block for easy copying: sinc[x_ /; x == 0] := 1; sinc[x_] := Sin[\[Pi] x]/(\[Pi] x); tab = {0, \[Pi]/3, \[Pi] 2/3, \[Pi], \[Pi] 4/3, \[Pi] 5/3, 2 \[Pi]}; sinc[\[Pi]] sinc[0] sinc[tab] Map[sinc, tab]