def price_element_real(self,nu,tau,q_value): p1 = m.exp(-(nu**2-q_value**2)*tau/2) p2 = (q_value*m.gamma((nu+q_value)/2))/(4*self.eta_q(nu=nu,eigenval=q_value,b=self.b)*m.gamma(1+q_value)) const = (2*self.k)**((nu+3)/2)*m.exp(-1/(4*self.k)) w1 = m.whitw(-(nu+3)/2,q_value/2,1/(2*self.k)) m1 = m.whitm((1-nu)/2,q_value/2,1/(2*self.b)) return p1 * p2 * const * w1 * m1
def price_element_imag(self,nu,tau,p_value): p1 = m.exp(-(nu**2+p_value**2)*tau/2) p2 = (p_value*m.gamma(complex(nu/2,p_value/2)))/(4*self.xi_p(nu=nu,eigenval=p_value,b=self.b)*m.gamma(complex(1,p_value))) const = (2*self.k)**((nu+3)/2)*m.exp(-1/(4*self.k)) w1 = m.whitw(-(nu+3)/2,complex(0,p_value/2),1/(2*self.k)) m1 = m.whitm((1-nu)/2,complex(0,p_value/2),1/(2*self.b)) return p1 * p2 * const * w1 * m1
def psi(index, variable, b, a, beta): if b == 0: if beta < 0: return math.pow(variable, 0.5) * besseli( v(beta), sqrt(2 * index * q(a, beta, variable))) else: return math.pow(variable, 0.5) * besselk( v(beta), sqrt(2 * index * q(a, beta, variable))) else: if beta < 0: return math.pow(variable, beta + 0.5) * math.exp( 0.5 * eps(b, beta) * h(b, a, beta, variable)) * whitm( k(b, beta, index), m(beta), h(b, a, beta, variable)) else: return math.pow(variable, beta + 0.5) * math.exp( 0.5 * eps(b, beta) * h(b, a, beta, variable)) * whitw( k(b, beta, index), m(beta), h(b, a, beta, variable))