!set methtit=Intégration par parties
!set methenv=ZZ QQ RR
!set methparmtype=parm function integrate, function, function
!set methhelp=Cette méthode applique l'intégration par parties.

!if $wims_read_parm iswordof form check
 !goto $wims_read_parm
!endif

!exit
:form
 Appliquer l'intégration par parties sur
 !read deduc/methparm.phtml 1
$ :
  <div class="wimscenter">
 	\(integrate(u*v'dx) = u*v - integrate(u'*v dx))
 </div>
 <table border=0>
 <tr><td align=right> où \(u = ) <td>
 !read deduc/methparm.phtml 2,30
 <tr><td align=right> et \(v = ) <td>
 !read deduc/methparm.phtml 3,30
 </table>

!exit
:check
 ker=!item 2 of $methparmobj1
 ker=!mathsubst integrate= in $ker
 ker=!trim $ker
 ker=!declosing $ker
 !distribute items $ker into iker,ivar
 vartest=!varlist $ivar
 !if $ivar != $vartest
  error=Fail
  !exit
 !endif

 mout=!exec maxima diff($methparm3,$ivar);\
	diff($methparm2,$ivar);
 !distribute lines $mout into vprime,uprime
 !if diff isvarof $vprime,$uprime or $vprime=$empty or $uprime=$empty
  :bad_data
  error=bad_data
  !exit
 !endif
 !read deduc/sub/checkzero ($iker)-($methparm2)*($vprime)\
	($uprime)*($methparm3)
 !distribute lines $out into ztest1,ztest2
 !if $ztest1=$empty or $ztest2=$empty
  !goto bad_data
 !endif
 !if $ztest1!=yes
  error=Mauvaise fonction : \(uv') $m_neq \($iker) !
  !advance penalty
  !exit
 !endif  
 !read deduc/sub/simplify ($methparm2)*($methparm3)\
	($uprime)*($methparm3)
 !distribute lines $out into uv,uprimev
 !if $ztest2=yes
  !if strictintegrate isin $m_options
   error=Vous n'avez pas le droit de prendre une constante pour \(u).\
	Changez votre méthode s'il vous plait.
   !exit
  !else
   newobject1=($uv)
  !endif
 !else
  newobject1=($uv - integrate($uprimev,$ivar))
 !endif
 oldobject=1
 methexp=\(u=$methparm2), \(v=$methparm3)
 
!exit

