How to compile this module?
- To: mathgroup at smc.vnet.net
- Subject: [mg80882] How to compile this module?
- From: P_ter <peter_van_summeren at yahoo.co.uk>
- Date: Wed, 5 Sep 2007 02:41:12 -0400 (EDT)
Hello,
I have some code in a Module and I would like to compile it so that Mathematica does not give complaints in execution:
myM[lst_, W_] := Module [ {i, j = 1, len = Length@lst, res},
Reap[For[i = 1, i <= len, i++,
While[lst[[j]] - lst[[i]] <= W && j < len, j++];
Sow[j - i]]; res]
]
It works on this special constructed list (with a large number at the end):
lst = {1, 2, 4, 5, 6, 9, 10, 12, 15, 1000};
The following is compiled by Mathematica:
myC = Compile[{{lst, _Integer}, {W, _Integer}},
Module [ {i, j = 1, len = Length@lst, s, res},
Reap[For[i = 1, i <= len, i++,
While[lst[[j]] - lst[[i]] <= W && j < len, j++];
Sow[j - i]]; res]
], {{res, _Integer, 4}}
]
If Mathematica executes: myC[lst,2], it gives a message that the argument lst at position 1 should be a machine-size integer.
Can anyone help?
with friendly greetings,
P_ter