Annotation of rpl/src/fonctions_speciales.F90, revision 1.1

1.1     ! bertrand    1: !===============================================================================
        !             2: ! RPL/2 (R) version 4.0.9
        !             3: ! Copyright (C) 1989-2010 Dr. BERTRAND Joël
        !             4: !
        !             5: ! This file is part of RPL/2.
        !             6: !
        !             7: ! RPL/2 is free software; you can redistribute it and/or modify it
        !             8: ! under the terms of the CeCILL V2 License as published by the french
        !             9: ! CEA, CNRS and INRIA.
        !            10: !
        !            11: ! RPL/2 is distributed in the hope that it will be useful, but WITHOUT
        !            12: ! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
        !            13: ! FITNESS FOR A PARTICULAR PURPOSE.  See the CeCILL V2 License
        !            14: ! for more details.
        !            15: !
        !            16: ! You should have received a copy of the CeCILL License
        !            17: ! along with RPL/2. If not, write to info@cecill.info.
        !            18: !===============================================================================
        !            19: 
        !            20: 
        !            21: #include "rplftypes.conv.inc"
        !            22: 
        !            23: 
        !            24: !===============================================================================
        !            25: ! Fonction renvoyant le logarithme népérien de la fonction GAMMA(X).
        !            26: ! Le logarithme de GAMMA est bien plus facile à calculer que la fonction
        !            27: ! GAMMA.
        !            28: !===============================================================================
        !            29: 
        !            30: subroutine F90GAMMALN(X, RESULTAT, SIGNE, ERREUR)
        !            31:    use iso_c_binding
        !            32:    implicit none
        !            33: 
        !            34:    integer(rpl_integer8), intent(out), optional ::     ERREUR
        !            35:    integer(rpl_integer8)                               ERREUR_GAMMA
        !            36: 
        !            37:    real(rpl_real8), intent(in) ::                      X
        !            38:    real(rpl_real8), intent(out) ::                     RESULTAT
        !            39:    real(rpl_real8), intent(out), optional ::           SIGNE
        !            40:    real(rpl_real8)                                     SIGNE_GAMMA
        !            41: 
        !            42:    type, bind(C) :: GSL_SF_RESULT
        !            43:        real(c_double)          VALEUR
        !            44:        real(c_double)          ERREUR
        !            45:    end type
        !            46: 
        !            47:    type(GSL_SF_RESULT)                                 STRUCT_RESULTAT
        !            48: 
        !            49:    interface
        !            50:        integer(c_int) function gsl_sf_lngamma_sgn_e(X, &
        !            51:                RESULTAT, SIGNE) bind(C, name='gsl_sf_lngamma_sgn_e')
        !            52:            use iso_c_binding
        !            53:            import :: GSL_SF_RESULT
        !            54:            implicit none
        !            55:            real(c_double), intent(in), value ::        X
        !            56:            type(GSL_SF_RESULT), intent(out) ::         RESULTAT
        !            57:            real(c_double), intent(out) ::              SIGNE
        !            58:        end function
        !            59:    end interface
        !            60: 
        !            61:    ERREUR_GAMMA = gsl_sf_lngamma_sgn_e(X, STRUCT_RESULTAT, &
        !            62:            SIGNE_GAMMA)
        !            63:    RESULTAT = STRUCT_RESULTAT%VALEUR
        !            64: 
        !            65:    if (present(SIGNE)) then
        !            66:        SIGNE = SIGNE_GAMMA
        !            67:    end if
        !            68: 
        !            69:    if (present(ERREUR)) then
        !            70:        ERREUR = ERREUR_GAMMA
        !            71:    end if
        !            72: 
        !            73:    return
        !            74: end subroutine
        !            75: 
        !            76: ! vim: ts=4

CVSweb interface <joel.bertrand@systella.fr>