a
    <bȑ                     @   s   d dl mZmZ edd Zedd Zedd Zedd	 Zed
d Zedd Zedd Z	edd Z
edddZedddZdS )   )defundefun_wrappedc           0      C   s  d}d}d}|| j kr| |s| j| }| | ||}|| |? }| }	}
|}t|	|kr|
| |? }
|	|
 |? }	||	7 }qVd|d > |d>  }| || }qt| j| }| | ||}| | ||}|| ||  |? }|| |d ? }| }}| }}d|> | }|}|d |d  |kr|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}||7 }||7 }q|d> }|d> }| || }| || }| ||}
n| |sB| |sB| j| }| | ||}|| |? }| }	}
| j| ||d\}}| || }}| || }}|| ||  |? }|| |d ? }|| ||  |? || ||  |?  }}||	| |?  }t|	|kr|
| |? }
|	|
 |? }	|| ||  |? || ||  |?  }}||	| |? 7 }q|d> }| || }|| 	|d9 }|S | |sF| j| }| | ||}| | ||}|| ||  |? }|| |d ? }| }}| }}| j| ||d\}}| || }}| || }}|| ||  |? }|| |d ? }|| ||  |? || ||  |?  }}||| |?  }|| |? }|d |d  |kr
|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}||| |? 7 }||| |? 7 }qR|d> }|d> }| || }| || }| ||}n.| |sL| j| }| | ||}|| |? }| }	}
| j}|| _| |\}}|| _| | || }}| | || }} | | || }!}"| | || }#}$|| | |   |"|"  |$|$  |? }%||  |"|$  |d ? }&||" | |$  |d ? }'||$ | |"  |d ? }(||% ||&  |!|'  |#|(  |? })||& ||%  |!|(  |#|'  |? }*|!|% |#|&  ||'  ||(  |? }+|!|& |#|%  ||(  ||'  |? },|)}|*}|+}!|,}#||	| |?  }| |	| |?  }t|	|kr|
| |? }
|	|
 |? }	||% ||&  |!|'  |#|(  |? })||& ||%  |!|(  |#|'  |? }*|!|% |#|&  ||'  ||(  |? }+|!|& |#|%  ||(  ||'  |? },|)}|*}|+}!|,}#||	| |? 7 }||	| |? 7 }q&|d> }|d> }| || }| || }| ||}n(| j| }| | ||}| | ||}|| ||  |? }|| |d ? }| }}| }}| j}|| _| |\}}|| _| | || }}| | || }} | | || }!}"| | || }#}$|| | |   |"|"  |$|$  |? }%||  |"|$  |d ? }&||" | |$  |d ? }'||$ | |"  |d ? }(||% ||&  |!|'  |#|(  |? })||& ||%  |!|(  |#|'  |? }*|!|% |#|&  ||'  ||(  |? }+|!|& |#|%  ||(  ||'  |? },|)}|*}|+}!|,}#d}-|}.| }/||| ||  |?  }| || ||  |?  }d}-|| ||  |? }.|| ||  |? }/||| ||  |?  }| || ||  |?  }d}-|d |d  |kr<|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}||% ||&  |!|'  |#|(  |? })||& ||%  |!|(  |#|'  |? }*|!|% |#|&  ||'  ||(  |? }+|!|& |#|%  ||(  ||'  |? },|)}|*}|+}!|,}#|| ||  |? }.|| ||  |? }/||| ||  |? 7 }||| ||  |? 7 }|-d7 }-
q|d> }|d> }| || }| || }| ||}|| 	|d9 }|S )	N
         r   prec         )
zero_imr   to_fixed_reabsldexpmpccos_sinnthroot)0ctxzqextra1extra2MINwpxx2absxreximx2rex2imarebreaimbimsresimc1s1cnsnc2s2prec0cnrec1recnimc1imsnres1resnims1imc2rec2ims2res2imt1t2t3t4nZtermreZtermim rC   f/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/mpmath/functions/theta.py_jacobi_theta2   s   




**
**
$$$$$$$$$
$$$$$$$$$rE   c           /      C   s  d}d}d}|  |s|  |s| j| }| | ||}|| |? }	|	 }
}| j| ||d\}}| || }}| || }}|| ||  |? }|| |d ? }|| ||  |? || ||  |?  }}|d@ r||
| d|  |?  }n||
| d|  |?  }d}t|
|kr||	 |? }|
| |? }
|| ||  |? || ||  |?  }}|d@ r||
| d| d |  |? 7 }n ||
| d| d |  |? 7 }|d7 }q|d>  }| || }
n|  |s| j| }| | ||}| |  ||}|| ||  |? }|| |d ? }| }}| }}| j| ||d\}}| || }}| || }}|| ||  |? }|| |d ? }|| ||  |? || ||  |?  }}|d@ r||| d|  |?  }|| d|  |? }n,||| d|  |?  }|| d|  |? }d}|d |d  |krD|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}|d@ r||| ||  |? 7 }||| ||  |? 7 }n0||| ||  |? 7 }||| ||  |? 7 }|d7 }q8|d>  }|d>  }| || }| || }| ||}n|  |s2| j| }| | ||}|| |? }	|	 }
}| j}|| _| |\}}|| _| | || }} | |  || }!}"| | || }#}$| |  || }%}&| |  |"|"  |$|$  |&|&  |? }'| |" |$|&  |d ? }(| |$ |"|&  |d ? })| |& |"|$  |d ? }*||' |!|(  |#|)  |%|*  |? }+||( |!|'  |#|*  |%|)  |? },|#|' |%|(  ||)  |!|*  |? }-|#|( |%|'  ||*  |!|)  |? }.|+}|,}!|-}#|.}%|d@ r|$|
|# d|  |?  }|&|
|% d|  |?  }n0| |
| d|  |?  }|"|
|! d|  |?  }d}t|
|kr||	 |? }|
| |? }
||' |!|(  |#|)  |%|*  |? }+||( |!|'  |#|*  |%|)  |? },|#|' |%|(  ||)  |!|*  |? }-|#|( |%|'  ||*  |!|)  |? }.|+}|,}!|-}#|.}%|d@ r||
|# ||  |? 7 }||
|% ||  |? 7 }n0||
| ||  |? 7 }||
|! ||  |? 7 }|d7 }q|d>  }|d>  }| || }| || }| ||}nT| j| }| | ||}| |  ||}|| ||  |? }|| |d ? }| }}| }}| j}|| _| |\}}|| _| | || }} | |  || }!}"| | || }#}$| |  || }%}&| |  |"|"  |$|$  |&|&  |? }'| |" |$|&  |d ? }(| |$ |"|&  |d ? })| |& |"|$  |d ? }*||' |!|(  |#|)  |%|*  |? }+||( |!|'  |#|*  |%|)  |? },|#|' |%|(  ||)  |!|*  |? }-|#|( |%|'  ||*  |!|)  |? }.|+}|,}!|-}#|.}%|d@ 
rd|$||# ||%  d|  |?  }|&||% ||#  d|  |?  }n@| || ||!  d|  |?  }|"||! ||  d|  |?  }d}|d |d  |krJ|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}||' |!|(  |#|)  |%|*  |? }+||( |!|'  |#|*  |%|)  |? },|#|' |%|(  ||)  |!|*  |? }-|#|( |%|'  ||*  |!|)  |? }.|+}|,}!|-}#|.}%|d@ r|||# ||%  ||  |? 7 }|||# ||%  ||  |? 7 }n@||| ||!  ||  |? 7 }||| ||!  ||  |? 7 }|d7 }
q|d>  }|d>  }| || }| || }| ||}|| |d9 }|d@ rd	|d  | S d	d|d   | S d S )
Nr   r   r   r   r   r
   r   r	   )	r   r   r   r   r   r   r   r   r   )/r   r   r   ndr   r   r   r   r   r   r   r   r+   r,   r-   r.   r/   r0   r    rB   r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rC   rC   rD   _djacobi_theta2   sn   
**
" 

*
*



$$$$$
$$$$



$$$$$
 "  $$$$
 "  


rH   c           '      C   s<	  d}d}d}|| j kr| |s| j| }| | ||}|}| }	}
|| |? }t|	|kr|
| |? }
|	|
 |? }	||	7 }qVd|> |d>  }| || }|S | j| }| | ||}| | ||}|| ||  |? }|| |d ? }| } }}| } }}|d |d  |kr|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}||7 }||7 }qd|> |d>  }|d> }| || }| || }| ||}|S nb| |s| |sd}| j| }| | ||}| }	}
|| |? }| j| |d |d\}}| ||}| ||}|}|}||	| |? 7 }t|	|kr|
| |? }
|	|
 |? }	|| ||  |? || ||  |?  }}||	| |? 7 }qnd|> |d>  }| || }|S | |s| j| }| | ||}| | ||}|| ||  |? }|| |d ? }| }}| }}| j| |d |d\}}| ||}| ||}|}|}|| |? }|| |? }|d |d  |krn|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}||| |? 7 }||| |? 7 }qd|> |d>  }|d> }| || }| || }| ||}|S | |s| j| }| | ||}| }	}
|| |? }| j}|| _| d| \}}|| _| | || }}| | || }}| | || }} | | || }!}"|	| |? }|	| |? }t|	|krl|
| |? }
|	|
 |? }	|| ||  ||   |!|"  |? }#|| ||  ||"  |!|   |? }$|| |!|  ||   ||"  |? }%|| |!|  ||"  ||   |? }&|#}|$}|%}|&}!||	| |? 7 }||	| |? 7 }qd|> |d>  }|d> }| || }| || }| ||}|S | j| }| | ||}| | ||}|| ||  |? }|| |d ? }| }}| }}| j}|| _| d| \}}|| _| | || }}| | || }}| | || }} | | || }!}"|| ||  |? }|| ||  |? }|d |d  |kr|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}|| ||  ||   |!|"  |? }#|| ||  ||"  |!|   |? }$|| |!|  ||   ||"  |? }%|| |!|  ||"  ||   |? }&|#}|$}|%}|&}!||| ||  |? 7 }||| ||  |? 7 }qd|> |d>  }|d> }| || }| || }| ||}|S d S )Nr   r   r   r       r   )	r   r   r   r   r   r   r   r   r   )'r   r   r   r   r   r   r   r   r    r   r   r   r!   r"   r#   r$   r)   r%   r&   r*   r'   r(   r+   r,   r-   r.   r1   r2   r3   r4   r5   r6   r7   r8   r9   r>   r?   r@   rA   rC   rC   rD   _jacobi_theta3  sH   




*
*
$$$$
$$$$rJ   c           )      C   s	  d}d}d}|  |sx|  |sxd}| j| }| | ||}	|	 }
}|	|	 |? }| j| |d |d\}}| ||}| ||}|}|}|d@ r||
| |? 7 }n||
| |? 7 }d}t|
|krX|| |? }|
| |? }
|| ||  |? || ||  |?  }}|d@ r6||
| ||  |? 7 }n||
| ||  |? 7 }|d7 }q||d >  }| || }n|  |s| j| }| | ||}| |  ||}|| ||  |? }|| |d ? }| }}| }}| j| |d |d\}}| ||}| ||}|}|}|d@ rF|| |? }|| |? }n|| |? }|| |? }d}|d |d  |krn|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}|d@ r2||| ||  |? 7 }||| ||  |? 7 }n0||| ||  |? 7 }||| ||  |? 7 }|d7 }qb||d >  }||d >  }| || }| || }| ||}n|  |s4| j| }| | ||}	|	 }
}|	|	 |? }| j}|| _| d| \}}|| _| | || }}| |  || }} | | || }!}"| |  || }#}$|d@ r|
|! |? }|
|# |? }n|
| |? }|
| |? }d}t|
|kr|| |? }|
| |? }
|| ||   |!|"  |#|$  |? }%||  ||  |!|$  |#|"  |? }&|!| |#|   ||"  ||$  |? }'|!|  |#|  ||$  ||"  |? }(|%}|&}|'}!|(}#|d@ r||
|! ||  |? 7 }||
|# ||  |? 7 }n0||
| ||  |? 7 }||
| ||  |? 7 }|d7 }q||d >  }||d >  }| || }| || }| ||}n$| j| }| | ||}| |  ||}|| ||  |? }|| |d ? }| }}| }}| j}|| _| d| \}}|| _| | || }}| |  || }} | | || }!}"| |  || }#}$|d@ rF||! ||#  |? }||! ||#  |? }n(|| ||  |? }|| ||  |? }d}|d |d  |k	r|| ||  |? || ||  |?  }}|| ||  |? || ||  |?  }}|| ||   |!|"  |#|$  |? }%||  ||  |!|$  |#|"  |? }&|!| |#|   ||"  ||$  |? }'|!|  |#|  ||$  ||"  |? }(|%}|&}|'}!|(}#|d@ r|||! ||#  ||  |? 7 }|||! ||#  ||  |? 7 }n@||| ||  ||  |? 7 }||| ||  ||  |? 7 }|d7 }qr||d >  }||d >  }| || }| || }| ||}|d@ 	rrd|d  | S dd|d   | S dS )	z2nd=1,2,3 order of the derivative with respect to zr   r   r   rI   r   r   rF   N)r   r   r   r   r   r   r   r   ))r   r   r   rG   r   r   r   r    r   r   r   r   r   r+   r,   r-   r.   rB   r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r1   r2   r3   r4   r5   r6   r7   r8   r9   r>   r?   r@   rA   rC   rC   rD   _djacobi_theta3I  s:   
*



*


$$$$


$$$$
 "  
rK   c                 C   s  t | || | | d  }}| d| }| d| d |  }}||| |  }|| }	|	}
| jt|	 }|d7 }|| }||| |  | }	t|	|k rq|
|	7 }
qx|}| d| }|}|d8 }|| }||| |  | }	t|	|k rq|
|	7 }
q|
| |d }
|
S )au  
    case ctx._im(z) != 0
    theta(2, z, q) =
    q**1/4 * Sum(q**(n*n + n) * exp(j*(2*n + 1)*z), n=-inf, inf)
    max term for minimum (2*n+1)*log(q).real - 2* ctx._im(z)
    n0 = int(ctx._im(z)/log(q).real - 1/2)
    theta(2, z, q) =
    q**1/4 * Sum(q**(n*n + n) * exp(j*(2*n + 1)*z), n=n0, inf) +
    q**1/4 * Sum(q**(n*n + n) * exp(j*(2*n + 1)*z), n, n0-1, -inf)
          ?r   r   r	   )intr   r   logexpjepsr   r   )r   r   r   rB   n0e2ee0r   termr    eps1rC   rC   rD   _jacobi_theta2a  s0    &

rX   c                 C   s   t | | t| | |  }}| d| }| d| |  }}|||  |  }}	| jt|	 }
|d7 }|| }|||  | }	t|	|
k rq||	7 }qn|}| d| }|}|d8 }|| }|||  | }	t|	|
k rq||	7 }q|S )z
    case ctx._im(z) != 0
    theta3(z, q) = Sum(q**(n*n) * exp(j*2*n*z), n, -inf, inf)
    max term for n*abs(log(q).real) + ctx._im(z) ~= 0
    n0 = int(- ctx._im(z)/abs(log(q).real))
    r   r   rM   )rN   r   r   r   rO   rP   rQ   )r   r   r   rB   rR   rS   rT   rU   r    rV   rW   rC   rC   rD   _jacobi_theta3a  s*    (

rY   c                 C   sT  t | || | | d  }}| d| }| d| d |  }}||| |  }	d| d | |	 | }
|
}| jt|
 }|d7 }|| }d| d | ||| |   | }
t|
|k rq||
7 }q|}| d| }|}|d8 }|| }d| d | ||| |   | }
t|
|k r0q:||
7 }q| j| | | |d S )z
    case ctx._im(z) != 0
    dtheta(2, z, q, nd) =
    j* q**1/4 * Sum(q**(n*n + n) * (2*n+1)*exp(j*(2*n + 1)*z), n=-inf, inf)
    max term for (2*n0+1)*log(q).real - 2* ctx._im(z) ~= 0
    n0 = int(ctx._im(z)/log(q).real - 1/2)
    rL   r   r   rM   r	   )	rN   r   r   rO   rP   rQ   r   jr   )r   r   r   rG   rB   rR   rS   rT   rU   r   rV   r    rW   rC   rC   rD   _djacobi_theta2a<  s.    	&$
$
r[   c                 C   sv  t | | t| | |  }}| d| }| d| |  }}|||  | }	|| |	  }
}|dkr| jt| }n| jt|	 }|d7 }|| }|||  | }	|| |	 }|dkrt|}nt|	}||k rq|
|7 }
q|}| d| }|}|d8 }|| }|||  | }	|| |	 }|dkrBt|}nt|	}||k rXqd|
|7 }
qd| j | |
 S )z
    case ctx._im(z) != 0
    djtheta3(z, q, nd) = (2*j)**nd *
      Sum(q**(n*n) * n**nd * exp(j*2*n*z), n, -inf, inf)
    max term for minimum n*abs(log(q).real) + ctx._im(z)
    r   rI   r   rM   )rN   r   r   r   rO   rP   rQ   rZ   )r   r   r   rG   rB   rR   rS   rT   rU   r   r    rV   rW   ZatermrC   rC   rD   _djacobi_theta3a`  s@    (




r\   rI   c                 C   s  |r|  ||||S | |}| |}t|| jkrDtd| j d}|r~| |}|dksn|dkr~|dk r~|dt| 7 }d}d}| j}	zT|  j|7  _|dkrB| |r(t| ||t| | 	| k r|  j
|7  _
| || jd  |}
n$|  j
d7  _
| || jd  |}
n| || jd  |}
n|dkr| |rt| ||t| | 	| k r|  j
|7  _
| ||}
n|  j
d7  _
| ||}
n| ||}
n|d	krL| |r>t| ||t| | 	| k r"|  j
|7  _
| ||}
n|  j
d7  _
| ||}
n| ||}
n|d
kr| |rt| ||t| | 	| k r|  j
|7  _
| || }
n|  j
d7  _
| || }
n| || }
ntW |	| _n|	| _0 |
S Nzabs(q) > THETA_Q_LIM = %fr   r   r   r   rL   2   r
   r	   )_djthetaconvertr   THETA_Q_LIM
ValueErrormagr   r   r   rO   dpsrE   pirX   rJ   rY   )r   rB   r   r   
derivativeextraMczr   r1   resrC   rC   rD   jtheta  sf    



(
(
(
(rl   c                 C   s  |  |}|  |}t|}t|| jkr8td| j d| j| d  }|r| |}|dksp|dkr|dk r|dt| 7 }d}d}	| j}
zl|  j|7  _|dkrJ| |r.t| ||t| | 	| k r|  j
|	7  _
| || jd  ||}n&|  j
d7  _
| || jd  ||}n| || jd  ||}n|dkr| |rt| ||t| | 	| k r|  j
|	7  _
| |||}n|  j
d7  _
| |||}n| |||}n|d	kr`| |rPt| ||t| | 	| k r2|  j
|	7  _
| |||}n|  j
d7  _
| |||}n| |||}n|d
kr| |rt| ||t| | 	| k r|  j
|	7  _
| || |}n|  j
d7  _
| || |}n| || |}ntW |
| _n|
| _0 |
 S r]   )ra   rN   r   rb   rc   r   rd   r   r   rO   re   rH   rf   r[   rK   r\   )r   rB   r   r   rg   rG   rh   ri   rj   r   r1   rk   rC   rC   rD   r`     sd    



(
(
(
(r`   N)rI   )r   )Z	functionsr   r   rE   rH   rJ   rK   rX   rY   r[   r\   rl   r`   rC   rC   rC   rD   <module>   s0   
 U
 I
 (
 +
'

#
-L