U
    Ç-eP  ã                   @   s˜   d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZ d dlmZmZ d	d
„ Zdd„ Zdd„ Zdd„ ZdS )é    )Úproduct)ÚFunctionÚdiff)ÚRational©ÚS)Úsymbols)Úexp)Úapply_finite_diffÚdifferentiate_finiteÚfinite_diff_weightsÚ_as_finite_diff)ÚraisesÚwarns_deprecated_sympyc                      sæ   t dƒ\‰‰tdƒ‰ tdˆˆ ˆˆ gˆ ˆˆ ƒˆ ˆˆ ƒgˆƒˆ ˆˆ ƒˆ ˆˆ ƒ dˆ    ¡ dksnt‚tddddgˆ dƒˆ dƒˆ dƒgdƒtd	dƒˆ dƒ dˆ dƒ  tjˆ dƒ    ¡ dksÌt‚tt	‡ ‡‡fd
d„ƒ d S )Nzx hÚfé   é   r   é   é   é   éýÿÿÿc                      s   t dˆˆgˆ ˆƒgƒS )Nr   )r
   © ©r   ÚhÚxr   úf/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/calculus/tests/test_finite_diff.pyÚ<lambda>   ó    z(test_apply_finite_diff.<locals>.<lambda>)
r   r   r
   ÚsimplifyÚAssertionErrorr   r   ÚHalfr   Ú
ValueErrorr   r   r   r   Útest_apply_finite_diff   s    ,ÿÿ$*ÿÿr"   c                     sÎ  t ddddgdƒ} | d d tddƒdtddƒgks8t‚ddddd	d
dddg	‰t dˆtjƒ} tdƒD ](}| d | tjgtjgd  ksdt‚qd| d d tjgd ksªt‚| d d tjtjtddƒgtjgd  ksÚt‚| d d tjtdd
ƒtd	d
ƒtddƒtddƒgtjgd  ks t‚| d d tjtd
dƒtddƒtddƒtd
dƒtddƒtddƒgtjgd  ksvt‚| d d tjtddƒtddƒtddƒtddƒtddƒtddƒtddƒtddƒg	ksÐt‚tdƒD ]$}| d | tjgd ksØt‚qØ| d d tdƒ tjtjgtjgd  ks0t‚| d d tddƒtdd
ƒtdd
ƒtddƒtddƒgtjgd  kszt‚| d d tddƒtd
dƒtd
dƒtddƒtddƒtddƒtddƒgtjgd  ksÔt‚| d d tddƒtddƒtddƒtddƒtddƒtddƒtddƒtddƒtddƒg	ks2t‚td
ƒD ]$}| d
 | tjgd ks:t‚q:| d
 d tjtj tjtjtddƒgtjgd  ksœt‚| d
 d tjtddƒtddƒtjtj tddƒtddƒgtjgd  ksìt‚| d
 d tjtddƒtd dƒtd!d"ƒtd#d"ƒtdd$ƒtd
d$ƒtdd%ƒtd&d%ƒg	ksFt‚tdƒD ]$}| d | tjgd ksNt‚qN| d d tdƒtdƒ tdƒ tjtjgtjgd  ks´t‚| d d td'd
ƒtddƒtddƒtdƒtdƒtddƒtddƒgtjgd  ks
t‚| d d td(dƒtd)d*ƒtd)d*ƒtd!dƒtd!dƒtd	dƒtd	dƒtdd%ƒtdd%ƒg	ksht‚d+d,„ tddƒD ƒ‰‡fd-d,„tdƒD ƒ} | d d d tjtjgks´t‚| d d d
 tdd.ƒtdd.ƒtdd.ƒtdd.ƒgksît‚| d d d td
d/ƒtd0d/ƒtd1d2ƒtd1d2ƒtd0d/ƒtd
d/ƒgks8t‚| d
 d d tdd3ƒtd4d3ƒtd5d3ƒtd6d3ƒtd6d3ƒtd5d3ƒtd4d3ƒtdd3ƒgks’t‚| d d d tj tjgks¶t‚| d d d
 tdd7ƒtd8dƒtddƒtdd7ƒgksðt‚| d d d tdd9ƒtd:d;ƒtd<d=ƒtd1d=ƒtd0d;ƒtd
d9ƒgks:t‚| d
 d d tdd>ƒtdd?ƒtd@dAƒtdBdCƒtd6dCƒtd5dAƒtd4d?ƒtdd>ƒgks”t‚tt	dDdE„ ƒ tt	dFdE„ ƒ t
dGƒ‰ tt	‡ fdHdE„ƒ d S )INr   r   r   r   r   r   éÿÿÿÿr   éþÿÿÿé   é   éüÿÿÿé   é	   é   é   é<   éi   i  éûÿÿÿiÏÿÿÿé   éZ   i3ÿÿÿéH   i;  i0  ióÿÿÿé   iÃÿÿÿé   é=   é©   éx   iWÿÿÿé
   éð   iùÿÿÿé   é[   i†ÿÿÿé   c              	   S   sH   g | ]@}d d„ t t| d d ddƒƒt td|d d dƒƒ D ƒ‘qS )c                 S   s   g | ]}|t d ƒ ‘qS )r   r   )Ú.0Újr   r   r   Ú
<listcomp>Q   s     z7test_finite_diff_weights.<locals>.<listcomp>.<listcomp>r   r   r   )ÚlistÚrange©r<   Úir   r   r   r>   Q   s   ÿz,test_finite_diff_weights.<locals>.<listcomp>c                    s*   g | ]"}t d ddddœ| ˆ | dƒ‘qS )r   r   r&   )r   r   r   r%   r   ©r   rA   )Úxlr   r   r>   U   s   ÿé   é   içÿÿÿéK   é€   i   é1   iÿÿÿiÉ  é   i÷ÿÿÿi€  é   i€  iµÿÿÿé@   i   i   éõ   i   i7ûÿÿi   c                   S   s   t dddgƒS )Nr#   r   r   rC   r   r   r   r   r   l   r   z*test_finite_diff_weights.<locals>.<lambda>c                   S   s   t dddgƒS )Ng333333ó?r   r   rC   r   r   r   r   r   m   r   r   c                      s   t ˆ ddgƒS )Nr   r   rC   r   )r   r   r   r   o   r   )r   r   r   r   ZZeror@   ZOner    r   r!   r   )ÚdrB   r   )r   rD   r   Útest_finite_diff_weights   sÐ    &&0F. ÿ
ÿ.   ÿ"2J2 ÿ
ÿ2   ÿ"<( ÿ
ÿ.   ÿ"@. ÿ
ÿ2   ÿÿ
ÿ":. ÿ.   ÿ$:&  ÿ   ýrO   c                  C   s
  t dƒ} tdƒ}tdƒ}t|| ƒ | ¡| d | d | | d | d gƒ || || ƒd  || || ƒd  ƒd  ƒ || || ƒd  ƒ || || ƒd  || || ƒd  ƒd  ƒ|| || ƒd  ƒ  }t|| ƒ| ƒj|| ƒ| || ƒd  d}||  ¡ dkst‚d S )Nr   r   Údxr   r   )ÚpointsZx0r   )r   r   r   r   Zas_finite_differencer   r   )r   r   rP   Zdf_trueZdf_testr   r   r   Útest_as_finite_diffr   s    .@>ÿ(rR   c               	      sd  t dƒ\‰} }tdƒ‰ tƒ $ tˆ ˆ| ƒtdƒ ˆ| dd}W 5 Q R X dd„ tˆ| gdd	gƒD ƒ\}}}}ˆ ||ƒˆ ||ƒ ˆ ||ƒ ˆ ||ƒ }||  ¡ d
ks¦t‚tdƒ‰tƒ $ tˆ ˆƒˆˆƒ d ˆdd}W 5 Q R X ˆ ˆtj	 ƒ ˆ ˆtj	 ƒ ˆˆƒ ˆˆtj	 ƒ ˆˆtj	 ƒ ˆ ˆƒ  }	||	  ¡ d
ks@t‚tˆ ˆƒˆd  d ˆˆd	 ˆd	 gd}
ˆ ˆd	 ƒˆd	 d  ˆ ˆd	 ƒ ˆd	 d  d }|
|  ¡ d
ks´t‚t
t‡ ‡‡fdd„ƒ tˆ ˆƒˆˆƒ ˆ¡ ˆƒ}ˆˆƒ ˆˆd	 ƒ ˆ ˆtj	 ƒ ˆˆƒˆˆd	 ƒ ˆ ˆtj	 ƒ  }||ks:t‚tˆ ˆƒˆˆƒ ˆ¡ ˆ¡ ˆƒ}ˆˆtddƒ ƒdˆˆtj	 ƒ  ˆˆtj	 ƒ ˆ ˆtj	 ƒ  ˆˆtj	 ƒdˆˆtj	 ƒ  ˆˆtddƒ ƒ ˆ ˆtj	 ƒ  }||ksìt‚ˆ ˆƒ ˆ¡ˆˆƒ ˆ¡ }t|ˆ| ˆˆ| gd}dˆ ˆƒ | ˆ | ˆ ƒd|   dˆ |ˆ ƒ d|   dˆˆƒ | ˆ| ˆ ƒd|   dˆ|ˆ ƒ d|    d|  dˆ ˆƒ | dˆ | ˆ ƒ d|   ˆ |ˆ ƒd|   dˆˆƒ | dˆ| ˆ ƒ d|   ˆ|ˆ ƒd|    d|   }||ks8t‚| |d
¡ ¡ }t|ˆƒ}||ks`t‚d S )Nzx y hr   é*   T)Úevaluatec                 S   s   g | ]\}}||t j  ‘qS r   )r   r    )r<   ÚvÚsignr   r   r   r>   …   s     z-test_differentiate_finite.<locals>.<listcomp>r#   r   r   Úgr%   )rQ   r   c                      s&   t ˆ ˆƒˆˆƒ ˆˆd ˆd gdS )Nr   )Zpints)r   r   ©r   rW   r   r   r   r   “   s   ÿz+test_differentiate_finite.<locals>.<lambda>r$   )r   r   r   r   r	   r   r   r   r   r    r   Ú	TypeErrorr   r   ÚlimitZdoit)Úyr   Zres0ZxmZxpZymZypZref0Zres1Zref1Zres2Zref2Zres3Zref3Zres4Zref4Z	res5_exprZres5Zref5Zres6Zref6r   rX   r   Útest_differentiate_finite€   sZ    ($(($$ÿ*4F"@>ÿ`ÿÿ(ÿ<ÿÿÿ
r\   N)Ú	itertoolsr   Zsympy.core.functionr   r   Zsympy.core.numbersr   Zsympy.core.singletonr   Zsympy.core.symbolr   Z&sympy.functions.elementary.exponentialr	   Zsympy.calculus.finite_diffr
   r   r   r   Zsympy.testing.pytestr   r   r"   rO   rR   r\   r   r   r   r   Ú<module>   s   X