
    gP                         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	 Zd
 Zd Z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            	          t          d          \  t          d           t          dz
  z   g  z
              z             g            z               z
            z
  dz  z  z
                                  dk    sJ t          dg d  d            d            d	          gd          t	          d
d            d          z  d  d          z  z   t
          j          d	          z  z
  z
                                  dk    sJ t          t           fd           d S )Nzx hf      r            r   r   r   c                  >    t          dg            g          S )Nr   )r   r   hxs   a/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/calculus/tests/test_finite_diff.py<lambda>z(test_apply_finite_diff.<locals>.<lambda>   s"    0QFQQqTTFCC     )	r	   r   r   simplifyr   r   Halfr   
ValueErrorr   s   @@@r   test_apply_finite_diffr$      se   5>>DAqAa!A#qsaa!ffaa!ff-=qAAQqsVVAAacFF]QqS!"#+8::3 3 3 3 aQQqTT11Q441,>BBb!__QQqTT!AaaddF*QVAAaDD[8:;C8::K K K K
:CCCCCCDDDDDr    c                     t          dg dd          } | d         d         t          dd          dt          dd          gk    sJ g dt          dt          j                  } t	          d          D ]2}| d	         |         t          j        gt          j        gd
z  z   k    sJ 3| d         d	         t          j        gdz  k    sJ | d         d         t          j        t          j        t          dd          gt          j        gdz  z   k    sJ | d         d         t          j        t          dd          t          dd          t          dd          t          dd          gt          j        gdz  z   k    sJ | 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z  z   k    sJ | 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J t	          d          D ]$}| d         |         t          j        gdz  k    sJ %| d         d         t          d           t          j        t          j        gt          j        gdz  z   k    sJ | d         d         t          dd          t          dd          t          dd          t          dd          t          dd          gt          j        gdz  z   k    sJ | 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z  z   k    sJ | 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    sJ t	          d          D ]$}| d         |         t          j        gdz  k    sJ %| d         d         t          j        t          j         t          j        t          j        t          dd          gt          j        gdz  z   k    sJ | 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z  z   k    sJ | 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J t	          d          D ]$}| d         |         t          j        gdz  k    sJ %| d         d         t          d          t          d           t          d           t          j        t          j        gt          j        gdz  z   k    sJ | 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z  z   k    sJ | 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    sJ d- t	          dd          D             fd.t	          d          D             } | d	         d	         d         t          j        t          j        gk    sJ | d         d	         d         t          dd/          t          dd/          t          dd/          t          dd/          gk    sJ | d         d	         d         t          dd0          t          d1d0          t          d2d3          t          d2d3          t          d1d0          t          dd0          gk    sJ | d         d	         d&         t          dd4          t          d5d4          t          d6d4          t          d7d4          t          d7d4          t          d6d4          t          d5d4          t          dd4          gk    sJ | d	         d         d         t          j         t          j        gk    sJ | d         d         d         t          dd8          t          d9d
          t          dd
          t          dd8          gk    sJ | d         d         d         t          dd:          t          d;d<          t          d=d>          t          d2d>          t          d1d<          t          dd:          gk    sJ | d         d         d&         t          dd?          t          dd@          t          dAdB          t          dCdD          t          d7dD          t          d6dB          t          d5d@          t          dd?          gk    sJ t          t          dE            t          t          dF            t          dG          t          t          fdH           d S )INr   r   r   r   r   )	r   r   r&   r      r      r)   r      	   r   r(   r'         <   r*   i   i  i   Z   i3H   i;  i0  i   i   =      x   iW
   r      i   [   i   c                     g | ]V}d  t          t          | dz  dz   dd                    t          t          d|dz  dz   d                    z   D             WS )c                 2    g | ]}|t          d           z  S )r   r   ).0js     r   
<listcomp>z7test_finite_diff_weights.<locals>.<listcomp>.<listcomp>Q   s"    
N
N
Na1QqTT6
N
N
Nr    r   r   r   )listrange)rA   is     r   rC   z,test_finite_diff_weights.<locals>.<listcomp>Q   sv     
  
  
  O
N4qbd1fa 3 344T%1Q3q5!:L:L5M5MM
N
N
N 
  
  
 r    c           	      T    g | ]$}t          d dddd|         |         d          %S )r   r   r)   )r   r   r   r(   r   r   )rA   rF   xls     r   rC   z,test_finite_diff_weights.<locals>.<listcomp>U   sJ     	 	 		
 
qQ155a8"Q%	C	C 	 	 	r          iK      i   1   ii     ii     i  i@   i   i      i   i7i   c                  &    t          dddg          S )Nr&   r   r   rH    r    r   r   z*test_finite_diff_weights.<locals>.<lambda>l   s    221v>> r    c                  &    t          dddg          S )Ng333333?r   r   rH   rT   r    r   r   z*test_finite_diff_weights.<locals>.<lambda>m   s    23A?? r    r   c                  (    t           ddg          S )Nr   r   rH   )r   s   r   r   z*test_finite_diff_weights.<locals>.<lambda>o   s    21q!f== r    )
r   r   r   ZerorE   Oner"   r   r#   r	   )drF   r   rI   s     @@r   test_finite_diff_weightsrZ      sA   Ayyy!,,AQ47xA8B??;;;;; 
)	(	(B 	Ar16**A 1XX / /tAw15'QVHQJ...... Q47qvhqj    Q47qvqvxA716(1*DDDDDQ47qvx1~~xAR@P@PRZ[\^`RaRabfgflemnoeooooooQ47qvx1~~xAR@P@PRZ[\^`RaRa2R(8(8:=>VHQJG G G G GQ47qvx1~~xAQQYZ[]^Q_Q_3''"c):):HR<M<MxXY[^O_O_a a a a a 1XX % %tAw16(1*$$$$$Q47!uaeQU+qvhqj88888Q47xAAAQSUWHXHXZbcegiZjZjkopounvwxnxxxxxxQ47xR(((1a..(1a..(SUWYJZJZ\degik\l\l2B9<=F8A:F F F F FQ47xb))8Aq>>8Aq>>8TVXY??\degij\k\k3''!S)9)98B;L;LhWY[^N_N_a a a a a 1XX % %tAw16(1*$$$$$Q47qvvquafhr1ooF!&RSSSSSSQ47qvxQ//"a!%!%AA8;<6(1*E E E E EQ47qvxR00(2r2B2BHSRUDVDVX`aegjXkXkB''!R(1c:J:JHUWY\L]L]_ _ _ _ _ 1XX % %tAw16(1*$$$$$Q47qttaddUQqTTE15!%8AF8A:EEEEEQ47xAa(8(8(3:J:JAaDDRSTURVRVAQ9<=F8A:F F F F FQ47xAr(:(:HT2<N<NPXY\^`PaPackloqsctctAQ!S9I9I8TUWZK[K[] ] ] ] ]

  
 A;;
  
  
 B	 	 	 	Ahh	 	 	A Q471:!&!&)))))Q471:(2r**HQOOXa__hWY[]N^N^_____Q471:(1c**HS#,>,>S@Q@QS[\^`cSdSd"3,,hq#.>.>@ @ @ @ @Q471:(2t,,hr4.@.@(4QUBVBVX`aegkXlXl"4..t0D0DhrSWFXFXZbcegkZlZln n n n n Q471:15&!%((((Q471:(1b//8B??HQNNHUWY[L\L\]]]]]Q471:(2s++Xb#->->b@Q@Q"2r**HS#,>,>C@P@PR R R R RQ471:(1d++Xc4-@-@"3--xt/D/D"4..t0D0D"2t,,hr4.@.@B B B B B :>>???
:??@@@A
:====>>>>>r    c            
         t          d          } t          d          }t          d          }t           ||                               |           | dz
  | dz
  | | dz   | dz   g            ||  ||           dz  z    ||  ||           dz  z             dz  z
              ||  ||           dz  z             z   ||  ||           dz  z    ||  ||           dz  z             dz  z              ||  ||           dz  z             z  z   }t           ||           |                                ||           |  ||           dz  z             }||z
                                  dk    sJ d S )Nr   r   dxr   r   )pointsx0r   )r	   r   r   r   as_finite_differencer!   )r   r   r\   df_truedf_tests        r   test_as_finite_diffrb   r   s   AA	$BAAaDDIIaLL1Q3!Q!QqS"9::: q22a55722a1ai==?*+++bb22a557mm;!BBqEE!G)BBqAqyMM!O+,,rr!BBqEE!G)}}<=G11Q44mm001!BBqEE!G)0LLGg''))Q......r    c            	         t          d          \  } }t          d          t                      5  t           |           t	          d          z   | d          }d d d            n# 1 swxY w Y   d t          | gddg          D             \  }}}} ||           ||          z    ||          z
   ||          z
  }||z
                                  d	k    sJ t          d
          t                      5  t                                z  dz   d          }d d d            n# 1 swxY w Y    t          j        z
              t          j        z             z              z   t          j        z
              t          j        z             z              z  z   }	||	z
                                  d	k    sJ t                     dz  z   dz   dz
  dz   g          }
 dz             dz   dz  z    dz
            z
  dz
  dz  z
  dz  }|
|z
                                  d	k    sJ t          t          fd           t                                                              z            }             dz             z    t          j        z             z              dz
            z
   t          j        z
            z  z
  }||k    sJ t                                                                                            z            } t          dd          z
            d t          j        z
            z  z
   t          j        z             z    t          j        z
            z    t          j        z
            d t          j        z             z  z
   t          dd          z             z    t          j        z             z  z   }||k    sJ                                                                                   z  }t          ||z
  |z   g          }d           z  |z   | z             d|z  z  z   d |z             z  d|z  z  z   d           z  |z   | z             d|z  z  z   d |z             z  d|z  z  z   z  d|z  z  d           z  |z  d | z             z  d|z  z  z
   |z             d|z  z  z
  d           z  |z  d | z             z  d|z  z  z
   |z             d|z  z  z
  z  d|z  z  z
  }||k    sJ |                    |d	                                          }t          |          }||k    sJ d S )Nzx y hr   *   T)evaluatec                 8    g | ]\  }}||t           j        z  z   S rT   )r   r"   )rA   vsigns      r   rC   z-test_differentiate_finite.<locals>.<listcomp>   s&    NNN'!Ta$qv+oNNNr    r&   r   r   gr(   )r]   r   c                  b    t                                 z  dz
  dz   g          S )Nr   )pints)r   )r   ri   r   s   r   r   z+test_differentiate_finite.<locals>.<lambda>   sA    211Q44!9a:;A#qsE E E r    r'   )r	   r   r   r   r
   r   r!   r   r"   r   	TypeErrorr   r   limitdoit)yr   res0xmxpymypref0res1ref1res2ref2res3ref3res4ref4	res5_exprres5ref5res6ref6r   ri   r   s                        @@@r   test_differentiate_finiter      s   gGAq!A		!	! L L#AAaGGc"gg$5q!dKKKL L L L L L L L L L L L L L LNNWaVb!W5M5MNNNNBB1R99qqRyy 11R99,qqRyy8D4K!!##q((((A		!	! F F#AAaDD1INAEEEF F F F F F F F F F F F F F FQq16z]]NQQq16z]]*AAaDD0Qq16z]]NQQq16z]]*AAaDD01D4K!!##q((((!q!tb 0!QqS!A#JGGGDAa!eHHAz!AAa!eHH,Az91<D4K!!##q((((
9 E E E E E E F F F  !QQqTTYYq\\ 1155DQqTTEAAa!eHHaaAF
mm+qqttaaAhh!af*.MMD4<<<<!QQqTTYYq\\%6%6q%9%9 91==DaHQNN"##a!af*o5!af*EqqQV}}TUaAF
mma!af*o-!hq!nn2D0E0EEqqQV}}TUD4<<<<!		!QQqTTYYq\\)I	1Q31Q3-@@@DqqttGAI1"q&		1Q3'!AAa!eHH*ac*::R!WQYA2PQ6TUVWTW=XqqQxxZ1>  !!%()!!A$$q1QQrAvYY;!3D(D1QU88QqS>)aaddF1HqA26{AaC'8811QU88QqS>I(KLMaC(QQD 4<<<<::a  ""D	1D4<<<<<<s#   .A..A25A2	+E  EEN)	itertoolsr   sympy.core.functionr   r   sympy.core.numbersr   sympy.core.singletonr   sympy.core.symbolr	   &sympy.functions.elementary.exponentialr
   sympy.calculus.finite_diffr   r   r   r   sympy.testing.pytestr   r   r$   rZ   rb   r   rT   r    r   <module>r      s         0 0 0 0 0 0 0 0 ' ' ' ' ' ' " " " " " " % % % % % % 6 6 6 6 6 6            @ ? ? ? ? ? ? ?E E EU? U? U?p/ / /( ( ( ( (r    