Subversion Repositories wimsdev

Rev

Blame | Last modification | View Log | RSS feed

!set methtit2=Óò»±äºÅ´úÊýʽ³Ë²»µÈʽ
!set methtit=ÓôúÊýʽ³Ë²»µÈʽ
!set methenv=ZZ QQ RR
!set methparmtype=function,parm inequality >,choice,parm inequality >
!set methparmrelax=4
!set methhelp=´Ë·½·¨°Ñ²»µÈʽ \(A > B) ±ä»»³É\
 \(A*f > B*f) (»ò \(A*f < B*f)), ÕâÀï \(f) ÊÇÓк㶨·ûºÅµÄ´úÊýʽ.\
 ´Ë·½·¨ÔÊÐí \(f) ÓÐÁãµã. Ϊ´Ë, Ô­²»µÈʽÓëв»µÈʽ²»Ò»¶¨µÈ¼Û,\
Òò´ËÖ»±»ÓÃÓÚ¼ÙÉèÌõ¼þ.

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

!exit
:form
 °Ñ²»µÈʽ
 !read deduc/methparm.phtml 2
 ³ËÒÔ´úÊýʽ
 !read deduc/methparm.phtml 1,10
 , Õâ¸öʽ×Ó
 !formselect methparm3 list 0,-1,1 prompt \
    $ch_choose, È¡¸ºÖµ»òÁãÖµ, È¡ÕýÖµ»òÁãÖµ
 ÒòΪ
 !set ch_optional=ÕâÊÇÒ»¸öÊý
 !read deduc/methparm.phtml 4
!exit
:check
 !bound methparm3 within -1,0,1 default 0
 !if $methparm3=0
  error=empty_data
  !exit
 !endif
 !distribute items $methparmobj2 into data,left,sign,right
 !read deduc/sub/checkineq ($methparm1),=,0
 ztest=$out
 !if $ztest=true
  zr=zero
  sign2=>=
  !goto OK
 !endif
 !if $ztest=bad
  !if $methparm4<1
   :bad
   sens=!item ($methparm3+3)/2 of ¸ºµÄ, ÕýµÄ
   error=ÎÒ¿´²»³öΪʲô \($methparm1) ÊÇ$sens.
   !exit
  !endif
  !distribute items $methparmobj4 into data,left2,sign2,right2
  gt=>
  lt=<
  eq=$(empty)=
  !if ($methparm3>0 and $lt isin $sign2) or \
    ($methparm3<0 and $gt isin $sign2)
   !exchange left2,right2
  !endif
  sens=!item ($methparm3+3)/2 of <,>
  !read deduc/sub/checkineq ($methparm1) - ($left2) + ($right2),$sens=,0\
    ($methparm1) - ($left2) + ($right2),=,0
  !distribute line $out into sn,zr
  !if $sn!=true
   !goto bad
  !endif
 !else
  !if ($methparm1)*$methparm3<0
   error=·ûºÅ´í!
   !exit
  !endif
 !endif
 :OK
 methexp=°Ñ \($left $sign $right) ³ËÒÔ \($methparm1)

 !read deduc/sub/simplify ($left) * ($methparm1)\
    ($right) * ($methparm1)
 !distribute lines $out into newleft,newright
 !if $newleft=$empty or $newright=$empty
  error=bad_data
  !exit
 !endif
 !if $methparm3<0
  newsign=!translate internal <> to >< in $sign
 !else
  newsign=$sign
 !endif
 newobject2=$newleft $newsign $newright
 !if $eq notin $sign and $zr=true and $eq isin $sign2
  newsign=$newsign=
  newobject0=$newobject2
  oldobject=0
 !else
  oldobject=2
 !endif

 badsign=!translate internal <> to >< in $newsign
 resultlist=$newobject2,\
    $newright $newsign $newleft,\
    $newleft $badsign $newright
!exit