Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

IMSL Library

okale1
Beginner
4,243 Views
Hi all,

I have installed the IMSL Library first time on my computer. Now, I try to use it but I could not use. The code I try to compile is below:

PROGRAM MAIN

USE IMSL_LIBRARIES
IMPLICIT NONE
INTEGER ISEED, NCAT, NDFEST, NELM
PARAMETER (ISEED=123457, NCAT=6, NDFEST=0, NELM=1000)
!
INTEGER I, IX(NELM), NOUT
REAL CDF, CHISQ(NCAT+1), COUNTS(NCAT), CUTP(NCAT-1), DF, &
EXPECT(NCAT), P, RNGE(2), X(NELM)
EXTERNAL CDF
!
DATA RNGE/0.0, 0.0/

DATA CUTP/.5, 1.5, 2.5, 3.5, 4.5/
!
CALL RNSET (ISEED)
! Generate the data
CALL RNBIN (5, 0.3, IX)
DO 10 I=1, NELM
X(I) = IX(I)
10 CONTINUE
!
CALL CHIGF (CDF, NELM, X, NCAT, RNGE, NDFEST, CUTP, P, &
COUNTS=COUNTS, EXPECT=EXPECT, CHISQ=CHISQ, DF=DF)
! Print results
CALL WRRRN ('Counts', COUNTS, 1, NCAT, 1)
CALL WRRRN ('Expect', EXPECT, 1, NCAT, 1)
CALL WRRRN ('Contributions to Chi-squared', CHISQ, 1, NCAT, 1)
CALL UMACH (2, NOUT)
WRITE (NOUT,99999) CHISQ(NCAT+1), P, DF
99999 FORMAT (///'0Chi-squared ', F8.4, /, ' P-value ' &
, F8.4, /, ' Degrees of freedom', F8.4)
END
!
REAL FUNCTION CDF (Y)
REAL Y
!
INTEGER I
REAL BINDF
EXTERNAL BINDF
!
I = Y
CDF = BINDF(I,5,0.3)
RETURN
END

The compiler gives an error message at 2nd line that "error #7002: Error in opening the compiled module file. Check INCLUDE paths. [IMSL_LIBRARIES]". Is the problem related to install IMSL Library on my computer?
0 Kudos
38 Replies
juliobp
Beginner
2,584 Views
I'm starting to work with intel VF 11.0.066 and I tried to use the IMSL by calling "use numerical_libraries", but is not that simple. I don't know if you can help me on this. This is very basic: how to add imsl functionality to IVF?

Thanks in advance

0 Kudos
Steven_L_Intel1
Employee
2,584 Views
Please read Installing and using the IMSL* Libraries

If after reading that you have further questions, feel free to ask here.
0 Kudos
Steven_L_Intel1
Employee
2,584 Views
See my post above.
0 Kudos
juliobp
Beginner
2,584 Views
See my post above.

I'm working with the following file (is the traditional foxes vs. rabits problem)

PROGRAM ZORROSVSCONEJOS
USE IMSL_LIBRARIES
INTEGER, PARAMETER :: MXPARM = 50, N = 2
INTEGER :: IDO, ISTEP
REAL :: PARAM(MXPARM), T, TEND, TOL, Y(N)
EXTERNAL :: FCN

!! initial conditions
T = 0.0
Y(1) = 1.0
Y(2) = 3.0

!! tolerance
TOL = 0.0005

! set parameters to defaults
CALL SSET (MXPARM, 0.0, PARAM, 1)

PARAM(10) = 1.0

!print header
WRITE(*,*) 'ISTEP ', TIME ' , 'Y1 ', 'Y2 '
WRITE(*,*) '==================================='

IDO = 1
ISTEP = 0

DO WHILE (ISTEP <= 10)
ISTEP = ISTEP + 1
TEND = ISTEP
CALL IVPRK (IDO, N, FCN, T, TEND, TOL, PARAM, Y)
IF (ISTEP <= 10) THEN
WRITE (*,*) ISTEP, T, Y
END IF
END DO
IF (ISTEP == 10) THEN
IDO = 3
END IF

END PROGRAM ZORROSVSCONEJOS

and I got the following error:
Error 1 error #6285: There is no matching specific subroutine for this generic subroutine call. [IVPRK] C:Documents and SettingsjbaezapMis documentosVisual Studio 2005ProjectsQWin2QWin2Source1.F90 32

Any advise on this one?
0 Kudos
Steven_L_Intel1
Employee
2,584 Views
Change USE IMSL_LIBRARIES to USE NUMERICAL_LIBRARIES

Your call to IVPRK is using the older "Fortran 77" argument style, but IMSL_LIBRARIES defines the new "Fortran 90" style which has different arguments. You can see the IMSL documentation for IVPRK if you want the details.

USE NUMERICAL_LIBRARIES will declare the older interfaces.
0 Kudos
juliobp
Beginner
2,584 Views
....
USE NUMERICAL_LIBRARIES will declare the older interfaces.

I did the change and these were the error messages:
Error 2 error LNK2019: unresolved external symbol _IVPRK referenced in function _MAIN__ Source1.obj
Error 1 error LNK2019: unresolved external symbol _SSET referenced in function _MAIN__ Source1.obj

0 Kudos
Steven_L_Intel1
Employee
2,584 Views
Add the following lines after the USE NUMERICAL_LIBRARIES

include 'link_fnl_static.h'
!DEC$ OBJCOMMENT LIB:'libiomp5md.lib'

If you are using the version 10.x IMSL, replace the second line with:

!DEC$ OBJCOMMENT LIB:'libguide.lib'
0 Kudos
juliobp
Beginner
2,584 Views
It works nicely! Thanks Steve!

0 Kudos
juliobp
Beginner
2,584 Views
Add the following lines after the USE NUMERICAL_LIBRARIES

include 'link_fnl_static.h'
!DEC$ OBJCOMMENT LIB:'libiomp5md.lib'

If you are using the version 10.x IMSL, replace the second line with:

!DEC$ OBJCOMMENT LIB:'libguide.lib'

It works! Thanks Steve!
0 Kudos
juliobp
Beginner
2,584 Views
Add the following lines after the USE NUMERICAL_LIBRARIES

include 'link_fnl_static.h'
!DEC$ OBJCOMMENT LIB:'libiomp5md.lib'

If you are using the version 10.x IMSL, replace the second line with:

!DEC$ OBJCOMMENT LIB:'libguide.lib'

What should I do for using the fortran 90 call to IMSL?
0 Kudos
Steven_L_Intel1
Employee
2,584 Views

CALL IVPRK (IDO, FCN, T, TEND, Y, TOL=TOL, PARAM=PARAM)
0 Kudos
juliobp
Beginner
2,584 Views

CALL IVPRK (IDO, FCN, T, TEND, Y, TOL=TOL, PARAM=PARAM)

Ok, I did some changes to the program to adecuate it to the sample code of the IMSL

[cpp]PROGRAM FOXESANDRABITS
USE IMSL_LIBRARIES

INTEGER, PARAMETER :: MXPARM = 50, N = 2
INTEGER            :: IDO, ISTEP
REAL               :: PARAMETERS(MXPARM), T, TEND, TOLERA, Y(N)
EXTERNAL           :: FCN

!! INITIAL CONDITIONS
    T = 0.0
    Y(1) = 1.0
    Y(2) = 3.0
!! TOLERANCE
    TOLERA = 0.0005

! PARAM TO DEFAULT VALUES
    PARAMETERS= 0.E0
! ABSOLUTE ERROR CONTROL 
     PARAMETERS(10) = 1.0
!PRINT HEADER
     WRITE(*,*) 'ISTEP   ', 'TIEMPO   ', 'Y1   ', 'Y2   '
	 WRITE(*,*) '==================================='
	 IDO = 1
     ISTEP = 0
	 DO WHILE (ISTEP <= 10)
	    ISTEP = ISTEP + 1
        TEND = ISTEP
        CALL IVPRK (IDO, FCN, T, TEND, Y, TOL = TOLERA, PARAM = PARAMETERS)
        IF (ISTEP <= 10) THEN  
		        WRITE (*,*) ISTEP, T, Y
		END IF
	 END DO
     IF (ISTEP == 10) THEN 
	     IDO = 3
	 END IF
END PROGRAM FOXESANDRABITS[/cpp]

And the message that appears is:

Error 1 error LNK2019: unresolved external symbol _S_IVPRK referenced in function _MAIN__ PRINCIPALZORROSYCONEJOS.obj

What I did wrong?


0 Kudos
Steven_L_Intel1
Employee
2,584 Views
You left out the include and !DEC$ lines again.
0 Kudos
juliobp
Beginner
2,584 Views
You left out the include and !DEC$ lines again.

So, either the program is F77 or F90 I have to put them? Ok
0 Kudos
Steven_L_Intel1
Employee
2,584 Views
Those lines are the easiest way to specify which IMSL library set you are linking with. If you do not specify the libraries another way, you need them, no matter which style of call you use.
0 Kudos
Christ_F_
Beginner
2,584 Views
Those lines are the easiest way to specify which IMSL library set you are linking with. If you do not specify the libraries another way, you need them, no matter which style of call you use.
Steve,

On may laptop, which is still runnig version 10 of the compiler together with Compaq VF and Visual Studio Express I had no problem running the IMSL Validate program. On my office machine which is running version 11 of IMSL and Intel Fortran as well as CVF, Visual Studio.Net 2003 and VC++ the compiler gets confused and when I try to compilie Validate it says: warning #10268 Microsoft compiler version 6 or earlier is not supported.

On both machines, no interpretation of the instructions above or in the basic imsl article results in 'link_fnl_static.h' being read when I try to use the IDE.

christ
0 Kudos
Steven_L_Intel1
Employee
2,584 Views
christ,

Are you building this from the IDE? Please go into Tools > Options > Intel Fortran > Compilers. Click the ... next to Executable files. Copy the contents and paste it into a reply here. Do the same for Library Files and Executable Files.
0 Kudos
Christ_F_
Beginner
2,584 Views
christ,

Are you building this from the IDE? Please go into Tools > Options > Intel Fortran > Compilers. Click the ... next to Executable files. Copy the contents and paste it into a reply here. Do the same for Library Files and Executable Files.
Steve,

Here is the info:

EXecutables

$(IFortInstallDir)binia32
$(CommonProgramFiles)IntelShared FilesIa32Bin
$(VSInstallDir)Common7ide
$(VCInstallDir)bin
$(VSInstallDir)Common7Tools
$(VSInstallDir)Common7Toolsbin
$(VCInstallDir)PlatformSDKbin
$(FrameworkSDKDir)bin
$(FrameworkDir)$(FrameworkVersion)
$(PATH)


Libraries

$(IFortInstallDir)libia32
$(VCInstallDir)atlmfclib
$(VCInstallDir)lib
$(VCInstallDir)PlatformSDKlib
$(FrameworkSDKDir)lib
$c:Program FilesIntelArray Visualizerlib
$c:Program FilesVNIimslfnl600IA32lib



INCLUDES

$(IFortInstallDir)include
$(IFortInstallDir)includeia32
$(VCInstallDir)atlmfcinclude
$(VCInstallDir)include
$(VCInstallDir)PlatformSDKinclude
$(FrameworkSDKDir)include
$c:Program FilesIntelArray Visualizerinclude
$C:Program FilesVNIimslfnl600IA32includedll


Lines from my code:

INCLUDE 'link_fnl_static.h'
!DEC$ OBJCOMMENT LIB:'libiomp5md.lib'

Thanks,

christ

0 Kudos
Steven_L_Intel1
Employee
2,584 Views
Please attach (see instructions below) the Buildlog.htm from the Debug or Release folder after you do a Rebuild of the solution and it fails.
0 Kudos
Christ_F_
Beginner
2,386 Views
Please attach (see instructions below) the Buildlog.htm from the Debug or Release folder after you do a Rebuild of the solution and it fails.
Stevew,

Log file should be in folder cf_check

cf
0 Kudos
Reply