
    EdJ+                         d dl mZmZmZmZmZmZmZ d dlm	Z	m
Z
mZmZmZ ddlmZ d Zed             Z ed          Zdd	Zd
 Zd ZdS )    )cacheitDummyNeIntegerRationalSWild)binomialsincos	PiecewiseAbs   )	integratec                 ,    t          | t                    S )N)
isinstancer   )ns    <lib/python3.11/site-packages/sympy/integrals/trigonometry.py_integer_instancer      s    a!!!    c                      t          d g          } fddD             \  }}t          | z            |z  t          | z            |z  z  }||||fS )Na)excludec                 B    g | ]}t          |gt          g           S ))r   
properties)r	   r   ).0sxs     r   
<listcomp>z_pat_sincos.<locals>.<listcomp>   s>        QC->,?@@@   r   nm)r	   r   r   )r   r   r   mpats   `    r   _pat_sincosr#      sw    S1#A     DAq
ac((A+AaC!
#C1a<r   u	piecewisec                    t          |          \  }}}}|                     d          } |                     |          }|dS ||         ||         }}|j        r	|j        r|S |j        r|nt          j        }||         }|j        s|j        rt          }	|j        |j        }}
|
rK|rI|dk     r|dk    rd}d}
n8|dk     r|dk    rd}
d}n'|dk     r|dk     r||k    }
||k     }n||k     }
||k      }|
r+d|	dz  z
  |dz
  dz  z   |	|z  z  }t          ||z            }n+|r)|	|z  d|	dz  z
  |dz
  dz  z  z  }t          ||z            }t          ||	          }|                    |	|          }|dk    r%t          ||z  t          |d          f|df          S ||z  S t          |          t          |          k    }
t          |          t          |          k    }t          j        }|
r|dk    rXt          d|dz  dz             D ]?}|t          j        |z  t#          |dz  |          z  t%          |d|z  z   |          z  z  }@n|dk    rt%          ||          }nt'          d	|dz             t          |          |dz   z  z  t          |          |dz
  z  z  t'          |dz
  |dz             t)          t          |          |dz   z  t          |          |dz
  z  z  |          z  z   }nr|r|dk    rXt          d|dz  dz             D ]?}|t          j        |z  t#          |dz  |          z  t+          |d|z  z   |          z  z  }@n|dk    rt+          ||          }nt'          d|dz             t          |          |dz
  z  z  t          |          |dz   z  z  t'          |dz
  |dz             t)          t          |          |dz
  z  t          |          |dz   z  z  |          z  z   }ng||k    r2t          t          d|z            t          j        z  |z  |          }n/|| k    r'|dk     rt'          d|dz             t          |          |dz
  z  z  t          |          |dz   z  z  t'          |dz
  |dz             t          t          |          |dz
  z  t          |          |dz   z  z  |          z  z   }nt'          d	|dz             t          |          |dz   z  z  t          |          |dz
  z  z  t'          |dz
  |dz             t          t          |          |dz   z  t          |          |dz
  z  z  |          z  z   }|dk    r<t          |                    |||z            |z  t          |d          f|df          S |                    |||z            |z  S )
a  
    Integrate f = Mul(trig) over x.

    Examples
    ========

    >>> from sympy import sin, cos, tan, sec
    >>> from sympy.integrals.trigonometry import trigintegrate
    >>> from sympy.abc import x

    >>> trigintegrate(sin(x)*cos(x), x)
    sin(x)**2/2

    >>> trigintegrate(sin(x)**2, x)
    x/2 - sin(x)*cos(x)/2

    >>> trigintegrate(tan(x)*sec(x), x)
    1/cos(x)

    >>> trigintegrate(sin(x)*tan(x), x)
    -log(sin(x) - 1)/2 + log(sin(x) + 1)/2 - sin(x)

    References
    ==========

    .. [1] http://en.wikibooks.org/wiki/Calculus/Integration_techniques

    See Also
    ========

    sympy.integrals.integrals.Integral.doit
    sympy.integrals.integrals.Integral
    sincosNr   TFr      r%   )r#   rewritematchis_zeror   Zerois_odd_ur   r   r   subsr   r   r   rangeNegativeOner
   _sin_pow_integrater   trigintegrate_cos_pow_integrateHalf)fr   condsr"   r   r   r!   Mzzr$   n_m_ffuufifxresis                     r   r4   r4      s   D q>>LCAq			(A	A Q41qAy QY i	#QVB	!Ax *18 *18B  	!" 	! 1u !Q !Q !1q5 ! a% !AE !Ua%[ !ea%[  	q!t8Aqy))AqD0BQqSBB  	AQTa!eQY//BQqSBr1WWQ^^K 	=b1fbAhh/"d<<<Av" a&&3q66/B
a&&3q66/B
&C	 hF q5 	F1adQh'' 8 8q(8AqD!+<+<<*1qs7A667 88 !V 	F$Q**CC& BA&&Q!a%83q66AE?JAE1q5)) Q!a%Q!a%!@!DDEECC 
 HF q5 3	F 1adQh'' 8 8q(8AqD!+<+<<*1qs7A667 88 !V  	F %Q**CC& Aq1u%%AQ7AQGAE1q5)) Q!a%Q!a%!@!DDEECC
 6 	FS1XXaf_q0!44CCA2g 	F1u F
  1q5))CFFQUO;c!ffq1uoMAq1u-- Q!a%3q66AE?!BAFFGG  AE**SVVa!e_<s1vvANAq1u-- Q!a%Q!a%!@!DDEE  G#((1ac**Q.1a9B:FFF88Aqsar   c                    | dk    rt| dk    rt          |           S t          d|           t          |          z  t          |          | dz
  z  z  t          | dz
  |           t          | dz
  |          z  z   S | dk     r| dk    r t	          dt          |          z  |          S t          d| dz             t          |          z  t          |          | dz   z  z  t          | dz   | dz             t          | dz   |          z  z   S |S )Nr   r   r)   r(   )r   r   r   r3   r4   r   r   s     r   r3   r3      s'   1u C6 	FF7N Q#a&&(3q66AE?:Q""%7Aq%A%AAB 	C 	1u 7 	. !3q661--- AE""SVV+c!ffq1uo=QA&&);AE1)E)EEF 	G r   c                    | dk    rs| dk    rt          |          S t          d|           t          |          z  t          |          | dz
  z  z  t          | dz
  |           t          | dz
  |          z  z   S | dk     r| dk    r t	          dt          |          z  |          S t          d| dz             t          |          z  t          |          | dz   z  z  t          | dz   | dz             t          | dz   |          z  z   S |S )Nr   r   r(   r)   )r   r   r   r5   r4   rD   s     r   r5   r5   (  s#   1u C6 	q66M AQ'#a&&1q5/9Q""%7Aq%A%AAB 	C 	1u 7 	. 3q661--- QU##c!ff,s1vvA>QA&&);AE1)E)EEF 	G
 r   N)r%   )
sympy.corer   r   r   r   r   r   r	   sympy.functionsr
   r   r   r   r   	integralsr   r   r#   r/   r4   r3   r5    r   r   <module>rJ      s    E E E E E E E E E E E E E E E E E E > > > > > > > > > > > > > >            " " " 	  	 U3ZZ[  [  [  [ |* * *Z' ' ' ' 'r   