# This file was automatically generated by SWIG (http://www.swig.org).
# Version 3.0.12
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.

"""
This module exposes the following GSL (GUN Scientific Library) functions used
by simuPOP to the user interface. Although more functions may be added from time
to time, this module is not intended to become a complete wrapper for GSL. Please
refer to the GSL reference manual (http://www.gnu.org/software/gsl/manual/html_node/)
for details about these functions. Note that random number generation functions
are wrapped into the simuPOP.RNG class.

- ``gsl_cdf_gaussian_P(x, sigma)``
- ``gsl_cdf_gaussian_Q(x, sigma)``
- ``gsl_cdf_gaussian_Pinv(P, sigma)``
- ``gsl_cdf_gaussian_Qinv(Q, sigma)``
- ``gsl_cdf_ugaussian_P(x)``
- ``gsl_cdf_ugaussian_Q(x)``
- ``gsl_cdf_ugaussian_Pinv(P)``
- ``gsl_cdf_ugaussian_Qinv(Q)``
- ``gsl_cdf_exponential_P(x, mu)``
- ``gsl_cdf_exponential_Q(x, mu)``
- ``gsl_cdf_exponential_Pinv(P, mu)``
- ``gsl_cdf_exponential_Qinv(Q, mu)``
- ``gsl_cdf_chisq_P(x, nu)``
- ``gsl_cdf_chisq_Q(x, nu)``
- ``gsl_cdf_chisq_Pinv(P, nu)``
- ``gsl_cdf_chisq_Qinv(Q, nu)``
- ``gsl_cdf_gamma_P(x, a, b)``
- ``gsl_cdf_gamma_Q(x, a, b)``
- ``gsl_cdf_gamma_Pinv(P, a, b)``
- ``gsl_cdf_gamma_Qinv(Q, a, b)``
- ``gsl_ran_gamma_pdf(x, a, b)``
- ``gsl_cdf_beta_P(x, a, b)``
- ``gsl_cdf_beta_Q(x, a, b)``
- ``gsl_cdf_beta_Pinv(P, a, b)``
- ``gsl_cdf_beta_Qinv(Q, a, b)``
- ``gsl_ran_beta_pdf(x, a, b)``
- ``gsl_cdf_binomial_P(k, p, n)``
- ``gsl_cdf_binomial_Q(k, p, n)``
- ``gsl_ran_binomial_pdf(k, p, n)``
- ``gsl_cdf_poisson_P(k, mu)``
- ``gsl_cdf_poisson_Q(k, mu)``
- ``gsl_ran_poisson_pdf(k, mu)``

"""


from sys import version_info as _swig_python_version_info
if _swig_python_version_info >= (2, 7, 0):
    def swig_import_helper():
        import importlib
        pkg = __name__.rpartition('.')[0]
        mname = '.'.join((pkg, '_gsl')).lstrip('.')
        try:
            return importlib.import_module(mname)
        except ImportError:
            return importlib.import_module('_gsl')
    _gsl = swig_import_helper()
    del swig_import_helper
elif _swig_python_version_info >= (2, 6, 0):
    def swig_import_helper():
        from os.path import dirname
        import imp
        fp = None
        try:
            fp, pathname, description = imp.find_module('_gsl', [dirname(__file__)])
        except ImportError:
            import _gsl
            return _gsl
        try:
            _mod = imp.load_module('_gsl', fp, pathname, description)
        finally:
            if fp is not None:
                fp.close()
        return _mod
    _gsl = swig_import_helper()
    del swig_import_helper
else:
    import _gsl
del _swig_python_version_info

try:
    _swig_property = property
except NameError:
    pass  # Python < 2.2 doesn't have 'property'.

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
    if (name == "thisown"):
        return self.this.own(value)
    if (name == "this"):
        if type(value).__name__ == 'SwigPyObject':
            self.__dict__[name] = value
            return
    method = class_type.__swig_setmethods__.get(name, None)
    if method:
        return method(self, value)
    if (not static):
        if _newclass:
            object.__setattr__(self, name, value)
        else:
            self.__dict__[name] = value
    else:
        raise AttributeError("You cannot add attributes to %s" % self)


def _swig_setattr(self, class_type, name, value):
    return _swig_setattr_nondynamic(self, class_type, name, value, 0)


def _swig_getattr(self, class_type, name):
    if (name == "thisown"):
        return self.this.own()
    method = class_type.__swig_getmethods__.get(name, None)
    if method:
        return method(self)
    raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name))


def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)

try:
    _object = object
    _newclass = 1
except __builtin__.Exception:
    class _object:
        pass
    _newclass = 0


def my_error_handler(reason: 'char const *', file: 'char const *', line: 'int', gsl_errno: 'int') -> "void":
    return _gsl.my_error_handler(reason, file, line, gsl_errno)
my_error_handler = _gsl.my_error_handler

def initialize() -> "int":
    return _gsl.initialize()
initialize = _gsl.initialize

def gsl_ran_gamma_pdf(x: 'double const', a: 'double const', b: 'double const') -> "double":
    return _gsl.gsl_ran_gamma_pdf(x, a, b)
gsl_ran_gamma_pdf = _gsl.gsl_ran_gamma_pdf

def gsl_log1p(x: 'double const') -> "double":
    return _gsl.gsl_log1p(x)
gsl_log1p = _gsl.gsl_log1p

def gsl_ran_binomial_pdf(k: 'unsigned int const', p: 'double const', n: 'unsigned int const') -> "double":
    return _gsl.gsl_ran_binomial_pdf(k, p, n)
gsl_ran_binomial_pdf = _gsl.gsl_ran_binomial_pdf

def gsl_ran_beta_pdf(x: 'double const', a: 'double const', b: 'double const') -> "double":
    return _gsl.gsl_ran_beta_pdf(x, a, b)
gsl_ran_beta_pdf = _gsl.gsl_ran_beta_pdf

def gsl_ran_poisson_pdf(k: 'unsigned int const', mu: 'double const') -> "double":
    return _gsl.gsl_ran_poisson_pdf(k, mu)
gsl_ran_poisson_pdf = _gsl.gsl_ran_poisson_pdf

def gsl_cdf_gaussian_P(x: 'double', sigma: 'double') -> "double":
    return _gsl.gsl_cdf_gaussian_P(x, sigma)
gsl_cdf_gaussian_P = _gsl.gsl_cdf_gaussian_P

def gsl_cdf_gaussian_Q(x: 'double', sigma: 'double') -> "double":
    return _gsl.gsl_cdf_gaussian_Q(x, sigma)
gsl_cdf_gaussian_Q = _gsl.gsl_cdf_gaussian_Q

def gsl_cdf_gaussian_Pinv(P: 'double', sigma: 'double') -> "double":
    return _gsl.gsl_cdf_gaussian_Pinv(P, sigma)
gsl_cdf_gaussian_Pinv = _gsl.gsl_cdf_gaussian_Pinv

def gsl_cdf_gaussian_Qinv(Q: 'double', sigma: 'double') -> "double":
    return _gsl.gsl_cdf_gaussian_Qinv(Q, sigma)
gsl_cdf_gaussian_Qinv = _gsl.gsl_cdf_gaussian_Qinv

def gsl_cdf_ugaussian_P(x: 'double') -> "double":
    return _gsl.gsl_cdf_ugaussian_P(x)
gsl_cdf_ugaussian_P = _gsl.gsl_cdf_ugaussian_P

def gsl_cdf_ugaussian_Q(x: 'double') -> "double":
    return _gsl.gsl_cdf_ugaussian_Q(x)
gsl_cdf_ugaussian_Q = _gsl.gsl_cdf_ugaussian_Q

def gsl_cdf_ugaussian_Pinv(P: 'double') -> "double":
    return _gsl.gsl_cdf_ugaussian_Pinv(P)
gsl_cdf_ugaussian_Pinv = _gsl.gsl_cdf_ugaussian_Pinv

def gsl_cdf_ugaussian_Qinv(Q: 'double') -> "double":
    return _gsl.gsl_cdf_ugaussian_Qinv(Q)
gsl_cdf_ugaussian_Qinv = _gsl.gsl_cdf_ugaussian_Qinv

def gsl_cdf_exponential_P(x: 'double', mu: 'double') -> "double":
    return _gsl.gsl_cdf_exponential_P(x, mu)
gsl_cdf_exponential_P = _gsl.gsl_cdf_exponential_P

def gsl_cdf_exponential_Q(x: 'double', mu: 'double') -> "double":
    return _gsl.gsl_cdf_exponential_Q(x, mu)
gsl_cdf_exponential_Q = _gsl.gsl_cdf_exponential_Q

def gsl_cdf_exponential_Pinv(P: 'double', mu: 'double') -> "double":
    return _gsl.gsl_cdf_exponential_Pinv(P, mu)
gsl_cdf_exponential_Pinv = _gsl.gsl_cdf_exponential_Pinv

def gsl_cdf_exponential_Qinv(Q: 'double', mu: 'double') -> "double":
    return _gsl.gsl_cdf_exponential_Qinv(Q, mu)
gsl_cdf_exponential_Qinv = _gsl.gsl_cdf_exponential_Qinv

def gsl_cdf_chisq_P(x: 'double', nu: 'double') -> "double":
    return _gsl.gsl_cdf_chisq_P(x, nu)
gsl_cdf_chisq_P = _gsl.gsl_cdf_chisq_P

def gsl_cdf_chisq_Q(x: 'double', nu: 'double') -> "double":
    return _gsl.gsl_cdf_chisq_Q(x, nu)
gsl_cdf_chisq_Q = _gsl.gsl_cdf_chisq_Q

def gsl_cdf_chisq_Pinv(P: 'double', nu: 'double') -> "double":
    return _gsl.gsl_cdf_chisq_Pinv(P, nu)
gsl_cdf_chisq_Pinv = _gsl.gsl_cdf_chisq_Pinv

def gsl_cdf_chisq_Qinv(Q: 'double', nu: 'double') -> "double":
    return _gsl.gsl_cdf_chisq_Qinv(Q, nu)
gsl_cdf_chisq_Qinv = _gsl.gsl_cdf_chisq_Qinv

def gsl_cdf_gamma_P(x: 'double', a: 'double', b: 'double') -> "double":
    return _gsl.gsl_cdf_gamma_P(x, a, b)
gsl_cdf_gamma_P = _gsl.gsl_cdf_gamma_P

def gsl_cdf_gamma_Q(x: 'double', a: 'double', b: 'double') -> "double":
    return _gsl.gsl_cdf_gamma_Q(x, a, b)
gsl_cdf_gamma_Q = _gsl.gsl_cdf_gamma_Q

def gsl_cdf_gamma_Pinv(P: 'double', a: 'double', b: 'double') -> "double":
    return _gsl.gsl_cdf_gamma_Pinv(P, a, b)
gsl_cdf_gamma_Pinv = _gsl.gsl_cdf_gamma_Pinv

def gsl_cdf_gamma_Qinv(Q: 'double', a: 'double', b: 'double') -> "double":
    return _gsl.gsl_cdf_gamma_Qinv(Q, a, b)
gsl_cdf_gamma_Qinv = _gsl.gsl_cdf_gamma_Qinv

def gsl_cdf_binomial_P(k: 'unsigned int', p: 'double', n: 'unsigned int') -> "double":
    return _gsl.gsl_cdf_binomial_P(k, p, n)
gsl_cdf_binomial_P = _gsl.gsl_cdf_binomial_P

def gsl_cdf_binomial_Q(k: 'unsigned int', p: 'double', n: 'unsigned int') -> "double":
    return _gsl.gsl_cdf_binomial_Q(k, p, n)
gsl_cdf_binomial_Q = _gsl.gsl_cdf_binomial_Q

def gsl_cdf_beta_P(x: 'double', a: 'double', b: 'double') -> "double":
    return _gsl.gsl_cdf_beta_P(x, a, b)
gsl_cdf_beta_P = _gsl.gsl_cdf_beta_P

def gsl_cdf_beta_Q(x: 'double', a: 'double', b: 'double') -> "double":
    return _gsl.gsl_cdf_beta_Q(x, a, b)
gsl_cdf_beta_Q = _gsl.gsl_cdf_beta_Q

def gsl_cdf_beta_Pinv(P: 'double', a: 'double', b: 'double') -> "double":
    return _gsl.gsl_cdf_beta_Pinv(P, a, b)
gsl_cdf_beta_Pinv = _gsl.gsl_cdf_beta_Pinv

def gsl_cdf_beta_Qinv(Q: 'double', a: 'double', b: 'double') -> "double":
    return _gsl.gsl_cdf_beta_Qinv(Q, a, b)
gsl_cdf_beta_Qinv = _gsl.gsl_cdf_beta_Qinv

def gsl_cdf_poisson_P(k: 'unsigned int const', mu: 'double const') -> "double":
    return _gsl.gsl_cdf_poisson_P(k, mu)
gsl_cdf_poisson_P = _gsl.gsl_cdf_poisson_P

def gsl_cdf_poisson_Q(k: 'unsigned int const', mu: 'double const') -> "double":
    return _gsl.gsl_cdf_poisson_Q(k, mu)
gsl_cdf_poisson_Q = _gsl.gsl_cdf_poisson_Q
# This file is compatible with both classic and new-style classes.


