
    \h                         S SK Jr  S SKJrJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJrJrJrJr  S SKJrJr  S	 rS
 rS rS rg)    )product)Functiondiff)Rational)S)symbols)exp)apply_finite_diffdifferentiate_finitefinite_diff_weights_as_finite_diff)raiseswarns_deprecated_sympyc            	      
  ^ ^^ [        S5      u  mm[        S5      m [        STT-
  TT-   /T " TT-
  5      T " TT-   5      /T5      T " TT-   5      T " TT-
  5      -
  ST-  -  -
  R                  5       S:X  d   e[        S/ SQT " S5      T " S5      T " S	5      /S5      [	        S
S5      T " S5      -  ST " S5      -  -   [
        R                  T " S	5      -  -
  -
  R                  5       S:X  d   e[        [        U UU4S j5        g )Nzx hf      r            r   r   r   c                  0   > [        STT/T " T5      /5      $ )Nr   )r
   r   hxs   ]/var/www/auris/envauris/lib/python3.13/site-packages/sympy/calculus/tests/test_finite_diff.py<lambda>(test_apply_finite_diff.<locals>.<lambda>   s    0QFQqTFC    )	r   r   r
   simplifyr   r   Halfr   
ValueErrorr   s   @@@r   test_apply_finite_diffr$      s   5>DAqAa!A#qsa!fa!f-=qAqsVAacF]QqS!"#+8:3 3 3 aQqT1Q41,>Bb!_QqT!AadF*QVVAaD[8:;C8:K K K
:CDr    c                    ^ [        S/ SQS5      n U S   S   [        SS5      S[        SS5      /:X  d   e/ SQn[        SU[        R                  5      n [	        S5       H5  nU S	   U   [        R
                  /[        R                  /S
-  -   :X  a  M5   e   U S   S	   [        R                  /S-  :X  d   eU S   S   [        R                  [        R                  [        SS5      /[        R                  /S-  -   :X  d   eU S   S   [        R                  [        SS5      [        SS5      [        SS5      [        SS5      /[        R                  /S-  -   :X  d   eU S   S   [        R                  [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      /[        R                  /S-  -   :X  d   eU S   S
   [        R                  [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      /	:X  d   e[	        S5       H#  nU S   U   [        R                  /S-  :X  a  M#   e   U S   S   [        S5      * [        R
                  [        R
                  /[        R                  /S-  -   :X  d   eU S   S   [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      /[        R                  /S-  -   :X  d   eU S   S   [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      /[        R                  /S-  -   :X  d   eU S   S
   [        SS5      [        S
S5      [        S
S5      [        SS5      [        SS5      [        S
S5      [        S
S5      [        SS5      [        SS5      /	:X  d   e[	        S5       H#  nU S   U   [        R                  /S-  :X  a  M#   e   U S   S   [        R                  [        R
                  * [        R
                  [        R                  [        SS5      /[        R                  /S-  -   :X  d   eU S   S   [        R                  [        SS
5      [        SS
5      [        R
                  [        R
                  * [        SS
5      [        SS
5      /[        R                  /S-  -   :X  d   eU S   S
   [        R                  [        SS 5      [        S!S 5      [        S"S#5      [        S$S#5      [        SS%5      [        SS%5      [        S&S'5      [        S(S'5      /	:X  d   e[	        S5       H#  nU S   U   [        R                  /S-  :X  a  M#   e   U S   S   [        S5      [        S5      * [        S5      * [        R
                  [        R
                  /[        R                  /S-  -   :X  d   eU S   S   [        S)S5      [        SS5      [        SS5      [        S5      [        S5      [        SS5      [        SS5      /[        R                  /S-  -   :X  d   eU S   S
   [        S*S
5      [        S+S,5      [        S+S,5      [        S"S5      [        S"S5      [        SS5      [        SS5      [        S&S'5      [        S&S'5      /	:X  d   e[	        SS5       VVs/ s HY  n[        [	        U* S-  S-   S	S5      5      [        [	        SUS-  S-   S5      5      -    Vs/ s H  o3[        S5      -  PM     snPM[     nnn[	        S5       Vs/ s H  n[        SSSSS-.U   X   S	5      PM     n nU S	   S	   S   [        R                  [        R                  /:X  d   eU S   S	   S   [        SS.5      [        SS.5      [        SS.5      [        SS.5      /:X  d   eU S   S	   S   [        SS/5      [        S0S/5      [        S1S25      [        S1S25      [        S0S/5      [        SS/5      /:X  d   eU S   S	   S&   [        SS35      [        S4S35      [        S5S35      [        S6S35      [        S6S35      [        S5S35      [        S4S35      [        SS35      /:X  d   eU S	   S   S   [        R
                  * [        R
                  /:X  d   eU S   S   S   [        SS75      [        S8S
5      [        SS
5      [        SS75      /:X  d   eU S   S   S   [        SS95      [        S:S;5      [        S<S=5      [        S1S=5      [        S0S;5      [        SS95      /:X  d   eU S   S   S&   [        SS>5      [        SS?5      [        S@SA5      [        SBSC5      [        S6SC5      [        S5SA5      [        S4S?5      [        SS>5      /:X  d   e[        [        SD 5        [        [        SE 5        [        SF5      m[        [        U4SG j5        g s  snf s  snnf s  snf )HNr   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   )r   r   r   r(         iK      i   1   ii     ii     i  i@   i   i      i   i7i   c                      [        SSS/5      $ )Nr&   r   r   r    r    r   r   *test_finite_diff_weights.<locals>.<lambda>l   s    221v>r    c                      [        SSS/5      $ )Ng333333?r   r   rI   rJ   r    r   r   rK   m   s    23A?r    r   c                      > [        T SS/5      $ )Nr   r   rI   )r   s   r   r   rK   o   s    21q!f=r    )r   r   r   ZerorangeOner"   listr   r#   r   )dxlijr   s       @r   test_finite_diff_weightsrV      s	   Ay!,AQ47xA8B?;;;; 
)B 	Ar166*A 1XtAw155'QVVHQJ....  Q47qvvhqj   Q47qvvqvvxA7166(1*DDDDQ47qvvx1~xAR@PRZ[\^`RabfgflflemnoeoooooQ47qvvx1~xAR@PRZ[\^`Ra2R(8:=>VVHQJG G G GQ47qvvx1~xAQQYZ[]^Q_3'"c):HR<MxXY[^O_a a a a 1XtAw166(1*$$$ Q47!uaeeQUU+qvvhqj8888Q47xAAAQSUWHXZbcegiZjkopouounvwxnxxxxxQ47xR((1a.(1a.(SUWYJZ\degik\l2B9<=FF8A:F F F FQ47xb)8Aq>8Aq>8TVXY?\degij\k3'!S)98B;LhWY[^N_a a a a 1XtAw166(1*$$$ Q47qvvvquuaffhr1oF!&&RSSSSSQ47qvvxQ/"a!%%!%%AA8;<66(1*E E E EQ47qvvxR0(2r2BHSRUDVX`aegjXkB'!R(1c:JHUWY\L]_ _ _ _ 1XtAw166(1*$$$ Q47qtadUQqTE155!%%8AFF8A:EEEEQ47xAa(8(3:JAaDRSTURVAQ9<=FF8A:F F F FQ47xAr(:HT2<NPXY\^`PackloqsctAQ!S9I8TUWZK[] ] ] ] A;
 a  qbd1fa 34T%1Q3q5!:L5MM
NMaQqT6M
N  
 
 Ah	 
qQ15a8"%	C  	 Q471:!&&!&&))))Q471:(2r*HQOXa_hWY[]N^____Q471:(1c*HS#,>S@QS[\^`cSd"3,hq#.>@ @ @ @Q471:(2t,hr4.@(4QUBVX`aegkXl"4.t0DhrSWFXZbcegkZln n n n Q471:155&!%%(((Q471:(1b/8B?HQNHUWY[L\]]]]Q471:(2s+Xb#->b@Q"2r*HS#,>C@PR R R RQ471:(1d+Xc4-@"3-xt/D"4.t0D"2t,hr4.@B B B B :>?
:?@A
:=>= O 
 	s   Ai h;.i !i;i c            
      6   [        S5      n [        S5      n[        S5      n[        U" U 5      R                  U 5      U S-
  U S-
  X S-   U S-   /5        U" X" U 5      S-  -   U" X" U 5      S-  -   5      S-  -
  5      * U" X" U 5      S-  -   5      -  U" X" U 5      S-  -   U" X" U 5      S-  -   5      S-  -   5      U" X" U 5      S-  -   5      -  -   n[        U" U 5      U 5      R	                  U" U 5      X" U 5      S-  -   S9nXC-
  R                  5       S:X  d   eg )Nr   r   dxr   r   )pointsx0r   )r   r   r   r   as_finite_differencer!   )r   r   rX   df_truedf_tests        r   test_as_finite_diffr^   r   s%   AA	$BAaDIIaL1Q3!Q!QqS"9: 2a572a1ai=?*++b2a57m;!BqE!G)BqAqyM!O+,r!BqE!G)}<=G1Q4m001!BqE!G)0LG'')Q...r    c            	      
  ^^^ [        S5      u  mp[        S5      m[        5          [        T" TU 5      [	        S5      -   TU SS9nS S S 5        [        TU /SS/5       VVs/ s H  u  p4X4[        R                  -  -   PM     snnu  pVpxT" XW5      T" Xh5      -   T" XX5      -
  T" Xg5      -
  n	WU	-
  R                  5       S:X  d   e[        S	5      m[        5          [        T" T5      T" T5      -  S-   TSS9n
S S S 5        T" T[        R                  -
  5      * T" T[        R                  -   5      -   T" T5      -  T" T[        R                  -
  5      * T" T[        R                  -   5      -   T" T5      -  -   nW
U-
  R                  5       S:X  d   e[        T" T5      TS
-  -   S-   TTS-
  TS-   /S9nT" TS-   5      TS-   S
-  -   T" TS-
  5      -
  TS-
  S
-  -
  S-  nX-
  R                  5       S:X  d   e[        [        UUU4S j5        [        T" T5      T" T5      R                  T5      -  T5      nT" T5      * T" TS-   5      -   T" T[        R                  -   5      -  T" T5      T" TS-
  5      -
  T" T[        R                  -
  5      -  -
  nX:X  d   e[        T" T5      T" T5      R                  T5      R                  T5      -  T5      nT" T[        S
S5      -
  5      ST" T[        R                  -
  5      -  -
  T" T[        R                  -   5      -   T" T[        R                  -
  5      -  * T" T[        R                  -
  5      ST" T[        R                  -   5      -  -
  T" T[        S
S5      -   5      -   T" T[        R                  -   5      -  -   nUU:X  d   eT" T5      R                  T5      T" T5      R                  T5      -  n[        UTU-
  TTU-   /S9nST" T5      -  U-  T" U* T-   5      SU-  -  -   S
T" UT-   5      -  SU-  -  -   ST" T5      -  U-  T" U* T-   5      SU-  -  -   S
T" UT-   5      -  SU-  -  -   -  SU-  -  ST" T5      -  U-  S
T" U* T-   5      -  SU-  -  -
  T" UT-   5      SU-  -  -
  ST" T5      -  U-  S
T" U* T-   5      -  SU-  -  -
  T" UT-   5      SU-  -  -
  -  SU-  -  -
  nUU:X  d   eg ! , (       d  f       GN= fs  snnf ! , (       d  f       GN= f)Nzx y hr   *   T)evaluater&   r   r   gr(   )rY   r   c                  H   > [        T " T5      T" T5      -  TTS-
  TS-   /S9$ )Nr   )pints)r   )r   rb   r   s   r   r   +test_differentiate_finite.<locals>.<lambda>   s+    21Q4!9a:;A#qsEr    r'   )r   r   r   r   r	   r   r   r"   r!   r   	TypeErrorr   r   )yr   res0vsignxmxpymypref0res1ref1res2ref2res3ref3res4ref4	res5_exprres5ref5r   rb   r   s                        @@@r   test_differentiate_finiter{      s   gGAqA		!#AaGc"g$5q!dK 
"5<aVb!W5MN5M'!aqvv+o5MNNBBR9qy 1R9,qy8D4K!!#q(((A		!#AaD1INAE 
"q166z]NQq166z]*AaD0q166z]NQq166z]*AaD01D4K!!#q(((!q!tb 0!QqS!A#JGDa!eHAz!Aa!eH,Az91<DK!!#q(((
9 E F  !QqTYYq\ 115DqTEAa!eHaAFF
m+qtaAh!aff*.MMD<<!QqTYYq\%6%6q%9 91=DHQN"#a!aff*o5!aff*EqQVV}TUAFF
ma!aff*o-!hq!n2D0EEqQVV}TUD4<<!		!QqTYYq\)I	1Q31Q3-@DqtGAI1"q&	1Q3'!Aa!eH*ac*::R!WQYA2PQ6TUVWTW=XqQxZ1>  !!%()!A$q1QrAvY;!3D(DQU8QqS>)adF1HqA26{AaC'881QU8QqS>I(KLMaC(QQD 4<<C 
"	!N
 
"	!s    S!"!S3S9!
S09
T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$   rV   r^   r{   rJ   r    r   <module>r      s>     0 ' " % 6  @EU?p/$r    