U
    9%e                     @   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 r t jddd}g dd  }}}|t j||  7 }|d7 }|| |	|\}}|| k r~q|dkrBt
d	qBW 5 Q R X t d
t |  } t|t jd d  }|| k stt jdd dt jgddd}t|| }|| k std S )N      levinumethodvariantr        iteration limit exceeded?   c                 S   s   d| |   S Nr    nr   r   V/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/mpmath/tests/test_levin.py<lambda>       ztest_levin_0.<locals>.<lambda>r	   levin_variant)r   dpsmpfeps	extraprecprecr   oneappendupdate_psumRuntimeErrorexplogabspiAssertionErrornsuminf)	r   LSsr   veerrwr   r   r   test_levin_0   s&    
 r0   c            	   	   C   s   dt _t t j} t dt j h t jddd}g d }}t |d }|d7 }|| ||\}}|| k rtq|dkr<t	d	q<W 5 Q R X t 
d
t |  } t|t d }|| k stt jdd dt jgddd}t|| }|| k std S )Nr   r   r   r,   r   r          @      @r   r   r   y             c                 S   s   | d S )Nr1   r   r   r   r   r   r   3   r   ztest_levin_1.<locals>.<lambda>r   )r   r   r   r   r   r   r   r   updater!   r"   r#   r$   zetar&   r'   r(   )	r   r)   Ar   r+   r,   r-   r.   r/   r   r   r   test_levin_1"   s&    

 r5   c            	   	      s  dt _t d t t j} t dt j f t jddd}d}d| t |  |   }||\}}|d	7 }|| k r|q|d
kr@t	dq@W 5 Q R X t 
dt |  } t  fdddt jg}t|| }|| k stt j fdddt jgddd}|| k std S )Nr   
   r   siditr   r   r   r   r   r   c                    s   t |  d|     S r   r   r"   xzr   r   r   G   r   ztest_levin_2.<locals>.<lambda>c                    s   d|  t |   |    S )Nr9   r   facr   r=   r   r   r   L   r   r   )r   r   r   r   r   r   r   r@   stepr!   r"   r#   quadr(   r$   r&   r'   	r   r)   r   r+   r,   r-   exactr.   r/   r   r=   r   test_levin_27   s&    
  rE   c            	   
      st  dt _t d t t j} t dt j  t jddd}d\}}|  | t d|  t |t d|  d|   7 }|d	7 }||\}}|| k rq|d
krDt	dqDW 5 Q R X t 
dt |  } t  fdddt jgd t dt j  }t|| }|| k stt j fdddt jgdddt j dgdd td
D  d}t|| }|| k sptd S )Nr   r      r   r8   r   )r   r      r   r   r   皙?c                    s    t |  |  d  | d   S )Nr   rG   r:   r;   r=   r   r   r   ^   r   ztest_levin_3.<locals>.<lambda>r   c                    s8     |  t d|   t | t d|   d|    S )NrG   r   r?   r   r=   r   r   r   c   r      c                 S   s   g | ]}d qS )r   r   .0r<   r   r   r   
<listcomp>c   s     z test_levin_3.<locals>.<listcomp>)r	   r   Zworkprecsteps)r   r   r   r   r   r   r   r@   Z	step_psumr!   r"   r#   rB   r(   sqrtr%   r$   r&   r'   xrangerC   r   r=   r   test_levin_3O   s(    
< .>rP   c               	      s0  dt _t t jP t dd  t j fdddt jgddd   } t| t j d	k s^t	W 5 Q R X t 
d
t t j }t jdd dt jgdd} t| t d |k st	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 s,t	d S )Nr   r6   ic                    s   | d    S r   r   r   r=   r   r   r   l   r   z!test_levin_nsum.<locals>.<lambda>r   l)r	   g|=rH   c                 S   s   d| d  |  S )Nr9   r   r   r   r   r   r   r   q   r   r7   r   y       @      ?c                    sT   t dt d | t dt d |   |   t dt d | t |   S )Nr      rG   r   )r   rfr   r@   r   r=   r   r   r   u   r   r   r   c                 S   s   g | ]}d qS )r6   r   rJ   r   r   r   rL   v   s     z#test_levin_nsum.<locals>.<listcomp>r   )r	   rM   rR   rG   )r   r   r   r   r   r'   r(   r$   Zeulerr&   r"   r#   r   rO   Zhyp2f1)ar   fr,   rD   r   r=   r   test_levin_nsumg   s    & &.rV   c                  C   s   dt _t  } g dd  }}}|d|  t j ||  7 }|d7 }|| | |\}}|t jk rfqx|dkrtdqt dt 	t j }t
|t jd d	  }||k std S )
Nr   r   r   r9   r   r   r   r      )r   r   	cohen_altr   r   r    r   r!   r"   r#   r$   r%   r&   )ACr*   r+   r   r,   r-   r   r.   r   r   r   test_cohen_alt_0z   s    

 
rZ   c                  C   s   dt _g } t  }d}| t dt jd| d    | t dt jd|     |d7 }|| \}}|t jk rzq|dkrtdqt 	|}t
|d }|dk std S )Nr   r   r   r   r   g?g-q=)r   r   rX   r   Zloggammar   r2   r   r!   r"   r$   r&   )r4   rY   r   r,   r-   r.   r   r   r   test_cohen_alt_1   s    " 
 

r[   N)Zmpmathr   r   backendrO   r0   r5   rE   rP   rV   rZ   r[   r   r   r   r   <module>   s   