
    g=]                     T   d dl mZ d dlmZmZmZ d dlm	Z	m
Z
mZmZ d dlmZmZmZ d dlmZ d dlmZ  eddd	          \  ZZZZZ ed
d          \  ZZd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d  Z0d! Z1d" Z2d# Z3d$ Z4d% Z5d& Z6d' Z7d(S ))    )Sum)deltaproductdeltasummation_extract_delta)EqSsymbolsoo)KroneckerDelta	Piecewisepiecewise_fold)And)raisesz	i j k l mT)integerfinitezx yF)commutativec                     t          t          t          ddf          dk    sJ t          t          t          ddf          t          dz  k    sJ t          t          t          z   t          ddf          t          t          z   dz  k    sJ t          t          t          z  t          ddf          t          t          z  dz  k    sJ t          t	          t
          t                    t          ddf          t	          t
          t                    k    sJ t          t          t	          t
          t                    z  t          ddf          t          dz  t	          t
          t                    z  k    sJ t          t          t          z  t	          t
          t                    z  t          ddf          t          t          z  dz  t	          t
          t                    z  k    sJ d S N   r      )dpxjyKDik     [/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/concrete/tests/test_delta.pytest_deltaproduct_trivialr!      s\   a!Qq    a!Qq!t####a!eaAYAEA:----acAq!9!A#))))bAhhAq	""bAhh....a1aj1a)$$1R1XX5555ac"Q((lQ1I&&1Q3(2a88*;;;;;;;r   c                  2   t          t          t          t                    t          ddf          dk    sJ t          t          t          t                    t          ddf          t          t          d          k    sJ t          t          t          t                    t          ddf          t          t          d          k    sJ t          t          t          t                    t          ddf          t          t          d          k    sJ t          t          t          t                    t          dt          f          t          t          d          t          t          d          z  t          t          d          z   k    sJ t          t          t          t                    t          t          df          t          t          d          t          t          d          z  t          t          d          z   k    sJ t          t          t          t                    t          t          t
          f          t          t          t
                    t          t          t
                    z  t          t          t
          dz             z   k    sJ d S Nr   r   r         )r   r   r   r   r   lr   r   r    test_deltaproduct_basicr'      s   bAhhAq	""a''''bAhhAq	""bAhh....bAhhAq	""bAhh....bAhhAq	""bAhh....bAhhAq	""bAhhr!Qxx&7"Q((&BBBBBbAhhAq	""bAhhr!Qxx&7"Q((&BBBBBbAhhAq	""bAhhr!Qxx&7"QA,,&FFFFFFFr   c                     t          t          t          t          t                    z  t          ddf          dk    sJ t          t          t          t          t                    z  t          ddf          t          t          t          d          z  k    sJ t          t          t          t          t                    z  t          ddf          t          t          t          d          z  k    sJ t          t          t          t          t                    z  t          ddf          t          t          t          d          z  k    sJ t          t          t          t          t                    z  t          dt
          f          t          t          t          d          z  t          t
          d          z  t          t
          d          z   k    sJ t          t          t          t          t                    z  t          t
          df          t          t          t          d          z  t          t
          d          z  t          t
          d          z   k    sJ t          t          t          t          t                    z  t          t
          t          f          t          t          t          t                    z  t          t
          t                    z  t          t
          t          dz             z   k    sJ d S r#   )r   r   r   r   r   r   r&   r   r   r    test_deltaproduct_mul_x_kdr)       s   a1aj1a)$$))))a1aj1a)$$"Q((
2222a1aj1a)$$"Q((
2222a1aj1a)$$"Q((
2222a1aj1a)$$"Q((
2a88(;bAhh(FFFFFa1aj1a)$$"Q((
2a88(;bAhh(FFFFFa1aj1a)$$"Q((
2a88(;bAEll(JJJJJJJr   c                     t          t          t          z   t          t          t
                    z  t
          ddf          dk    sJ t          t          t          z   t          t          t
                    z  t
          ddf          t          t          z   t          t          d          z  k    sJ t          t          t          z   t          t          t
                    z  t
          ddf          t          t          z   t          t          d          z  k    sJ t          t          t          z   t          t          t
                    z  t
          ddf          t          t          z   t          t          d          z  k    sJ t          t          t          z   t          t          t
                    z  t
          dt          f          t          t          z   t          t          d          z  t          t          d          z  t          t          d          z   k    sJ t          t          t          z   t          t          t
                    z  t
          t          df          t          t          z   t          t          d          z  t          t          d          z  t          t          d          z   k    sJ t          t          t          z   t          t          t
                    z  t
          t          t          f          t          t          z   t          t          t                    z  t          t          t                    z  t          t          t          dz             z   k    sJ d S r#   )r   r   r   r   r   r   r   r&   r   r   r     test_deltaproduct_mul_add_x_y_kdr+   *   s=   q1ubAhhAq	**a////q1ubAhhAq	**q1ubAhh.>>>>>q1ubAhhAq	**q1ubAhh.>>>>>q1ubAhhAq	**q1ubAhh.>>>>>q1ubAhhAq	**	
Q1aAq!Bq!HH,- - - -q1ubAhhAq	**	
Q1aAq!Bq!HH,- - - -q1ubAhhAq	**	
Q1aAq!Bq!a%LL01 1 1 1 1 1r   c                     t          t          t          t                    t          t          t                    z   t          ddf          dk    sJ t          t          t          t                    t          t          t                    z   t          ddf          t          t          d          t          t          d          z   k    sJ t          t          t          t                    t          t          t                    z   t          ddf          t          t          d          t          t          d          z   k    sJ t          t          t          t                    t          t          t                    z   t          ddf          t          t          d          t          t          d          z   k    sJ t          t          t          t                    t          t          t                    z   t          dt
          f          t          t
          d          t          t          d          t          t
          d          z  z   t          t          d          t          t
          d          z  z   t          t          d          t          t          d          z  t          t
          d          z  z   t          t          d          t          t          d          z  t          t
          d          z  z   k    sJ t          t          t          t                    t          t          t                    z   t          t
          df          t          t
          d          t          t          d          t          t
          d          z  z   t          t          d          t          t
          d          z  z   t          t          d          t          t          d          z  t          t
          d          z  z   t          t          d          t          t          d          z  t          t
          d          z  z   k    sJ t          t          t          t                    t          t          t                    z   t          t
          t          f          t          t
          t          dz             t          t          t                    t          t
          t                    z  z   t          t          t                    t          t
          t                    z  z   t          t          t                    t          t          t          dz
            z  t          t
          t          dz
            z  z   t          t          t          dz
            t          t          t                    z  t          t
          t          dz
            z  z   k    sJ d S r#   )r   r   r   r   r   r&   mr   r   r    test_deltaproduct_add_kd_kdr.   7   s   bAhhAq!Aq!9--2222bAhhAq!Aq!9--AqBq!HH1DDDDDbAhhAq!Aq!9--AqBq!HH1DDDDDbAhhAq!Aq!9--AqBq!HH1DDDDDbAhhAq!Aq!9--Aq
1aAq2q!HHR1XX-2.
1aAq"Q(("2#%'1XXbAhh%6r!Qxx%?2@ @ @ @ @ bAhhAq!Aq!9--Aq
1aAq2q!HHR1XX-2.
1aAq"Q(("2#%'1XXbAhh%6r!Qxx%?2@ @ @ @ @ bAhhAq!Aq!9--Aq1u
1aAq2q!HHR1XX-2.
1aAq1ubAEll*2+-/1q5\\"Q((-B2aQ<<-O2P P P P P P Pr   c                  <   t          t          t          t          t                    t          t
          t                    z   z  t          ddf          dk    sJ t          t          t          t          t                    t          t
          t                    z   z  t          ddf          t          t          t          d          t          t
          d          z   z  k    sJ t          t          t          t          t                    t          t
          t                    z   z  t          ddf          t          t          t          d          t          t
          d          z   z  k    sJ t          t          t          t          t                    t          t
          t                    z   z  t          ddf          t          t          t          d          t          t
          d          z   z  k    sJ t          t          t          t          t                    t          t
          t                    z   z  t          dt          f          t          t          d          t          t          t          d          z  t          t          d          z  z   t          t          t
          d          z  t          t          d          z  z   t          dz  t          t          d          z  t          t
          d          z  t          t          d          z  z   t          dz  t          t
          d          z  t          t          d          z  t          t          d          z  z   k    sJ t          t          t          t          t                    t          t
          t                    z   z  t          t          df          t          t          d          t          t          t          d          z  t          t          d          z  z   t          t          t
          d          z  t          t          d          z  z   t          dz  t          t          d          z  t          t
          d          z  t          t          d          z  z   t          dz  t          t          d          z  t          t
          d          z  t          t          d          z  z   k    sJ t          t          t          t          t                    t          t
          t                    z   z  t          t          t          f          t          t          t          dz             t          t          t          t                    z  t          t          t                    z  z   t          t          t
          t                    z  t          t          t                    z  z   t          dz  t          t          t          dz
            z  t          t
          t                    z  t          t          t          dz
            z  z   t          dz  t          t          t                    z  t          t
          t          dz
            z  t          t          t          dz
            z  z   k    sJ d S r#   )r   r   r   r   r   r   r&   r-   r   r   r    !test_deltaproduct_mul_x_add_kd_kdr0   G   s>   aAqBq!HH$%1ay11Q6666aAqBq!HH$%1ay11Q1a2a888K5LLLLLaAqBq!HH$%1ay11Q1a2a888K5LLLLLaAqBq!HH$%1ay11Q1a2a888K5LLLLLaAqBq!HH$%1ay11R1XX	"Q((
2a8861ajAq162	1R1XXbAhhr!Qxx'6(*+Q$r!Qxx-1a*@Aq*I6J J J J J aAqBq!HH$%1ay11R1XX	"Q((
2a8861ajAq162	1R1XXbAhhr!Qxx'6(*+Q$r!Qxx-1a*@Aq*I6J J J J J aAqBq!HH$%1ay11R1q5\\	"Q((
2a8861ajAq162	1R1q5\\"Q(("2aQ<</60 	
1R1XXbAEll"2aQ<</60 0 0 0 0 0 0r   c                     t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          ddf          dk    sJ t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          ddf          t          t          z   t          t          d          t          t          d          z   z  k    sJ t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          ddf          t          t          z   t          t          d          t          t          d          z   z  k    sJ t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          ddf          t          t          z   t          t          d          t          t          d          z   z  k    sJ t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          dt          f          t          t          d          t          t          z   t          t          d          z  t          t          d          z  z   t          t          z   t          t          d          z  t          t          d          z  z   t          t          z   dz  t          t          d          z  t          t          d          z  t          t          d          z  z   t          t          z   dz  t          t          d          z  t          t          d          z  t          t          d          z  z   k    sJ t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          t          df          t          t          d          t          t          z   t          t          d          z  t          t          d          z  z   t          t          z   t          t          d          z  t          t          d          z  z   t          t          z   dz  t          t          d          z  t          t          d          z  t          t          d          z  z   t          t          z   dz  t          t          d          z  t          t          d          z  t          t          d          z  z   k    sJ t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          t          t          f          t          t          t          dz             t          t          z   t          t          t                    z  t          t          t                    z  z   t          t          z   t          t          t                    z  t          t          t                    z  z   t          t          z   dz  t          t          t          dz
            z  t          t          t                    z  t          t          t          dz
            z  z   t          t          z   dz  t          t          t                    z  t          t          t          dz
            z  t          t          t          dz
            z  z   k    sJ d S r#   )	r   r   r   r   r   r   r   r&   r-   r   r   r    'test_deltaproduct_mul_add_x_y_add_kd_kdr2   X   s   q1ur!Qxx"Q((*+aAY771<<<<q1ur!Qxx"Q((*+aAY77	
QAqBq!HH$%& & & &q1ur!Qxx"Q((*+aAY77	
QAqBq!HH$%& & & &q1ur!Qxx"Q((*+aAY77	
QAqBq!HH$%& & & &q1ur!Qxx"Q((*+aAY772a88	
Q1aAq!<"%&UBq!HH$4R1XX$=<>	
Q
2a88Bq!HH$R1XX-<. 
Q
2a88Bq!HH$R1XX-<. . . . . q1ur!Qxx"Q((*+aAY772a88	
Q1aAq!<"%&UBq!HH$4R1XX$=<>	
Q
2a88Bq!HH$R1XX-<. 
Q
2a88Bq!HH$R1XX-<. . . . . q1ur!Qxx"Q((*+aAY772aQ<<	
Q1aAq!<"%&UBq!HH$4R1XX$=<>	
Q
2aQ<<1a(Aq1u5<6 
Q
2a88Bq!a%LL(Aq1u5<6 6 6 6 6 6 6r   c            
      V
   t          t          t          z  t          t          t          t
                    z  z   t
          ddf          t          t          z  dz  t          t          t          z  dz  z  t          t          d          z  z   t          t          z  t          z  t          t          z  z  t          t          d          z  z   t          t          z  dz  t          z  t          t          d          z  z   k    sJ t          t          t          z  t          t          t          t
                    z  z   t
          ddf          t          t          z  t          t          t          d          z  z   k    sJ t          t          t          z  t          t          t          t
                    z  z   t
          ddf          t          t          z  t          t          t          d          z  z   k    sJ t          t          t          z  t          t          t          t
                    z  z   t
          ddf          t          t          z  t          t          t          d          z  z   k    sJ t          t          t          z  t          t          t          t
                    z  z   t
          dt          f          t          t          z  t          z  t          t          t          z  t          dz
  z  t          z  t          t          z  t          t          z
  z  z  t          dt          k    t          t          k              fd          z   k    sJ t          t          t          z  t          t          t          t
                    z  z   t
          t          df          t          t          z  t           dz   z  t          t          t          z  t          t          z
  z  t          z  t          t          z  dt          z
  z  z  t          t          t          k    t          dk              fd          z   k    sJ t          t          t          z  t          t          t          t
                    z  z   t
          t          t          f          t          t          z  t           t          z   dz   z  t          t          t          z  t          t          z
  z  t          z  t          t          z  t          t          z
  z  z  t          t          t          k    t          t          k              fd          z   k    sJ d S Nr   r   r$   r   Tr%   )
r   r   r   r   r   r   r   r   r   r&   r   r   r    &test_deltaproduct_add_mul_x_y_mul_x_kdr6   n   sy   acAbAhhJAq	**qsQh	1Q3(
2a88/ sAgqsmBq!HH4/589!axz"Q((7J/K K K K KacAbAhhJAq	**acAbAhhJ.>>>>>acAbAhhJAq	**acAbAhhJ.>>>>>acAbAhhJAq	**acAbAhhJ.>>>>>acAbAhhJAq	**	
1q9cQU^Aqsa!en,c!q&!q&.A.AB
 
 	

 
 
 

 acAbAhhJAq	**	
1Q)cQU^Aqsa!en,c!q&!q&.A.AB
 
 	

 
 
 

 acAbAhhJAq	**	
1Q
icQU^Aqsa!en,c!q&!q&.A.AB
 
 	

 
 
 
 
 
r   c            
      "
   t          t          t          t          t          t
                    z   z  t
          ddf          t          t          z  dz  t          t          t          z  dz  z  t          t          d          z  z   t          t          z  t          z  t          t          z  z  t          t          d          z  z   t          t          z  dz  t          z  t          t          d          z  z   k    sJ t          t          t          t          t          t
                    z   z  t
          ddf          t          t          t          t          d          z   z  k    sJ t          t          t          t          t          t
                    z   z  t
          ddf          t          t          t          t          d          z   z  k    sJ t          t          t          t          t          t
                    z   z  t
          ddf          t          t          t          t          d          z   z  k    sJ t          t          t          t          t          t
                    z   z  t
          dt          f          t          t          z  t          z  t          t          t          z  t          dz
  z  t          z  t          t          z  t          t          z
  z  z  t          dt          k    t          t          k              fd          	                                z   k    sJ t          t          t          t          t          t
                    z   z  t
          t          df          t          t          z  t           dz   z  t          t          t          z  t          t          z
  z  t          z  t          t          z  dt          z
  z  z  t          t          t          k    t          dk              fd          z   	                                k    sJ t          t          t          t          t          t
                    z   z  t
          t          t          f          t          t          z  t           t          z   dz   z  t          t          t          z  t          t          z
  z  t          z  t          t          z  t          t          z
  z  z  t          t          t          k    t          t          k              fd          z   	                                k    sJ d S r4   r   r   r   r   r   r   r   r   r   expandr&   r   r   r     test_deltaproduct_mul_x_add_y_kdr:      sr   aR1XXAq	**qsQh	1Q3(
2a88/ sAgqsmBq!HH4/589!axz"Q((7J/K K K K KaR1XXAq	**aR1XX.>>>>>aR1XXAq	**aR1XX.>>>>>aR1XXAq	**aR1XX.>>>>>aR1XXAq	**	
1q9cQU^Aqsa!en,c!q&!q&.A.AB
 
 &((	   
 aR1XXAq	**
A#!a9cQU^Aqsa!en,c!q&!q&.A.AB
 
 

 688	   
 aR1XXAq	**
A#!a!	ycQU^Aqsa!en,c!q&!q&.A.AB 
  
 

 688	     r   c            
      
   t          t          t          dt          t          t
                    z  z   z  t
          ddf          t          t          z  dz  dt          z  t          t          z  dz  z  t          t          d          z  z   dt          z  t          z  t          z  t          z  t          z  t          t          d          z  z   dt          t          z  dz  z  t          z  t          t          d          z  z   k    sJ t          t          t          dt          t          t
                    z  z   z  t
          ddf          t          t          dt          t          d          z  z   z  k    sJ t          t          t          dt          t          t
                    z  z   z  t
          ddf          t          t          dt          t          d          z  z   z  k    sJ t          t          t          dt          t          t
                    z  z   z  t
          ddf          t          t          dt          t          d          z  z   z  k    sJ t          t          t          dt          t          t
                    z  z   z  t
          dt          f          t          t          z  t          z  t          dt          t          z  t          dz
  z  z  t          z  t          t          z  t          t          z
  z  z  t          dt          k    t          t          k              fd          	                                z   k    sJ t          t          t          dt          t          t
                    z  z   z  t
          t          df          t          t          z  t           dz   z  t          dt          t          z  t          t          z
  z  z  t          z  t          t          z  dt          z
  z  z  t          t          t          k    t          dk              fd          z   	                                k    sJ t          t          t          dt          t          t
                    z  z   z  t
          t          t          f          t          t          z  t           t          z   dz   z  t          dt          t          z  t          t          z
  z  z  t          z  t          t          z  t          t          z
  z  z  t          t          t          k    t          t          k              fd          z   	                                k    sJ d S )Nr$   r   r   r5   r%   r8   r   r   r    #test_deltaproduct_mul_x_add_y_twokdr<      s   aQr!QxxZ 1a),,1q	!QqS1HR1XX1 !!Aa	!Bq!HH 41578!A#z!|Bq!HH7L1M M M M MaQr!QxxZ 1a),,1qAqz>0BBBBBaQr!QxxZ 1a),,1qAqz>0BBBBBaQr!QxxZ 1a),,1qAqz>0BBBBBaQr!QxxZ 1a),,	
1q9!q1u~a1A.AFAF0C0CD
 
 &((	   
 aQr!QxxZ 1a),,
A#!a9!q1u~a1A.AFAF0C0CD
 
 

 688	   
 aQr!QxxZ 1a),,
A#!a!	y!q1u~a1A.AFAF0C0CD 
  
 

 688	     r   c                     t          t          t          z   t          t          t          t
                    z   z  t
          ddf          t          t          z   t          z  dz  t          t          z   t          t          z   t          z  dz  z  t          t          d          z  z   t          t          z   t          z  t          t          z   dz  z  t          z  t          t          d          z  z   t          t          z   t          z  dz  t          t          z   z  t          t          d          z  z   k    sJ t          t          t          z   t          t          t          t
                    z   z  t
          ddf          t          t          z   t          t          t          d          z   z  k    sJ t          t          t          z   t          t          t          t
                    z   z  t
          ddf          t          t          z   t          t          t          d          z   z  k    sJ t          t          t          z   t          t          t          t
                    z   z  t
          ddf          t          t          z   t          t          t          d          z   z  k    sJ t          t          t          z   t          t          t          t
                    z   z  t
          dt          f          t          t          z   t          z  t          z  t          t          t          z   t          z  dz  t          t          z   t          z  t          z  z  t          t          z   z  t          t          z   t          z  t          z  z  t          t          z   t          z  t           z  z  t          dk    t          t          k    z  fd          z   k    sJ t          t          t          z   t          t          t          t
                    z   z  t
          t          df          t          t          z   t          z  dz  t          t          z   t          z  t           z  z  t          t          t          z   t          z  t          z  t          t          z   t          z  t           z  z  t          t          z   z  t          t          z   t          z  dz  z  t          t          z   t          z  t           z  z  t          t          k    t          dk    z  fd          z   k    sJ t          t          t          z   t          t          t          t
                    z   z  t
          t          t          f          t          t          z   t          z  t          t          z   t          z  t          z  z  t          t          z   t          z  t           z  z  t          t          t          z   t          z  t          z  t          t          z   t          z  t           z  z  t          t          z   z  t          t          z   t          z  t          z  z  t          t          z   t          z  t           z  z  t          t          k    t          t          k    z  fd          z   k    sJ d S Nr   r   r$   r5   r%   )	r   r   r   r   r   r   r   r   r&   r   r   r    &test_deltaproduct_mul_add_x_y_add_y_kdr@      s|   q1uq2a88|$q!Qi00a!eQYN	
Q!a%Qr!Qxx'5(	
Q	1q51*Qr!Qxx'5( a%QAr!Qxx'5( ( ( ( ( q1uq2a88|$q!Qi00QUQAq\4JJJJJq1uq2a88|$q!Qi00QUQAq\4JJJJJq1uq2a88|$q!Qi00QUQAq\4JJJJJq1uq2a88|$q!Qi00
a%Q1uai2Q	A~-q1u5Aqy7 q5!)r"#%&!VQ$79:CE E 	EE E E E q1uq2a88|$q!Qi00	
Q	A5AqyQB'5(*3q1uai!^	
Q	aRE 6a%6!#$q5!)a6023a%qb0A6B	
aAF5'+) +)5) ) ) ) ) q1uq2a88|$q!Qi00	
Q	AE19q. 1q5!)r!22Yq5!)a!a%qb)	)1q5	1AE193 
1uaiA2
!"aAF 3	56?6A 6A 	AA A A A A Ar   c            	         t          t          t          t          t                    z   t
          t          t          t                    z   z  t          ddf          t          t          d          t          t          t                    t          z   z  t          t          t                    t          z   t
          z  dz  z  t          t          d          t          t          t                    t          z   z  t
          z  t          t          t                    t          z   dz  z  t
          z  z   t          t          d          t          t          t                    t          z   t
          z  dz  z  t          t          t                    t          z   z  z   t          t          t                    t          z   t
          z  dz  z   k    sJ t          t          t          t          t                    z   t
          t          t          t                    z   z  t          ddf          t          t          t          t                    z   t
          t          t          d          z   z  k    sJ t          t          t          t          t                    z   t
          t          t          t                    z   z  t          ddf          t          t          t          t                    z   t
          t          t          d          z   z  k    sJ t          t          t          t          t                    z   t
          t          t          t                    z   z  t          ddf          t          t          t          t                    z   t
          t          t          d          z   z  k    sJ t          t          t          t          t                    z   t
          t          t          t                    z   z  t          dt          f          t          t          t                    t          z   t
          z  t          z  t          t          t          t                    t          z   t
          z  dz  t          t          t                    t          z   t
          z  t          z  z  t          t          t                    t          z   z  t          t          t                    t          z   t
          z  t          z  z  t          t          t                    t          z   t
          z  t           z  z  t          dk    t          t          k    z  fd          z   k    sJ t          t          t          t          t                    z   t
          t          t          t                    z   z  t          t          df          t          t          t                    t          z   t
          z  dz  t          t          t                    t          z   t
          z  t           z  z  t          t          t          t                    t          z   t
          z  t          z  t          t          t                    t          z   t
          z  t           z  z  t          t          t                    t          z   z  t          t          t                    t          z   t
          z  dz  z  t          t          t                    t          z   t
          z  t           z  z  t          t          k    t          dk    z  fd          z   k    sJ t          t          t          t          t                    z   t
          t          t          t                    z   z  t          t          t          f          t          t          t                    t          z   t
          z  t          t          t                    t          z   t
          z  t          z  z  t          t          t                    t          z   t
          z  t           z  z  t          t          t          t                    t          z   t
          z  t          z  t          t          t                    t          z   t
          z  t           z  z  t          t          t                    t          z   z  t          t          t                    t          z   t
          z  t          z  z  t          t          t                    t          z   t
          z  t           z  z  t          t          k    t          t          k    z  fd          z   k    sJ d S r>   )	r   r   r   r   r   r   r   r   r&   r   r   r    'test_deltaproduct_mul_add_x_kd_add_y_kdrB      s   q2a88|a"Q((l+aAY77
1a"Q((Q,"Q((Q,!1A 55
1a"Q((Q,!2a88a<!"33A5	6
1a2a88a<"Q&&1a15	6 Q((Q,	A	   
 q2a88|a"Q((l+aAY77	
R1XXBq!HH%& & & &q2a88|a"Q((l+aAY77	
R1XXBq!HH%& & & &q2a88|a"Q((l+aAY77	
R1XXBq!HH%& & & &q2a88|a"Q((l+aAY77
Q((Q,	A	a88a<
b	!Bq!HHqL!#3a"7	7AqA 

q!HHqL!a

 "$Q((Q,!1aR 8
9;<6!V;	 !" !" 	"" " " "
 q2a88|a"Q((l+aAY77	AqAq1<!!Qxx!|Q.1"5<68Aa88a<
Q	AqAq 0QB7	7Aq
: 
!Qxx!|Q"
#%'1XX\1$4#;
<	
aAF	'9) 9)<) ) ) ) )
 q2a88|a"Q((l+aAY77
1a1a<Q((Q,)A-<.021a1a/?B/<r!Qxx!|Q.2R1XX\
5r4 q!HHqL"$&q!HHqL!#3a"78:<Q((Q,
:r9!VQ')*35 5<5 5 5 5 5 5 5r   c                     t          t          t          ddf          dk    sJ t          t          t          ddf          dt          z  k    sJ t          t          t          z   t          ddf          dt          t          z   z  k    sJ t          t          t          z  t          ddf          dt          z  t          z  k    sJ t          t	          t
          t                    t          ddf          dt	          t
          t                    z  k    sJ t          t          t	          t
          t                    z  t          ddf          dt          z  t	          t
          t                    z  k    sJ t          t          t          z  t	          t
          t                    z  t          ddf          dt          z  t          z  t	          t
          t                    z  k    sJ d S r   )dsr   r   r   r   r   r   r   r   r    test_deltasummation_trivialrE      s_   a!Qq    a!Qqs""""a!eaAY1a!e9,,,,acAq!91Q&&&&bAhhAq	""a1aj0000a1aj1a)$$!Bq!HH4444ac"Q((lQ1I&&!A#a%1a.888888r   c            	         t          ddd          } t          t          | d          | ddf          dk    sJ t          t          t          dz  t          dz            t          t
           t
          f          t          t          t          dz  t          dz            t          t
           t
          f          k    sJ t          t          t          t                    t          dt          k    t          dk              fd          t          t          t          t                    t          t          t                    z  t          ddf          cxk    rOt          t          t          t                    t          t          t                    z  t          ddf          k    sn J t          t          t          t                    t          t
           t
          f          dk    sJ t          t          t          t                    t          dt
          f          t          dt          j        t          k    fd          k    sJ t          t          t          t                    t          ddf          t          dt          dt          k    t          dk              fd          k    sJ t          t          t          t          t                    z  t          t          t                    z  t          t
           t
          f          t          t          t          t                    z  k    sJ t          t          t          t          t                    z  t          t
           t
          f          t          k    sJ t          t          t          t          t                    z  t          t
           t
          f          t          k    sJ t          t          t          ddf          dt          z  k    sJ t          t          t          z   t          t          t                    z  t          t
           t
          f          dt          z  k    sJ d S )	NnT)r   nonzeror   r   r   r$   r5   )r	   rD   r   r   r   r
   r   r   r   r   r   Zeror   )rG   s    r    #test_deltasummation_basic_numericalrJ      s   T4000AbAhhAq	""a'''' bAq!tnnq2#rl++Bq!tQTNNQRL))* * * * bAhhAFAF 3 34i@@
2a88Bq!HHq!Qi(() ) ) )
2a88Bq!HHq!Qi(() ) ) ) ) ) bAhhRC%%****bAhhAr
##y!QVq[1A9'M'MMMMMbAhhAq	""1c!q&!q&))*I667 7 7 7a1ajAq!AsB<00AbAhhJ>>>>a1aj1rc2,''1,,,,a1aj1rc2,''1,,,,a!Qqs""""q1ubAhhRC--1444444r   c            	         t          t          t          t                    t          ddf          t	          dt          dt          k    t          dk              fd          k    sJ t          t          t          t                    t          ddf          t	          dt          t          d          fd          k    sJ t          t          t          t                    t          ddf          t	          dt          t          d          fd          k    sJ t          t          t          t                    t          ddf          t	          dt          t          d          fd          k    sJ t          t          t          t                    t          dt          f          t	          dt          dt          k    t          t          k              fd          k    sJ t          t          t          t                    t          t          df          t	          dt          t          t          k    t          dk              fd          k    sJ t          t          t          t                    t          t          t          f          t	          dt          t          t          k    t          t          k              fd          k    sJ d S Nr   r   r5   r$   )	rD   r   r   r   r   r   r   r   r&   r   r   r    "test_deltasummation_basic_symbolicrM     s   bAhhAq	""1c!q&!q&))*I667 7 7 7bAhhAq	""iBq!HHy&I&IIIIIbAhhAq	""iBq!HHy&I&IIIIIbAhhAq	""iBq!HHy&I&IIIIIbAhhAq	""1c!q&!q&))*I667 7 7 7bAhhAq	""1c!q&!q&))*I667 7 7 7bAhhAq	""1c!q&!q&))*I667 7 7 7 7 7r   c            	      R   t          t          t          t          t                    z  t          ddf          t          t          t          dt          k    t          dk              fd          k    sJ t          t          t          t          t                    z  t          ddf          t          t          t          t          d          fd          k    sJ t          t          t          t          t                    z  t          ddf          t          t          t          t          d          fd          k    sJ t          t          t          t          t                    z  t          ddf          t          t          t          t          d          fd          k    sJ t          t          t          t          t                    z  t          dt          f          t          t          t          dt          k    t          t          k              fd          k    sJ t          t          t          t          t                    z  t          t          df          t          t          t          t          t          k    t          dk              fd          k    sJ t          t          t          t          t                    z  t          t          t          f          t          t          t          t          t          k    t          t          k              fd          k    sJ d S rL   )
rD   r   r   r   r   r   r   r   r   r&   r   r   r    test_deltasummation_mul_x_kdrO     s1   a1aj1a)$$1c!q&!q&))*I667 7 7 7a1aj1a)$$	1bAhh-(K(KKKKKa1aj1a)$$	1bAhh-(K(KKKKKa1aj1a)$$	1bAhh-(K(KKKKKa1aj1a)$$1c!q&!q&))*I667 7 7 7a1aj1a)$$1c!q&!q&))*I667 7 7 7a1aj1a)$$1c!q&!q&))*I667 7 7 7 7 7r   c            	      2   t          t          t          z   t          t          t
                    z  t
          ddf          t          t          t          z   t          dt          k    t          dk              fd          k    sJ t          t          t          z   t          t          t
                    z  t
          ddf          t          t          t          z   t          t          d          fd          k    sJ t          t          t          z   t          t          t
                    z  t
          ddf          t          t          t          z   t          t          d          fd          k    sJ t          t          t          z   t          t          t
                    z  t
          ddf          t          t          t          z   t          t          d          fd          k    sJ t          t          t          z   t          t          t
                    z  t
          dt          f          t          t          t          z   t          dt          k    t          t          k              fd          k    sJ t          t          t          z   t          t          t
                    z  t
          t          df          t          t          t          z   t          t          t          k    t          dk              fd          k    sJ t          t          t          z   t          t          t
                    z  t
          t          t          f          t          t          t          z   t          t          t          k    t          t          k              fd          k    sJ d S rL   rD   r   r   r   r   r   r   r   r   r   r&   r   r   r    "test_deltasummation_mul_add_x_y_kdrR   #  s   q1ubAhhAq	**1q5#a1fa1f--.	::; ; ; ;q1ubAhhAq	**1q5"Q((#Y//0 0 0 0q1ubAhhAq	**1q5"Q((#Y//0 0 0 0q1ubAhhAq	**1q5"Q((#Y//0 0 0 0q1ubAhhAq	**1q5#a1fa1f--.	::; ; ; ;q1ubAhhAq	**1q5#a1fa1f--.	::; ; ; ;q1ubAhhAq	**1q5#a1fa1f--.	::; ; ; ; ; ;r   c                  p
   t          t          t          t                    t          t          t                    z   t          ddf          t          t          dt          dt          k    t          dk              fd          t          dt          dt          k    t          dk              fd          z             k    sJ t          t          t          t                    t          t          t                    z   t          ddf          t          t          dt          t          d          fd          t          dt          t          d          fd          z             k    sJ t          t          t          t                    t          t          t                    z   t          ddf          t          t          dt          t          d          fd          t          dt          t          d          fd          z             k    sJ t          t          t          t                    t          t          t                    z   t          ddf          t          t          dt          t          d          fd          t          dt          t          d          fd          z             k    sJ t          t          t          t                    t          t          t                    z   t          dt          f          t          t          dt          dt          k    t          t          k              fd          t          dt          dt          k    t          t          k              fd          z             k    sJ t          t          t          t                    t          t          t                    z   t          t          df          t          t          dt          t          t          k    t          dk              fd          t          dt          t          t          k    t          dk              fd          z             k    sJ t          t          t          t                    t          t          t                    z   t          t          t          f          t          t          dt          t          t          k    t          t          k              fd          t          dt          t          t          k    t          t          k              fd          z             k    sJ d S rL   )rD   r   r   r   r   r   r   r   r   r&   r-   r   r   r    test_deltasummation_add_kd_kdrT   4  s   bAhhAq!Aq!9--1c!q&!q&))*I661c!q&!q&))*I66	728 28 8 8 8 8 bAhhAq!Aq!9--1bAhh-++1bAhh-++	,2- 2- - - - - bAhhAq!Aq!9--1bAhh-++1bAhh-++	,2- 2- - - - - bAhhAq!Aq!9--1bAhh-++1bAhh-++	,2- 2- - - - - bAhhAq!Aq!9--1c!q&!q&))*I661c!q&!q&))*I66	728 28 8 8 8 8 bAhhAq!Aq!9--1c!q&!q&))*I661c!q&!q&))*I66	728 28 8 8 8 8 bAhhAq!Aq!9--1c!q&!q&))*I661c!q&!q&))*I66	728 28 8 8 8 8 8 8r   c                  &   t          t          t          t          t                    z  t          t
          t                    z   t          ddf          t          t          t          t          dt          k    t          dk              fd          t          dt          dt
          k    t
          dk              fd          z             k    sJ t          t          t          t          t                    z  t          t
          t                    z   t          ddf          t          t          t          t          t          d          fd          t          dt          t
          d          fd          z             k    sJ t          t          t          t          t                    z  t          t
          t                    z   t          ddf          t          t          t          t          t          d          fd          t          dt          t
          d          fd          z             k    sJ t          t          t          t          t                    z  t          t
          t                    z   t          ddf          t          t          t          t          t          d          fd          t          dt          t
          d          fd          z             k    sJ t          t          t          t          t                    z  t          t
          t                    z   t          dt          f          t          t          t          t          dt          k    t          t          k              fd          t          dt          dt
          k    t
          t          k              fd          z             k    sJ t          t          t          t          t                    z  t          t
          t                    z   t          t          df          t          t          t          t          t          t          k    t          dk              fd          t          dt          t          t
          k    t
          dk              fd          z             k    sJ t          t          t          t          t                    z  t          t
          t                    z   t          t          t          f          t          t          t          t          t          t          k    t          t          k              fd          t          dt          t          t
          k    t
          t          k              fd          z             k    sJ d S rL   rD   r   r   r   r   r   r   r   r   r   r&   r-   r   r   r    #test_deltasummation_add_mul_x_kd_kdrW   L  s   a1aj2a88#aAY//>1c!q&!q&))*I661c!q&!q&))*I66	748 48 8 8 8 8 a1aj2a88#aAY//>1bAhh-++1bAhh-++	,4- 4- - - - - a1aj2a88#aAY//>1bAhh-++1bAhh-++	,4- 4- - - - - a1aj2a88#aAY//>1bAhh-++1bAhh-++	,4- 4- - - - - a1aj2a88#aAY//>1c!q&!q&))*I661c!q&!q&))*I66	748 48 8 8 8 8 a1aj2a88#aAY//>1c!q&!q&))*I661c!q&!q&))*I66	748 48 8 8 8 8 a1aj2a88#aAY//>1c!q&!q&))*I661c!q&!q&))*I66	748 48 8 8 8 8 8 8r   c                  l   t          t          t          t          t                    t          t
          t                    z   z  t          ddf          t          t          t          t          dt          k    t          dk              fd          t          t          t          dt
          k    t
          dk              fd          z             k    sJ t          t          t          t          t                    t          t
          t                    z   z  t          ddf          t          t          t          t          t          d          fd          t          t          t          t
          d          fd          z             k    sJ t          t          t          t          t                    t          t
          t                    z   z  t          ddf          t          t          t          t          t          d          fd          t          t          t          t
          d          fd          z             k    sJ t          t          t          t          t                    t          t
          t                    z   z  t          ddf          t          t          t          t          t          d          fd          t          t          t          t
          d          fd          z             k    sJ t          t          t          t          t                    t          t
          t                    z   z  t          dt          f          t          t          t          t          dt          k    t          t          k              fd          t          t          t          dt
          k    t
          t          k              fd          z             k    sJ t          t          t          t          t                    t          t
          t                    z   z  t          t          df          t          t          t          t          t          t          k    t          dk              fd          t          t          t          t          t
          k    t
          dk              fd          z             k    sJ t          t          t          t          t                    t          t
          t                    z   z  t          t          t          f          t          t          t          t          t          t          k    t          t          k              fd          t          t          t          t          t
          k    t
          t          k              fd          z             k    sJ d S rL   rV   r   r   r    #test_deltasummation_mul_x_add_kd_kdrY   d  s   aAqBq!HH$%1ay11^1c!q&!q&))*I661c!q&!q&))*I66	768 68 8 8 8 8 aAqBq!HH$%1ay11^1bAhh-++1bAhh-++	,6- 6- - - - - aAqBq!HH$%1ay11^1bAhh-++1bAhh-++	,6- 6- - - - - aAqBq!HH$%1ay11^1bAhh-++1bAhh-++	,6- 6- - - - - aAqBq!HH$%1ay11^1c!q&!q&))*I661c!q&!q&))*I66	768 68 8 8 8 8 aAqBq!HH$%1ay11^1c!q&!q&))*I661c!q&!q&))*I66	768 68 8 8 8 8 aAqBq!HH$%1ay11^1c!q&!q&))*I661c!q&!q&))*I66	768 68 8 8 8 8 8 8r   c                     t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          ddf          t          t          t          t          z   t          dt          k    t          dk              fd          t          t          t          z   t          dt          k    t          dk              fd          z             k    sJ t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          ddf          t          t          t          t          z   t          t          d          fd          t          t          t          z   t          t          d          fd          z             k    sJ t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          ddf          t          t          t          t          z   t          t          d          fd          t          t          t          z   t          t          d          fd          z             k    sJ t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          ddf          t          t          t          t          z   t          t          d          fd          t          t          t          z   t          t          d          fd          z             k    sJ t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          dt          f          t          t          t          t          z   t          dt          k    t          t          k              fd          t          t          t          z   t          dt          k    t          t          k              fd          z             k    sJ t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          t          df          t          t          t          t          z   t          t          t          k    t          dk              fd          t          t          t          z   t          t          t          k    t          dk              fd          z             k    sJ t          t          t          z   t          t          t
                    t          t          t
                    z   z  t
          t          t          f          t          t          t          t          z   t          t          t          k    t          t          k              fd          t          t          t          z   t          t          t          k    t          t          k              fd          z             k    sJ d S rL   )rD   r   r   r   r   r   r   r   r   r   r   r&   r-   r   r   r    )test_deltasummation_mul_add_x_y_add_kd_kdr[   |  sf   q1ur!Qxx"Q((*+aAY77>1q5#a1fa1f--.	::1q5#a1fa1f--.	::	;<< << < < < < q1ur!Qxx"Q((*+aAY77>1q5"Q((#Y//1q5"Q((#Y//	0<1 <1 1 1 1 1 q1ur!Qxx"Q((*+aAY77>1q5"Q((#Y//1q5"Q((#Y//	0<1 <1 1 1 1 1 q1ur!Qxx"Q((*+aAY77>1q5"Q((#Y//1q5"Q((#Y//	0<1 <1 1 1 1 1 q1ur!Qxx"Q((*+aAY77>1q5#a1fa1f--.	::1q5#a1fa1f--.	::	;<< << < < < < q1ur!Qxx"Q((*+aAY77>1q5#a1fa1f--.	::1q5#a1fa1f--.	::	;<< << < < < < q1ur!Qxx"Q((*+aAY77>1q5#a1fa1f--.	::1q5#a1fa1f--.	::	;<< << < < < < < <r   c            	      	   t          t          t          z  t          t          t          t
                    z  z   t
          ddf          t          dt          z  t          z  t          z   t          dt          k    t          dk              fdt          z  t          z  df          k    sJ t          t          t          z  t          t          t          t
                    z  z   t
          ddf          t          t          t          z  t          z   t          t          d          ft          t          z  df          k    sJ t          t          t          z  t          t          t          t
                    z  z   t
          ddf          t          t          t          z  t          z   t          t          d          ft          t          z  df          k    sJ t          t          t          z  t          t          t          t
                    z  z   t
          ddf          t          t          t          z  t          z   t          t          d          ft          t          z  df          k    sJ t          t          t          z  t          t          t          t
                    z  z   t
          dt          f          t          t          t          z  t          z  t          z   t          dt          k    t          t          k              ft          t          z  t          z  df          k    sJ t          t          t          z  t          t          t          t
                    z  z   t
          t          df          t          dt          z
  t          z  t          z  t          z   t          t          t          k    t          dk              fdt          z
  t          z  t          z  df          k    sJ t          t          t          z  t          t          t          t
                    z  z   t
          t          t          f          t          t          t          z
  dz   t          z  t          z  t          z   t          t          t          k    t          t          k              ft          t          z
  dz   t          z  t          z  df          k    sJ d S Nr   r   Tr$   r%   rQ   r   r   r    (test_deltasummation_add_mul_x_y_mul_x_kdr^     sQ   acAbAhhJAq	**1Q3q519c!q&!q&112QqSUDMBBC C C CacAbAhhJAq	**1Q37Bq!HH%!T{334 4 4 4acAbAhhJAq	**1Q37Bq!HH%!T{334 4 4 4acAbAhhJAq	**1Q37Bq!HH%!T{334 4 4 4acAbAhhJAq	**1Q3q519c!q&!q&112QqSUDMBBC C C CacAbAhhJAq	**AE19Q;?CQQ$7$78AE19Q;:MNNO O O OacAbAhhJAq	**i
a%!)Qq1	c!q&!q&112a!eai]1_d4K/M /M M M M M M Mr   c            	      	   t          t          t          t          t          t
                    z   z  t
          ddf          t          dt          z  t          z  t          z   t          dt          k    t          dk              fdt          z  t          z  df          k    sJ t          t          t          t          t          t
                    z   z  t
          ddf          t          t          t          z  t          z   t          t          d          ft          t          z  df          k    sJ t          t          t          t          t          t
                    z   z  t
          ddf          t          t          t          z  t          z   t          t          d          ft          t          z  df          k    sJ t          t          t          t          t          t
                    z   z  t
          ddf          t          t          t          z  t          z   t          t          d          ft          t          z  df          k    sJ t          t          t          t          t          t
                    z   z  t
          dt          f          t          t          t          z  t          z  t          z   t          dt          k    t          t          k              ft          t          z  t          z  df          k    sJ t          t          t          t          t          t
                    z   z  t
          t          df          t          dt          z
  t          z  t          z  t          z   t          t          t          k    t          dk              fdt          z
  t          z  t          z  df          k    sJ t          t          t          t          t          t
                    z   z  t
          t          t          f          t          t          t          z
  dz   t          z  t          z  t          z   t          t          t          k    t          t          k              ft          t          z
  dz   t          z  t          z  df          k    sJ d S r]   rQ   r   r   r    "test_deltasummation_mul_x_add_y_kdr`     s5   aR1XXAq	**1Q3q519c!q&!q&112QqSUDMBBC C C CaR1XXAq	**1Q37Bq!HH%!T{334 4 4 4aR1XXAq	**1Q37Bq!HH%!T{334 4 4 4aR1XXAq	**1Q37Bq!HH%!T{334 4 4 4aR1XXAq	**1Q3q519c!q&!q&112QqSUDMBBC C C CaR1XXAq	**AE19Q;?CQQ$7$78AE19Q;:MNNO O O OaR1XXAq	**i
a%!)Qq1	c!q&!q&112a!eai]1_d4K/M /M M M M M M Mr   c            	      l	   t          t          t          dt          t          t
                    z  z   z  t
          ddf          t          dt          z  t          z  dt          z  z   t          dt          k    t          dk              fdt          z  t          z  df          k    sJ t          t          t          dt          t          t
                    z  z   z  t
          ddf          t          t          t          z  dt          z  z   t          t          d          ft          t          z  df          k    sJ t          t          t          dt          t          t
                    z  z   z  t
          ddf          t          t          t          z  dt          z  z   t          t          d          ft          t          z  df          k    sJ t          t          t          dt          t          t
                    z  z   z  t
          ddf          t          t          t          z  dt          z  z   t          t          d          ft          t          z  df          k    sJ t          t          t          dt          t          t
                    z  z   z  t
          dt          f          t          t          t          z  t          z  dt          z  z   t          dt          k    t          t          k              ft          t          z  t          z  df          k    sJ t          t          t          dt          t          t
                    z  z   z  t
          t          df          t          dt          z
  t          z  t          z  dt          z  z   t          t          t          k    t          dk              fdt          z
  t          z  t          z  df          k    sJ t          t          t          dt          t          t
                    z  z   z  t
          t          t          f          t          t          t          z
  dz   t          z  t          z  dt          z  z   t          t          t          k    t          t          k              ft          t          z
  dz   t          z  t          z  df          k    sJ d S )Nr$   r   r   Tr%   rQ   r   r   r    %test_deltasummation_mul_x_add_y_twokdrb     st   aQr!QxxZ 1a),,1Q3q51Q3;AFAF 3 34qs1udmDDE E E EaQr!QxxZ 1a),,1Q319bAhh'!A#t556 6 6 6aQr!QxxZ 1a),,1Q319bAhh'!A#t556 6 6 6aQr!QxxZ 1a),,1Q319bAhh'!A#t556 6 6 6aQr!QxxZ 1a),,1Q3q51Q3;AFAF 3 34qs1udmDDE E E EaQr!QxxZ 1a),,	
a%1qs	CQQ//0AE19Q;2E1G 1G G G G GaQr!QxxZ 1a),,	
a%!)Qq1Q3	AFAF 3 34A	1}Q6M1O 1O O O O O O Or   c            	      
   t          t          t          z   t          t          t          t
                    z   z  t
          ddf          t          dt          t          z   z  t          z  t          z   t          z   t          dt          k    t          dk              fdt          t          z   z  t          z  df          k    sJ t          t          t          z   t          t          t          t
                    z   z  t
          ddf          t          t          t          z   t          z  t          z   t          z   t          t          d          ft          t          z   t          z  df          k    sJ t          t          t          z   t          t          t          t
                    z   z  t
          ddf          t          t          t          z   t          z  t          z   t          z   t          t          d          ft          t          z   t          z  df          k    sJ t          t          t          z   t          t          t          t
                    z   z  t
          ddf          t          t          t          z   t          z  t          z   t          z   t          t          d          ft          t          z   t          z  df          k    sJ t          t          t          z   t          t          t          t
                    z   z  t
          dt          f          t          t          t          t          z   z  t          z  t          z   t          z   t          dt          k    t          t          k              ft          t          t          z   z  t          z  df          k    sJ t          t          t          z   t          t          t          t
                    z   z  t
          t          df          t          dt          z
  t          t          z   z  t          z  t          z   t          z   t          t          t          k    t          dk              fdt          z
  t          t          z   z  t          z  df          k    sJ t          t          t          z   t          t          t          t
                    z   z  t
          t          t          f          t          t          t          z
  dz   t          t          z   z  t          z  t          z   t          z   t          t          t          k    t          t          k              ft          t          z
  dz   t          t          z   z  t          z  df          k    sJ d S r]   rQ   r   r   r    (test_deltasummation_mul_add_x_y_add_y_kdrd     s   q1uq2a88|$q!Qi00I	
AE1q1	c!q&!q&112QAYq[$4G5I 5I I I I Iq1uq2a88|$q!Qi00AE19q=1$bAhh/1q5!)T1BCCD D D Dq1uq2a88|$q!Qi00AE19q=1$bAhh/1q5!)T1BCCD D D Dq1uq2a88|$q!Qi00AE19q=1$bAhh/1q5!)T1BCCD D D Dq1uq2a88|$q!Qi00I	
AE1q1	c!q&!q&112QAYq[$4G5I 5I I I I Iq1uq2a88|$q!Qi00I
a%!a%	Q		"CQQ$7$78
a%!a%	D!5# 5# # # # # q1uq2a88|$q!Qi00I
a%!)a!e	Q		"Q	&AFAF(;(;<
a%!)a!e	Q	%5' 5' ' ' ' ' ' 'r   c                     t          t          t          t          t                    z   t
          t          t          t                    z   z  t          ddf          t          t          t          t          t                    t          z   t          dt          k    t          dk              fd          dt          t          t                    t          z   z  t
          z  z             k    sJ t          t          t          t          t                    z   t
          t          t          t                    z   z  t          ddf          t          t          t          t          t                    t          z   t          t          d          fd          t          t          t                    t          z   t
          z  z             k    sJ t          t          t          t          t                    z   t
          t          t          t                    z   z  t          ddf          t          t          t          t          t                    t          z   t          t          d          fd          t          t          t                    t          z   t
          z  z             k    sJ t          t          t          t          t                    z   t
          t          t          t                    z   z  t          ddf          t          t          t          t          t                    t          z   t          t          d          fd          t          t          t                    t          z   t
          z  z             k    sJ t          t          t          t          t                    z   t
          t          t          t                    z   z  t          dt          f          t          t          t          t          t                    t          z   t          dt          k    t          t          k              fd          t          t          t          t                    t          z   z  t
          z  z             k    sJ t          t          t          t          t                    z   t
          t          t          t                    z   z  t          t          df          t          t          t          t          t                    t          z   t          t          t          k    t          dk              fd          dt          z
  t          t          t                    t          z   z  t
          z  z             k    sJ t          t          t          t          t                    z   t
          t          t          t                    z   z  t          t          t          f          t          t          t          t          t                    t          z   t          t          t          k    t          t          k              fd          t          t          z
  dz   t          t          t                    t          z   z  t
          z  z             k    sJ d S )Nr   r   r5   r$   r%   )rD   r   r   r   r   r   r   r   r   r   r   r&   r   r   r    )test_deltasummation_mul_add_x_kd_add_y_kdrf     sI   q2a88|a"Q((l+aAY77>2a88a<Q!VQ!V!4!45yAA	2a88a<	< <     q2a88|a"Q((l+aAY77>2a88a<Aq*I66	AqAq	< <     q2a88|a"Q((l+aAY77>2a88a<Aq*I66	AqAq	< <     q2a88|a"Q((l+aAY77>2a88a<Aq*I66	AqAq	< <     q2a88|a"Q((l+aAY77>2a88a<Q!VQ!V!4!45yAA	2a88a<	< <     q2a88|a"Q((l+aAY77>2a88a<Q!VQ!V!4!45yAA	
QAqAq 	!<" <" " " " " q2a88|a"Q((l+aAY77>2a88a<Q!VQ!V!4!45yAA	
QR1XX\"1$	%<& <& & & & & & &r   c                  2    t          t          d            d S )Nc                      t          t          t          t                    t          t          t
                    z   t                    S )N)r   r   r   r   r   r&   r   r   r    <lambda>z$test_extract_delta.<locals>.<lambda>  s%    ~bAhhAq.A1EE r   )r   
ValueErrorr   r   r    test_extract_deltark     s    
:EEFFFFFr   N)8sympy.concreter   sympy.concrete.deltar   r   r   rD   r   
sympy.corer   r   r	   r
   sympy.functionsr   r   r   r   sympy.logicr   sympy.testing.pytestr   r   r   r   r&   r-   r   r   r!   r'   r)   r+   r.   r0   r2   r6   r:   r<   r@   rB   rE   rJ   rM   rO   rR   rT   rW   rY   r[   r^   r`   rb   rd   rf   rk   r   r   r    <module>rr      s         Y Y Y Y Y Y Y Y Y Y ) ) ) ) ) ) ) ) ) ) ) ) K K K K K K K K K K       ' ' ' ' ' 'T$???1aAwu%(((1< < <G G GK K K
1 
1 
1P P P 0 0 0"6 6 6,
 
 
.  .  .A A A,5 5 5:9 9 95 5 5.7 7 77 7 7; ; ;"8 8 808 8 808 8 80< < <0M M M"M M M"O O O"' ' '&& & &0G G G G Gr   