o
    lh                     @   s\   d dl mZ d dl mZ ejjZdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd ZdS )    )mp)libmpc            	      C   s  dt _t t j} t dt j ? t jddd}g dd}}}	 |t j||  7 }|d7 }|| |	|\}}|| k r@n	|dkrHt
d	q"W d    n1 sSw   Y  t d
t |  } t|t jd d  }|| k ssJ t jdd dt jgddd}t|| }|| k sJ d S )N      levinumethodvariantr        iteration limit exceeded?   c                 S   s   d| |   S Nr    nr   r   k/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/mpmath/tests/test_levin.py<lambda>   s    ztest_levin_0.<locals>.<lambda>r	   levin_variant)r   dpsmpfeps	extraprecprecr   oneappendupdate_psumRuntimeErrorexplogabspinsuminf)	r   LSsr   veerrwr   r   r   test_levin_0   s,   
r.   c            	      C   s  dt _t t j} t dt j : t jddd}g d}}	 t |d }|d7 }|| ||\}}|| k r;n	|dkrCt	d	qW d    n1 sNw   Y  t 
d
t |  } t|t d }|| k slJ t jdd dt jgddd}t|| }|| k sJ d S )Nr   r   r   r*   r   r          @      @r   r   r   y             c                 S   s   | d S )Nr/   r   r   r   r   r   r   3   s    ztest_levin_1.<locals>.<lambda>r   )r   r   r   r   r   r   r   r   updater    r!   r"   r#   zetar%   r&   )	r   r'   Ar   r)   r*   r+   r,   r-   r   r   r   test_levin_1"   s,   

r3   c            	         s$  dt _t d t t j} t dt j 9 t jddd}d}	 d	| t |  |   }||\}}|d7 }|| k r?n	|d
krGt	dq!W d    n1 sRw   Y  t 
dt |  } t  fdddt jg}t|| }|| k szJ t j fdddt jgddd}|| k sJ d S )Nr   
   r   siditr   r   r   r   r   r   c                    s   t |  d|     S r   r   r!   xzr   r   r   G   s    ztest_levin_2.<locals>.<lambda>c                    s   d|  t |   |    S )Nr7   r   facr   r;   r   r   r   L   s    r   )r   r   r   r   r   r   r   r>   stepr    r!   r"   quadr&   r#   r%   	r   r'   r   r)   r*   r+   exactr,   r-   r   r;   r   test_levin_27   s,   

 rC   c            	   
      s  dt _t d t t j} t dt j K t jddd}d\}}	 |  | t d	|  t |t d|  d	|   7 }|d7 }||\}}|| k rQn	|d
krYt	dq#W d    n1 sdw   Y  t 
dt |  } t  fdddt jgd t dt j  }t|| }|| k sJ t j fdddt jgdddt j dgdd td
D  d}t|| }|| k sJ d S )Nr   r      r   r6   r   )r   r   r      r   r   皙?c                    s    t |  |  d  | d   S )Nr   rE   r8   r9   r;   r   r   r   ^   s     ztest_levin_3.<locals>.<lambda>r   c                    s8     |  t d|   t | t d|   d|    S )NrE   r   r=   r   r;   r   r   r   c   s   8    c                 S      g | ]}d qS )r   r   .0r:   r   r   r   
<listcomp>c       z test_levin_3.<locals>.<listcomp>)r	   r   workprecsteps)r   r   r   r   r   r   r   r>   	step_psumr    r!   r"   r@   r&   sqrtr$   r#   r%   xrangerA   r   r;   r   test_levin_3O   s.   
<
.>rR   c                     sB  dt _t t j- t dd  t j fdddt jgddd   } t| t j d	k s/J W d    n1 s9w   Y  t 	d
t 
t j }t jdd dt jgdd} t| t 
d |k scJ d  fdd}t j|dt jgddd tdD d}t dt d dt d dt d  }t|| |k sJ d S )Nr   r4   ic                    s   | d    S r   r   r   r;   r   r   r   l   s    z!test_levin_nsum.<locals>.<lambda>r   l)r	   g|=rF   c                 S   s   d| d  |  S )Nr7   r   r   r   r   r   r   r   q   rL   r5   r   y       @      ?c                    sT   t dt d | t dt d |   |   t dt d | t |   S )Nr      rE   r   )r   rfr   r>   r   r;   r   r   r   u   s   T r   r   c                 S   rH   )r4   r   rI   r   r   r   rK   v   rL   z#test_levin_nsum.<locals>.<listcomp>r   )r	   rN   rT   rE   )r   r   r   r   r   r%   r&   r#   eulerr!   r"   r   rQ   hyp2f1)ar   fr*   rB   r   r;   r   test_levin_nsumg   s   &&.rZ   c                  C   s   dt _t  } g dd}}}	 |d|  t j ||  7 }|d7 }|| | |\}}|t jk r4n	|dkr<tdqt dt 	t j }t
|t jd d	  }||k sYJ d S )
Nr   r   r   r7   r   r   r   r      )r   r   	cohen_altr   r   r   r   r    r!   r"   r#   r$   )ACr(   r)   r   r*   r+   r   r,   r   r   r   test_cohen_alt_0z   s   

r^   c                  C   s   dt _g } t  }d}	 | t dt jd| d    | t dt jd|     |d7 }|| \}}|t jk r>n	|dkrFtdqt 	|}t
|d }|dk sXJ d S )Nr   r   r   r   r   g?g-q=)r   r   r\   r   loggammar   r0   r   r    r!   r#   )r2   r]   r   r*   r+   r,   r   r   r   test_cohen_alt_1   s    " 

r`   N)mpmathr   r   backendrQ   r.   r3   rC   rR   rZ   r^   r`   r   r   r   r   <module>   s   