Re: Mathematica <-> fortran

*To*: mathgroup at smc.vnet.net*Subject*: [mg9156] Re: Mathematica <-> fortran*From*: Paul Abbott <paul at physics.uwa.edu.au>*Date*: Thu, 16 Oct 1997 03:37:57 -0400*Organization*: University of Western Australia*Sender*: owner-wri-mathgroup at wolfram.com

hashemi at sun.iust.ac.ir wrote: > I would like to know if there is any way to call mathematica > functions (like Bessel Functions) from a FORTRAN program and vice-versa (i.e., > to use mathematica to compute some functions in my own FORTRAN program). If you are using Unix you could use InterCall. See below for more information. InterCall is a Mathematica package designed to make it easy to link Mathematica and fortran. See http://www.wolfram.com/~terryr/ > Also, is there anyway to compute Mathieu, Weber, and Spheroidal functions of > complex argument using mathematica and subsequently use these values in our > FORTRAN code? Mathieu functions of complex argument are built-in to Version 3.0: In[1]:= ?MathieuC "MathieuC[a, q, z] gives the even Mathieu function with characteristic value a and parameter q." In[2]:= ?MathieuS "MathieuS[a, q, z] gives the odd Mathieu function with characteristic value a and parameter q." Yn(z) is referred to as the Bessel function of the second kind, the Weber function, or the Neumann function (denoted Nn(z)). BesselY is built-in. Spheroidal harmonics are not built-in. However, last year I wrote some Mathematica code for computing the (angular prolate) spheroidal harmonics by expanding the solutions to the differential equation into a basis of associated Legendre functions. This code is short and computationally quite efficient and appeared in The Mathematica Journal, 7(1): 18-22. You could use InterCall or MathLink to call Mathieu or Weber functions from fortran code. Cheers, Paul ____________________________________________________________________ Paul Abbott Phone: +61-8-9380-2734 Department of Physics Fax: +61-8-9380-1014 The University of Western Australia Nedlands WA 6907 mailto:paul at physics.uwa.edu.au AUSTRALIA http://www.pd.uwa.edu.au/~paul God IS a weakly left-handed dice player ____________________________________________________________________ _______________________________________________________________________________ I n t e r C a l l What is InterCall? InterCall is a Mathematica package that provides: o easy access to all the routines in the NAG, IMSL, LINPACK, MINPACK and ITPACK subroutine libraries. o interactive access to any other library or user-written code. o straightforward declaration of default settings for arguments in external routines. With InterCall you can: o import routines written in Fortran, C, or Pascal and call them as if they were Mathematica functions. o call external routines on a remote computer. o develop and test the robustness and correctness of external libraries. o write your own interface to other external libraries. Why Use InterCall? o To extend the type of problems that Mathematica can solve. o The full scope of routines in standard numerical libraries become available to Mathematica users. o Intelligent defaults are supplied automatically by InterCall when you call an external routine. o Inspecting and modifying defaults is simple and uses commands named GetDefault and SetDefault. o Independent documentation, for calling external routines from within Mathematica, is not required. Who Should Use InterCall? o Anyone whose work involves numeric processing and who wants Mathematica's ease of use. o Mathematica users who need to access numerical libraries on a remote machine. o Current users of numerical libraries who want a simple development environment. o Teachers of courses such as numerical methods. o Engineers, scientists, economists, physicists, mathematicians, statisticians etc. How Does One Use InterCall? Loads the InterCall package In[1]:= <<InterCall`; Load the numerical library databases In[2]:= <<InterData`; Import IMSL's dqdag integration routine In[3]:= GetDefault[dqdag ] The ouput indicates the calling syntax Out[3]= dqdag[$F_, $A_, $B_] -> $RESULT Integrate Sin[x] from x = 0 to x = Pi In[4]:= dqdag[ Sin[#]&, 0, Pi ] using IMSL. Out[4]= 2. Import IMSL's devasb routine for finding In[5]:= GetDefault[ devasb ] eigenvalues of a band-symmetric matrix. Out[5]= devasb[$A_] -> $EVAL Define a band-symmetric matrix. In[6]:= matrix = {{0,-1,-1,-1,-1,-1}, {1,2,3,4,5,6}}; Find the three smallest eigenvalues. In[7]:= devasb[ matrix, (NEVAL is documented in the IMSL manual) $NEVAL ->3] Out[7]= {0.25380682011337, 1.7894724116954, 2.964906355386} InterCall completely integrates the symbolic capabilities of Mathematica with the numeric routines of any external library. You can pass a Mathematica function, array, or any other expression, as an argument to any external routine and InterCall will send the correct type of information to that external routine. System Requirements: InterCall runs under Mathematica version 3, and requires a Unix kernel or a Macintosh with a TCP/IP network connection. Remote drivers to access external code on a remote computer are available for Alliant, CrayC90, CrayYMP, CM2sun, CM5sun, Convex, DEC, HP9000, HP9000_RISC, HP9000S700, IBMRS6000, NeXT, Sequent,SGI, Solaris, SPARC, VAX, VP. A driver for DEC Alpha (OSF) is under development. InterCall includes: o all the files needed to run InterCall on your computer. o various remote drivers (available upon request) o a detailed TeX manual describing how to use InterCall with Notebook examples InterCall is distributed by a number of methods: Educational Commercial/Government o email/ftp with TeX manuals $275 $475 o email/ftp with manuals sent by post $300 $500 o tar or Mac formatted disk $315 $515 with printed manuals sent by post o full installation done by rlogin $375 $575 via internet - printed manuals post For more information on InterCall, please contact: Analytica PO Box 522 Nedlands, WA 6909 Australia Phone/Fax +61 8 9386 5666 Email: john at analytica.com.au WWW: http://www.analytica.com.au/ InterCall was developed by: Dr. Terry Robb Wolfram Research _______________________________________________________________________________