# 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.

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, '_ccllib')).lstrip('.')
        try:
            return importlib.import_module(mname)
        except ImportError:
            return importlib.import_module('_ccllib')
    _ccllib = 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('_ccllib', [dirname(__file__)])
        except ImportError:
            import _ccllib
            return _ccllib
        try:
            _mod = imp.load_module('_ccllib', fp, pathname, description)
        finally:
            if fp is not None:
                fp.close()
        return _mod
    _ccllib = swig_import_helper()
    del swig_import_helper
else:
    import _ccllib
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

class parameters(_object):
    """Proxy of C ccl_parameters struct."""

    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, parameters, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, parameters, name)
    __repr__ = _swig_repr
    __swig_setmethods__["Omega_c"] = _ccllib.parameters_Omega_c_set
    __swig_getmethods__["Omega_c"] = _ccllib.parameters_Omega_c_get
    if _newclass:
        Omega_c = _swig_property(_ccllib.parameters_Omega_c_get, _ccllib.parameters_Omega_c_set)
    __swig_setmethods__["Omega_b"] = _ccllib.parameters_Omega_b_set
    __swig_getmethods__["Omega_b"] = _ccllib.parameters_Omega_b_get
    if _newclass:
        Omega_b = _swig_property(_ccllib.parameters_Omega_b_get, _ccllib.parameters_Omega_b_set)
    __swig_setmethods__["Omega_m"] = _ccllib.parameters_Omega_m_set
    __swig_getmethods__["Omega_m"] = _ccllib.parameters_Omega_m_get
    if _newclass:
        Omega_m = _swig_property(_ccllib.parameters_Omega_m_get, _ccllib.parameters_Omega_m_set)
    __swig_setmethods__["Omega_k"] = _ccllib.parameters_Omega_k_set
    __swig_getmethods__["Omega_k"] = _ccllib.parameters_Omega_k_get
    if _newclass:
        Omega_k = _swig_property(_ccllib.parameters_Omega_k_get, _ccllib.parameters_Omega_k_set)
    __swig_setmethods__["sqrtk"] = _ccllib.parameters_sqrtk_set
    __swig_getmethods__["sqrtk"] = _ccllib.parameters_sqrtk_get
    if _newclass:
        sqrtk = _swig_property(_ccllib.parameters_sqrtk_get, _ccllib.parameters_sqrtk_set)
    __swig_setmethods__["k_sign"] = _ccllib.parameters_k_sign_set
    __swig_getmethods__["k_sign"] = _ccllib.parameters_k_sign_get
    if _newclass:
        k_sign = _swig_property(_ccllib.parameters_k_sign_get, _ccllib.parameters_k_sign_set)
    __swig_setmethods__["w0"] = _ccllib.parameters_w0_set
    __swig_getmethods__["w0"] = _ccllib.parameters_w0_get
    if _newclass:
        w0 = _swig_property(_ccllib.parameters_w0_get, _ccllib.parameters_w0_set)
    __swig_setmethods__["wa"] = _ccllib.parameters_wa_set
    __swig_getmethods__["wa"] = _ccllib.parameters_wa_get
    if _newclass:
        wa = _swig_property(_ccllib.parameters_wa_get, _ccllib.parameters_wa_set)
    __swig_setmethods__["H0"] = _ccllib.parameters_H0_set
    __swig_getmethods__["H0"] = _ccllib.parameters_H0_get
    if _newclass:
        H0 = _swig_property(_ccllib.parameters_H0_get, _ccllib.parameters_H0_set)
    __swig_setmethods__["h"] = _ccllib.parameters_h_set
    __swig_getmethods__["h"] = _ccllib.parameters_h_get
    if _newclass:
        h = _swig_property(_ccllib.parameters_h_get, _ccllib.parameters_h_set)
    __swig_setmethods__["N_nu_mass"] = _ccllib.parameters_N_nu_mass_set
    __swig_getmethods__["N_nu_mass"] = _ccllib.parameters_N_nu_mass_get
    if _newclass:
        N_nu_mass = _swig_property(_ccllib.parameters_N_nu_mass_get, _ccllib.parameters_N_nu_mass_set)
    __swig_setmethods__["N_nu_rel"] = _ccllib.parameters_N_nu_rel_set
    __swig_getmethods__["N_nu_rel"] = _ccllib.parameters_N_nu_rel_get
    if _newclass:
        N_nu_rel = _swig_property(_ccllib.parameters_N_nu_rel_get, _ccllib.parameters_N_nu_rel_set)
    __swig_setmethods__["mnu"] = _ccllib.parameters_mnu_set
    __swig_getmethods__["mnu"] = _ccllib.parameters_mnu_get
    if _newclass:
        mnu = _swig_property(_ccllib.parameters_mnu_get, _ccllib.parameters_mnu_set)
    __swig_setmethods__["Omega_n_mass"] = _ccllib.parameters_Omega_n_mass_set
    __swig_getmethods__["Omega_n_mass"] = _ccllib.parameters_Omega_n_mass_get
    if _newclass:
        Omega_n_mass = _swig_property(_ccllib.parameters_Omega_n_mass_get, _ccllib.parameters_Omega_n_mass_set)
    __swig_setmethods__["Omega_n_rel"] = _ccllib.parameters_Omega_n_rel_set
    __swig_getmethods__["Omega_n_rel"] = _ccllib.parameters_Omega_n_rel_get
    if _newclass:
        Omega_n_rel = _swig_property(_ccllib.parameters_Omega_n_rel_get, _ccllib.parameters_Omega_n_rel_set)
    __swig_setmethods__["A_s"] = _ccllib.parameters_A_s_set
    __swig_getmethods__["A_s"] = _ccllib.parameters_A_s_get
    if _newclass:
        A_s = _swig_property(_ccllib.parameters_A_s_get, _ccllib.parameters_A_s_set)
    __swig_setmethods__["n_s"] = _ccllib.parameters_n_s_set
    __swig_getmethods__["n_s"] = _ccllib.parameters_n_s_get
    if _newclass:
        n_s = _swig_property(_ccllib.parameters_n_s_get, _ccllib.parameters_n_s_set)
    __swig_setmethods__["Omega_g"] = _ccllib.parameters_Omega_g_set
    __swig_getmethods__["Omega_g"] = _ccllib.parameters_Omega_g_get
    if _newclass:
        Omega_g = _swig_property(_ccllib.parameters_Omega_g_get, _ccllib.parameters_Omega_g_set)
    __swig_setmethods__["T_CMB"] = _ccllib.parameters_T_CMB_set
    __swig_getmethods__["T_CMB"] = _ccllib.parameters_T_CMB_get
    if _newclass:
        T_CMB = _swig_property(_ccllib.parameters_T_CMB_get, _ccllib.parameters_T_CMB_set)
    __swig_setmethods__["sigma_8"] = _ccllib.parameters_sigma_8_set
    __swig_getmethods__["sigma_8"] = _ccllib.parameters_sigma_8_get
    if _newclass:
        sigma_8 = _swig_property(_ccllib.parameters_sigma_8_get, _ccllib.parameters_sigma_8_set)
    __swig_setmethods__["Omega_l"] = _ccllib.parameters_Omega_l_set
    __swig_getmethods__["Omega_l"] = _ccllib.parameters_Omega_l_get
    if _newclass:
        Omega_l = _swig_property(_ccllib.parameters_Omega_l_get, _ccllib.parameters_Omega_l_set)
    __swig_setmethods__["z_star"] = _ccllib.parameters_z_star_set
    __swig_getmethods__["z_star"] = _ccllib.parameters_z_star_get
    if _newclass:
        z_star = _swig_property(_ccllib.parameters_z_star_get, _ccllib.parameters_z_star_set)
    __swig_setmethods__["has_mgrowth"] = _ccllib.parameters_has_mgrowth_set
    __swig_getmethods__["has_mgrowth"] = _ccllib.parameters_has_mgrowth_get
    if _newclass:
        has_mgrowth = _swig_property(_ccllib.parameters_has_mgrowth_get, _ccllib.parameters_has_mgrowth_set)
    __swig_setmethods__["nz_mgrowth"] = _ccllib.parameters_nz_mgrowth_set
    __swig_getmethods__["nz_mgrowth"] = _ccllib.parameters_nz_mgrowth_get
    if _newclass:
        nz_mgrowth = _swig_property(_ccllib.parameters_nz_mgrowth_get, _ccllib.parameters_nz_mgrowth_set)
    __swig_setmethods__["z_mgrowth"] = _ccllib.parameters_z_mgrowth_set
    __swig_getmethods__["z_mgrowth"] = _ccllib.parameters_z_mgrowth_get
    if _newclass:
        z_mgrowth = _swig_property(_ccllib.parameters_z_mgrowth_get, _ccllib.parameters_z_mgrowth_set)
    __swig_setmethods__["df_mgrowth"] = _ccllib.parameters_df_mgrowth_set
    __swig_getmethods__["df_mgrowth"] = _ccllib.parameters_df_mgrowth_get
    if _newclass:
        df_mgrowth = _swig_property(_ccllib.parameters_df_mgrowth_get, _ccllib.parameters_df_mgrowth_set)

    def __init__(self):
        """__init__(ccl_parameters self) -> parameters"""
        this = _ccllib.new_parameters()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _ccllib.delete_parameters
    __del__ = lambda self: None
parameters_swigregister = _ccllib.parameters_swigregister
parameters_swigregister(parameters)

class data(_object):
    """Proxy of C ccl_data struct."""

    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, data, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, data, name)
    __repr__ = _swig_repr
    __swig_setmethods__["growth0"] = _ccllib.data_growth0_set
    __swig_getmethods__["growth0"] = _ccllib.data_growth0_get
    if _newclass:
        growth0 = _swig_property(_ccllib.data_growth0_get, _ccllib.data_growth0_set)
    __swig_setmethods__["chi"] = _ccllib.data_chi_set
    __swig_getmethods__["chi"] = _ccllib.data_chi_get
    if _newclass:
        chi = _swig_property(_ccllib.data_chi_get, _ccllib.data_chi_set)
    __swig_setmethods__["growth"] = _ccllib.data_growth_set
    __swig_getmethods__["growth"] = _ccllib.data_growth_get
    if _newclass:
        growth = _swig_property(_ccllib.data_growth_get, _ccllib.data_growth_set)
    __swig_setmethods__["fgrowth"] = _ccllib.data_fgrowth_set
    __swig_getmethods__["fgrowth"] = _ccllib.data_fgrowth_get
    if _newclass:
        fgrowth = _swig_property(_ccllib.data_fgrowth_get, _ccllib.data_fgrowth_set)
    __swig_setmethods__["E"] = _ccllib.data_E_set
    __swig_getmethods__["E"] = _ccllib.data_E_get
    if _newclass:
        E = _swig_property(_ccllib.data_E_get, _ccllib.data_E_set)
    __swig_setmethods__["achi"] = _ccllib.data_achi_set
    __swig_getmethods__["achi"] = _ccllib.data_achi_get
    if _newclass:
        achi = _swig_property(_ccllib.data_achi_get, _ccllib.data_achi_set)
    __swig_setmethods__["accelerator"] = _ccllib.data_accelerator_set
    __swig_getmethods__["accelerator"] = _ccllib.data_accelerator_get
    if _newclass:
        accelerator = _swig_property(_ccllib.data_accelerator_get, _ccllib.data_accelerator_set)
    __swig_setmethods__["accelerator_achi"] = _ccllib.data_accelerator_achi_set
    __swig_getmethods__["accelerator_achi"] = _ccllib.data_accelerator_achi_get
    if _newclass:
        accelerator_achi = _swig_property(_ccllib.data_accelerator_achi_get, _ccllib.data_accelerator_achi_set)
    __swig_setmethods__["accelerator_m"] = _ccllib.data_accelerator_m_set
    __swig_getmethods__["accelerator_m"] = _ccllib.data_accelerator_m_get
    if _newclass:
        accelerator_m = _swig_property(_ccllib.data_accelerator_m_get, _ccllib.data_accelerator_m_set)
    __swig_setmethods__["accelerator_d"] = _ccllib.data_accelerator_d_set
    __swig_getmethods__["accelerator_d"] = _ccllib.data_accelerator_d_get
    if _newclass:
        accelerator_d = _swig_property(_ccllib.data_accelerator_d_get, _ccllib.data_accelerator_d_set)
    __swig_setmethods__["accelerator_k"] = _ccllib.data_accelerator_k_set
    __swig_getmethods__["accelerator_k"] = _ccllib.data_accelerator_k_get
    if _newclass:
        accelerator_k = _swig_property(_ccllib.data_accelerator_k_get, _ccllib.data_accelerator_k_set)
    __swig_setmethods__["logsigma"] = _ccllib.data_logsigma_set
    __swig_getmethods__["logsigma"] = _ccllib.data_logsigma_get
    if _newclass:
        logsigma = _swig_property(_ccllib.data_logsigma_get, _ccllib.data_logsigma_set)
    __swig_setmethods__["dlnsigma_dlogm"] = _ccllib.data_dlnsigma_dlogm_set
    __swig_getmethods__["dlnsigma_dlogm"] = _ccllib.data_dlnsigma_dlogm_get
    if _newclass:
        dlnsigma_dlogm = _swig_property(_ccllib.data_dlnsigma_dlogm_get, _ccllib.data_dlnsigma_dlogm_set)
    __swig_setmethods__["alphahmf"] = _ccllib.data_alphahmf_set
    __swig_getmethods__["alphahmf"] = _ccllib.data_alphahmf_get
    if _newclass:
        alphahmf = _swig_property(_ccllib.data_alphahmf_get, _ccllib.data_alphahmf_set)
    __swig_setmethods__["betahmf"] = _ccllib.data_betahmf_set
    __swig_getmethods__["betahmf"] = _ccllib.data_betahmf_get
    if _newclass:
        betahmf = _swig_property(_ccllib.data_betahmf_get, _ccllib.data_betahmf_set)
    __swig_setmethods__["gammahmf"] = _ccllib.data_gammahmf_set
    __swig_getmethods__["gammahmf"] = _ccllib.data_gammahmf_get
    if _newclass:
        gammahmf = _swig_property(_ccllib.data_gammahmf_get, _ccllib.data_gammahmf_set)
    __swig_setmethods__["phihmf"] = _ccllib.data_phihmf_set
    __swig_getmethods__["phihmf"] = _ccllib.data_phihmf_get
    if _newclass:
        phihmf = _swig_property(_ccllib.data_phihmf_get, _ccllib.data_phihmf_set)
    __swig_setmethods__["etahmf"] = _ccllib.data_etahmf_set
    __swig_getmethods__["etahmf"] = _ccllib.data_etahmf_get
    if _newclass:
        etahmf = _swig_property(_ccllib.data_etahmf_get, _ccllib.data_etahmf_set)
    __swig_setmethods__["p_lin"] = _ccllib.data_p_lin_set
    __swig_getmethods__["p_lin"] = _ccllib.data_p_lin_get
    if _newclass:
        p_lin = _swig_property(_ccllib.data_p_lin_get, _ccllib.data_p_lin_set)
    __swig_setmethods__["p_nl"] = _ccllib.data_p_nl_set
    __swig_getmethods__["p_nl"] = _ccllib.data_p_nl_get
    if _newclass:
        p_nl = _swig_property(_ccllib.data_p_nl_get, _ccllib.data_p_nl_set)
    __swig_setmethods__["k_min"] = _ccllib.data_k_min_set
    __swig_getmethods__["k_min"] = _ccllib.data_k_min_get
    if _newclass:
        k_min = _swig_property(_ccllib.data_k_min_get, _ccllib.data_k_min_set)

    def __init__(self):
        """__init__(ccl_data self) -> data"""
        this = _ccllib.new_data()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _ccllib.delete_data
    __del__ = lambda self: None
data_swigregister = _ccllib.data_swigregister
data_swigregister(data)

class cosmology(_object):
    """Proxy of C ccl_cosmology struct."""

    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, cosmology, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, cosmology, name)
    __repr__ = _swig_repr
    __swig_setmethods__["params"] = _ccllib.cosmology_params_set
    __swig_getmethods__["params"] = _ccllib.cosmology_params_get
    if _newclass:
        params = _swig_property(_ccllib.cosmology_params_get, _ccllib.cosmology_params_set)
    __swig_setmethods__["config"] = _ccllib.cosmology_config_set
    __swig_getmethods__["config"] = _ccllib.cosmology_config_get
    if _newclass:
        config = _swig_property(_ccllib.cosmology_config_get, _ccllib.cosmology_config_set)
    __swig_setmethods__["data"] = _ccllib.cosmology_data_set
    __swig_getmethods__["data"] = _ccllib.cosmology_data_get
    if _newclass:
        data = _swig_property(_ccllib.cosmology_data_get, _ccllib.cosmology_data_set)
    __swig_setmethods__["computed_distances"] = _ccllib.cosmology_computed_distances_set
    __swig_getmethods__["computed_distances"] = _ccllib.cosmology_computed_distances_get
    if _newclass:
        computed_distances = _swig_property(_ccllib.cosmology_computed_distances_get, _ccllib.cosmology_computed_distances_set)
    __swig_setmethods__["computed_growth"] = _ccllib.cosmology_computed_growth_set
    __swig_getmethods__["computed_growth"] = _ccllib.cosmology_computed_growth_get
    if _newclass:
        computed_growth = _swig_property(_ccllib.cosmology_computed_growth_get, _ccllib.cosmology_computed_growth_set)
    __swig_setmethods__["computed_power"] = _ccllib.cosmology_computed_power_set
    __swig_getmethods__["computed_power"] = _ccllib.cosmology_computed_power_get
    if _newclass:
        computed_power = _swig_property(_ccllib.cosmology_computed_power_get, _ccllib.cosmology_computed_power_set)
    __swig_setmethods__["computed_sigma"] = _ccllib.cosmology_computed_sigma_set
    __swig_getmethods__["computed_sigma"] = _ccllib.cosmology_computed_sigma_get
    if _newclass:
        computed_sigma = _swig_property(_ccllib.cosmology_computed_sigma_get, _ccllib.cosmology_computed_sigma_set)
    __swig_setmethods__["computed_hmfparams"] = _ccllib.cosmology_computed_hmfparams_set
    __swig_getmethods__["computed_hmfparams"] = _ccllib.cosmology_computed_hmfparams_get
    if _newclass:
        computed_hmfparams = _swig_property(_ccllib.cosmology_computed_hmfparams_get, _ccllib.cosmology_computed_hmfparams_set)
    __swig_setmethods__["status"] = _ccllib.cosmology_status_set
    __swig_getmethods__["status"] = _ccllib.cosmology_status_get
    if _newclass:
        status = _swig_property(_ccllib.cosmology_status_get, _ccllib.cosmology_status_set)
    __swig_setmethods__["status_message"] = _ccllib.cosmology_status_message_set
    __swig_getmethods__["status_message"] = _ccllib.cosmology_status_message_get
    if _newclass:
        status_message = _swig_property(_ccllib.cosmology_status_message_get, _ccllib.cosmology_status_message_set)

    def __init__(self):
        """__init__(ccl_cosmology self) -> cosmology"""
        this = _ccllib.new_cosmology()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _ccllib.delete_cosmology
    __del__ = lambda self: None
cosmology_swigregister = _ccllib.cosmology_swigregister
cosmology_swigregister(cosmology)


def cosmology_read_config():
    """cosmology_read_config()"""
    return _ccllib.cosmology_read_config()

def cosmology_create(params, config):
    """cosmology_create(parameters params, configuration config) -> cosmology"""
    return _ccllib.cosmology_create(params, config)

def cosmology_create_with_params(Omega_c, Omega_b, Omega_k, N_nu_rel, N_nu_mass, mnu, w0, wa, h, norm_pk, n_s, nz_mgrowth, zarr_mgrowth, dfarr_mgrowth, config, status):
    """cosmology_create_with_params(double Omega_c, double Omega_b, double Omega_k, double N_nu_rel, double N_nu_mass, double mnu, double w0, double wa, double h, double norm_pk, double n_s, int nz_mgrowth, double * zarr_mgrowth, double * dfarr_mgrowth, configuration config, int * status) -> cosmology"""
    return _ccllib.cosmology_create_with_params(Omega_c, Omega_b, Omega_k, N_nu_rel, N_nu_mass, mnu, w0, wa, h, norm_pk, n_s, nz_mgrowth, zarr_mgrowth, dfarr_mgrowth, config, status)

def cosmology_create_with_lcdm_params(Omega_c, Omega_b, Omega_k, h, norm_pk, n_s, config, status):
    """cosmology_create_with_lcdm_params(double Omega_c, double Omega_b, double Omega_k, double h, double norm_pk, double n_s, configuration config, int * status) -> cosmology"""
    return _ccllib.cosmology_create_with_lcdm_params(Omega_c, Omega_b, Omega_k, h, norm_pk, n_s, config, status)

def parameters_create(Omega_c, Omega_b, Omega_k, N_nu_rel, N_nu_mass, mnu, w0, wa, h, norm_pk, n_s, nz_mgrowth, zarr_mgrowth, dfarr_mgrowth, status):
    """parameters_create(double Omega_c, double Omega_b, double Omega_k, double N_nu_rel, double N_nu_mass, double mnu, double w0, double wa, double h, double norm_pk, double n_s, int nz_mgrowth, double * zarr_mgrowth, double * dfarr_mgrowth, int * status) -> parameters"""
    return _ccllib.parameters_create(Omega_c, Omega_b, Omega_k, N_nu_rel, N_nu_mass, mnu, w0, wa, h, norm_pk, n_s, nz_mgrowth, zarr_mgrowth, dfarr_mgrowth, status)

def parameters_create_flat_lcdm(Omega_c, Omega_b, h, norm_pk, n_s, status):
    """parameters_create_flat_lcdm(double Omega_c, double Omega_b, double h, double norm_pk, double n_s, int * status) -> parameters"""
    return _ccllib.parameters_create_flat_lcdm(Omega_c, Omega_b, h, norm_pk, n_s, status)

def parameters_create_flat_wcdm(Omega_c, Omega_b, w0, h, norm_pk, n_s, status):
    """parameters_create_flat_wcdm(double Omega_c, double Omega_b, double w0, double h, double norm_pk, double n_s, int * status) -> parameters"""
    return _ccllib.parameters_create_flat_wcdm(Omega_c, Omega_b, w0, h, norm_pk, n_s, status)

def parameters_create_flat_wacdm(Omega_c, Omega_b, w0, wa, h, norm_pk, n_s, status):
    """parameters_create_flat_wacdm(double Omega_c, double Omega_b, double w0, double wa, double h, double norm_pk, double n_s, int * status) -> parameters"""
    return _ccllib.parameters_create_flat_wacdm(Omega_c, Omega_b, w0, wa, h, norm_pk, n_s, status)

def parameters_create_lcdm(Omega_c, Omega_b, Omega_k, h, norm_pk, n_s, status):
    """parameters_create_lcdm(double Omega_c, double Omega_b, double Omega_k, double h, double norm_pk, double n_s, int * status) -> parameters"""
    return _ccllib.parameters_create_lcdm(Omega_c, Omega_b, Omega_k, h, norm_pk, n_s, status)

def parameters_create_flat_lcdm_nu(Omega_c, Omega_b, h, norm_pk, n_s, N_nu_rel, N_nu_mass, mnu, status):
    """parameters_create_flat_lcdm_nu(double Omega_c, double Omega_b, double h, double norm_pk, double n_s, double N_nu_rel, double N_nu_mass, double mnu, int * status) -> parameters"""
    return _ccllib.parameters_create_flat_lcdm_nu(Omega_c, Omega_b, h, norm_pk, n_s, N_nu_rel, N_nu_mass, mnu, status)

def parameters_create_flat_wcdm_nu(Omega_c, Omega_b, w0, h, norm_pk, n_s, N_nu_rel, N_nu_mass, mnu, status):
    """parameters_create_flat_wcdm_nu(double Omega_c, double Omega_b, double w0, double h, double norm_pk, double n_s, double N_nu_rel, double N_nu_mass, double mnu, int * status) -> parameters"""
    return _ccllib.parameters_create_flat_wcdm_nu(Omega_c, Omega_b, w0, h, norm_pk, n_s, N_nu_rel, N_nu_mass, mnu, status)

def parameters_create_flat_wacdm_nu(Omega_c, Omega_b, w0, wa, h, norm_pk, n_s, N_nu_rel, N_nu_mass, mnu, status):
    """parameters_create_flat_wacdm_nu(double Omega_c, double Omega_b, double w0, double wa, double h, double norm_pk, double n_s, double N_nu_rel, double N_nu_mass, double mnu, int * status) -> parameters"""
    return _ccllib.parameters_create_flat_wacdm_nu(Omega_c, Omega_b, w0, wa, h, norm_pk, n_s, N_nu_rel, N_nu_mass, mnu, status)

def parameters_create_lcdm_nu(Omega_c, Omega_b, Omega_k, h, norm_pk, n_s, N_nu_rel, N_nu_mass, mnu, status):
    """parameters_create_lcdm_nu(double Omega_c, double Omega_b, double Omega_k, double h, double norm_pk, double n_s, double N_nu_rel, double N_nu_mass, double mnu, int * status) -> parameters"""
    return _ccllib.parameters_create_lcdm_nu(Omega_c, Omega_b, Omega_k, h, norm_pk, n_s, N_nu_rel, N_nu_mass, mnu, status)

def cosmology_free(cosmo):
    """cosmology_free(cosmology cosmo)"""
    return _ccllib.cosmology_free(cosmo)

def cosmology_compute_distances(cosmo, status):
    """cosmology_compute_distances(cosmology cosmo, int * status)"""
    return _ccllib.cosmology_compute_distances(cosmo, status)

def cosmology_compute_growth(cosmo, status):
    """cosmology_compute_growth(cosmology cosmo, int * status)"""
    return _ccllib.cosmology_compute_growth(cosmo, status)

def cosmology_compute_power(cosmo, status):
    """cosmology_compute_power(cosmology cosmo, int * status)"""
    return _ccllib.cosmology_compute_power(cosmo, status)

def parameters_create_vec(Omega_c, Omega_b, Omega_k, N_nu_rel, N_nu_mass, M_nu, w0, wa, h, norm_pk, n_s, zarr, dfarr, status):
    """parameters_create_vec(double Omega_c, double Omega_b, double Omega_k, double N_nu_rel, double N_nu_mass, double M_nu, double w0, double wa, double h, double norm_pk, double n_s, double * zarr, double * dfarr, int * status) -> parameters"""
    return _ccllib.parameters_create_vec(Omega_c, Omega_b, Omega_k, N_nu_rel, N_nu_mass, M_nu, w0, wa, h, norm_pk, n_s, zarr, dfarr, status)
omega_m_label = _ccllib.omega_m_label
omega_l_label = _ccllib.omega_l_label
omega_g_label = _ccllib.omega_g_label
omega_k_label = _ccllib.omega_k_label
omega_ur_label = _ccllib.omega_ur_label
omega_nu_label = _ccllib.omega_nu_label

def h_over_h0(cosmo, a, status):
    """h_over_h0(cosmology cosmo, double a, int * status) -> double"""
    return _ccllib.h_over_h0(cosmo, a, status)

def h_over_h0s(cosmo, na, a, output, status):
    """h_over_h0s(cosmology cosmo, int na, double [na] a, double [na] output, int * status)"""
    return _ccllib.h_over_h0s(cosmo, na, a, output, status)

def comoving_radial_distance(cosmo, a, status):
    """comoving_radial_distance(cosmology cosmo, double a, int * status) -> double"""
    return _ccllib.comoving_radial_distance(cosmo, a, status)

def comoving_radial_distances(cosmo, na, a, output, status):
    """comoving_radial_distances(cosmology cosmo, int na, double [na] a, double [na] output, int * status)"""
    return _ccllib.comoving_radial_distances(cosmo, na, a, output, status)

def sinn(cosmo, chi, status):
    """sinn(cosmology cosmo, double chi, int * status) -> double"""
    return _ccllib.sinn(cosmo, chi, status)

def comoving_angular_distance(cosmo, a, status):
    """comoving_angular_distance(cosmology cosmo, double a, int * status) -> double"""
    return _ccllib.comoving_angular_distance(cosmo, a, status)

def comoving_angular_distances(cosmo, na, a, output, status):
    """comoving_angular_distances(cosmology cosmo, int na, double [na] a, double [na] output, int * status)"""
    return _ccllib.comoving_angular_distances(cosmo, na, a, output, status)

def luminosity_distance(cosmo, a, status):
    """luminosity_distance(cosmology cosmo, double a, int * status) -> double"""
    return _ccllib.luminosity_distance(cosmo, a, status)

def luminosity_distances(cosmo, na, a, output, status):
    """luminosity_distances(cosmology cosmo, int na, double [na] a, double [na] output, int * status)"""
    return _ccllib.luminosity_distances(cosmo, na, a, output, status)

def distance_modulus(cosmo, a, status):
    """distance_modulus(cosmology cosmo, double a, int * status) -> double"""
    return _ccllib.distance_modulus(cosmo, a, status)

def distance_moduli(cosmo, na, a, output, status):
    """distance_moduli(cosmology cosmo, int na, double [na] a, double [na] output, int * status)"""
    return _ccllib.distance_moduli(cosmo, na, a, output, status)

def growth_factor(cosmo, a, status):
    """growth_factor(cosmology cosmo, double a, int * status) -> double"""
    return _ccllib.growth_factor(cosmo, a, status)

def growth_factors(cosmo, na, a, output, status):
    """growth_factors(cosmology cosmo, int na, double [na] a, double [na] output, int * status)"""
    return _ccllib.growth_factors(cosmo, na, a, output, status)

def growth_factor_unnorm(cosmo, a, status):
    """growth_factor_unnorm(cosmology cosmo, double a, int * status) -> double"""
    return _ccllib.growth_factor_unnorm(cosmo, a, status)

def growth_factors_unnorm(cosmo, na, a, output, status):
    """growth_factors_unnorm(cosmology cosmo, int na, double [na] a, double [na] output, int * status)"""
    return _ccllib.growth_factors_unnorm(cosmo, na, a, output, status)

def growth_rate(cosmo, a, status):
    """growth_rate(cosmology cosmo, double a, int * status) -> double"""
    return _ccllib.growth_rate(cosmo, a, status)

def growth_rates(cosmo, na, a, output, status):
    """growth_rates(cosmology cosmo, int na, double [na] a, double [na] output, int * status)"""
    return _ccllib.growth_rates(cosmo, na, a, output, status)

def scale_factor_of_chi(cosmo, chi, status):
    """scale_factor_of_chi(cosmology cosmo, double chi, int * status) -> double"""
    return _ccllib.scale_factor_of_chi(cosmo, chi, status)

def scale_factor_of_chis(cosmo, nchi, chi, output, status):
    """scale_factor_of_chis(cosmology cosmo, int nchi, double [nchi] chi, double [nchi] output, int * status)"""
    return _ccllib.scale_factor_of_chis(cosmo, nchi, chi, output, status)

def omega_x(cosmo, a, label, status):
    """omega_x(cosmology cosmo, double a, ccl_omega_x_label label, int * status) -> double"""
    return _ccllib.omega_x(cosmo, a, label, status)

def growth_factor_vec(cosmo, a, output, status):
    """growth_factor_vec(cosmology cosmo, double * a, double * output, int * status)"""
    return _ccllib.growth_factor_vec(cosmo, a, output, status)

def growth_factor_unnorm_vec(cosmo, a, output, status):
    """growth_factor_unnorm_vec(cosmology cosmo, double * a, double * output, int * status)"""
    return _ccllib.growth_factor_unnorm_vec(cosmo, a, output, status)

def growth_rate_vec(cosmo, a, output, status):
    """growth_rate_vec(cosmology cosmo, double * a, double * output, int * status)"""
    return _ccllib.growth_rate_vec(cosmo, a, output, status)

def comoving_radial_distance_vec(cosmo, a, output, status):
    """comoving_radial_distance_vec(cosmology cosmo, double * a, double * output, int * status)"""
    return _ccllib.comoving_radial_distance_vec(cosmo, a, output, status)

def comoving_angular_distance_vec(cosmo, a, output, status):
    """comoving_angular_distance_vec(cosmology cosmo, double * a, double * output, int * status)"""
    return _ccllib.comoving_angular_distance_vec(cosmo, a, output, status)

def h_over_h0_vec(cosmo, a, output, status):
    """h_over_h0_vec(cosmology cosmo, double * a, double * output, int * status)"""
    return _ccllib.h_over_h0_vec(cosmo, a, output, status)

def luminosity_distance_vec(cosmo, a, output, status):
    """luminosity_distance_vec(cosmology cosmo, double * a, double * output, int * status)"""
    return _ccllib.luminosity_distance_vec(cosmo, a, output, status)

def distance_modulus_vec(cosmo, a, output, status):
    """distance_modulus_vec(cosmology cosmo, double * a, double * output, int * status)"""
    return _ccllib.distance_modulus_vec(cosmo, a, output, status)

def scale_factor_of_chi_vec(cosmo, chi, output, status):
    """scale_factor_of_chi_vec(cosmology cosmo, double * chi, double * output, int * status)"""
    return _ccllib.scale_factor_of_chi_vec(cosmo, chi, output, status)

def omega_x_vec(cosmo, label, a, output, status):
    """omega_x_vec(cosmology cosmo, int label, double * a, double * output, int * status)"""
    return _ccllib.omega_x_vec(cosmo, label, a, output, status)

def linear_matter_power(cosmo, k, a, status):
    """linear_matter_power(cosmology cosmo, double k, double a, int * status) -> double"""
    return _ccllib.linear_matter_power(cosmo, k, a, status)

def nonlin_matter_power(cosmo, k, a, status):
    """nonlin_matter_power(cosmology cosmo, double k, double a, int * status) -> double"""
    return _ccllib.nonlin_matter_power(cosmo, k, a, status)

def sigmaR(cosmo, R, status):
    """sigmaR(cosmology cosmo, double R, int * status) -> double"""
    return _ccllib.sigmaR(cosmo, R, status)

def sigma8(cosmo, status):
    """sigma8(cosmology cosmo, int * status) -> double"""
    return _ccllib.sigma8(cosmo, status)

def linear_matter_power_vec(cosmo, a, k, output, status):
    """linear_matter_power_vec(cosmology cosmo, double a, double * k, double * output, int * status)"""
    return _ccllib.linear_matter_power_vec(cosmo, a, k, output, status)

def nonlin_matter_power_vec(cosmo, a, k, output, status):
    """nonlin_matter_power_vec(cosmology cosmo, double a, double * k, double * output, int * status)"""
    return _ccllib.nonlin_matter_power_vec(cosmo, a, k, output, status)

def sigmaR_vec(cosmo, R, output, status):
    """sigmaR_vec(cosmology cosmo, double * R, double * output, int * status)"""
    return _ccllib.sigmaR_vec(cosmo, R, output, status)
CCL_CORR_LGNDRE = _ccllib.CCL_CORR_LGNDRE
CCL_CORR_FFTLOG = _ccllib.CCL_CORR_FFTLOG
CCL_CORR_BESSEL = _ccllib.CCL_CORR_BESSEL
CCL_CORR_GG = _ccllib.CCL_CORR_GG
CCL_CORR_GL = _ccllib.CCL_CORR_GL
CCL_CORR_LP = _ccllib.CCL_CORR_LP
CCL_CORR_LM = _ccllib.CCL_CORR_LM

def correlation(cosmo, n_ell, ell, cls, n_theta, theta, wtheta, corr_type, do_taper_cl, taper_cl_limits, flag_method, status):
    """correlation(cosmology cosmo, int n_ell, double * ell, double * cls, int n_theta, double * theta, double * wtheta, int corr_type, int do_taper_cl, double * taper_cl_limits, int flag_method, int * status)"""
    return _ccllib.correlation(cosmo, n_ell, ell, cls, n_theta, theta, wtheta, corr_type, do_taper_cl, taper_cl_limits, flag_method, status)

def correlation_vec(cosmo, nlarr, nclarr, nt, corr_type, method, output, status):
    """correlation_vec(cosmology cosmo, int nlarr, int nclarr, int nt, int corr_type, int method, double * output, int * status)"""
    return _ccllib.correlation_vec(cosmo, nlarr, nclarr, nt, corr_type, method, output, status)

def cosmology_compute_sigma(cosmo, status):
    """cosmology_compute_sigma(cosmology cosmo, int * status)"""
    return _ccllib.cosmology_compute_sigma(cosmo, status)

def cosmology_compute_hmfparams(cosmo, status):
    """cosmology_compute_hmfparams(cosmology cosmo, int * status)"""
    return _ccllib.cosmology_compute_hmfparams(cosmo, status)

def massfunc(cosmo, smooth_mass, a, odelta, status):
    """massfunc(cosmology cosmo, double smooth_mass, double a, double odelta, int * status) -> double"""
    return _ccllib.massfunc(cosmo, smooth_mass, a, odelta, status)

def halo_bias(cosmo, smooth_mass, a, odelta, status):
    """halo_bias(cosmology cosmo, double smooth_mass, double a, double odelta, int * status) -> double"""
    return _ccllib.halo_bias(cosmo, smooth_mass, a, odelta, status)

def massfunc_m2r(cosmo, smooth_mass, status):
    """massfunc_m2r(cosmology cosmo, double smooth_mass, int * status) -> double"""
    return _ccllib.massfunc_m2r(cosmo, smooth_mass, status)

def sigmaM(cosmo, smooth_mass, a, status):
    """sigmaM(cosmology cosmo, double smooth_mass, double a, int * status) -> double"""
    return _ccllib.sigmaM(cosmo, smooth_mass, a, status)

def massfunc_vec(cosmo, a, odelta, halo_mass, output, status):
    """massfunc_vec(cosmology cosmo, double a, double odelta, double * halo_mass, double * output, int * status)"""
    return _ccllib.massfunc_vec(cosmo, a, odelta, halo_mass, output, status)

def massfunc_m2r_vec(cosmo, halo_mass, output, status):
    """massfunc_m2r_vec(cosmology cosmo, double * halo_mass, double * output, int * status)"""
    return _ccllib.massfunc_m2r_vec(cosmo, halo_mass, output, status)

def sigmaM_vec(cosmo, a, halo_mass, output, status):
    """sigmaM_vec(cosmology cosmo, double a, double * halo_mass, double * output, int * status)"""
    return _ccllib.sigmaM_vec(cosmo, a, halo_mass, output, status)

def halo_bias_vec(cosmo, a, odelta, halo_mass, output, status):
    """halo_bias_vec(cosmology cosmo, double a, double odelta, double * halo_mass, double * output, int * status)"""
    return _ccllib.halo_bias_vec(cosmo, a, odelta, halo_mass, output, status)
CL_TRACER_NC = _ccllib.CL_TRACER_NC
CL_TRACER_WL = _ccllib.CL_TRACER_WL
class CCL_ClTracer(_object):
    """Proxy of C CCL_ClTracer struct."""

    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, CCL_ClTracer, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, CCL_ClTracer, name)
    __repr__ = _swig_repr
    __swig_setmethods__["tracer_type"] = _ccllib.CCL_ClTracer_tracer_type_set
    __swig_getmethods__["tracer_type"] = _ccllib.CCL_ClTracer_tracer_type_get
    if _newclass:
        tracer_type = _swig_property(_ccllib.CCL_ClTracer_tracer_type_get, _ccllib.CCL_ClTracer_tracer_type_set)
    __swig_setmethods__["prefac_lensing"] = _ccllib.CCL_ClTracer_prefac_lensing_set
    __swig_getmethods__["prefac_lensing"] = _ccllib.CCL_ClTracer_prefac_lensing_get
    if _newclass:
        prefac_lensing = _swig_property(_ccllib.CCL_ClTracer_prefac_lensing_get, _ccllib.CCL_ClTracer_prefac_lensing_set)
    __swig_setmethods__["chimax"] = _ccllib.CCL_ClTracer_chimax_set
    __swig_getmethods__["chimax"] = _ccllib.CCL_ClTracer_chimax_get
    if _newclass:
        chimax = _swig_property(_ccllib.CCL_ClTracer_chimax_get, _ccllib.CCL_ClTracer_chimax_set)
    __swig_setmethods__["chimin"] = _ccllib.CCL_ClTracer_chimin_set
    __swig_getmethods__["chimin"] = _ccllib.CCL_ClTracer_chimin_get
    if _newclass:
        chimin = _swig_property(_ccllib.CCL_ClTracer_chimin_get, _ccllib.CCL_ClTracer_chimin_set)
    __swig_setmethods__["has_rsd"] = _ccllib.CCL_ClTracer_has_rsd_set
    __swig_getmethods__["has_rsd"] = _ccllib.CCL_ClTracer_has_rsd_get
    if _newclass:
        has_rsd = _swig_property(_ccllib.CCL_ClTracer_has_rsd_get, _ccllib.CCL_ClTracer_has_rsd_set)
    __swig_setmethods__["has_magnification"] = _ccllib.CCL_ClTracer_has_magnification_set
    __swig_getmethods__["has_magnification"] = _ccllib.CCL_ClTracer_has_magnification_get
    if _newclass:
        has_magnification = _swig_property(_ccllib.CCL_ClTracer_has_magnification_get, _ccllib.CCL_ClTracer_has_magnification_set)
    __swig_setmethods__["has_intrinsic_alignment"] = _ccllib.CCL_ClTracer_has_intrinsic_alignment_set
    __swig_getmethods__["has_intrinsic_alignment"] = _ccllib.CCL_ClTracer_has_intrinsic_alignment_get
    if _newclass:
        has_intrinsic_alignment = _swig_property(_ccllib.CCL_ClTracer_has_intrinsic_alignment_get, _ccllib.CCL_ClTracer_has_intrinsic_alignment_set)
    __swig_setmethods__["spl_nz"] = _ccllib.CCL_ClTracer_spl_nz_set
    __swig_getmethods__["spl_nz"] = _ccllib.CCL_ClTracer_spl_nz_get
    if _newclass:
        spl_nz = _swig_property(_ccllib.CCL_ClTracer_spl_nz_get, _ccllib.CCL_ClTracer_spl_nz_set)
    __swig_setmethods__["spl_bz"] = _ccllib.CCL_ClTracer_spl_bz_set
    __swig_getmethods__["spl_bz"] = _ccllib.CCL_ClTracer_spl_bz_get
    if _newclass:
        spl_bz = _swig_property(_ccllib.CCL_ClTracer_spl_bz_get, _ccllib.CCL_ClTracer_spl_bz_set)
    __swig_setmethods__["spl_sz"] = _ccllib.CCL_ClTracer_spl_sz_set
    __swig_getmethods__["spl_sz"] = _ccllib.CCL_ClTracer_spl_sz_get
    if _newclass:
        spl_sz = _swig_property(_ccllib.CCL_ClTracer_spl_sz_get, _ccllib.CCL_ClTracer_spl_sz_set)
    __swig_setmethods__["spl_rf"] = _ccllib.CCL_ClTracer_spl_rf_set
    __swig_getmethods__["spl_rf"] = _ccllib.CCL_ClTracer_spl_rf_get
    if _newclass:
        spl_rf = _swig_property(_ccllib.CCL_ClTracer_spl_rf_get, _ccllib.CCL_ClTracer_spl_rf_set)
    __swig_setmethods__["spl_ba"] = _ccllib.CCL_ClTracer_spl_ba_set
    __swig_getmethods__["spl_ba"] = _ccllib.CCL_ClTracer_spl_ba_get
    if _newclass:
        spl_ba = _swig_property(_ccllib.CCL_ClTracer_spl_ba_get, _ccllib.CCL_ClTracer_spl_ba_set)
    __swig_setmethods__["spl_wL"] = _ccllib.CCL_ClTracer_spl_wL_set
    __swig_getmethods__["spl_wL"] = _ccllib.CCL_ClTracer_spl_wL_get
    if _newclass:
        spl_wL = _swig_property(_ccllib.CCL_ClTracer_spl_wL_get, _ccllib.CCL_ClTracer_spl_wL_set)
    __swig_setmethods__["spl_wM"] = _ccllib.CCL_ClTracer_spl_wM_set
    __swig_getmethods__["spl_wM"] = _ccllib.CCL_ClTracer_spl_wM_get
    if _newclass:
        spl_wM = _swig_property(_ccllib.CCL_ClTracer_spl_wM_get, _ccllib.CCL_ClTracer_spl_wM_set)

    def __init__(self):
        """__init__(CCL_ClTracer self) -> CCL_ClTracer"""
        this = _ccllib.new_CCL_ClTracer()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _ccllib.delete_CCL_ClTracer
    __del__ = lambda self: None
CCL_ClTracer_swigregister = _ccllib.CCL_ClTracer_swigregister
CCL_ClTracer_swigregister(CCL_ClTracer)


def cl_tracer_new(cosmo, tracer_type, has_rsd, has_magnification, has_intrinsic_alignment, nz_n, z_n, n, nz_b, z_b, b, nz_s, z_s, s, nz_ba, z_ba, ba, nz_rf, z_rf, rf, status):
    """cl_tracer_new(cosmology cosmo, int tracer_type, int has_rsd, int has_magnification, int has_intrinsic_alignment, int nz_n, double * z_n, double * n, int nz_b, double * z_b, double * b, int nz_s, double * z_s, double * s, int nz_ba, double * z_ba, double * ba, int nz_rf, double * z_rf, double * rf, int * status) -> CCL_ClTracer"""
    return _ccllib.cl_tracer_new(cosmo, tracer_type, has_rsd, has_magnification, has_intrinsic_alignment, nz_n, z_n, n, nz_b, z_b, b, nz_s, z_s, s, nz_ba, z_ba, ba, nz_rf, z_rf, rf, status)

def cl_tracer_number_counts_new(cosmo, has_rsd, has_magnification, nz_n, z_n, n, nz_b, z_b, b, nz_s, z_s, s, status):
    """cl_tracer_number_counts_new(cosmology cosmo, int has_rsd, int has_magnification, int nz_n, double * z_n, double * n, int nz_b, double * z_b, double * b, int nz_s, double * z_s, double * s, int * status) -> CCL_ClTracer"""
    return _ccllib.cl_tracer_number_counts_new(cosmo, has_rsd, has_magnification, nz_n, z_n, n, nz_b, z_b, b, nz_s, z_s, s, status)

def cl_tracer_number_counts_simple_new(cosmo, nz_n, z_n, n, nz_b, z_b, b, status):
    """cl_tracer_number_counts_simple_new(cosmology cosmo, int nz_n, double * z_n, double * n, int nz_b, double * z_b, double * b, int * status) -> CCL_ClTracer"""
    return _ccllib.cl_tracer_number_counts_simple_new(cosmo, nz_n, z_n, n, nz_b, z_b, b, status)

def cl_tracer_lensing_new(cosmo, has_alignment, nz_n, z_n, n, nz_ba, z_ba, ba, nz_rf, z_rf, rf, status):
    """cl_tracer_lensing_new(cosmology cosmo, int has_alignment, int nz_n, double * z_n, double * n, int nz_ba, double * z_ba, double * ba, int nz_rf, double * z_rf, double * rf, int * status) -> CCL_ClTracer"""
    return _ccllib.cl_tracer_lensing_new(cosmo, has_alignment, nz_n, z_n, n, nz_ba, z_ba, ba, nz_rf, z_rf, rf, status)

def cl_tracer_lensing_simple_new(cosmo, nz_n, z_n, n, status):
    """cl_tracer_lensing_simple_new(cosmology cosmo, int nz_n, double * z_n, double * n, int * status) -> CCL_ClTracer"""
    return _ccllib.cl_tracer_lensing_simple_new(cosmo, nz_n, z_n, n, status)

def cl_tracer_free(clt):
    """cl_tracer_free(CCL_ClTracer clt)"""
    return _ccllib.cl_tracer_free(clt)

def angular_cl(cosmo, l, clt1, clt2, status):
    """angular_cl(cosmology cosmo, int l, CCL_ClTracer clt1, CCL_ClTracer clt2, int * status) -> double"""
    return _ccllib.angular_cl(cosmo, l, clt1, clt2, status)

def cl_tracer_new_wrapper(cosmo, tracer_type, has_rsd, has_magnification, has_intrinsic_alignment, nz_n, nn, nz_b, nb, nz_s, ns, nz_ba, nba, nz_rf, nrf, status):
    """cl_tracer_new_wrapper(cosmology cosmo, int tracer_type, int has_rsd, int has_magnification, int has_intrinsic_alignment, int nz_n, int nn, int nz_b, int nb, int nz_s, int ns, int nz_ba, int nba, int nz_rf, int nrf, int * status) -> CCL_ClTracer"""
    return _ccllib.cl_tracer_new_wrapper(cosmo, tracer_type, has_rsd, has_magnification, has_intrinsic_alignment, nz_n, nn, nz_b, nb, nz_s, ns, nz_ba, nba, nz_rf, nrf, status)

def angular_cl_vec(cosmo, clt1, clt2, ell, output, status):
    """angular_cl_vec(cosmology cosmo, CCL_ClTracer clt1, CCL_ClTracer clt2, double * ell, double * output, int * status)"""
    return _ccllib.angular_cl_vec(cosmo, clt1, clt2, ell, output, status)
K_PIVOT = _ccllib.K_PIVOT
RHO_CRITICAL = _ccllib.RHO_CRITICAL
CLIGHT_HMPC = _ccllib.CLIGHT_HMPC
GNEWT = _ccllib.GNEWT
SOLAR_MASS = _ccllib.SOLAR_MASS
MPC_TO_METER = _ccllib.MPC_TO_METER
PC_TO_METER = _ccllib.PC_TO_METER
TNCDM = _ccllib.TNCDM
EPSREL_DIST = _ccllib.EPSREL_DIST
EPSREL_GROWTH = _ccllib.EPSREL_GROWTH
EPSREL_DNDZ = _ccllib.EPSREL_DNDZ
EPS_SCALEFAC_GROWTH = _ccllib.EPS_SCALEFAC_GROWTH
EPSREL_CORR_FUNC = _ccllib.EPSREL_CORR_FUNC
GSL_INTEGRATION_LIMIT = _ccllib.GSL_INTEGRATION_LIMIT
Z_MIN_SOURCES = _ccllib.Z_MIN_SOURCES
Z_MAX_SOURCES = _ccllib.Z_MAX_SOURCES
class user_pz_info(_object):
    """Proxy of C user_pz_info struct."""

    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, user_pz_info, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, user_pz_info, name)
    __repr__ = _swig_repr
    __swig_setmethods__["your_pz_func"] = _ccllib.user_pz_info_your_pz_func_set
    __swig_getmethods__["your_pz_func"] = _ccllib.user_pz_info_your_pz_func_get
    if _newclass:
        your_pz_func = _swig_property(_ccllib.user_pz_info_your_pz_func_get, _ccllib.user_pz_info_your_pz_func_set)
    __swig_setmethods__["your_pz_params"] = _ccllib.user_pz_info_your_pz_params_set
    __swig_getmethods__["your_pz_params"] = _ccllib.user_pz_info_your_pz_params_get
    if _newclass:
        your_pz_params = _swig_property(_ccllib.user_pz_info_your_pz_params_get, _ccllib.user_pz_info_your_pz_params_set)

    def __init__(self):
        """__init__(user_pz_info self) -> user_pz_info"""
        this = _ccllib.new_user_pz_info()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _ccllib.delete_user_pz_info
    __del__ = lambda self: None
user_pz_info_swigregister = _ccllib.user_pz_info_swigregister
user_pz_info_swigregister(user_pz_info)


def specs_bias_clustering(cosmo, a, status):
    """specs_bias_clustering(cosmology cosmo, double a, int * status) -> double"""
    return _ccllib.specs_bias_clustering(cosmo, a, status)

def specs_dNdz_tomog(z, dNdz_type, bin_zmin, bin_zmax, user_info, tomoout, status):
    """specs_dNdz_tomog(double z, int dNdz_type, double bin_zmin, double bin_zmax, user_pz_info user_info, double * tomoout, int * status)"""
    return _ccllib.specs_dNdz_tomog(z, dNdz_type, bin_zmin, bin_zmax, user_info, tomoout, status)

def specs_create_photoz_info(user_params, user_pz_func):
    """specs_create_photoz_info(void * user_params, double (*)(double,double,void *,int *) user_pz_func) -> user_pz_info"""
    return _ccllib.specs_create_photoz_info(user_params, user_pz_func)

def specs_free_photoz_info(my_photoz_info):
    """specs_free_photoz_info(user_pz_info my_photoz_info)"""
    return _ccllib.specs_free_photoz_info(my_photoz_info)

def specs_sigmaz_clustering(z):
    """specs_sigmaz_clustering(double z) -> double"""
    return _ccllib.specs_sigmaz_clustering(z)

def specs_sigmaz_sources(z):
    """specs_sigmaz_sources(double z) -> double"""
    return _ccllib.specs_sigmaz_sources(z)
DNDZ_WL_CONS = _ccllib.DNDZ_WL_CONS
DNDZ_WL_FID = _ccllib.DNDZ_WL_FID
DNDZ_WL_OPT = _ccllib.DNDZ_WL_OPT
DNDZ_NC = _ccllib.DNDZ_NC

def specs_bias_clustering_vec(cosmo, a, output, status):
    """specs_bias_clustering_vec(cosmology cosmo, double * a, double * output, int * status)"""
    return _ccllib.specs_bias_clustering_vec(cosmo, a, output, status)

def specs_sigmaz_clustering_vec(z, output):
    """specs_sigmaz_clustering_vec(double * z, double * output)"""
    return _ccllib.specs_sigmaz_clustering_vec(z, output)

def specs_sigmaz_sources_vec(z, output):
    """specs_sigmaz_sources_vec(double * z, double * output)"""
    return _ccllib.specs_sigmaz_sources_vec(z, output)

def specs_dNdz_tomog_vec(dNdz_type, bin_zmin, bin_zmax, user_info, z, output, status):
    """specs_dNdz_tomog_vec(int dNdz_type, double bin_zmin, double bin_zmax, user_pz_info user_info, double * z, double * output, int * status)"""
    return _ccllib.specs_dNdz_tomog_vec(dNdz_type, bin_zmin, bin_zmax, user_info, z, output, status)

def call_py_photoz_fn(z_ph, z_s, py_func_obj, status):
    """call_py_photoz_fn(double z_ph, double z_s, void * py_func_obj, int * status) -> double"""
    return _ccllib.call_py_photoz_fn(z_ph, z_s, py_func_obj, status)

def specs_create_photoz_info_from_py(pyfunc):
    """specs_create_photoz_info_from_py(PyObject * pyfunc) -> user_pz_info"""
    return _ccllib.specs_create_photoz_info_from_py(pyfunc)
emulator = _ccllib.emulator
none = _ccllib.none
fitting_function = _ccllib.fitting_function
eisenstein_hu = _ccllib.eisenstein_hu
bbks = _ccllib.bbks
boltzmann = _ccllib.boltzmann
boltzmann_class = _ccllib.boltzmann_class
boltzmann_camb = _ccllib.boltzmann_camb
linear = _ccllib.linear
halofit = _ccllib.halofit
halo_model = _ccllib.halo_model
tinker = _ccllib.tinker
tinker10 = _ccllib.tinker10
watson = _ccllib.watson
angulo = _ccllib.angulo
class configuration(_object):
    """Proxy of C ccl_configuration struct."""

    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, configuration, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, configuration, name)
    __repr__ = _swig_repr
    __swig_setmethods__["transfer_function_method"] = _ccllib.configuration_transfer_function_method_set
    __swig_getmethods__["transfer_function_method"] = _ccllib.configuration_transfer_function_method_get
    if _newclass:
        transfer_function_method = _swig_property(_ccllib.configuration_transfer_function_method_get, _ccllib.configuration_transfer_function_method_set)
    __swig_setmethods__["matter_power_spectrum_method"] = _ccllib.configuration_matter_power_spectrum_method_set
    __swig_getmethods__["matter_power_spectrum_method"] = _ccllib.configuration_matter_power_spectrum_method_get
    if _newclass:
        matter_power_spectrum_method = _swig_property(_ccllib.configuration_matter_power_spectrum_method_get, _ccllib.configuration_matter_power_spectrum_method_set)
    __swig_setmethods__["mass_function_method"] = _ccllib.configuration_mass_function_method_set
    __swig_getmethods__["mass_function_method"] = _ccllib.configuration_mass_function_method_get
    if _newclass:
        mass_function_method = _swig_property(_ccllib.configuration_mass_function_method_get, _ccllib.configuration_mass_function_method_set)

    def __init__(self):
        """__init__(ccl_configuration self) -> configuration"""
        this = _ccllib.new_configuration()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _ccllib.delete_configuration
    __del__ = lambda self: None
configuration_swigregister = _ccllib.configuration_swigregister
configuration_swigregister(configuration)

CCL_ERROR_MEMORY = _ccllib.CCL_ERROR_MEMORY
CCL_ERROR_LINSPACE = _ccllib.CCL_ERROR_LINSPACE
CCL_ERROR_INCONSISTENT = _ccllib.CCL_ERROR_INCONSISTENT
CCL_ERROR_SPLINE = _ccllib.CCL_ERROR_SPLINE
CCL_ERROR_SPLINE_EV = _ccllib.CCL_ERROR_SPLINE_EV
CCL_ERROR_INTEG = _ccllib.CCL_ERROR_INTEG
CCL_ERROR_ROOT = _ccllib.CCL_ERROR_ROOT
CCL_ERROR_CLASS = _ccllib.CCL_ERROR_CLASS
CCL_ERROR_COMPUTECHI = _ccllib.CCL_ERROR_COMPUTECHI
CCL_ERROR_MF = _ccllib.CCL_ERROR_MF
CCL_ERROR_HMF_INTERP = _ccllib.CCL_ERROR_HMF_INTERP
CCL_ERROR_PARAMETERS = _ccllib.CCL_ERROR_PARAMETERS
CCL_ERROR_NU_INT = _ccllib.CCL_ERROR_NU_INT
CCL_ERROR_POLICY_EXIT = _ccllib.CCL_ERROR_POLICY_EXIT
CCL_ERROR_POLICY_CONTINUE = _ccllib.CCL_ERROR_POLICY_CONTINUE

def raise_exception(err, msg):
    """raise_exception(int err, char * msg)"""
    return _ccllib.raise_exception(err, msg)

def set_error_policy(error_policy):
    """set_error_policy(CCLErrorPolicy error_policy)"""
    return _ccllib.set_error_policy(error_policy)

def check_status(cosmo, status):
    """check_status(cosmology cosmo, int * status)"""
    return _ccllib.check_status(cosmo, status)

def check_status_nocosmo(status):
    """check_status_nocosmo(int * status)"""
    return _ccllib.check_status_nocosmo(status)

def linear_spacing(xmin, xmax, N):
    """linear_spacing(double xmin, double xmax, int N) -> double *"""
    return _ccllib.linear_spacing(xmin, xmax, N)

def log_spacing(xmin, xmax, N):
    """log_spacing(double xmin, double xmax, int N) -> double *"""
    return _ccllib.log_spacing(xmin, xmax, N)
class SplPar(_object):
    """Proxy of C SplPar struct."""

    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, SplPar, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, SplPar, name)
    __repr__ = _swig_repr
    __swig_setmethods__["intacc"] = _ccllib.SplPar_intacc_set
    __swig_getmethods__["intacc"] = _ccllib.SplPar_intacc_get
    if _newclass:
        intacc = _swig_property(_ccllib.SplPar_intacc_get, _ccllib.SplPar_intacc_set)
    __swig_setmethods__["spline"] = _ccllib.SplPar_spline_set
    __swig_getmethods__["spline"] = _ccllib.SplPar_spline_get
    if _newclass:
        spline = _swig_property(_ccllib.SplPar_spline_get, _ccllib.SplPar_spline_set)
    __swig_setmethods__["x0"] = _ccllib.SplPar_x0_set
    __swig_getmethods__["x0"] = _ccllib.SplPar_x0_get
    if _newclass:
        x0 = _swig_property(_ccllib.SplPar_x0_get, _ccllib.SplPar_x0_set)
    __swig_setmethods__["xf"] = _ccllib.SplPar_xf_set
    __swig_getmethods__["xf"] = _ccllib.SplPar_xf_get
    if _newclass:
        xf = _swig_property(_ccllib.SplPar_xf_get, _ccllib.SplPar_xf_set)
    __swig_setmethods__["y0"] = _ccllib.SplPar_y0_set
    __swig_getmethods__["y0"] = _ccllib.SplPar_y0_get
    if _newclass:
        y0 = _swig_property(_ccllib.SplPar_y0_get, _ccllib.SplPar_y0_set)
    __swig_setmethods__["yf"] = _ccllib.SplPar_yf_set
    __swig_getmethods__["yf"] = _ccllib.SplPar_yf_get
    if _newclass:
        yf = _swig_property(_ccllib.SplPar_yf_get, _ccllib.SplPar_yf_set)

    def __init__(self):
        """__init__(SplPar self) -> SplPar"""
        this = _ccllib.new_SplPar()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _ccllib.delete_SplPar
    __del__ = lambda self: None
SplPar_swigregister = _ccllib.SplPar_swigregister
SplPar_swigregister(SplPar)
cvar = _ccllib.cvar
default_config = cvar.default_config


def spline_init(n, x, y, y0, yf):
    """spline_init(int n, double * x, double * y, double y0, double yf) -> SplPar"""
    return _ccllib.spline_init(n, x, y, y0, yf)

def spline_eval(x, spl):
    """spline_eval(double x, SplPar spl) -> double"""
    return _ccllib.spline_eval(x, spl)

def spline_free(spl):
    """spline_free(SplPar spl)"""
    return _ccllib.spline_free(spl)
# This file is compatible with both classic and new-style classes.


