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

from sys import version_info as _swig_python_version_info
if _swig_python_version_info < (2, 7, 0):
    raise RuntimeError("Python 2.7 or later required")

# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _gslwrap
else:
    import _gslwrap

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "thisown":
            self.this.own(value)
        elif name == "this":
            set(self, name, value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)



def cos(x):
    r"""
    cos(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.cos(x)

def sin(x):
    r"""
    sin(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.sin(x)

def tan(x):
    r"""
    tan(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.tan(x)

def acos(x):
    r"""
    acos(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.acos(x)

def asin(x):
    r"""
    asin(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.asin(x)

def atan(x):
    r"""
    atan(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.atan(x)

def atan2(y, x):
    r"""
    atan2(double y, double x) -> double

    Parameters
    ----------
    y: double
    x: double

    """
    return _gslwrap.atan2(y, x)

def cosh(x):
    r"""
    cosh(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.cosh(x)

def sinh(x):
    r"""
    sinh(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.sinh(x)

def tanh(x):
    r"""
    tanh(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.tanh(x)

def exp(x):
    r"""
    exp(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.exp(x)

def log(x):
    r"""
    log(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.log(x)

def log10(x):
    r"""
    log10(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.log10(x)

def pow(x, y):
    r"""
    pow(double x, double y) -> double

    Parameters
    ----------
    x: double
    y: double

    """
    return _gslwrap.pow(x, y)

def sqrt(x):
    r"""
    sqrt(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.sqrt(x)

def fabs(x):
    r"""
    fabs(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.fabs(x)

def ceil(x):
    r"""
    ceil(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.ceil(x)

def floor(x):
    r"""
    floor(double x) -> double

    Parameters
    ----------
    x: double

    """
    return _gslwrap.floor(x)

def fmod(x, y):
    r"""
    fmod(double x, double y) -> double

    Parameters
    ----------
    x: double
    y: double

    """
    return _gslwrap.fmod(x, y)
M_E = _gslwrap.M_E

M_LOG2E = _gslwrap.M_LOG2E

M_LOG10E = _gslwrap.M_LOG10E

M_LN2 = _gslwrap.M_LN2

M_LN10 = _gslwrap.M_LN10

M_PI = _gslwrap.M_PI

M_PI_2 = _gslwrap.M_PI_2

M_PI_4 = _gslwrap.M_PI_4

M_1_PI = _gslwrap.M_1_PI

M_2_PI = _gslwrap.M_2_PI

M_2_SQRTPI = _gslwrap.M_2_SQRTPI

M_SQRT2 = _gslwrap.M_SQRT2

M_SQRT1_2 = _gslwrap.M_SQRT1_2

class gsl_interp_accel(object):
    r"""Proxy of C gsl_interp_accel struct."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        r"""__init__(gsl_interp_accel self) -> gsl_interp_accel"""
        _gslwrap.gsl_interp_accel_swiginit(self, _gslwrap.new_gsl_interp_accel())
    __swig_destroy__ = _gslwrap.delete_gsl_interp_accel

    def reset(self):
        r"""reset(gsl_interp_accel self) -> gsl_error_flag_drop"""
        return _gslwrap.gsl_interp_accel_reset(self)

    def find(self, x_array, x):
        r"""
        find(gsl_interp_accel self, double const [] x_array, double x) -> size_t

        Parameters
        ----------
        x_array: double const []
        x: double

        """
        return _gslwrap.gsl_interp_accel_find(self, x_array, x)

    def tocobject(self):
        r"""tocobject(gsl_interp_accel self) -> PyObject *"""
        return _gslwrap.gsl_interp_accel_tocobject(self)

# Register gsl_interp_accel in _gslwrap:
_gslwrap.gsl_interp_accel_swigregister(gsl_interp_accel)

class pygsl_lite_spline(object):
    r"""Proxy of C pygsl_lite_spline struct."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, T, n):
        r"""
        __init__(pygsl_lite_spline self, gsl_interp_type const * T, size_t n) -> pygsl_lite_spline

        Parameters
        ----------
        T: gsl_interp_type const *
        n: size_t

        """
        _gslwrap.pygsl_lite_spline_swiginit(self, _gslwrap.new_pygsl_lite_spline(T, n))
    __swig_destroy__ = _gslwrap.delete_pygsl_lite_spline

    def accel_reset(self):
        r"""accel_reset(pygsl_lite_spline self) -> gsl_error_flag_drop"""
        return _gslwrap.pygsl_lite_spline_accel_reset(self)

    def accel_find(self, x):
        r"""
        accel_find(pygsl_lite_spline self, double x) -> size_t

        Parameters
        ----------
        x: double

        """
        return _gslwrap.pygsl_lite_spline_accel_find(self, x)

    def tocobject(self):
        r"""tocobject(pygsl_lite_spline self) -> PyObject *"""
        return _gslwrap.pygsl_lite_spline_tocobject(self)

    def init(self, xa):
        r"""
        init(pygsl_lite_spline self, double const [] xa) -> gsl_error_flag_drop

        Parameters
        ----------
        xa: double const []

        """
        return _gslwrap.pygsl_lite_spline_init(self, xa)

    def eval(self, IN):
        r"""
        eval(pygsl_lite_spline self, double IN) -> double

        Parameters
        ----------
        IN: double

        """
        return _gslwrap.pygsl_lite_spline_eval(self, IN)

    def eval_deriv_e(self, IN):
        r"""
        eval_deriv_e(pygsl_lite_spline self, double IN) -> gsl_error_flag_drop

        Parameters
        ----------
        IN: double

        """
        return _gslwrap.pygsl_lite_spline_eval_deriv_e(self, IN)

    def eval_deriv(self, IN):
        r"""
        eval_deriv(pygsl_lite_spline self, double IN) -> double

        Parameters
        ----------
        IN: double

        """
        return _gslwrap.pygsl_lite_spline_eval_deriv(self, IN)

    def eval_deriv2_e(self, IN):
        r"""
        eval_deriv2_e(pygsl_lite_spline self, double IN) -> gsl_error_flag_drop

        Parameters
        ----------
        IN: double

        """
        return _gslwrap.pygsl_lite_spline_eval_deriv2_e(self, IN)

    def eval_deriv2(self, IN):
        r"""
        eval_deriv2(pygsl_lite_spline self, double IN) -> double

        Parameters
        ----------
        IN: double

        """
        return _gslwrap.pygsl_lite_spline_eval_deriv2(self, IN)

    def eval_integ(self, a, b):
        r"""
        eval_integ(pygsl_lite_spline self, double a, double b) -> double

        Parameters
        ----------
        a: double
        b: double

        """
        return _gslwrap.pygsl_lite_spline_eval_integ(self, a, b)

    def eval_integ_e(self, a, b):
        r"""
        eval_integ_e(pygsl_lite_spline self, double a, double b) -> gsl_error_flag_drop

        Parameters
        ----------
        a: double
        b: double

        """
        return _gslwrap.pygsl_lite_spline_eval_integ_e(self, a, b)

    def eval_e(self, IN):
        r"""
        eval_e(pygsl_lite_spline self, double IN) -> gsl_error_flag_drop

        Parameters
        ----------
        IN: double

        """
        return _gslwrap.pygsl_lite_spline_eval_e(self, IN)

    def eval_vector(self, IN):
        r"""
        eval_vector(pygsl_lite_spline self, gsl_vector const * IN) -> PyObject *

        Parameters
        ----------
        IN: gsl_vector const *

        """
        return _gslwrap.pygsl_lite_spline_eval_vector(self, IN)

    def eval_e_vector(self, IN):
        r"""
        eval_e_vector(pygsl_lite_spline self, gsl_vector const * IN) -> PyObject *

        Parameters
        ----------
        IN: gsl_vector const *

        """
        return _gslwrap.pygsl_lite_spline_eval_e_vector(self, IN)

    def eval_deriv_vector(self, IN):
        r"""
        eval_deriv_vector(pygsl_lite_spline self, gsl_vector const * IN) -> PyObject *

        Parameters
        ----------
        IN: gsl_vector const *

        """
        return _gslwrap.pygsl_lite_spline_eval_deriv_vector(self, IN)

    def eval_deriv2_vector(self, IN):
        r"""
        eval_deriv2_vector(pygsl_lite_spline self, gsl_vector const * IN) -> PyObject *

        Parameters
        ----------
        IN: gsl_vector const *

        """
        return _gslwrap.pygsl_lite_spline_eval_deriv2_vector(self, IN)

    def eval_deriv_e_vector(self, IN):
        r"""
        eval_deriv_e_vector(pygsl_lite_spline self, gsl_vector const * IN) -> PyObject *

        Parameters
        ----------
        IN: gsl_vector const *

        """
        return _gslwrap.pygsl_lite_spline_eval_deriv_e_vector(self, IN)

    def eval_deriv2_e_vector(self, IN):
        r"""
        eval_deriv2_e_vector(pygsl_lite_spline self, gsl_vector const * IN) -> PyObject *

        Parameters
        ----------
        IN: gsl_vector const *

        """
        return _gslwrap.pygsl_lite_spline_eval_deriv2_e_vector(self, IN)

    def eval_integ_vector(self, IN, IN2):
        r"""
        eval_integ_vector(pygsl_lite_spline self, gsl_vector const * IN, gsl_vector const * IN2) -> PyObject *

        Parameters
        ----------
        IN: gsl_vector const *
        IN2: gsl_vector const *

        """
        return _gslwrap.pygsl_lite_spline_eval_integ_vector(self, IN, IN2)

    def eval_integ_e_vector(self, IN, IN2):
        r"""
        eval_integ_e_vector(pygsl_lite_spline self, gsl_vector const * IN, gsl_vector const * IN2) -> PyObject *

        Parameters
        ----------
        IN: gsl_vector const *
        IN2: gsl_vector const *

        """
        return _gslwrap.pygsl_lite_spline_eval_integ_e_vector(self, IN, IN2)

    def name(self):
        r"""name(pygsl_lite_spline self) -> char const *"""
        return _gslwrap.pygsl_lite_spline_name(self)

    def min_size(self):
        r"""min_size(pygsl_lite_spline self) -> unsigned int"""
        return _gslwrap.pygsl_lite_spline_min_size(self)

# Register pygsl_lite_spline in _gslwrap:
_gslwrap.pygsl_lite_spline_swigregister(pygsl_lite_spline)

class pygsl_lite_interp(object):
    r"""Proxy of C pygsl_lite_interp struct."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, T, n):
        r"""
        __init__(pygsl_lite_interp self, gsl_interp_type const * T, size_t n) -> pygsl_lite_interp

        Parameters
        ----------
        T: gsl_interp_type const *
        n: size_t

        """
        _gslwrap.pygsl_lite_interp_swiginit(self, _gslwrap.new_pygsl_lite_interp(T, n))
    __swig_destroy__ = _gslwrap.delete_pygsl_lite_interp

    def init(self, x, y):
        r"""
        init(pygsl_lite_interp self, PyObject * x, PyObject * y) -> gsl_error_flag_drop

        Parameters
        ----------
        x: PyObject *
        y: PyObject *

        """
        return _gslwrap.pygsl_lite_interp_init(self, x, y)

    def name(self):
        r"""name(pygsl_lite_interp self) -> char const *"""
        return _gslwrap.pygsl_lite_interp_name(self)

    def min_size(self):
        r"""min_size(pygsl_lite_interp self) -> unsigned int"""
        return _gslwrap.pygsl_lite_interp_min_size(self)

    def eval_e(self, x):
        r"""
        eval_e(pygsl_lite_interp self, double x) -> gsl_error_flag_drop

        Parameters
        ----------
        x: double

        """
        return _gslwrap.pygsl_lite_interp_eval_e(self, x)

    def eval(self, x):
        r"""
        eval(pygsl_lite_interp self, double x) -> double

        Parameters
        ----------
        x: double

        """
        return _gslwrap.pygsl_lite_interp_eval(self, x)

    def eval_deriv_e(self, x):
        r"""
        eval_deriv_e(pygsl_lite_interp self, double x) -> gsl_error_flag_drop

        Parameters
        ----------
        x: double

        """
        return _gslwrap.pygsl_lite_interp_eval_deriv_e(self, x)

    def eval_deriv(self, x):
        r"""
        eval_deriv(pygsl_lite_interp self, double x) -> double

        Parameters
        ----------
        x: double

        """
        return _gslwrap.pygsl_lite_interp_eval_deriv(self, x)

    def eval_deriv2_e(self, x):
        r"""
        eval_deriv2_e(pygsl_lite_interp self, double x) -> gsl_error_flag_drop

        Parameters
        ----------
        x: double

        """
        return _gslwrap.pygsl_lite_interp_eval_deriv2_e(self, x)

    def eval_deriv2(self, x):
        r"""
        eval_deriv2(pygsl_lite_interp self, double x) -> double

        Parameters
        ----------
        x: double

        """
        return _gslwrap.pygsl_lite_interp_eval_deriv2(self, x)

    def eval_integ_e(self, a, b):
        r"""
        eval_integ_e(pygsl_lite_interp self, double a, double b) -> gsl_error_flag_drop

        Parameters
        ----------
        a: double
        b: double

        """
        return _gslwrap.pygsl_lite_interp_eval_integ_e(self, a, b)

    def eval_integ(self, a, b):
        r"""
        eval_integ(pygsl_lite_interp self, double a, double b) -> double

        Parameters
        ----------
        a: double
        b: double

        """
        return _gslwrap.pygsl_lite_interp_eval_integ(self, a, b)

    def accel_reset(self):
        r"""accel_reset(pygsl_lite_interp self) -> gsl_error_flag_drop"""
        return _gslwrap.pygsl_lite_interp_accel_reset(self)

    def accel_find(self, x):
        r"""
        accel_find(pygsl_lite_interp self, double x) -> size_t

        Parameters
        ----------
        x: double

        """
        return _gslwrap.pygsl_lite_interp_accel_find(self, x)

# Register pygsl_lite_interp in _gslwrap:
_gslwrap.pygsl_lite_interp_swigregister(pygsl_lite_interp)
cvar = _gslwrap.cvar
gsl_interp_linear = cvar.gsl_interp_linear
gsl_interp_polynomial = cvar.gsl_interp_polynomial
gsl_interp_cspline = cvar.gsl_interp_cspline
gsl_interp_cspline_periodic = cvar.gsl_interp_cspline_periodic
gsl_interp_akima = cvar.gsl_interp_akima
gsl_interp_akima_periodic = cvar.gsl_interp_akima_periodic


def gsl_interp_bsearch(x_array, x, index_lo, index_hi):
    r"""
    gsl_interp_bsearch(double const [] x_array, double x, size_t index_lo, size_t index_hi) -> size_t

    Parameters
    ----------
    x_array: double const []
    x: double
    index_lo: size_t
    index_hi: size_t

    """
    return _gslwrap.gsl_interp_bsearch(x_array, x, index_lo, index_hi)


