MathGroup Archive 2000

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

Search the Archive

Re: Malfunction of Position or where am I wrong?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg24566] Re: Malfunction of Position or where am I wrong?
  • From: "Mark Reeve" <msreeve at earthlink.net>
  • Date: Tue, 25 Jul 2000 00:56:02 -0400 (EDT)
  • References: <8jtf2c$ijp@smc.vnet.net> <8l3dsg$kdb@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Actually, let me correct myself and say that the problem appears to be when
the function IS compiled, not when it isn't.  By default Mathematica
compiles for over 100 elements and that's where the problem seems to lie.

-Mark

Mark Reeve <msreeve at earthlink.net> wrote in message
news:8l3dsg$kdb at smc.vnet.net...
> 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
> >
> >
>
>



  • Prev by Date: Re: More about l`Hopital`s rule
  • Next by Date: Manipulating Slot objects in Compile
  • Previous by thread: Re: Malfunction of Position or where am I wrong?
  • Next by thread: unexpected Simplify[] ouput