Re: multiple outputs from a function

• To: mathgroup at smc.vnet.net
• Subject: [mg52787] Re: [mg52753] multiple outputs from a function
• From: "David Park" <djmp at earthlink.net>
• Date: Mon, 13 Dec 2004 04:22:44 -0500 (EST)
• Sender: owner-wri-mathgroup at wolfram.com

```Ben,

Just output a list.

squareandcube[x_] := {x^2, x^3}

If you want to further use the results you can use the function this way.

{x2, x3} = squareandcube[5]
{25, 125}

x3/x2
5

For a complicated calculation you can use a Module, assemble the various
results and then return them in a list.

f[x_]:=
Module[{result1, result2, result3},
result1 = (calculation);
result2 = (calculation);
result3 = (calculation);
{result1, result2, result3}]

Setting some of the results as a side effect is probably a poor method.

David Park

From: Ben Barrowes [mailto:barrowes at alum.mit.edu]
To: mathgroup at smc.vnet.net

I feel I must be missing something fundamental...

How do you write a function (or ?) in Mathematica which produces more
than one output?

Let's say I have some data and I want a single function to calculate the
mean, variance, std, etc, more than one thing and return those? I know
that there are builtin functions for those parameters, but the point is
I want to define functions with more than one output.

The only examples I can find are along the lines of:

f[x_,y_]:=x^2+y^2;

which have only a single result.

Is there a different structure altogether, such as a Subroutine, which
allows multiple results from a single subunit?

One thought I had was that because Mathematica treats everything as
global unless defined specifically local (e.g. in a module), that
variables used in a procedure would be accessible and would thus be a
"result", but it seems scoping problems would arise if this was used too
often. For example:

In[67]:=
t1[x_,y_]:=(a1=x^2+y;a2=x+y^2;x+y)

In[68]:=
t2=t1[5,6]

Out[68]=
11

In[69]:=
a1

Out[69]=
31

In[70]:=
a2

Out[70]=
41

Is this the accepted method for extracting multiple results from one
function definition?

Ben Barrowes

```

• Prev by Date: Re: Bug in 5.1,Linux, GUIKit?
• Next by Date: Re: Solve Feature?
• Previous by thread: Re: multiple outputs from a function
• Next by thread: Re: multiple outputs from a function