o
    lhȑ                     @   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| |sY| j| }| | ||}|| |? }| }	}
|}t|	|krF|
| |? }
|	|
 |? }	||	7 }t|	|ks0d|d > |d>  }| || }n| j| }| | ||}| | ||}|| ||  |? }|| |d ? }| }}| }}d|> | }|}|d |d  |kr|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}||7 }||7 }|d |d  |ks|d> }|d> }| || }| || }| ||}nk| |s| |s| j| }| | ||}|| |? }| }	}
| j| ||d\}}| || }}| || }}|| ||  |? }|| |d ? }|| ||  |? || ||  |? }}||	| |?  }t|	|kr|
| |? }
|	|
 |? }	|| ||  |? || ||  |? }}||	| |? 7 }t|	|ksl|d> }| || }|| 	|d9 }|S | |s| j| }| | ||}| | ||}|| ||  |? }|| |d ? }| }}| }}| j| ||d\}}| || }}| || }}|| ||  |? }|| |d ? }|| ||  |? || ||  |? }}||| |?  }|| |? }|d |d  |kr|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}||| |? 7 }||| |? 7 }|d |d  |ksD|d> }|d> }| || }| || }| ||}n| |sD| j| }| | ||}|| |? }| }	}
| j}|| _| |\}}|| _| | || }}| | || }} | | || }!}"| | || }#}$|| | |   |"|"  |$|$  |? }%||  |"|$  |d ? }&||" | |$  |d ? }'||$ | |"  |d ? }(||% ||&  |!|'  |#|(  |? })||& ||%  |!|(  |#|'  |? }*|!|% |#|&  ||'  ||(  |? }+|!|& |#|%  ||(  ||'  |? },|)}|*}|+}!|,}#||	| |?  }| |	| |?  }t|	|kr&|
| |? }
|	|
 |? }	||% ||&  |!|'  |#|(  |? })||& ||%  |!|(  |#|'  |? }*|!|% |#|&  ||'  ||(  |? }+|!|& |#|%  ||(  ||'  |? },|)}|*}|+}!|,}#||	| |? 7 }||	| |? 7 }t|	|ks|d> }|d> }| || }| || }| ||}n| j| }| | ||}| | ||}|| ||  |? }|| |d ? }| }}| }}| j}|| _| |\}}|| _| | || }}| | || }} | | || }!}"| | || }#}$|| | |   |"|"  |$|$  |? }%||  |"|$  |d ? }&||" | |$  |d ? }'||$ | |"  |d ? }(||% ||&  |!|'  |#|(  |? })||& ||%  |!|(  |#|'  |? }*|!|% |#|&  ||'  ||(  |? }+|!|& |#|%  ||(  ||'  |? },|)}|*}|+}!|,}#d}-|}.| }/||| ||  |?  }| || ||  |?  }d}-|| ||  |? }.|| ||  |? }/||| ||  |?  }| || ||  |?  }d}-|d |d  |krE|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}||% ||&  |!|'  |#|(  |? })||& ||%  |!|(  |#|'  |? }*|!|% |#|&  ||'  ||(  |? }+|!|& |#|%  ||(  ||'  |? },|)}|*}|+}!|,}#|| ||  |? }.|| ||  |? }/||| ||  |? 7 }||| ||  |? 7 }|-d7 }-|d |d  |ks|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ntermretermim rE   j/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/mpmath/functions/theta.py_jacobi_theta2   s  




**
**
$$$$$$$$$
$$$$$$$$$rG   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 }t|
|ks|d>  }| || }nl|  |sK| j| }| | ||}| |  ||}|| ||  |? }|| |d ? }| }}| }}| j| ||d\}}| || }}| || }}|| ||  |? }|| |d ? }|| ||  |? || ||  |? }}|d@ r||| d|  |?  }|| d|  |? }n||| d|  |?  }|| d|  |? }d}|d |d  |kr+|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}|d@ r||| ||  |? 7 }||| ||  |? 7 }n||| ||  |? 7 }||| ||  |? 7 }|d7 }|d |d  |ks|d>  }|d>  }| || }| || }| ||}n|  |s'| j| }| | ||}|| |? }	|	 }
}| j}|| _| |\}}|| _| | || }} | |  || }!}"| | || }#}$| |  || }%}&| |  |"|"  |$|$  |&|&  |? }'| |" |$|&  |d ? }(| |$ |"|&  |d ? })| |& |"|$  |d ? }*||' |!|(  |#|)  |%|*  |? }+||( |!|'  |#|*  |%|)  |? },|#|' |%|(  ||)  |!|*  |? }-|#|( |%|'  ||*  |!|)  |? }.|+}|,}!|-}#|.}%|d@ rI|$|
|# d|  |?  }|&|
|% d|  |?  }n| |
| d|  |?  }|"|
|! d|  |?  }d}t|
|kr||	 |? }|
| |? }
||' |!|(  |#|)  |%|*  |? }+||( |!|'  |#|*  |%|)  |? },|#|' |%|(  ||)  |!|*  |? }-|#|( |%|'  ||*  |!|)  |? }.|+}|,}!|-}#|.}%|d@ r||
|# ||  |? 7 }||
|% ||  |? 7 }n||
| ||  |? 7 }||
|! ||  |? 7 }|d7 }t|
|ksj|d>  }|d>  }| || }| || }| ||}n3| j| }| | ||}| |  ||}|| ||  |? }|| |d ? }| }}| }}| j}|| _| |\}}|| _| | || }} | |  || }!}"| | || }#}$| |  || }%}&| |  |"|"  |$|$  |&|&  |? }'| |" |$|&  |d ? }(| |$ |"|&  |d ? })| |& |"|$  |d ? }*||' |!|(  |#|)  |%|*  |? }+||( |!|'  |#|*  |%|)  |? },|#|' |%|(  ||)  |!|*  |? }-|#|( |%|'  ||*  |!|)  |? }.|+}|,}!|-}#|.}%|d@ r@|$||# ||%  d|  |?  }|&||% ||#  d|  |?  }n | || ||!  d|  |?  }|"||! ||  d|  |?  }d}|d |d  |kr<|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}||' |!|(  |#|)  |%|*  |? }+||( |!|'  |#|*  |%|)  |? },|#|' |%|(  ||)  |!|*  |? }-|#|( |%|'  ||*  |!|)  |? }.|+}|,}!|-}#|.}%|d@ r|||# ||%  ||  |? 7 }|||# ||%  ||  |? 7 }n ||| ||!  ||  |? 7 }||| ||!  ||  |? 7 }|d7 }|d |d  |ksm|d>  }|d>  }| || }| || }| ||}|| |d9 }|d@ rod	|d  | S d	d|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   rE   rE   rF   _djacobi_theta2   sv  
**" 
	
*
*



$$$$$
$$$$



$$$$$
 "  $$$$
 "  


rJ   c           '      C   s	  d}d}d}|| j kr| |sW| j| }| | ||}|}| }	}
|| |? }t|	|krF|
| |? }
|	|
 |? }	||	7 }t|	|ks0d|> |d>  }| || }|S | j| }| | ||}| | ||}|| ||  |? }|| |d ? }| } }}| } }}|d |d  |kr|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}||7 }||7 }|d |d  |ksd|> |d>  }|d> }| || }| || }| ||}|S | |s| |sd}| j| }| | ||}| }	}
|| |? }| j| |d |d\}}| ||}| ||}|}|}||	| |? 7 }t|	|krw|
| |? }
|	|
 |? }	|| ||  |? || ||  |? }}||	| |? 7 }t|	|ksGd|> |d>  }| || }|S | |sp| j| }| | ||}| | ||}|| ||  |? }|| |d ? }| }}| }}| j| |d |d\}}| ||}| ||}|}|}|| |? }|| |? }|d |d  |krN|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}||| |? 7 }||| |? 7 }|d |d  |ksd|> |d>  }|d> }| || }| || }| ||}|S | |st| j| }| | ||}| }	}
|| |? }| j}|| _| d| \}}|| _| | || }}| | || }}| | || }} | | || }!}"|	| |? }|	| |? }t|	|krR|
| |? }
|	|
 |? }	|| ||  ||   |!|"  |? }#|| ||  ||"  |!|   |? }$|| |!|  ||   ||"  |? }%|| |!|  ||"  ||   |? }&|#}|$}|%}|&}!||	| |? 7 }||	| |? 7 }t|	|ksd|> |d>  }|d> }| || }| || }| ||}|S | j| }| | ||}| | ||}|| ||  |? }|| |d ? }| }}| }}| j}|| _| d| \}}|| _| | || }}| | || }}| | || }} | | || }!}"|| ||  |? }|| ||  |? }|d |d  |kr|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}|| ||  ||   |!|"  |? }#|| ||  ||"  |!|   |? }$|| |!|  ||   ||"  |? }%|| |!|  ||"  ||   |? }&|#}|$}|%}|&}!||| ||  |? 7 }||| ||  |? 7 }|d |d  |ksd|> |d>  }|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   rE   rE   rF   _jacobi_theta3  sT  




*
*
$$$$
$$$$rL   c           )      C   s	  d}d}d}|  |s|  |sd}| j| }| | ||}	|	 }
}|	|	 |? }| j| |d |d\}}| ||}| ||}|}|}|d@ rU||
| |? 7 }n||
| |? 7 }d}t|
|kr|| |? }|
| |? }
|| ||  |? || ||  |? }}|d@ r||
| ||  |? 7 }n||
| ||  |? 7 }|d7 }t|
|kse||d >  }| || }n|  |s| j| }| | ||}| |  ||}|| ||  |? }|| |d ? }| }}| }}| j| |d |d\}}| ||}| ||}|}|}|d@ r$|| |? }|| |? }n|| |? }|| |? }d}|d |d  |kr|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}|d@ r||| ||  |? 7 }||| ||  |? 7 }n||| ||  |? 7 }||| ||  |? 7 }|d7 }|d |d  |ks=||d >  }||d >  }| || }| || }| ||}n|  |s)| j| }| | ||}	|	 }
}|	|	 |? }| j}|| _| d| \}}|| _| | || }}| |  || }} | | || }!}"| |  || }#}$|d@ rS|
|! |? }|
|# |? }n|
| |? }|
| |? }d}t|
|kr|| |? }|
| |? }
|| ||   |!|"  |#|$  |? }%||  ||  |!|$  |#|"  |? }&|!| |#|   ||"  ||$  |? }'|!|  |#|  ||$  ||"  |? }(|%}|&}|'}!|(}#|d@ r||
|! ||  |? 7 }||
|# ||  |? 7 }n||
| ||  |? 7 }||
| ||  |? 7 }|d7 }t|
|ksh||d >  }||d >  }| || }| || }| ||}n| j| }| | ||}| |  ||}|| ||  |? }|| |d ? }| }}| }}| j}|| _| d| \}}|| _| | || }}| |  || }} | | || }!}"| |  || }#}$|d@ r||! ||#  |? }||! ||#  |? }n|| ||  |? }|| ||  |? }d}|d |d  |kr|| ||  |? || ||  |? }}|| ||  |? || ||  |? }}|| ||   |!|"  |#|$  |? }%||  ||  |!|$  |#|"  |? }&|!| |#|   ||"  ||$  |? }'|!|  |#|  ||$  ||"  |? }(|%}|&}|'}!|(}#|d@ rs|||! ||#  ||  |? 7 }|||! ||#  ||  |? 7 }n ||| ||  ||  |? 7 }||| ||  ||  |? 7 }|d7 }|d |d  |ks||d >  }||d >  }| || }| || }| ||}|d@ rd|d  | S dd|d   | S )z2nd=1,2,3 order of the derivative with respect to zr   r   r   rK   r   r   rH   )r   r   r   r   r   r   r   r   ))r   r   r   rI   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   rE   rE   rF   _djacobi_theta3I  sB  
*	

*


$$$$


$$$$
 "  
rM   c                 C   s  t | || | | d  }}| d| }| d| d |  }}||| |  }|| }	|	}
| jt|	 }	 |d7 }|| }||| |  | }	t|	|k rVn|
|	7 }
q=|}| d| }|}	 |d8 }|| }||| |  | }	t|	|k rn|
|	7 }
qg|
| |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    eps1rE   rE   rF   _jacobi_theta2a  s8   &rZ   c                 C   s   t | | t| | |  }}| d| }| d| |  }}|||  |  }}	| jt|	 }
	 |d7 }|| }|||  | }	t|	|
k rOn||	7 }q8|}| d| }|}	 |d8 }|| }|||  | }	t|	|
k ry	 |S ||	7 }q`)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   rO   )rP   r   r   r   rQ   rR   rS   )r   r   r   rB   rT   rU   rV   rW   r    rX   rY   rE   rE   rF   _jacobi_theta3a  s2   (r[   c                 C   sT  t | || | | d  }}| d| }| d| d |  }}||| |  }	d| d | |	 | }
|
}| jt|
 }	 |d7 }|| }d| d | ||| |   | }
t|
|k rfn||
7 }qE|}| d| }|}	 |d8 }|| }d| d | ||| |   | }
t|
|k rn||
7 }qw| 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)
    rN   r   r   rO   r	   )	rP   r   r   rQ   rR   rS   r   jr   )r   r   r   rI   rB   rT   rU   rV   rW   r   rX   r    rY   rE   rE   rF   _djacobi_theta2a<  s6   &	$$r]   c                 C   sr  t | | t| | |  }}| d| }| d| |  }}|||  | }	|| |	  }
}|dkrB| jt| }n| jt|	 }	 |d7 }|| }|||  | }	|| |	 }|dkrit|}nt|	}||k rrn|
|7 }
qJ|}| d| }|}	 |d8 }|| }|||  | }	|| |	 }|dkrt|}nt|	}||k rn|
|7 }
qd| 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   rK   r   rO   )rP   r   r   r   rQ   rR   rS   r\   )r   r   r   rI   rB   rT   rU   rV   rW   r   r    rX   rY   atermrE   rE   rF   _djacobi_theta3a`  sH   (

r_   rK   c                 C   sb  |r
|  ||||S | |}| |}t|| jkr"td| j d}|r?| |}|dks7|dkr?|dk r?|dt| 7 }d}d}| j}	ze|  j|7  _|dkr| |rt| ||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| |rt| ||t| | 	| k r	|  j
|7  _
| ||}
n|  j
d7  _
| ||}
nx| ||}
nk|d
krc| |r[t| ||t| | 	| k rL|  j
|7  _
| || }
n[|  j
d7  _
| || }
nF| || }
n8tW |	| _|
S W |	| _|
S W |	| _|
S W |	| _|
S W |	| _|
S W |	| _|
S W |	| _|
S W |	| _|
S W |	| _|
S W |	| _|
S W |	| _|
S W |	| _|
S |	| _w Nzabs(q) > THETA_Q_LIM = %fr   r   r   r   rN   2   r
   r	   )_djthetaconvertr   THETA_Q_LIM
ValueErrormagr   r   r   rQ   dpsrG   pirZ   rL   r[   )r   rB   r   r   
derivativeextraMczr   r1   resrE   rE   rF   jtheta  s   



&
&
(
("$'	ro   c                 C   s  |  |}|  |}t|}t|| jkrtd| j d| j| d  }|r@| |}|dks8|dkr@|dk r@|dt| 7 }d}d}	| j}
z~|  j|7  _|dkr| |rt| ||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)| |r!t| ||t| | 	| k r|  j
|	7  _
| |||}n|  j
d7  _
| |||}n| |||}nt|d
krq| |rht| ||t| | 	| k rX|  j
|	7  _
| || |}nh|  j
d7  _
| || |}nQ| || |}nAtW |
| _|
 S W |
| _|
 S W |
| _|
 S W |
| _|
 S W |
| _|
 S W |
| _|
 S W |
| _|
 S W |
| _|
 S W |
| _|
 S W |
| _|
 S W |
| _|
 S W |
| _|
 S |
| _w r`   )rd   rP   r   re   rf   r   rg   r   r   rQ   rh   rJ   ri   r]   rM   r_   )r   rB   r   r   rj   rI   rk   rl   rm   r   r1   rn   rE   rE   rF   rc     s   



&
&
(
("$'	rc   N)rK   )r   )	functionsr   r   rG   rJ   rL   rM   rZ   r[   r]   r_   ro   rc   rE   rE   rE   rF   <module>   s2    
 U
 I
 (
 +
'

#
-L