from math import *
import numpy as np

def OL(z,OL0=.75,OM0=.25):
    return OL0/(OL0+OM0*(1+z)**3)

def OM(z):
    return 1-OL(z)

def Phi(z):
    return OM(z)**(4/7.)-OL(z)+(1+OM(z)/2)*(1+OL(z)/70)

def D(z,OM0=.25):
    return OM(z)/OM0 * Phi(0)/Phi(z) /(1+z)
    
def sigma(M,z):
        xi = 1/(M/1e10)
        return D(z)*22.26*xi**.292/(1+1.53*xi**.275+3.36*xi**.198)
    
def nu(M,z,delta_sc=1.686):
    return delta_sc/sigma(M,z)

def concentration(M,z):
    def c0(z):
        return 3.395*(1+z)**(-.215)
    def beta(z):
        return .307*(1+z)**(.540)
    def gamma1(z):
        return .628*(1+z)**(-.047)
    def gamma2(z):
        return .317*(1+z)**(-.893)
    def nu0(z):
        a = 1/(1+z)
        return (4.135-.564/a-.210/a**2+.0557/a**3-.00348/a**4)/D(z)
    return c0(z)*(nu(M,z)/nu0(z))**(-gamma1(z))*(1+(nu(M,z)/nu0(z))**(1/beta(z)))**(-beta(z)*(gamma1(z)+gamma2(z)))
eca5a7a6ee2c1ab0b19e433300a1c3a088642129
<mask token>


def OM(z):
    return 1 - OL(z)


def Phi(z):
    return OM(z) ** (4 / 7.0) - OL(z) + (1 + OM(z) / 2) * (1 + OL(z) / 70)


def D(z, OM0=0.25):
    return OM(z) / OM0 * Phi(0) / Phi(z) / (1 + z)


def sigma(M, z):
    xi = 1 / (M / 10000000000.0)
    return D(z) * 22.26 * xi ** 0.292 / (1 + 1.53 * xi ** 0.275 + 3.36 * xi **
        0.198)


<mask token>

<mask token>


def OM(z):
    return 1 - OL(z)


def Phi(z):
    return OM(z) ** (4 / 7.0) - OL(z) + (1 + OM(z) / 2) * (1 + OL(z) / 70)


def D(z, OM0=0.25):
    return OM(z) / OM0 * Phi(0) / Phi(z) / (1 + z)


def sigma(M, z):
    xi = 1 / (M / 10000000000.0)
    return D(z) * 22.26 * xi ** 0.292 / (1 + 1.53 * xi ** 0.275 + 3.36 * xi **
        0.198)


<mask token>


def concentration(M, z):

    def c0(z):
        return 3.395 * (1 + z) ** -0.215

    def beta(z):
        return 0.307 * (1 + z) ** 0.54

    def gamma1(z):
        return 0.628 * (1 + z) ** -0.047

    def gamma2(z):
        return 0.317 * (1 + z) ** -0.893

    def nu0(z):
        a = 1 / (1 + z)
        return (4.135 - 0.564 / a - 0.21 / a ** 2 + 0.0557 / a ** 3 - 
            0.00348 / a ** 4) / D(z)
    return c0(z) * (nu(M, z) / nu0(z)) ** -gamma1(z) * (1 + (nu(M, z) / nu0
        (z)) ** (1 / beta(z))) ** (-beta(z) * (gamma1(z) + gamma2(z)))

<mask token>


def OL(z, OL0=0.75, OM0=0.25):
    return OL0 / (OL0 + OM0 * (1 + z) ** 3)


def OM(z):
    return 1 - OL(z)


def Phi(z):
    return OM(z) ** (4 / 7.0) - OL(z) + (1 + OM(z) / 2) * (1 + OL(z) / 70)


def D(z, OM0=0.25):
    return OM(z) / OM0 * Phi(0) / Phi(z) / (1 + z)


def sigma(M, z):
    xi = 1 / (M / 10000000000.0)
    return D(z) * 22.26 * xi ** 0.292 / (1 + 1.53 * xi ** 0.275 + 3.36 * xi **
        0.198)


def nu(M, z, delta_sc=1.686):
    return delta_sc / sigma(M, z)


def concentration(M, z):

    def c0(z):
        return 3.395 * (1 + z) ** -0.215

    def beta(z):
        return 0.307 * (1 + z) ** 0.54

    def gamma1(z):
        return 0.628 * (1 + z) ** -0.047

    def gamma2(z):
        return 0.317 * (1 + z) ** -0.893

    def nu0(z):
        a = 1 / (1 + z)
        return (4.135 - 0.564 / a - 0.21 / a ** 2 + 0.0557 / a ** 3 - 
            0.00348 / a ** 4) / D(z)
    return c0(z) * (nu(M, z) / nu0(z)) ** -gamma1(z) * (1 + (nu(M, z) / nu0
        (z)) ** (1 / beta(z))) ** (-beta(z) * (gamma1(z) + gamma2(z)))

from math import *
import numpy as np


def OL(z, OL0=0.75, OM0=0.25):
    return OL0 / (OL0 + OM0 * (1 + z) ** 3)


def OM(z):
    return 1 - OL(z)


def Phi(z):
    return OM(z) ** (4 / 7.0) - OL(z) + (1 + OM(z) / 2) * (1 + OL(z) / 70)


def D(z, OM0=0.25):
    return OM(z) / OM0 * Phi(0) / Phi(z) / (1 + z)


def sigma(M, z):
    xi = 1 / (M / 10000000000.0)
    return D(z) * 22.26 * xi ** 0.292 / (1 + 1.53 * xi ** 0.275 + 3.36 * xi **
        0.198)


def nu(M, z, delta_sc=1.686):
    return delta_sc / sigma(M, z)


def concentration(M, z):

    def c0(z):
        return 3.395 * (1 + z) ** -0.215

    def beta(z):
        return 0.307 * (1 + z) ** 0.54

    def gamma1(z):
        return 0.628 * (1 + z) ** -0.047

    def gamma2(z):
        return 0.317 * (1 + z) ** -0.893

    def nu0(z):
        a = 1 / (1 + z)
        return (4.135 - 0.564 / a - 0.21 / a ** 2 + 0.0557 / a ** 3 - 
            0.00348 / a ** 4) / D(z)
    return c0(z) * (nu(M, z) / nu0(z)) ** -gamma1(z) * (1 + (nu(M, z) / nu0
        (z)) ** (1 / beta(z))) ** (-beta(z) * (gamma1(z) + gamma2(z)))

from math import *
import numpy as np

def OL(z,OL0=.75,OM0=.25):
    return OL0/(OL0+OM0*(1+z)**3)

def OM(z):
    return 1-OL(z)

def Phi(z):
    return OM(z)**(4/7.)-OL(z)+(1+OM(z)/2)*(1+OL(z)/70)

def D(z,OM0=.25):
    return OM(z)/OM0 * Phi(0)/Phi(z) /(1+z)
    
def sigma(M,z):
        xi = 1/(M/1e10)
        return D(z)*22.26*xi**.292/(1+1.53*xi**.275+3.36*xi**.198)
    
def nu(M,z,delta_sc=1.686):
    return delta_sc/sigma(M,z)

def concentration(M,z):
    def c0(z):
        return 3.395*(1+z)**(-.215)
    def beta(z):
        return .307*(1+z)**(.540)
    def gamma1(z):
        return .628*(1+z)**(-.047)
    def gamma2(z):
        return .317*(1+z)**(-.893)
    def nu0(z):
        a = 1/(1+z)
        return (4.135-.564/a-.210/a**2+.0557/a**3-.00348/a**4)/D(z)
    return c0(z)*(nu(M,z)/nu0(z))**(-gamma1(z))*(1+(nu(M,z)/nu0(z))**(1/beta(z)))**(-beta(z)*(gamma1(z)+gamma2(z)))