
    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y)    )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
  j                         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
  j                         dk(  sJ t        t         fd       y )Nzx hf      r            r   r   r   c                  0    t        dg        g      S )Nr   )r
   r   hxs   Z/var/www/openai/venv/lib/python3.12/site-packages/sympy/calculus/tests/test_finite_diff.py<lambda>z(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                  >   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 ]3  }| d	   |   t        j
                  gt        j                  gd
z  z   k(  r3J  | 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(  r!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(  r!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(  r!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 t	        dd      D cg c]V  }t        t	        | dz  dz   d	d            t        t	        d|dz  dz   d            z   D cg c]  }|t        d      z   c}X }}}t	        d      D cg c]  }t        dddd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d/      t        d0d/      t        d1d2      t        d1d2      t        d0d/      t        dd/      gk(  sJ | d   d	   d&   t        dd3      t        d4d3      t        d5d3      t        d6d3      t        d6d3      t        d5d3      t        d4d3      t        dd3      gk(  sJ | d	   d   d   t        j
                   t        j
                  gk(  sJ | d   d   d   t        dd7      t        d8d
      t        dd
      t        dd7      gk(  sJ | d   d   d   t        dd9      t        d:d;      t        d<d=      t        d1d=      t        d0d;      t        dd9      gk(  sJ | 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J t        t        dD        t        t        dE        t        dF      t        t        fdG       y c c}w c c}}w c c}w )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                      t        dddg      S )Nr%   r   r   r    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   rI   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   ZerorangeOner!   listr   r"   r   )dxlijr   s       @r   test_finite_diff_weightsrT      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Ma1QqT6M
N  
 
 Ah	 
qQ15a8"Q%	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   9Ah:hh$hhc            
      L   t        d      } t        d      }t        d      }t         ||       j                  |       | 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         ||       |       j	                   ||       |  ||       dz  z         }||z
  j                         dk(  sJ y )Nr   r   dxr   r   )pointsx0r   )r   r   r   r   as_finite_differencer    )r   r   rV   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g'')Q...r   c            	      
   t        d      \  } }t        d      t               5  t         |       t	        d      z   | d      }d d d        t        | gddg      D cg c]  \  }}||t        j                  z  z    c}}\  }}}} ||       ||      z    ||      z
   ||      z
  }	|	z
  j                         dk(  sJ t        d	      t               5  t                      z  dz   d      }
d d d         t        j                  z
          t        j                  z         z          z   t        j                  z
          t        j                  z         z          z  z   }
|z
  j                         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
  j                         dk(  sJ t        t        fd       t                      j                        z        }         dz         z    t        j                  z         z          dz
        z
   t        j                  z
        z  z
  }||k(  sJ t                      j                        j                        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        j                               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 |j                  |d      j                         }t        |      }||k(  sJ y # 1 sw Y   xY wc c}}w # 1 sw Y   2xY w)Nzx y hr   *   T)evaluater%   r   r   gr'   )rW   r   c                  N    t                       z  dz
  dz   g      S )Nr   )pints)r   )r   r`   r   s   r   r   z+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   limitdoit)yr   res0vsignxmxpymypref0res1ref1res2ref2res3ref3res4ref4	res5_exprres5ref5res6ref6r   r`   r   s                          @@@r   test_differentiate_finiter|      s   gGAq!A		!#AaGc"g$5q!dK 
"5<aVb!W5MN5M'!Ta$qvv+o5MNNBBR9qRy 1R9,qRy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4K!!#q(((
9 E F  !QqTYYq\ 115DqTEAa!eHaAFF
m+qtaAh!aff*.MMD4<<!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<<::a  "D	1D4<<K 
"	!N
 
"	!s   #T!& T.#!T4!T+4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#   rT   r\   r|   rI   r   r   <module>r      s>     0 ' " % 6  @EU?p/(r   