Re: Compile function and AppendTo for lists (vrs. 8.0.4)
- To: mathgroup at smc.vnet.net
- Subject: [mg124689] Re: Compile function and AppendTo for lists (vrs. 8.0.4)
- From: Patrick Scheibe <pscheibe at trm.uni-leipzig.de>
- Date: Tue, 31 Jan 2012 05:39:59 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Hi Fred,
some short notes:
> appendBag2a = Compile[{{k, _Integer, 0}}, Module[{p = Bag[Most[{0}]]},
> Do[StuffBag[p, Bag[{1, i}]], {i, 1, k}];
> Table[BagPart[BagPart[p, i], All], {i, 1, k}]]];
>
> That works fine and fast,
But look that your type p is clearly wrong. p is a bag of bags of
Integer and has to be initialized with
Internal`Bag[Most[{Internal`Bag[{1}]}]]
We can only guess about the reasons why it works anyway. If it is
implemented with pointers, than it seems the integers of your p-Bag are
used to store the pointers.
> The problem seems to be the initialization of the
> locale variable p. I tried compilation with the definitions p=Bag[],
> p=Bag[{}], p=Bag[Rest[{0}]], p=Bag[Rest[{{0,0}}]], or e.g.
Now you know how.
Cheers
Patrick