[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