       Re: Set::setraw error

• To: mathgroup at smc.vnet.net
• Subject: [mg90363] Re: Set::setraw error
• From: David Reiss <dbreiss at gmail.com>
• Date: Mon, 7 Jul 2008 05:07:35 -0400 (EDT)
• References: <g4q9kl\$e6o\$1@smc.vnet.net>

```In statements like a=-a, when the value of a is substituted, you are
attempting to, vor example, evaluat things like

1=-1

which is what is generating your error message.

Some other small suggestions.  Use Throw and Catch rather than
Return .  You can also use a Which statement rather than the
successive If statements.

Hope this helps...

--David

On Jul 6, 7:17 am, Steven Siew <stevensi... at gmail.com> wrote:
> I have encountered this Set:setraw error for the code below.
>
> I'm stumped. Does anyone have any idea what went wrong?
>
> xgcd[a_,b_]:=Module[{xsign=1,ysign=1,x=1,y=0,r=0,s=1,c,q},
>     If[a == 0 && b == 0,Return[{0,0,1}]];
>     If[a == 0,Return[{Abs[b],0,b/Abs[b]}] ];
>     If[b == 0,Return[{Abs[a],a/Abs[a],0}]];
>     If[a<0,a=-a; xsign=-1];
>     If[b<0,b=-b; ysign=-1];
>     While[b\[NotEqual]0,
>       {c,q}={Mod[a,b],Quotient[a,b]};
>       {a,b,r,s,x,y}={b,c,x-q*r,y-q*s,r,s}
>       ];
>     Return[{a,x*xsign,y*ysign}]
>     ]
>
> xgcd[2, 3]
>
> \!\(\*
>   RowBox[{\(Set::"setraw"\), \(\(:\)\(\ \)\), "\<\"Cannot assign to
> raw \
> object \\!\\(2\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \
> ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \
> ButtonData:>\\\"Set::setraw\\\"]\\)\"\>"}]\)

```

• Prev by Date: Re: Parallelising NDSolve
• Next by Date: Extracting terms of a polynomial into a list and then multiply each
• Previous by thread: Set::setraw error
• Next by thread: Re: Set::setraw error