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

IMSL 7 Double precision

Alireza_Namazi
Beginner
1,085 Views
when i use cvf with imsl 4 i can use this DBSJ0(.......) Double precisionbut when i use imsl 7there is not Double precision only this function BSJ0.

How can i use DBSJ0 in imsl 7 ?
0 Kudos
1 Solution
mecej4
Honored Contributor III
1,085 Views
First of all, IMSL FNL-7 is sold and supported by Roguewave, not Intel. The version of FNL available from Intel is FNL-6, instead.

That said, the changes from IMSL 4 to IMSL 7 are, at least for the present purpose, the same as from IMSL 4 to IMSL 6. The main changes are:

(1) Full support for F90/F95 style calls to IMSL.

(2) The specific function names for j0(x) are S_BESJ0() and D_BESJ0(), and the generic name is BESJ0().

It is recommended that the program unit that references the Bessel function contain a "USE BSJ0_INT" statement.

Here is an example.
[fortran]program tbessel use BSJ0_INT implicit none integer, parameter :: dp=kind(0d0) integer, parameter :: sp=kind(0.0) real(sp) :: x = 3.0_sp real(dp) :: y = 3.0_dp write(*,10)x,bsj0(x),s_bsj0(x) write(*,20)y,bsj0(y),d_bsj0(y) 10 format(' Single precision : ',3E15.7) 20 format(' Double precision : ',3D25.17) end program tbessel [/fortran]

View solution in original post

0 Kudos
4 Replies
mecej4
Honored Contributor III
1,086 Views
First of all, IMSL FNL-7 is sold and supported by Roguewave, not Intel. The version of FNL available from Intel is FNL-6, instead.

That said, the changes from IMSL 4 to IMSL 7 are, at least for the present purpose, the same as from IMSL 4 to IMSL 6. The main changes are:

(1) Full support for F90/F95 style calls to IMSL.

(2) The specific function names for j0(x) are S_BESJ0() and D_BESJ0(), and the generic name is BESJ0().

It is recommended that the program unit that references the Bessel function contain a "USE BSJ0_INT" statement.

Here is an example.
[fortran]program tbessel use BSJ0_INT implicit none integer, parameter :: dp=kind(0d0) integer, parameter :: sp=kind(0.0) real(sp) :: x = 3.0_sp real(dp) :: y = 3.0_dp write(*,10)x,bsj0(x),s_bsj0(x) write(*,20)y,bsj0(y),d_bsj0(y) 10 format(' Single precision : ',3E15.7) 20 format(' Double precision : ',3D25.17) end program tbessel [/fortran]
0 Kudos
Steven_L_Intel1
Employee
1,085 Views
I am replying to a non-private post so that this will also be non-private.

I advised you to use the Fortran standard intrinsic function BESSEL_J0, which does support quad precision. To learn more about the Fortran language, there are several excellent books on the market (usually with the words "Modern Fortran" in the title.) The Intel documentation is a reference, it does not try to teach the language.

If you read about "modern Fortran" language features, please be aware that the Intel compiler implements almost all of Fortran 2003, and a lot from Fortran 2008, but not all of either standard. Refer to the Intel documentation to see if a particular feature is supported.
0 Kudos
Ling_Meng-chieh
Beginner
1,085 Views
Hi I would like to borrow this topic to ask a more or less relevant and simple question about IMSL 6. Does the subroutines in IMSL 6 support quadruple precision calculation? In the user guide I know it definitely support SP and DP, but how about other precision format? Sincerely Meng-Chieh
0 Kudos
Steven_L_Intel1
Employee
1,085 Views
IMSL 6 does not support quadruple precision.
0 Kudos
Reply