
    \h                     T    S SK Jr  S SKJr  S SKJr  S SKJrJr  SSK	J
r
Jr  S rS rg	)
    )Mul)S)default_sort_key)
DiracDelta	Heaviside   )Integral	integratec           
         / nSnU R                  5       u  pE[        U[        S9nUR                  U5        U H  nUR                  (       ac  [        UR                  [        5      (       aD  UR                  UR                  UR                  UR                  S-
  5      5        UR                  nUc/  [        U[        5      (       a  UR                  U5      (       a  UnM  UR                  U5        M     U(       d  / nU H  n[        U[        5      (       a!  UR                  UR                  SUS95        M9  UR                  (       ad  [        UR                  [        5      (       aE  UR                  UR                  UR                  R                  SUS9UR                  5      5        M  UR                  U5        M     X&:w  a  [        U6 R                  5       nSU4$ SnSU4$ U[        U6 4$ )a  change_mul(node, x)

Rearranges the operands of a product, bringing to front any simple
DiracDelta expression.

Explanation
===========

If no simple DiracDelta expression was found, then all the DiracDelta
expressions are simplified (using DiracDelta.expand(diracdelta=True, wrt=x)).

Return: (dirac, new node)
Where:
  o dirac is either a simple DiracDelta expression or None (if no simple
    expression was found);
  o new node is either a simplified DiracDelta expressions or None (if it
    could not be simplified).

Examples
========

>>> from sympy import DiracDelta, cos
>>> from sympy.integrals.deltafunctions import change_mul
>>> from sympy.abc import x, y
>>> change_mul(x*y*DiracDelta(x)*cos(x), x)
(DiracDelta(x), x*y*cos(x))
>>> change_mul(x*y*DiracDelta(x**2 - 1)*cos(x), x)
(None, x*y*cos(x)*DiracDelta(x - 1)/2 + x*y*cos(x)*DiracDelta(x + 1)/2)
>>> change_mul(x*y*DiracDelta(cos(x))*cos(x), x)
(None, None)

See Also
========

sympy.functions.special.delta_functions.DiracDelta
deltaintegrate
N)keyr   T
diracdeltawrt)args_cncsortedr   extendis_Pow
isinstancebaser   appendfuncexp	is_simpleexpandr   )	nodexnew_argsdiraccncsorted_argsargnnodes	            V/var/www/auris/envauris/lib/python3.13/site-packages/sympy/integrals/deltafunctions.py
change_mulr%      s   N HE MMOEA 01Kr::*SXXz::OOCHHSXXsww{;<((C=jj99cmmA>N>NEOOC   C#z**

d
 BC
388Z @ @Da)PRURYRY Z[$  "N))+E e} Ee}3>""    c                 <   U R                  [        5      (       d  gU R                  [        :X  a  U R                  SUS9nX :X  a  U R	                  U5      (       a  [        U R                  5      S::  d  U R                  S   S:X  a  [        U R                  S   5      $ [        U R                  S   U R                  S   S-
  5      U R                  S   R                  5       R                  5       -  $  g[        X!5      nU$ U R                  (       d  U R                  (       Gaw  U R                  5       nX:w  a&  [        XA5      nUb  [        U[        5      (       d  U$ g[        X5      u  pVU(       d  U(       a  [        Xa5      nU$  gSSKJn  UR                  SUS9nUR                  (       a  [        XQ5      u  pXXh-  nU" UR                  S   U5      S   n	[        UR                  5      S:X  a  SOUR                  S   n
SnU
S:  a  [$        R&                  U
-  UR)                  X5      R+                  X5      -  nUR,                  (       a  U
S-  n
US-  nO'US:X  a  U[        X-
  5      -  $ U[        XS-
  5      -  $ U
S:  a  M  [$        R.                  $ g)aK  
deltaintegrate(f, x)

Explanation
===========

The idea for integration is the following:

- If we are dealing with a DiracDelta expression, i.e. DiracDelta(g(x)),
  we try to simplify it.

  If we could simplify it, then we integrate the resulting expression.
  We already know we can integrate a simplified expression, because only
  simple DiracDelta expressions are involved.

  If we couldn't simplify it, there are two cases:

  1) The expression is a simple expression: we return the integral,
     taking care if we are dealing with a Derivative or with a proper
     DiracDelta.

  2) The expression is not simple (i.e. DiracDelta(cos(x))): we can do
     nothing at all.

- If the node is a multiplication node having a DiracDelta term:

  First we expand it.

  If the expansion did work, then we try to integrate the expansion.

  If not, we try to extract a simple DiracDelta term, then we have two
  cases:

  1) We have a simple DiracDelta term, so we return the integral.

  2) We didn't have a simple term, but we do have an expression with
     simplified DiracDelta terms, so we integrate this expression.

Examples
========

    >>> from sympy.abc import x, y, z
    >>> from sympy.integrals.deltafunctions import deltaintegrate
    >>> from sympy import sin, cos, DiracDelta
    >>> deltaintegrate(x*sin(x)*cos(x)*DiracDelta(x - 1), x)
    sin(1)*cos(1)*Heaviside(x - 1)
    >>> deltaintegrate(y**2*DiracDelta(x - z)*DiracDelta(y - z), y)
    z**2*DiracDelta(x - z)*Heaviside(y - z)

See Also
========

sympy.functions.special.delta_functions.DiracDelta
sympy.integrals.integrals.Integral
NTr   r   r   )solve)hasr   r   r   r   lenargsr   as_polyLCr
   is_Mulr   r   r	   r%   sympy.solversr(   r   NegativeOnediffsubsis_zeroZero)fr   hfhg	deltaterm	rest_multr(   rest_mult_2pointnmrs                r$   deltaintegrater@   Q   sU   p 55 	vvHH!H,6 {{1~~K1$q	Q$QVVAY//&qvvay!&&)a-@q	))+..01 2	 n a 1BI	
QXXXHHJ61B~jX&>&>	R M $.a#3 I"90BI F ? 0%,,!,D	##-7	-E*I ) 5IinnQ/3A6 inn-q0QinnQ6G1fq()=)B)B1)LLAyyQQ6#$Yqy%9#99#$ZA#%6#66 1f vvr&   N)sympy.core.mulr   sympy.core.singletonr   sympy.core.sortingr   sympy.functionsr   r   	integralsr	   r
   r%   r@    r&   r$   <module>rG      s!     " / 1 *F#Rxr&   