Re: On the built-in function "Compile"

• To: mathgroup at smc.vnet.net
• Subject: [mg90220] Re: On the built-in function "Compile"
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Wed, 2 Jul 2008 05:33:19 -0400 (EDT)
• Organization: The Open University, Milton Keynes, UK
• References: <g4d2ui\$eqv\$1@smc.vnet.net>

```shingo wrote:

<snip>

> However, in the case of nested list, it doesnt.
>
> In[2]:=
> testB = Compile[{{i, _Integer}},
>   Outer[{#1, #2} &, Range[1, i, 1], Range[1, i, 1]]]
>
> Out[2]:=
> Compile::cpapot: Compilation of \
> Outer[{#1,#2}&,Range[1,i,1],Range[1,i,1]] is not supported for the \
> function argument {#1,#2}&. The only function arguments supported are
> \
> Times, Plus, or List. Evaluation will use the uncompiled function. >>
> CompiledFunction[{i},Outer[{#1,#2}&,Range[1,i,1],Range[1,i,1]],-
> CompiledCode-]

This has *nothing* to do with nested lists.

The message you get tells you that Compile will compile the function
Outer[] if and only if the first argument of Outer[] is either one of
the functions Times, Plus, or List. Nothing else will be accepted.

In[1]:= testB =
Compile[{{i, _Integer}},
Outer[Times, Range[1, i, 1], Range[1, i, 1]]];
testB[3]

Out[2]= {{1, 2, 3}, {2, 4, 6}, {3, 6, 9}}

In[3]:= testB =
Compile[{{i, _Integer}},
Outer[Plus, Range[1, i, 1], Range[1, i, 1]]];
testB[3]

Out[4]= {{2, 3, 4}, {3, 4, 5}, {4, 5, 6}}

In[5]:= testB =
Compile[{{i, _Integer}},
Outer[List, Range[1, i, 1], Range[1, i, 1]]];
testB[3]

Out[6]= {{{1, 1}, {1, 2}, {1, 3}}, {{2, 1}, {2, 2}, {2, 3}}, {{3,
1}, {3, 2}, {3, 3}}}

Regards,
-- Jean-Marc

```

• Prev by Date: Re: Draw two functions in a graph, one of them does also have a parameter.
• Next by Date: Re: For loop problem in mathematica
• Previous by thread: Re: On the built-in function "Compile"
• Next by thread: Re: display Floor in StandardForm