
    g!&hk                     @   d Z ddl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 dd	lmZ dd
lmZmZmZmZ ddlmZ ddlmZmZ ddlmZ ddlmZmZm Z  ddl!m"Z" ddl#m$Z$  ed      Z% ed      Z& ed      Z' ed      Z( ed      \  Z)Z*Z+  ed      e&e'      Z,  ed      e,e(      Z- ed      Z. ed      Z/ ed      Z0 ed      Z1ejd                  jg                  de.ge&gfe/ge&gfe0ge&gfe1ge&gfe&ge&gfe'ge&gfe&e'z   ge&gfe&e'z  ge&gfe&dz  ge&gfe&e'z  ge&gf ee&      ge&gf ee&      ge&gf e e&      ge&gfe.e/e&e'e&e'z  e&e'z   ge&e'gfe&e'z   ee&e'z        z    ee'      z
  e&e'z   ee'      z
  z  ge&e'gfe% e e'e(z        z  e& e e'e(z        z
  z  e%e&z   e e'e(z        z  e& e e'e(z        z
  z  ge%e&e'e(gfe)dz  e*z   e*dz  e+z   e+dz  e)z   ge)e*e+gfe- e
e-e&      z   e,z   de&z  z   ge&gfg      d        Z4d Z5d Z6d Z7d  Z8d! Z9d" Z:d# Z;d$ Z<y)%z5Tests for the ``sympy.simplify._cse_diff.py`` module.    N)Symbolsymbols)Integer)Function)
Derivative)exp)ImmutableDenseMatrix)dynamicsymbols)_forward_jacobian_remove_cse_from_derivative_forward_jacobian_cse!_forward_jacobian_norm_in_cse_out)simplify)Matrixeye)raises)cossintan)trigsimp)csewxyzzq1 q2 q3kf      z	expr, wrtc                     t        | g      j                  } t        |g      j                  }t        | |      }t        j                  |j                   }t        || j                  |      z
        |k(  sJ y N)r	   Tr   zerosshaper   jacobian)exprwrtr&   r$   s       x/var/www/pru.catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/sympy/simplify/tests/test_cse_diff.pytest_forward_jacobianr*   +   si    4  '))D
u
%
'
'C s+H &&7EHt}}S112e;;;    c                  ,   t        d      \  } }}t        d      }t        d      }t         | || |      |      t         | || |      |      |       z    || |      z   d| z  z   g      }t	        |      \  }}t        ||      \  }}	t        d      }
t        d      }|
 || |      f| ||
|      fgt        d| z  |
z   |z   t         | || |      |      |       z   g      gf}||d   k(  sJ d|d    d	|        |	|d
   k(  sJ d|d
    d	|	        y )Nx y zr   r   r   x0x1r   z	Expected z
, but got r   )r   r   r   r   r   r   )r   r   r   r   r   r'   replreducedp_repl	p_reducedr.   r/   expected_outputs                r)   test_process_cser5   L   sL   gGAq!AA1QqVQ<*Qq1vq\1"==!AF1LMNDIMD'3D'BFI	B	B a1gQr1X'	Qb:a!QmQ#??@	ABO
 _Q''[9_Q5G4H
SYRZ)[['**ai8J7K:V_U`,aa*r+   c                     t        d      \  } }}t        | |z  ||z  z   | |z  |z  z   | dz  |dz  z   |dz  z   | |z  | |z  z   ||z  z   g      }t        | ||g      }t        |      \  }}t        |||      \  }}}	t	        |d   t        |d               sJ d       t        ||      \  }
}}t	        |d   t        |d               sJ d       t        ||      }t	        |t        |            sJ d       y )Nr-   r   r   z9Jacobian should be a Matrix of the same type as the input)r   r	   r   r   
isinstancetyper   r   )r   r   r   r'   r(   replacementsreduced_exprreplacements_corejacobian_coreprecomputed_fs_corereplacements_normjacobian_normprecomputed_fs_normr&   s                 r)   test_io_matrix_typerA   `   s5   gGAq!	AAA	!	Qa!q& 	AAA! D
 1ay
)C!$TL, =RR^`lnq<r9}&9mA&\!_(=>{@{{> =^c=9}&9mA&\!_(=>{@{{> !s+HhT
+h-hh+r+   c                     t        d      \  } }}t        | |z  ||z  z   | |z  |z  z   | dz  |dz  z   |dz  z   | |z  | |z  z   ||z  z   g      }t        | ||g      }t        |      \  }}t        |||      \  }}}	t	        |t        |            sJ d       t	        |t        |            sJ d       t	        |	t              sJ d       t        |      t        |      k(  sJ d       t        |      dk(  sJ d       t        |	      t        |      k(  sJ d	       t        ||      \  }
}}t	        |
t        |            sJ d       t	        |t        |            sJ d       t	        |t              sJ d       t        |
      t        |      k(  sJ d       t        |      dk(  sJ d       t        |      t        |      k(  sJ d	       y )
Nr-   r   zReplacements should be a listzJacobian should be a listz)Precomputed free symbols should be a listz%Length of replacements does not matchr   z Jacobian should have one elementz1Length of precomputed free symbols does not match)	r   r   r   r   r7   r8   listlenr   )r   r   r   r'   r(   r9   r:   r;   r<   r=   r>   r?   r@   s                r)   "test_forward_jacobian_input_outputrE   y   s   gGAq!	AAA	!	Qa!q& 	AAA D
 !Q
C!$TL, =RR^`lnq<r9}&9'l);<]>]]<mT,%78U:UU8)40]2]]0 !S%66_8__6}"F$FF""#s<'88m:mm8 =^^bdg<h9}&9'l);<]>]]<mT,%78U:UU8)40]2]]0 !S%66_8__6}"F$FF""#s<'88m:mm8r+   c                     t        ddt        dz  t        z  dt        dz  z  t        t        z  z   g      } t        t        g}t        | |      t        dt        z  t        z  t        dz  gt        dt        z  t        z   gg      k(  sJ t        ddt        t        dz  t        dz  z  g      } t        | |      t        ddgdt        z  t        dz  z  t        dz  dz  t        dz  z  gg      k(  sJ y )Nr   r         r   )r   r   r   r   )Lsymss     r)   test_jacobian_hessianrK      s    q!ad1fa1fqsl+,Aq6DQ%!A#a%AAaC!G0M)NNNNq!aAad^$AQ%!Q!A#ad(AqDF1a4K9P0Q)RRRRr+   c                     t        d      \  } }t        | t        |      z  | t        |      z  g      }t        | |g      }t	        ||      }||j                  |j                        k(  sJ ||j                  j                  |      k(  sJ ||j                  j                  |j                        k(  sJ |j                  t        |j                  d         z  |z  }|j                  t              }|t        ddgd| dz  gg      k(  sJ y )Nrho,phir   r   r   )r   r   r   r   r   r&   r#   r   r%   	applyfuncr   )rhophiXYJgs         r)   test_jacobian_metricsrU      s    y!HCc#hc#h/0ASzA!QA

133q!!!!qss####	c!''!*o!A	HAAC1H.////r+   c                  2   t        d      \  } }t        | t        |      z  | t        |      z  | dz  g      }t        | |g      }t        t        |      |  t        |      z  gt        |      | t        |      z  gd| z  dgg      }t	        ||      |k(  sJ y )NrM   r   r   )r   r   r   r   r   )rO   rP   rQ   rR   rS   s        r)   test_jacobian2rW      s    y!HCc#hc#hq9:ASzA	SC4#c(?#	S3S>"	
S! 	A
 Q"a'''r+   c                     t        t        t        t        z   t        z         t        t        t        z   t        z         t        t        t        z   t        z         g      } t        t        t        t        g      }t        dd      D ]u  }t        dd      D ]d  }| d |d d f   }|d |d d f   }t        ||      }|j                  |k(  sJ |j                  |k(  sJ t        |      D ]  }|d d |f   |k(  rJ  f w y )Nr   rH   )	r   r   r   r   r   ranger   rowscols)rQ   rR   ijX_sliceY_slicerS   r   s           r)   test_issue_4564r`      s    AEAIAEAIAEAI?@A1ayA1a[ *q! 	*AAhGAhG!'73A66Q;;66Q;;1X *Aw')))*	**r+   c                      t        t        t        t        z   t        z         t        t        t        z   t        z         gt        t        t        z   t        z         t        t        t        z   t        z         gg       t        t         fd        dd d f    t        t        t        gt        t        gg      t        t         fd       t        t         fd       y )Nc                  L    t         t        t        t        t        g            S r"   r   r   r   r   r   rQ   s   r)   <lambda>z(test_nonvectorJacobian.<locals>.<lambda>   s    /61a)3DE r+   r   c                      t               S r"   )r   rQ   rR   s   r)   re   z(test_nonvectorJacobian.<locals>.<lambda>   s    /15 r+   c                  Z    t         t        t        t        gt        t        gg            S r"   rc   rd   s   r)   re   z(test_nonvectorJacobian.<locals>.<lambda>   s!    /6Aq6Aq6:J3KL r+   )r   r   r   r   r   r   	TypeErrorrg   s   @@r)   test_nonvectorJacobianrj      s    QUQYQUQY0QUQYQUQY02 	3A
9EF	!Q$AAA A
956
9LMr+   )=__doc__pytestsympy.core.symbolr   r   sympy.core.numbersr   sympy.core.functionr   
sympy.corer   &sympy.functions.elementary.exponentialr   sympy.matrices.immutabler	   sympy.physics.mechanicsr
   sympy.simplify._cse_diffr   r   r   r   sympy.simplify.simplifyr   sympy.matricesr   r   sympy.testing.pytestr   (sympy.functions.elementary.trigonometricr   r   r   sympy.simplify.trigsimpr   sympyr   r   r   r   r   q1q2q3r   r   zeroonetwoneg_onemarkparametrizer*   r5   rA   rE   rK   rU   rW   r`   rj    r+   r)   <module>r      s   ;  / & ( ! 6 9 2I I - & ' D D ,  3K
3K
3K
3KJ'
B HSM!QHSM!Qqzajaj
"+ 
!


QC
qc

qc

a%1#
A#
Q$!
Q$!
a&A3
a&A3
a&A3
Q1Q3A	&A/aC3qs8c!f$!s1v~
6	7!Q@
C!H*a#ac(l
#QqSQqS\1s1Q3x<%@	AAq!Q<P
a%"*b!ebj"a%"*	-B|<
jA

"QqS
(	)A3/%2<32<b(i2n<S
0	(*Nr+   