Re: How to define a routine to return multiple values

*To*: mathgroup at smc.vnet.net*Subject*: [mg49970] Re: How to define a routine to return multiple values*From*: Daniel Herring <dherring at at.uiuc.dot.edu>*Date*: Sun, 8 Aug 2004 05:37:58 -0400 (EDT)*References*: <cf221u$7p7$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Xiaoxun wrote: > In Mathematica, how to generate a function to return > multiple values simutaneously, for example, to return > a 3 by 3 tensor. Just as subroutine in Fortran.. Returning a list or matrix is quite straightforward. myFun[]:= Block[{myList,i,j}, (* Do stuff *) myList=Table[Random[],{i,3},{j,3}]; Return[myList]; ]; Print["Answer: ", MatrixForm[myFun[]]]; Frequently, I want to return several unrelated items. In these cases, I return a list of rules... myFun[x_]:= Block[{sgn,myList,i,j}, sgn=Sign[x]; myList=Table[Random[],{i,3},{j,3}]; Return[{VarSign->sgn,MyList->myList}]; ]; (* Store and use the results *) result=myFun[-5]; Print["Sign: ", VarSign/.result]; Print["List: ", MatrixForm[MyList/.result]]; There may be a better way of doing things, but this way is quite powerful. Later, Daniel