Re: Strange bug
- To: mathgroup at smc.vnet.net
- Subject: [mg53285] Re: Strange bug
- From: Peter Pein <petsie at arcor.de>
- Date: Tue, 4 Jan 2005 03:13:32 -0500 (EST)
- References: <crb40r$akl$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Steve Gray wrote:
> I have procedural function "ordermat." It works ok if the next-to-last (useless) line is there but
> if I remove that one line, I get error messages due to the last line, at execution time:
>
> Set::write: Tag Times in Null\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \[LeftSkeleton]1\
> \[RightSkeleton]} is Protected.
>
> ("intersect" returns a small integer and computes "tafr.")
>
> I've seen bugs like this before. I'm using 5.0.1.0 with Windows. Any clues? Thanks in advance.
>
> Steve Gray
>
>
>
> ordermat[gon_] := Module[{row, rx, cx},
> gonl = Length[gon];
> matx = Table[0, {i, 1, gonl}, {j, 1, gonl}];
> gona = Join[gon, gon];
> For [ rx = 1, rx <= gonl, rx++,
> row = Table[0, {2*gonl}];
> row[[rx]] = 1;
> row[[rx + 1]] = 2;
> ab = gona[[rx]];
> ae = gona[[rx + 1]];
> For [ cx = 1, cx <= gonl - 3, cx++,
> bb = gona[[cx + rx + 1]];
> be = gona[[cx + rx + 2]];
> int = intersect[ab, ae, bb, be];
> If [ int == 3, row[[cx + rx + 1]] = tafr + 1];
> ]
> rx; (* Error unless some expression is here.?? *)
> matx[[rx]] = Table[Max[row[[i]], row[[i + gonl]]], {i, gonl}];
> ]
> ]
>
Hi Steve,
removing "rx" while leaving the semicolon should do it. Without
semicolon Mathematica tries to assign Table[Max...] to the product
"For[..]matx[[rx]]" - or to Null*matx[[rx]], depending on the presence
of a \n between For.. and matx.
Peter
--
Peter Pein
Berlin