[libcerf] 01/01: re-add the fortran files (no upstream change in the master branch)

Frédéric-Emmanuel Picca picca at moszumanska.debian.org
Wed Aug 13 19:34:25 UTC 2014


This is an automated email from the git hooks/post-receive script.

picca pushed a commit to branch master
in repository libcerf.

commit 8d4965dd0fb2b6a487d18d7054b7e69544222a4b
Author: Picca Frédéric-Emmanuel <picca at debian.org>
Date:   Wed Aug 13 21:18:37 2014 +0200

    re-add the fortran files (no upstream change in the master branch)
---
 fortran/__MACOSX/ccerflib_f95_interface/._LICENSE  | Bin 0 -> 171 bytes
 fortran/__MACOSX/ccerflib_f95_interface/._README   | Bin 0 -> 171 bytes
 .../ccerflib_f95_interface/._cerflib_main_test.f90 | Bin 0 -> 171 bytes
 .../ccerflib_f95_interface/._use_libcerf_mod.f90   | Bin 0 -> 171 bytes
 fortran/ccerflib_f95_interface/LICENSE             |  27 ++
 fortran/ccerflib_f95_interface/README              |  52 ++++
 .../ccerflib_f95_interface/cerflib_main_test.f90   | 149 +++++++++++
 fortran/ccerflib_f95_interface/use_libcerf_mod.f90 | 283 +++++++++++++++++++++
 8 files changed, 511 insertions(+)

diff --git a/fortran/__MACOSX/ccerflib_f95_interface/._LICENSE b/fortran/__MACOSX/ccerflib_f95_interface/._LICENSE
new file mode 100644
index 0000000..33603a3
Binary files /dev/null and b/fortran/__MACOSX/ccerflib_f95_interface/._LICENSE differ
diff --git a/fortran/__MACOSX/ccerflib_f95_interface/._README b/fortran/__MACOSX/ccerflib_f95_interface/._README
new file mode 100644
index 0000000..c3157f0
Binary files /dev/null and b/fortran/__MACOSX/ccerflib_f95_interface/._README differ
diff --git a/fortran/__MACOSX/ccerflib_f95_interface/._cerflib_main_test.f90 b/fortran/__MACOSX/ccerflib_f95_interface/._cerflib_main_test.f90
new file mode 100644
index 0000000..7da0e3d
Binary files /dev/null and b/fortran/__MACOSX/ccerflib_f95_interface/._cerflib_main_test.f90 differ
diff --git a/fortran/__MACOSX/ccerflib_f95_interface/._use_libcerf_mod.f90 b/fortran/__MACOSX/ccerflib_f95_interface/._use_libcerf_mod.f90
new file mode 100644
index 0000000..f0beae7
Binary files /dev/null and b/fortran/__MACOSX/ccerflib_f95_interface/._use_libcerf_mod.f90 differ
diff --git a/fortran/ccerflib_f95_interface/LICENSE b/fortran/ccerflib_f95_interface/LICENSE
new file mode 100644
index 0000000..8f45929
--- /dev/null
+++ b/fortran/ccerflib_f95_interface/LICENSE
@@ -0,0 +1,27 @@
+!#############################################################################################
+! Copyright (C) 2013 Antonio Cervellino
+! 
+! Permission is hereby granted, free of charge, to any person obtaining a copy of
+! this software and associated documentation files (the "Software"), to deal in
+! the Software without restriction, including without limitation the rights to
+! use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+! the Software, and to permit persons to whom the Software is furnished to do so,
+! subject to the following conditions:
+! 
+! The above copyright notice and this permission notice shall be included in all
+! copies or substantial portions of the Software.
+! 
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+! FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+! COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+! IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+! CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+!
+!  Authors:
+!    Antonio Cervellino
+!
+!  E-mail:
+!    antonio.cervellino at psi.ch
+! 
+!#############################################################################################
diff --git a/fortran/ccerflib_f95_interface/README b/fortran/ccerflib_f95_interface/README
new file mode 100644
index 0000000..99cd852
--- /dev/null
+++ b/fortran/ccerflib_f95_interface/README
@@ -0,0 +1,52 @@
+Files:
+- this README file
+- a LICENSE statement
+- use_libcerf_mod.f90 : the f95 interface to cerflib
+- cerflib_main_test.f90 : a main program exemplifying the calls to the cerflib functions 
+  from Fortran95
+  
+Prerequisites: 
+- a modern f95 compiler including a f2003-standard ISO_C_BINDING module, 
+  like e.g. gfortran (4.6 or better) or ifort
+- libcerf installed and in the path where the linker searches for libraries 
+  (if this is not so, you have to give the path in the command line when compiling, 
+  preceded by -L, as usual)
+
+
+
+
+Compiling:
+- Put the two .f90 files in the same folder, then on the console give the following commands
+(example with gfortran as compiler):
+
+gfortran -c use_libcerf_mod.f90
+gfortran -o cerflib_main_test cerflib_main_test.f90 use_libcerf_mod.o -lcerf
+
+You may add compiler options (e.g. -O2, -fbounds-check, ...) as you see fit. 
+
+Coding:
+  The use_libcerf_mod.f90 file contains a module 
+
+  MODULE use_libcerf
+  
+  that interfaces Fortran95 code to the libcerf library. 
+  To call the cerflib functions, you need to use the module, that is, in your scoping unit 
+  there must be the code line
+
+  use use_libcerf
+
+  Fortran function names are like in the libcerf 
+  (see http://apps.jcns.fz-juelich.de/libcerf), 
+  with a _F at the end;
+  e.g. erfcx of libcerf becomes erfcx_F in the Fortran95 version. 
+  Arguments are the same, see code for details. 
+  Arguments and results are the equivalent Fortran types to the C types of libcerf
+  (double precision real / 8-byte real) for C double, 
+  double precision complex / 16-byte complex for C double complex).
+  Fortran types are matched to those of your compiler/machine in use_libcerf_mod.f90;
+  arguments are then converted to C types if needed, C-type results are back-converted 
+  into Fortran types. 
+  You may (must not, however) declare your variables using the autodetect types
+  as defined in use_libcerf_mod.f90, that is, 
+  REAL(DP)         for double precision real
+  COMPLEX(DPC)     for double precision complex
diff --git a/fortran/ccerflib_f95_interface/cerflib_main_test.f90 b/fortran/ccerflib_f95_interface/cerflib_main_test.f90
new file mode 100644
index 0000000..99390f4
--- /dev/null
+++ b/fortran/ccerflib_f95_interface/cerflib_main_test.f90
@@ -0,0 +1,149 @@
+!#############################################################################################
+! Copyright (C) 2013 Antonio Cervellino
+! 
+! Permission is hereby granted, free of charge, to any person obtaining a copy of
+! this software and associated documentation files (the "Software"), to deal in
+! the Software without restriction, including without limitation the rights to
+! use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+! the Software, and to permit persons to whom the Software is furnished to do so,
+! subject to the following conditions:
+! 
+! The above copyright notice and this permission notice shall be included in all
+! copies or substantial portions of the Software.
+! 
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+! FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+! COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+! IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+! CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+!
+!  Authors:
+!    Antonio Cervellino
+!
+!  E-mail:
+!    antonio.cervellino at psi.ch
+! 
+!#############################################################################################
+program callcerf
+use use_libcerf
+implicit none
+real(DP) :: x,sigma, wid, y
+complex(DPC) :: z, u
+
+print*,'*********************************************************'
+print*,'Calling Voigt_F'
+print*,'Please give as input a real number x [abscissa], '
+print*,' a real number sigma [Gaussian width],'
+print*,' a real number wid [Lorentzian HWHM]:'
+read(*,*) x, sigma, wid
+
+y = Voigt_F( x, sigma, wid )
+
+print*,'Voigt_F( ',x,', ',sigma,', ',wid,' ) = ',y
+
+print*,'*********************************************************'
+print*,'Calling erfcx_F'
+print*,'Please give as input a real number x:'
+read(*,*) x
+
+y = Erfcx_F( x )
+
+print*,'erfcx_F( ',x,' ) = ',y
+
+print*,'*********************************************************'
+print*,'Calling erfi_F'
+print*,'Please give as input a real number x:'
+read(*,*) x
+
+y = Erfi_F( x )
+
+print*,'erfi_F( ',x,' ) = ',y
+
+print*,'*********************************************************'
+print*,'Calling im_w_of_x_F'
+print*,'Please give as input a real number x:'
+read(*,*) x
+
+y = Im_w_of_x_F( x )
+
+print*,'im_w_of_x_F( ',x,' ) = ',y
+
+print*,'*********************************************************'
+print*,'Calling Dawson_F'
+print*,'Please give as input a real number x:'
+read(*,*) x
+
+y = Dawson_F( x )
+
+print*,'Dawson_F( ',x,' ) = ',y
+
+
+
+print*,'*********************************************************'
+print*,'Calling cerf_F'
+print*,'Please give as input a complex number number z,'
+print*,' as two space-separated real numbers Re(z), Im(z) :'
+read(*,*) x,y
+z=CMPLX(x,y,DPC)
+
+u = cerf_F( z )
+
+print*,'cerf_F( ',z,' ) = ',u
+
+print*,'*********************************************************'
+print*,'Calling cerfc_F'
+print*,'Please give as input a complex number number z,'
+print*,' as two space-separated real numbers Re(z), Im(z) :'
+read(*,*) x,y
+z=CMPLX(x,y,DPC)
+
+u = cerfc_F( z )
+
+print*,'cerfc_F( ',z,' ) = ',u
+
+print*,'*********************************************************'
+print*,'Calling cerfcx_F'
+print*,'Please give as input a complex number number z,'
+print*,' as two space-separated real numbers Re(z), Im(z) :'
+read(*,*) x,y
+z=CMPLX(x,y,DPC)
+
+u = cerfcx_F( z )
+
+print*,'cerfcx_F( ',z,' ) = ',u
+
+print*,'*********************************************************'
+print*,'Calling cerfi_F'
+print*,'Please give as input a complex number number z,'
+print*,' as two space-separated real numbers Re(z), Im(z) :'
+read(*,*) x,y
+z=CMPLX(x,y,DPC)
+
+u = cerfi_F( z )
+
+print*,'cerfi_F( ',z,' ) = ',u
+
+print*,'*********************************************************'
+print*,'Calling w_of_z_F'
+print*,'Please give as input a complex number number z,'
+print*,' as two space-separated real numbers Re(z), Im(z) :'
+read(*,*) x,y
+z=CMPLX(x,y,DPC)
+
+u = w_of_z_F( z )
+
+print*,'w_of_z_F( ',z,' ) = ',u
+
+print*,'*********************************************************'
+print*,'Calling cdawson_F'
+print*,'Please give as input a complex number number z,'
+print*,' as two space-separated real numbers Re(z), Im(z) :'
+read(*,*) x,y
+z=CMPLX(x,y,DPC)
+
+u = cdawson_F( z )
+
+print*,'cdawson_F( ',z,' ) = ',u
+
+end program callcerf
\ No newline at end of file
diff --git a/fortran/ccerflib_f95_interface/use_libcerf_mod.f90 b/fortran/ccerflib_f95_interface/use_libcerf_mod.f90
new file mode 100644
index 0000000..918681f
--- /dev/null
+++ b/fortran/ccerflib_f95_interface/use_libcerf_mod.f90
@@ -0,0 +1,283 @@
+!#############################################################################################
+! Copyright (C) 2013 Antonio Cervellino
+! 
+! Permission is hereby granted, free of charge, to any person obtaining a copy of
+! this software and associated documentation files (the "Software"), to deal in
+! the Software without restriction, including without limitation the rights to
+! use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+! the Software, and to permit persons to whom the Software is furnished to do so,
+! subject to the following conditions:
+! 
+! The above copyright notice and this permission notice shall be included in all
+! copies or substantial portions of the Software.
+! 
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+! FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+! COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+! IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+! CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+!
+!  Authors:
+!    Antonio Cervellino
+!
+!  E-mail:
+!    antonio.cervellino at psi.ch
+! 
+!#############################################################################################
+module use_libcerf
+! f95 interfaces for the libcerf.* c library of error functions
+! http://apps.jcns.fz-juelich.de/libcerf
+! 
+use ISO_C_BINDING 
+
+private
+public :: Voigt_F, Erfcx_F, Erfi_F, Im_w_of_x_F, Dawson_F, &
+          cerf_F, cerfc_F, cerfcx_F, cerfi_F, w_of_z_F, cdawson_F
+public :: DP,DPC
+! - - - - - - - - - - - - 
+
+! Fortran DOUBLE and DOUBLE COMPLEX types
+INTEGER, PARAMETER :: DP  = KIND(1.0D0)
+INTEGER, PARAMETER :: DPC = KIND((1.0D0,1.0D0))
+
+! - - - - - - - - - - - - 
+INTERFACE
+FUNCTION voigt ( x, sigma, gamma ) bind(c)
+USE ISO_C_BINDING
+IMPLICIT NONE
+! voigt(x,sigma,gamma) = \int_|R G(t,sigma) L(x-t,gamma) dt
+! WITH: G(x,sigma) = (1/(sqrt(2*pi)*|sigma|)) * exp(-x**2/(2*sigma**2)) ;
+!       L(x,gamma) = |gamma| / (pi * ( x**2 + gamma**2 )) .
+real(C_DOUBLE),intent(IN),VALUE :: x, sigma, gamma
+real(C_DOUBLE) :: voigt
+END FUNCTION
+END INTERFACE
+! - - - - - - - - - - - - 
+INTERFACE
+FUNCTION cerf ( z ) bind(c)
+!  cerf(z) = erf(z)
+USE ISO_C_BINDING
+IMPLICIT NONE
+complex(C_DOUBLE_COMPLEX),intent(IN),VALUE :: z
+complex(C_DOUBLE_COMPLEX) :: cerf
+END FUNCTION
+END INTERFACE
+! - - - - - - - - - - - - 
+INTERFACE
+FUNCTION cerfc ( z ) bind(c)
+!  cerfc(z) = erfc(z)
+USE ISO_C_BINDING
+IMPLICIT NONE
+complex(C_DOUBLE_COMPLEX),intent(IN),VALUE :: z
+complex(C_DOUBLE_COMPLEX) :: cerfc
+END FUNCTION
+END INTERFACE
+! - - - - - - - - - - - - 
+INTERFACE
+FUNCTION cerfcx ( z ) bind(c)
+USE ISO_C_BINDING
+IMPLICIT NONE
+!  cerfcx(z) = exp(z**2) * erfc(z)
+complex(C_DOUBLE_COMPLEX),intent(IN),VALUE :: z
+complex(C_DOUBLE_COMPLEX) :: cerfcx
+END FUNCTION
+END INTERFACE
+! - - - - - - - - - - - - 
+INTERFACE
+FUNCTION erfcx ( x ) bind(c)
+USE ISO_C_BINDING
+IMPLICIT NONE
+!  erfcx(x) = exp(x**2) * erfc(x)
+real(C_DOUBLE),intent(IN),VALUE :: x
+real(C_DOUBLE) :: erfcx
+END FUNCTION
+END INTERFACE
+! - - - - - - - - - - - - 
+INTERFACE
+FUNCTION cerfi ( z ) bind(c)
+USE ISO_C_BINDING
+IMPLICIT NONE
+!  cerfi(z) = -I * erf(I*z)
+complex(C_DOUBLE_COMPLEX),intent(IN),VALUE :: z
+complex(C_DOUBLE_COMPLEX) :: cerfi
+END FUNCTION
+END INTERFACE
+! - - - - - - - - - - - - 
+INTERFACE
+FUNCTION erfi ( x ) bind(c)
+USE ISO_C_BINDING
+IMPLICIT NONE
+!  erfi(x) = -I * erf(I*x)
+real(C_DOUBLE),intent(IN),VALUE :: x
+real(C_DOUBLE) :: erfi
+END FUNCTION
+END INTERFACE
+! - - - - - - - - - - - - 
+INTERFACE
+FUNCTION w_of_z ( z ) bind(c)
+USE ISO_C_BINDING
+IMPLICIT NONE
+!  w_of_z(z) = [ Faddeeva function w(z) ] 
+!            = exp(-z**2) * erfc(-I*z)
+complex(C_DOUBLE_COMPLEX),intent(IN),VALUE :: z
+complex(C_DOUBLE_COMPLEX) :: w_of_z
+END FUNCTION
+END INTERFACE
+! - - - - - - - - - - - - 
+INTERFACE
+FUNCTION im_w_of_x ( x ) bind(c)
+USE ISO_C_BINDING
+IMPLICIT NONE
+!  Im_w_of_x(x) = Im[w(x)]
+real(C_DOUBLE),intent(IN),VALUE :: x
+real(C_DOUBLE) :: im_w_of_x
+END FUNCTION
+END INTERFACE
+! - - - - - - - - - - - - 
+INTERFACE
+FUNCTION cdawson ( z ) bind(c)
+USE ISO_C_BINDING
+IMPLICIT NONE
+!  cdawson(z) = [ Dawson's integral D(z) ] 
+!             = exp(-z**2) \int_0^z exp(t**2) dt 
+!             = sqrt(pi)/2 * exp(-z**2) * erfi(z)
+complex(C_DOUBLE_COMPLEX),intent(IN),VALUE :: z
+complex(C_DOUBLE_COMPLEX) :: cdawson
+END FUNCTION
+END INTERFACE
+! - - - - - - - - - - - - 
+INTERFACE
+FUNCTION dawson ( x ) bind(c)
+USE ISO_C_BINDING
+IMPLICIT NONE
+!  dawson(x) = [ Dawson's integral D(x) ] 
+!            = exp(-x**2) \int_0^x exp(t**2) dt 
+!            = sqrt(pi)/2 * exp(-x**2) * erfi(x)
+real(C_DOUBLE),intent(IN),VALUE :: x
+real(C_DOUBLE) :: dawson
+END FUNCTION
+END INTERFACE
+
+contains
+!********************************************************
+function Voigt_F(x,sig,w) !bind(c)
+! voigt(x,sigma,gamma) = \int_|R G(t,sigma) L(x-t,gamma) dt
+! WITH: G(x,sigma) = (1/(sqrt(2*pi)*|sigma|)) * exp(-x**2/(2*sigma**2)) ;
+!       L(x,gamma) = |gamma| / (pi * ( x**2 + gamma**2 )) .
+implicit none
+real(DP),intent(IN) :: x,sig,w
+real(DP) :: Voigt_F
+
+Voigt_F = real(voigt( x=real(x,C_DOUBLE), sigma=real(sig,C_DOUBLE), gamma=real(w,C_DOUBLE) ), DP)
+
+end function Voigt_F
+!********************************************************
+function Erfcx_F(x) !bind(c)
+!  erfcx(x) = exp(x**2) * erfc(x)
+implicit none
+real(DP),intent(IN) :: x
+real(DP) :: Erfcx_F
+
+Erfcx_F = real(erfcx( x=real(x,C_DOUBLE) ), DP)
+
+end function Erfcx_F
+!********************************************************
+function Erfi_F(x) !bind(c)
+!  erfi(x) = -I * erf(I*x)
+implicit none
+real(DP),intent(IN) :: x
+real(DP) :: Erfi_F
+
+Erfi_F = real(erfi( x=real(x,C_DOUBLE) ), DP)
+
+end function Erfi_F
+!********************************************************
+function Im_w_of_x_F(x) !bind(c)
+!  Im_w_of_x(x) = Im[w(x)]
+implicit none
+real(DP),intent(IN) :: x
+real(DP) :: Im_w_of_x_F
+
+Im_w_of_x_F = real(im_w_of_x( x=real(x,C_DOUBLE) ), DP)
+
+end function Im_w_of_x_F
+!********************************************************
+function Dawson_F(x) !bind(c)
+!  dawson(x) = [ Dawson's integral D(x) ] 
+!            = exp(-x**2) \int_0^x exp(t**2) dt 
+!            = sqrt(pi)/2 * exp(-x**2) * erfi(x)
+implicit none
+real(DP),intent(IN) :: x
+real(DP) :: Dawson_F
+
+Dawson_F = real(dawson( x=real(x,C_DOUBLE) ), DP)
+
+end function Dawson_F
+!********************************************************
+! Complex
+!********************************************************
+function cerf_F ( z ) !bind(c)
+!  cerf(z) = erf(z)
+implicit none
+complex(DPC),intent(IN) :: z
+complex(DPC) :: cerf_F
+
+cerf_F = CMPLX(cerf( z=CMPLX(z,kind=C_DOUBLE_COMPLEX) ), kind=DPC)
+
+end function cerf_F
+!********************************************************
+function cerfc_F ( z ) !bind(c)
+!  cerfc(z) = erfc(z)
+implicit none
+complex(DPC),intent(IN) :: z
+complex(DPC) :: cerfc_F
+
+cerfc_F = CMPLX(cerfc( z=CMPLX(z,kind=C_DOUBLE_COMPLEX) ), kind=DPC)
+
+end function cerfc_F
+!********************************************************
+function cerfcx_F ( z ) !bind(c)
+implicit none
+!  cerfcx(z) = exp(z**2) * erfc(z)
+complex(DPC),intent(IN) :: z
+complex(DPC) :: cerfcx_F
+
+cerfcx_F = CMPLX(cerfcx( z=CMPLX(z,kind=C_DOUBLE_COMPLEX) ), kind=DPC)
+
+end function cerfcx_F
+!********************************************************
+function cerfi_F ( z ) !bind(c)
+implicit none
+!  cerfi(z) = -I * erf(I*z)
+complex(DPC),intent(IN) :: z
+complex(DPC) :: cerfi_F
+
+cerfi_F = CMPLX(cerfi( z=CMPLX(z,kind=C_DOUBLE_COMPLEX) ), kind=DPC)
+
+end function cerfi_F
+!********************************************************
+function w_of_z_F ( z ) !bind(c)
+implicit none
+!  w_of_z(z) = [ Faddeeva function w(z) ] 
+!            = exp(-z**2) * erfc(-I*z)
+complex(DPC),intent(IN) :: z
+complex(DPC) :: w_of_z_F
+
+w_of_z_F = CMPLX(w_of_z( z=CMPLX(z,kind=C_DOUBLE_COMPLEX) ), kind=DPC)
+
+end function w_of_z_F
+!********************************************************
+function cdawson_F ( z ) !bind(c)
+implicit none
+!  cdawson(z) = [ Dawson's integral D(z) ] 
+!             = exp(-z**2) \int_0^z exp(t**2) dt 
+!             = sqrt(pi)/2 * exp(-z**2) * erfi(z)
+complex(DPC),intent(IN) :: z
+complex(DPC) :: cdawson_F
+
+cdawson_F = CMPLX(cdawson( z=CMPLX(z,kind=C_DOUBLE_COMPLEX) ), kind=DPC)
+
+end function cdawson_F
+!********************************************************
+end module use_libcerf

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/libcerf.git



More information about the debian-science-commits mailing list