MathGroup Archive 2000

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

Search the Archive

RE: Re: Manipulating Slot objects in Compile

  • To: mathgroup at smc.vnet.net
  • Subject: [mg24687] RE: [mg24604] Re: Manipulating Slot objects in Compile
  • From: Wolf Hartmut <hwolf at debis.com>
  • Date: Fri, 4 Aug 2000 01:19:09 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

my answer interspersed at [Hartmut Wolf]  


> -----Original Message-----
> From:	Jens-Peer Kuska [SMTP:kuska at informatik.uni-leipzig.de]
To: mathgroup at smc.vnet.net
> Sent:	Tuesday, August 01, 2000 1:15 PM
> To:	Wolf Hartmut
> Cc:	mathgroup at smc.vnet.net
> Subject:	Re: [mg24604] Re: Manipulating Slot objects in Compile
> 
> Hello,
> 
> 
> first of all there should be parenthesis arround  the replacements
> 
> c = Compile @@ ({{{cArg, _Real, 1}}, Hold @@ {grad /. rules}} /. 
>           Hold[a_Part] :> a /. Hold[a_] :> Unevaluated[a])
> 
> c[[3]]
> 
> {0, 4, 11, 0, 2}
> 
> 
> and 
> 
> c[{2, 3}]
> 
> {108., 108.}
> 
> the parenthesis are lost while collecting the steps. :-(
> But my original answer had a assigment step.
> 
[Hartmut Wolf]  

Sorry, Jens, I should have seen that!
  
> Here is my first reply:
> 
> >>
[Hartmut Wolf]  
-- I omit it here, it's published --
> >>
> 
> Your solution must explicit switch off the 
> error messages of Part[cArg,i].
> One task was just to avoid the explicit Off[Part::"partd"]
> because there is no save way to switch it on again.
> Since there is no way to find out if the message was prevoiusly on or
> off,
> you cant just say On[Part::"partd"]. That's  why my solution
> was not so simple as yours.
> 
[Hartmut Wolf]  

There is a way to do that, regard:

In[7]:= Clear[cArg]

In[8]:= On[Part::"partd"]

In[9]:= wasOn = Check[cArg[[1]]; False, True, Part::"partd"]
>From In[9]:=
Part::"partd": "Part specification \!\(cArg \[LeftDoubleBracket] 1 \
\[RightDoubleBracket]\) is longer than depth of object."
Out[9]= True

In[10]:= Off[Part::"partd"]
In[11]:= Check[cArg[[1]]; False, True, Part::"partd"]
Out[11]= False

In[12]:= If[wasOn, On[Part::"partd"]]

In[13]:= Check[cArg[[1]]; False, True, Part::"partd"]
>From In[13]:=
Part::"partd": "Part specification \!\(cArg \[LeftDoubleBracket] 1 \
\[RightDoubleBracket]\) is longer than depth of object."
Out[13]= True


Kind regards, Hartmut



  • Prev by Date: Package naming
  • Next by Date: Re: Mathematica in University introductory physics courses
  • Previous by thread: RE: A simple problem
  • Next by thread: Re: Re: Manipulating Slot objects in Compile