Re: Malfunction of Position or where am I wrong?
- To: mathgroup at smc.vnet.net
- Subject: [mg24466] Re: Malfunction of Position or where am I wrong?
- From: "Mark Reeve" <msreeve at earthlink.net>
- Date: Wed, 19 Jul 2000 01:21:44 -0400 (EDT)
- References: <8jtf2c$ijp@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Shoot, looks like a bug -- but one which you can get around. The problem
appears to occur when you are mapping Position over 100+ elements. That is,
in your code below, parsimtst is a {595,2,3} array. This forces Map to not
compile its arguments because of the default SystemOption setting in
Mathematica:
In[87]:=
Developer`SystemOptions["MapCompileLength"]
Out[87]=
"MapCompileLength" -> 100
So when you Map something over this length it won't compile the function and
you get garbage:
In[101]:=
Last[Position[fullranktst, #] & /@ parsimtst]
Out[101]=
{{83902180, 35}}
And not only garbage but variable garbage -- try it a few times! However, if
you change MapCompileLength to 600:
In[88]:=
Developer`SetSystemOptions["MapCompileLength" -> 600]
Out[88]=
"MapCompileLength" -> 600
then everything works just fine:
In[90]:=
Last[Position[fullranktst, #] & /@ parsimtst]
Out[90]=
{{34, 35}}
which is correct. Does anyone at Wolfram know why not compiling the Mapping
function gets the wrong answers here?
-Mark
Wen-Feng Hsiao <d8442803 at student.nsysu.edu.tw> wrote in message
news:8jtf2c$ijp at smc.vnet.net...
> Dear listers,
>
> I try to use Position to obtain the positions for a lower or upper
> triangular elements of a matrix. The codes below do not work correctly.
>
> << DiscreteMath`Combinatorica`
> tst = Table[Range[i + 70, i + 72] , {i, 35}];
> (fullranktst = Outer[List, tst, tst, 1, 1]) // Dimensions
> (parsimtst = KSubsets[tst, 2]) // Dimensions
> Position[fullranktst, #] & /@ parsimtst
>
> However, when I modify the last line to inspect the first three elements:
>
> Position[fullranktst, #] & /@ parsimtst[[{1, 2, 3}]]
>
> , it outputs the correct answer. Why? Where am I missing?
>
> Wen-Feng
>
>