PDA

View Full Version : The file libimsl.a



BobSoftwareGuy
01-30-2009, 01:01 PM
I am porting some old C code (which uses routines from the library libimsl.a) from Solaris to Linux. I am new to Visual Numerics' Software. The company I work at, has a version of Visual Numerics for Linux, but it does not have a version of the file libimsl.a. I am thinking that they either have a different version of the product, or there version is incomplete. I am also getting errors from the linker stating that the following symbols are undefined:
iercd_, dcsdec_, dcssmh_, dcsval_, dcscon_, dcsakm_

Please comment.

Thanks
Bob

brian
01-30-2009, 02:02 PM
Hello Bob,

The following all sound like IMSL Fortran Numerical Libraries symbols: iercd_, dcsdec_, dcssmh_, dcsval_, dcscon_, dcsakm_ and libimsl.a a static IMSL Fortran library. If you are in fact calling the Fortran libraries from C code I recommend your review the technical notes covering this subject.

Calling the IMSL? Fortran Library from C
IMSL Technical Report P10377 (http://www.vni.com/tech/imsl/P10377.pdf)

Regards,

brian

BobSoftwareGuy
01-30-2009, 02:34 PM
Brian,

Thanks for the response. I read the paper you suggested. It implies that I need to be using the Intel Fortran Compiler. I am not. Do I need to? Also, when I now link I get the following symbols undefined:
for_concat
for_check_mult_overflow
for_alloc_allocatable
for_deallocate
for_check_mult_overflow

I am thinking that I need to be linking with the library that came with Intel's Fortran compiler, which I do not have. Please comment.

Thanks
Bob

brian
02-01-2009, 04:33 PM
Hello Bob,


You will need a Fortran compiler to create FORTRAN wrappers for those IMSL routines that do not have F77 interfaces;



When calling the IMSL Fortran Numerical Library from C, the Fortran 77 interface should be used if available. There are, however, some routines that do not have a Fortran 77 interface. To use the Fortran 90 interface, write a Fortran ?wrapper? with a fixed argument list to interface between C and the Fortran 90 call with optional arguments.


The appropriate runtime libraries, distributed by a FORTRAN compiler, must be linked after compilation. The libraries required will be identified in an IMSL environment variable such as LINK_FNL_STATIC. If the libraries distributed by a compiler have altered their API or are unavailable, you will receive missing symbol errors such as you have. You may want to review this post (http://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/43565/reply/17287/) on the Intel forum.

You have multiple options going forward:

You can locate the old FORTRAN compiler for its libraries and compiling wrappers. You will need to confirm you have the associated IMSL Fortran Numerical Libraries for the compiler, which I assume you have located the link errors appear to be associated with the compiler runtime libraries. Finally you will need to verify consistency of data types between your current C compiler and the previous FORTRAN compiler.

VNI provides a large number of ports for the IMSL Fortran Numerical Library. If you have a FORTRAN compiler available, you can look into updating your IMSL library for that compiler.

The IMSL C Numerical libraries are extensive, provide a one to one or one to many mapping into the IMSL Fortran Numerical Libraries for the majority of functions and significantly leverage vendor library performance and SMP capability. You could move to a homogeneous implementation with the IMSL C Numerical Libraries.


If you select the 3rd implementation option, you should provide a list of IMSL functions in your application and an adhoc cross-reference can be provided to assist in the translation.


I hope this helps.

Regards,

brian

jlo
02-06-2009, 03:00 PM
Your original messages says you are porting old C code from Solaris to Linux.
Is the Linux version of the IMSL libraries a C library or a Fortran library?

One way to check is if you have a call to imsls_d_cub_spline_value then it is calling the IMSL C stat library if is a call to dcsval then it is calling the Fortran library.

Duang
12-03-2015, 08:21 AM
Does anyone have this library (libimsl.a)? I need it very badly.

mecej4
12-03-2015, 05:04 PM
Does anyone have this library (libimsl.a)? I need it very badly.

IMSL is commercial software and usually you have to pay for a license to obtain, install and use the software.