MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Linking my fortran subroutines with Mathematica

  • To: mathgroup at
  • Subject: [mg111316] Re: Linking my fortran subroutines with Mathematica
  • From: Patrick Scheibe <pscheibe at>
  • Date: Tue, 27 Jul 2010 04:18:09 -0400 (EDT)


I never wrote fortran but it shouldn't be too hard.
First the fortran-file "function.f90" with the content

real*8 function fortfunc(a,b)
real*8 a,b
end function fortfunc

Second the for the MathLink

#include "mathlink.h"

extern "C" double fortfunc_(double *a, double *b);

:Function:       multiply
:Pattern:        multiply[a_?NumericQ, b_?NumericQ]
:Arguments:      { a, b }
:ArgumentTypes:  { Real, Real }
:ReturnType:     Real

double multiply( double a, double b)
   return fortfunc_(&a, &b);

int main(int argc, char* argv[])
	return MLMain(argc, argv);

Compile the fortran file with

g95 -Wall -c function.f90

process the .tm file with the mprep program to create the .c file

mprep -o interface.c

compile the file and link it with the objectfile from your fortran code

g++ -I$mpath interface.c  function.o -L$mpath -lMLi3

Here $mpath contains the path to the MathLink compiler stuff. On my  
OSX this is


on a linux box the Mathematica root is usually under /usr/local/ 

Then you can start the executable

./a.out -linkname blub -linkmode listen

and use it inside a Mathematica session with e.g.

lnk = Install[LinkConnect["blub"]]
multiply[10.0, 11.0]

That's it.


Am Jul 26, 2010 um 1:06 PM schrieb Eduardo M. A. M.Mendes:

> Hi
> Many thanks.
> Won't you have an example?
> Cheers
> Ed
> -----Original Message-----
> From: Patrick Scheibe [mailto:pscheibe at]
> Sent: Sunday, July 25, 2010 10:35 PM
> To: emamm
> Cc: mathgroup at
> Subject: Re: [mg111250] Linking my fortran subroutines with  
> Mathematica
> Hi,
> just make a wrapper for your Fortran functions so you can call them  
> from
> C. Once this is done you can simply call them through the MathLink.
> You could start by compiling your Fortran functions into a .so or .dll
> or however the shared libraries are called on your OS. Then create a
> MathLink-template and call those functions from there..
> I really don't know how to explain this better since it is straight
> forward and you should have a running example in a few minutes.
> Cheers
> Patrick
> On Sun, 2010-07-25 at 01:58 -0400, emamm wrote:
>> Hello
>> I am new to Mathematica. Although I have searched the web for answers
>> on how to link fortran to Mathematica without buying MathCode F90, I
>> have not found good examples on how to link Fortran to Mathematica.
>> All my fortran functions were modified to accept a C-wrapper.  I did
>> that to link them to another system. I have no problem to create  
>> mex files
> on
>> either Windows or Linux using gcc,gfortran or g95 (all free
>> compilers!). My fortran functions work exactly as m-file on the other
> system
>> with lots of input and output arguments -  The input arguments
>> determine the size of the output arguments via malloc on C.
>> I believe that there is something similar to a mex file for
>> Mathematica but the documentation on Wolfram's site does not give me
>> much information.
>> Would someone out there have a nice, neat example (not too simple,
>> please - addrow from Wolfram's site is way too simple!) on how to  
>> link
>> fortran to Mathematica?
>> Many thanks
>> Ed
>> PS. MathCode F90 seems to do what I want but for a a price (and  
>> what a
>> price!).

  • Prev by Date: Re: tweaking VectorPlot...
  • Next by Date: Re: Linking my fortran subroutines with Mathematica
  • Previous by thread: Re: Linking my fortran subroutines with Mathematica
  • Next by thread: Re: Linking my fortran subroutines with Mathematica