       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
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:= ?MathieuC
"MathieuC[a, q, z] gives the even Mathieu function with characteristic
value
a and parameter q."

In:= ?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.
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:= <<InterCall`;
Load the numerical library databases         In:= <<InterData`;

Import IMSL's dqdag integration routine      In:=  GetDefault[dqdag
]
The ouput indicates the calling syntax       Out=  dqdag[\$F_, \$A_,
\$B_] ->
\$RESULT

Integrate Sin[x] from x = 0 to x = Pi        In:=  dqdag[ Sin[#]&,
0, Pi ]
using IMSL.                                  Out=  2.

Import IMSL's devasb routine for finding     In:=  GetDefault[
devasb ]
eigenvalues of a band-symmetric matrix.      Out=  devasb[\$A_] ->
\$EVAL

Define a band-symmetric  matrix.             In:=  matrix =

{{0,-1,-1,-1,-1,-1},
{1,2,3,4,5,6}};

Find the three smallest eigenvalues.         In:=  devasb[ matrix,
(NEVAL is documented in the IMSL manual)                     \$NEVAL
->3]
Out=
{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

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
_______________________________________________________________________________

```

• Prev by Date: Re: Working with large data files (hundreds of megas)
• Next by Date: Re: ComplexExpand and FontSize
• Previous by thread: Re: Mathematica 2.2 sound export
• Next by thread: Re: ComplexExpand and FontSize