<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic The interfaces are helpful to in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005455#M104728</link>
    <description>&lt;P&gt;The interfaces are helpful to check if your calls have correct argument types, but they are not necessary for the routines in question.&lt;/P&gt;

&lt;P&gt;Did you use the proper name for the routine, which is "mkl_dcsrcoo" ?&lt;/P&gt;</description>
    <pubDate>Thu, 03 Sep 2015 18:18:58 GMT</pubDate>
    <dc:creator>mecej4</dc:creator>
    <dc:date>2015-09-03T18:18:58Z</dc:date>
    <item>
      <title>need help calling C from Fortran</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005421#M104694</link>
      <description>&lt;P&gt;I am trying to use a numerical library called UMFPACK.&amp;nbsp; 20 years ago it was all fortran, but today it's in C.&amp;nbsp; The attached fortran file is a supplied sample Main program to demonstrate calling umfpack from a fortran program.&amp;nbsp; The attached C file contains C wrapper routines being called from fortran.&amp;nbsp; When I build it, I get unresolved externals for all the C routines being called from fortran.&lt;/P&gt;

&lt;P&gt;I looked at the Intel sample project called "Fortran-Calls-C", but the Microsoft C compiler wouldn't let me put&amp;nbsp; extern "C" into umfpack's c file.&amp;nbsp; Maybe that's a good thing, because I really don't want to be editing their C files because there is a large number of them.&lt;/P&gt;

&lt;P&gt;How do I get this to work?&lt;/P&gt;</description>
      <pubDate>Sat, 29 Aug 2015 16:07:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005421#M104694</guid>
      <dc:creator>Brian_Murphy</dc:creator>
      <dc:date>2015-08-29T16:07:33Z</dc:date>
    </item>
    <item>
      <title>Since it's a *.c file, extern</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005422#M104695</link>
      <description>&lt;P&gt;Since it's a *.c file, extern "C" is already implicit. You could write your own wrappers in Fortran. Here is a start:&lt;/P&gt;

&lt;PRE class="brush:fortran;"&gt;module M
&amp;nbsp;&amp;nbsp; use ISO_C_BINDING
&amp;nbsp;&amp;nbsp; implicit none
&amp;nbsp;&amp;nbsp; private
&amp;nbsp;&amp;nbsp; integer, parameter, public :: K1 = C_INT64_T
&amp;nbsp;&amp;nbsp; integer, parameter, public :: UMFPACK_CONTROL = 17 ! Or whatever
&amp;nbsp;&amp;nbsp; integer, parameter, public :: UMFPACK_INFO = 5 ! Or whatever
end module M

module N
&amp;nbsp;&amp;nbsp; use M
&amp;nbsp;&amp;nbsp; use ISO_C_BINDING
&amp;nbsp;&amp;nbsp; implicit none
&amp;nbsp;&amp;nbsp; private
&amp;nbsp;&amp;nbsp; character(*), parameter, public :: CODE = merge('di','dl',K1 == C_INT)
&amp;nbsp;&amp;nbsp; public umf4def
&amp;nbsp;&amp;nbsp; interface
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subroutine umf4def(Control) bind(C,name='umfpack_'//CODE//'_defaults')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; implicit none
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real(C_DOUBLE) Control(UMFPACK_CONTROL)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end subroutine umf4def
&amp;nbsp;&amp;nbsp; end interface
&amp;nbsp;&amp;nbsp; public umf4pcon
&amp;nbsp;&amp;nbsp; interface
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subroutine UMFPACK_report_control(Control) bind(C,name='umfpack_'//CODE//'report_control')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; implicit none
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real(C_DOUBLE) Control(UMFPACK_CONTROL)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end subroutine UMFPACK_report_control
&amp;nbsp;&amp;nbsp; end interface
&amp;nbsp;&amp;nbsp; public umf4sym
&amp;nbsp;&amp;nbsp; interface
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subroutine umf4sym(m,n,Ap,Ai,Ax,Symbolic,Control,Info)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; implicit none
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; integer(K1) m,n,Ap(*),Ai(*)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real(C_DOUBLE) Ax(*)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type(C_PTR) Symbolic(*) ! Need context to be sure of translation
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real(C_DOUBLE) Control(UMFPACK_CONTROL)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real(C_DOUBLE) Info(UMFPACK_INFO)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end subroutine umf4sym
&amp;nbsp;&amp;nbsp; end interface
&amp;nbsp;&amp;nbsp; contains
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subroutine make_filename(filenum,prefix,filename) bind(C,name='make_filename')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use ISO_C_BINDING
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use M
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; implicit none
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; integer(K1), value :: filenum
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; character(kind=C_CHAR) prefix(*)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; character(kind=C_CHAR) filename(*)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; character(len=40,kind=C_CHAR) number
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; integer i, j

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write(number,'(i0,a)') filenum,C_NULL_CHAR
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j = 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(prefix(i) == C_NULL_CHAR) then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if(any(prefix(i) == &amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [C_FORM_FEED,C_NEW_LINE,C_CARRIAGE_RETURN,C_HORIZONTAL_TAB])) then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filename(j) = filename(i)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j = j+1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = i+1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filename(i:i+len_trim(number)-1) = transfer(number,C_NULL_CHAR,len_trim(number))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end subroutine make_filename
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subroutine umf4pcon(Control)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use ISO_FORTRAN_ENV
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; implicit none
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real(C_DOUBLE) Control(UMFPACK_CONTROL)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flush(OUTPUT_UNIT)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call UMFPACK_report_control(Control)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flush(OUTPUT_UNIT)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end subroutine umf4pcon
end module N
&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 29 Aug 2015 17:35:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005422#M104695</guid>
      <dc:creator>JVanB</dc:creator>
      <dc:date>2015-08-29T17:35:23Z</dc:date>
    </item>
    <item>
      <title>You have to select one of</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005423#M104696</link>
      <description>&lt;P&gt;You have to select one of several routes, depending on your objectives. Typically, open-source packages tell you how to build mixed-language programs using GNU compilers.&lt;/P&gt;

&lt;P&gt;If you are using the 64-bit versions of IFort and VC, for example, it should suffice to use the /names:lowercase option when compiling your Fortran sources.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;The &lt;STRONG&gt;extern "C" {}&lt;/STRONG&gt; mechanism is meant to be used in C++ source code.&lt;/P&gt;</description>
      <pubDate>Sat, 29 Aug 2015 17:40:56 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005423#M104696</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2015-08-29T17:40:56Z</dc:date>
    </item>
    <item>
      <title>Thanks to both for the</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005424#M104697</link>
      <description>&lt;P&gt;Thanks to both for the replies (and on the weekend, too!).&lt;/P&gt;

&lt;P&gt;My intel fortran is installed in Program Files (x86), so I think that means it must be a 32-bit version.&amp;nbsp; So I guess /names:lowercase won't work.&lt;/P&gt;

&lt;P&gt;I put in an INTERFACE thing for the first umfpack routine which is called, and that got rid of the unresolved external for that item.&lt;/P&gt;

&lt;P&gt;I did some more googling thinking plenty of people must have already tackled this problem.&amp;nbsp; I found &lt;A href="http://geo.mff.cuni.cz/~lh/Fortran/UMFPACK/README.html#&amp;nbsp;" target="_blank"&gt;http://geo.mff.cuni.cz/~lh/Fortran/UMFPACK/README.html#&amp;nbsp;&lt;/A&gt;; where this fellow says he's made f90 style interfaces.&amp;nbsp; I have downloaded them, but have not yet tried them.&amp;nbsp; Even with this, though, there's a lot of work to do for me to figure it all out.&lt;/P&gt;

&lt;P&gt;Another option is to go back to the fortran version of umfpack and try to fix what appears to be a bug that popped up while I was running a set of test cases.&amp;nbsp; The fortran version worked really well with compaq fortran.&lt;/P&gt;

&lt;P&gt;At this point I will try to find the fortran bug.&amp;nbsp; Depending on how that goes, I might again tackle trying to use the C version of umfpack.&lt;/P&gt;</description>
      <pubDate>Sat, 29 Aug 2015 22:09:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005424#M104697</guid>
      <dc:creator>Brian_Murphy</dc:creator>
      <dc:date>2015-08-29T22:09:22Z</dc:date>
    </item>
    <item>
      <title>Following the link in Quote</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005425#M104698</link>
      <description>&lt;P&gt;Following the link in Quote #4 I see that the interfaces are f2003 rather than f90. I recommend that you try to make them fly because f2003 interfaces are in the opinion of many (see Quote #2) the easy way for a Fortran programmer to perform this sort of task.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 30 Aug 2015 04:47:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005425#M104698</guid>
      <dc:creator>JVanB</dc:creator>
      <dc:date>2015-08-30T04:47:59Z</dc:date>
    </item>
    <item>
      <title>Thanks, RO.  I'm going to try</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005426#M104699</link>
      <description>&lt;P&gt;Thanks, RO.&amp;nbsp; I'm going to try that guy's stuff today.&lt;/P&gt;

&lt;P&gt;BTW.&amp;nbsp; I'm a runner, too, and my hair's as white as yours.&amp;nbsp; May your miles bring smiles.&lt;/P&gt;</description>
      <pubDate>Mon, 31 Aug 2015 19:38:43 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005426#M104699</guid>
      <dc:creator>Brian_Murphy</dc:creator>
      <dc:date>2015-08-31T19:38:43Z</dc:date>
    </item>
    <item>
      <title>Well, I'm lost.</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005427#M104700</link>
      <description>&lt;PRE class="brush:bash;"&gt;Error	106	 error LNK2019: unresolved external symbol _umfpack_zi_symbolic referenced in function _MUMFPACK_mp_UMFPACK_ZI_SYMBOLIC	umfpack.obj	
&lt;/PRE&gt;

&lt;P&gt;I've spent the last hour trying to build one of the umfpack example programs.&amp;nbsp; I can't figure out why I'm getting build errors like the above.&amp;nbsp; What does this error mean?&amp;nbsp; There is a file named umfpack.f90.&amp;nbsp; It compiles without errors, and it has a CONTAINS block containing a routine named umfpack_zi_symbolic.&amp;nbsp; I have no clue what _MUMFPACK_mp_UMFPACK_ZI_SYMBOLIC refers to as there is no routine by that name or anything close to it that I can find.&lt;/P&gt;

&lt;P&gt;The VS 2012 project is attached.&amp;nbsp; I hope it's something really simple I'm doing wrong.&lt;/P&gt;</description>
      <pubDate>Mon, 31 Aug 2015 21:40:02 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005427#M104700</guid>
      <dc:creator>Brian_Murphy</dc:creator>
      <dc:date>2015-08-31T21:40:02Z</dc:date>
    </item>
    <item>
      <title>The ..._mp_ refers to a</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005428#M104701</link>
      <description>&lt;P&gt;The ..._mp_ refers to a module variable and/or entry point (subroutine or function).&lt;/P&gt;

&lt;P&gt;My guess is a library that you created is NOT including an .OBJ file produced when compiling a Fortran source that contains a module (whose module name is mumfpack). The fix, is to add the .OBJ produced when compiling the source containing the memfpack (either to the library or to the link).&lt;/P&gt;

&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Mon, 31 Aug 2015 21:56:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005428#M104701</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2015-08-31T21:56:59Z</dc:date>
    </item>
    <item>
      <title>One other oddity, the error</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005429#M104702</link>
      <description>&lt;P&gt;One other oddity, the error message contains "_umfpack_zi_symbolic"&lt;/P&gt;

&lt;P&gt;Note the zi&lt;/P&gt;

&lt;P&gt;The source code listed above concatenates &lt;A&gt;\\CODE\\&lt;/A&gt; in the middle of the name (none of which contains suffix of symbolic). The oddity is the values for CODE are 'di' and 'dl'. So... this is coming in from something else linked into your program.&lt;/P&gt;

&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Mon, 31 Aug 2015 22:08:04 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005429#M104702</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2015-08-31T22:08:04Z</dc:date>
    </item>
    <item>
      <title>Jim, you are conflating the</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005430#M104703</link>
      <description>&lt;P&gt;Jim, you are conflating the code I posted in Quote #2 (and which the O.P. is not using) with the umfpack.f90 which he is using in the umfpack_simple.zip file from Quote #7. There is a function umfpack_zi_symbolic in there which is being compiled and the linker is calling _MUMFPACK_mp_UMFPACK_ZI_SYMBOLIC because it is a module procedure of module mUMFPACK. That function references function c_umfpack_zi_symbolic which is actually the name of a Fortran interface to umfpack_zi_symbolic from the library he is trying to interface to. So the library isn't getting included in the linking phase or the linker is seeing a 64-bit library (the mangled name for the symbol umfpack_zi_symbolic indicates the Fortran is getting compiled for 32 bits).&lt;/P&gt;

&lt;PRE class="brush:plain;"&gt;MK200 Brian Murphy M59 29315 147/222 15372/21032 12:05 - - 14:02 12:40 14:46 1:22:10 13:13 &lt;/PRE&gt;

&lt;P&gt;(?)&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 31 Aug 2015 22:36:34 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005430#M104703</guid>
      <dc:creator>JVanB</dc:creator>
      <dc:date>2015-08-31T22:36:34Z</dc:date>
    </item>
    <item>
      <title>The \\CODE\\ stuff was</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005431#M104704</link>
      <description>&lt;P&gt;The \\CODE\\ stuff was something proposed by RO.&amp;nbsp; I'm not using that approach.&amp;nbsp; Instead I'm trying to use the f2003 interface downloaded from the link in Quote #4.&lt;/P&gt;

&lt;P&gt;I've continued trying whatever I can think of, but I only get more build errors instead of fewer.&amp;nbsp; I really don't know what I'm doing.&amp;nbsp; If it were all fortran, I'd stand half chance.&amp;nbsp; But trying to use the C version of umfpack is over my head.&lt;/P&gt;

&lt;P&gt;The only thing I'm using from this library is to LU factor (and solve) real and complex asymmetric matrices which are very sparse and are stored that way.&amp;nbsp; Does the Intel MKL have routines for this?&amp;nbsp; I have IMSL, but I can't use it because the IMSL salesman told me to forget it because he said an IMSL distribution license is too expensive.&lt;/P&gt;</description>
      <pubDate>Mon, 31 Aug 2015 22:40:57 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005431#M104704</guid>
      <dc:creator>Brian_Murphy</dc:creator>
      <dc:date>2015-08-31T22:40:57Z</dc:date>
    </item>
    <item>
      <title>Here is a way of working</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005432#M104705</link>
      <description>&lt;P&gt;Here is a way of working around the problem.&lt;/P&gt;

&lt;P&gt;The undefined&amp;nbsp;&lt;SPAN style="font-size: 12px; line-height: 12px;"&gt;_umfpack_zi_* symbols are a nuisance in the present circumstances. They probably would only be needed if you were using UmfPack to solve equations whose coefficients are complex numbers. The example code does not actually call those routines, but the Fortran 90 interfaces include them, so &amp;nbsp;the linker wants them. However, the libraries that you have produced may not include these unnecessary routines.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 12px;"&gt;How to tell the linker not to bother about these routines? I can think of two simple solutions. One is to edit (or add #ifdef COMPLEX...#endif) umfpack.f90 to remove/hide the _zi_ interface blocks and declarations. The other is to provide dummy code for the missing routines, relying upon the assumption that those are never called in the example code. I chose the latter option since it required less work.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 12px;"&gt;Here is the dummy.c source code:&lt;/SPAN&gt;&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;void umfpack_zi_symbolic(){}
void umfpack_zi_numeric(){}
void umfpack_zi_solve(){}
void umfpack_zi_free_symbolic(){}
void umfpack_zi_free_numeric(){}
void umfpack_zi_scale(){}
void umfpack_zi_defaults(){}
void umfpack_zi_report_control(){}
void umfpack_zi_report_info(){}
void umfpack_zi_save_numeric(){}
void umfpack_zi_save_symbolic(){}
void umfpack_zi_load_numeric(){}
void umfpack_zi_load_symbolic(){}&lt;/PRE&gt;

&lt;P&gt;Just to test this, I downloaded&amp;nbsp;SuiteSparse-2.4.0.tar.gz (old, but smaller than the huge current release, and sufficient for the present test) and built the umfpack.lib and amd.lib using Intel C. I then compiled umfpack.f90 and&amp;nbsp;umfpack_simple_1basic.f90 (files in your zip file) using Intel Fortran and linked all of these with mkl_rt.lib. The EXE that was produced ran and output seemingly good results.&lt;/P&gt;

&lt;P&gt;If you want to add an extra measure of safety, you can print a "missing routine called" message to stderr and return or call exit(1) in the body of each of these dummy routines.&lt;/P&gt;

&lt;P&gt;Of course, the proper solution is to build a version of the UmfPack library that includes the umfpack_zi* routines. To me, that would be something that should be done only if it turns out to be necessary. Your zip files contained amd.lib but not umfpack.lib, so I don't know if the complex routines are actually within umfpack.lib. I was unable to build these libraries from the C sources in your zip since some required C header files were missing.&lt;/P&gt;

&lt;P&gt;Intel MKL contains the Pardiso solver, which can solve linear equations with complex coefficients, and the MKL libraries have good support for multiple threads and high performance. See&amp;nbsp;https://software.intel.com/en-us/node/470284 .&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2015 00:15:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005432#M104705</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2015-09-01T00:15:00Z</dc:date>
    </item>
    <item>
      <title>RO, you're amazing!  I wish I</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005433#M104706</link>
      <description>&lt;P&gt;mecej4, you're amazing!&amp;nbsp; I wish I knew this stuff like you do.&lt;/P&gt;

&lt;P&gt;When you built and ran 2.4.0 did you need to put in placeholder code for the "zi" routines?&amp;nbsp;&lt;/P&gt;

&lt;P&gt;I need to do Complex*16 matrices, but I think the "ci" versions are what I want, and not the "zi".&lt;/P&gt;

&lt;P&gt;Tomorrow I will try to retrace your steps using 2.4.0.&amp;nbsp; I will be using Microsoft C and Intel Fortran in either visual studio 2010 or 2012.&amp;nbsp; If there was anything else you needed to do to get an error-free build, please let me know.&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2015 00:40:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005433#M104706</guid>
      <dc:creator>Brian_Murphy</dc:creator>
      <dc:date>2015-09-01T00:40:00Z</dc:date>
    </item>
    <item>
      <title>The 2.4.0 distribution did</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005434#M104707</link>
      <description>&lt;P&gt;The 2.4.0 distribution did not contain any Fortran 90 examples or interface code. It came with Fortran 77 examples, and I could build one of them without needing any dummy routines, but I needed to provide an interface to account for the different name mangling of GNU and Intel compilers.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;The Lapack naming conversion is to use 's' as an indicator for single-precision-real, 'd' for double-precision-real, 'c' for single-precision complex and 'z' for double-precision complex.&lt;/P&gt;

&lt;P&gt;Which version of SuiteSparse did you use? Older versions are easier to build but have fewer features, so a compromise would help. Users, of course, want the latest version, but building Unix/Linux-oriented packages on Windows sometimes takes quite a bit of work.&amp;nbsp;&lt;SPAN style="font-size: 12.1949996948242px; line-height: 12.1949996948242px;"&gt;Are you building for IA32 or X64?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12.1949996948242px; line-height: 12.1949996948242px;"&gt;I urge you to consider using MKL-Pardiso instead, unless you know reasons for preferring UmfPack over Pardiso. Pardiso is already available in pre-built libraries, and can be called from source code that is compiled with Intel Fortran and Intel C.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2015 01:19:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005434#M104707</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2015-09-01T01:19:00Z</dc:date>
    </item>
    <item>
      <title>I need to build for Windows</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005435#M104708</link>
      <description>&lt;P&gt;I need to build for Windows only, but for both 32 and 64 bit.&amp;nbsp; My eventual build target is a DLL which will be called from Excel visual basic, both 32 and 64 bit versions of Excel.&lt;/P&gt;

&lt;P&gt;I have been trying with the "latest" SparseSuite which goes by 4.4.5.&amp;nbsp; I thought their naming convention was "ci" for regular fortran style complex variables (re/im interleaved), and "zi" stood for the real and imag components being passed in using separate real arrays.&amp;nbsp; But I have&amp;nbsp; seen that other libraries like Lapack use "c" and "z" the way you described it.&lt;/P&gt;

&lt;P&gt;Anyhow, if tomorrow I can get 2.4.0 to build and run, I will try to use that with my app.&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2015 02:01:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005435#M104708</guid>
      <dc:creator>Brian_Murphy</dc:creator>
      <dc:date>2015-09-01T02:01:00Z</dc:date>
    </item>
    <item>
      <title>I just noticed your comment</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005436#M104709</link>
      <description>&lt;P&gt;I just noticed your comment about MKL-Pardiso.&amp;nbsp; I've heard of Pardiso but I don't know what it is.&amp;nbsp; I will look for documentation about it.&amp;nbsp; I hope it's royalty-free.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2015 02:03:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005436#M104709</guid>
      <dc:creator>Brian_Murphy</dc:creator>
      <dc:date>2015-09-01T02:03:25Z</dc:date>
    </item>
    <item>
      <title>A version of Pardiso is</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005437#M104710</link>
      <description>&lt;P&gt;A version of Pardiso is included in MKL. If you have the Intel Fortran and/or C compilers, you have MKL, therefore you have Pardiso. See&amp;nbsp;https://software.intel.com/en-us/node/470282#88F30007-9094-42EB-A4B1-8401F0C43ABE .&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2015 02:10:06 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005437#M104710</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2015-09-01T02:10:06Z</dc:date>
    </item>
    <item>
      <title>Thanks, mecej4.  I do have</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005438#M104711</link>
      <description>&lt;P&gt;Thanks, mecej4.&amp;nbsp; I do have intel fortran, and I found the examples folder containing DSS and Pardiso examples.&amp;nbsp; If I understand it right, DSS is just an alternative interface to running the Pardiso algorithms.&amp;nbsp; I will try to run the examples, hopefully tomorrow.&lt;/P&gt;

&lt;P&gt;One of the things I use the sparse LU factorization for is to compute eigensolutions with Arnoldi reverse communication.&amp;nbsp; For my particular field (dynamics of damped rotating systems like compressors and turbines), it works great.&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2015 02:36:38 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005438#M104711</guid>
      <dc:creator>Brian_Murphy</dc:creator>
      <dc:date>2015-09-01T02:36:38Z</dc:date>
    </item>
    <item>
      <title>Just today, Intel announced</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005439#M104712</link>
      <description>&lt;P&gt;Just today, Intel announced that MKL would be available as a free download (with registration), see&amp;nbsp;https://software.intel.com/en-us/articles/free_mkl .&lt;/P&gt;

&lt;P&gt;For solving sparse eigenvalue problems, MKL now provides the FEAST algorithm, see&amp;nbsp;https://software.intel.com/en-us/node/470372 .&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2015 02:47:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005439#M104712</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2015-09-01T02:47:54Z</dc:date>
    </item>
    <item>
      <title>I am using PARDISO for</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005440#M104713</link>
      <description>&lt;P&gt;I am using PARDISO for solving a band matrix linear system. It replace&amp;nbsp;another library algorithm.&amp;nbsp;Improve in the solution speed is significant. No problems in writing the calling&amp;nbsp;interface.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2015 09:25:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/need-help-calling-C-from-Fortran/m-p/1005440#M104713</guid>
      <dc:creator>LRaim</dc:creator>
      <dc:date>2015-09-01T09:25:27Z</dc:date>
    </item>
  </channel>
</rss>

