       Re: multiple outputs from compiled function

• To: mathgroup at smc.vnet.net
• Subject: [mg114368] Re: multiple outputs from compiled function
• From: Daniel Lichtblau <danl at wolfram.com>
• Date: Thu, 2 Dec 2010 05:40:17 -0500 (EST)

```Eric Michielssen wrote:
> Thanks for the suggestion.
>
> I was thinking more about a routine that populates a huge sparse matrix, say
> for finite element analysis. SparseArray does not work within Compile, and
> that's understandable.
>
> So the next best thing would be to have a compiled function generate a long
> list of positions ( pos = {pos1,pos2,pos3...} with posi = {n1,n2} ) and a
> list of values ( val = {val1,val2,val3,...} ), and then construct the
> SparseArray externally to a compiled function.
>
> But how do I get my compiled function to return both pos and val? Upon
> reaching Return[{pos,val}], Mathematica reverts to the noncompiled function,
> in essence starting over from scratch. (I can only think of a few not so
> elegant solutions, none of which would apply in situations more complex than
> the above).
>
> Eric

Seems weird, but you might just do the setting via external variable(s).
Here is a brief example. Notice that the list 'll' is not defined within
Compile, but it is used in a Part assignment therein.

In:= ll = {2., 3., 4.};

In:= c = Compile[{{x}, {y}}, ll[] = x; y];

In:= c[4.5, 5.6]
Out= 5.6

In:= ll
Out= {4.5, 3., 4.}

Daniel Lichtblau
Wolfram Research

```

• Prev by Date: Re: How to evaluate the Laplacian of a function as a function?
• Next by Date: Re: Re-virginating Manipulates?
• Previous by thread: Re: multiple outputs from compiled function
• Next by thread: Re: multiple outputs from compiled function