**TI92P*adv89pRiztransΥ ₯Z {(€,) Func ©*********************************** © Function : Inverse Z-trans. © Version : 1.0.3 © Date : 21.3.98 © Author : Lars Frederiksen © E­mail : ask@post8.tele.dk ©*********************************** Local read Define read(€,,†)=Func Local ‚,ƒ,…,„ 0„ ‚ If mid(€,‚,1)="(" Then Lbl lf2 1… Lbl lf1 ‚+1‚ mid(€,‚,1)ƒ If ƒ"(" and ƒ")" Goto lf1 If ƒ="(" Then …+1… Goto lf1 Else …-1… EndIf If …>0 Goto lf1 EndIf ‚+1‚ For ‚,‚,dim(€) mid(€,‚,1)ƒ If inString(†,ƒ,1)0 Goto rend If ƒ="(" Goto lf2 EndFor Lbl rend mid(€,,‚-) EndFunc Local ƒ,„,†,‰,Š,,‡,‚,θ,ΰ,€a,€bn,€bd,€c,€d,€e Local ,‘,’,,“,”,‚,μ,ς,ςr,ω,η,€€ ©mat\partial2(€,)€ €|r=€r€ €|=r€ string(expand(factor(€/r)))€ dim(€)’ {} 1Š ""ƒ Lbl l1 If Š>’ Goto end read(€,Š,"+-/")‘ dim(‘)+ŠŠ {ƒ&‘,0,"1",0,1}‘ If Š=’ Goto end If mid(€,Š,1)="/" Then Š+1Š read(€,Š,"+-")‘[3] dim(‘[3])+ŠŠ EndIf 1 Lbl ll1 ‘[]ƒ 1‰ "" Lbl ll2 inString(ƒ,"r",‰)‰ If ‰>0 Then read(ƒ,‰,"+-*/)")† dim(†)+‰‚ If dim(ƒ)>‚ Then If mid(ƒ,‚,1)=")" Then ‰-1‰ If ‰>1 Then If mid(ƒ,‰-1,1)="¨" ‰-1‰ EndIf read(ƒ,‰,"+-*/)")† EndIf EndIf If inString(†,"r")=0 Then dim(†)+‰‰ Goto ll2 EndIf If dim()0 Then &"*"&† Else &† EndIf EndIf If dim()>0 Then ƒ‘[] ln(expr()|r=–)‘[+1] EndIf ‘[3]ƒ inString(ƒ,"r")‰ If ‰>0 Then read(ƒ,‰,"+-)")‚ ln(expr(‚)|r=–)‘[5] If mid(ƒ,1,1)="(" Then "1"€d ‰-1€e While mid(ƒ,€e,1)"(" €e-1€e EndWhile Lbl testx If €e‰-1 Then mid(ƒ,€e+1,‰-€e-2)€d EndIf If mid(ƒ,‰+dim(‚),1)")" Then 1‘[5] ‰+dim(read(ƒ,‰,")"))+1† If †0 "("&€d&"*("&mid(ƒ,2,€e-3)&"))"€d ""&‘[1]&"/"&€d‘[1] EndIf EndIf augment(,‘) If Šž’ Goto end ""ƒ If mid(€,Š,1)="-" "­"ƒ Š+1Š Goto l1 Lbl end € Lbl test 0† 1 0“ 0” 0‚ Loop If ždim(€) Goto endp expr(€[])Š expr(€[+2])‰ €[+1]-€[+3] €[+4]ω cZeros(‰,r)ƒ 0€e If ƒ={} Then †+Š/‰*…(n++1)|r=1† Goto next EndIf 1„ 0ΰ 0€a Loop If dim(ƒ)<„ Goto next ƒ[„] imag()ς ω-1θ If string()="0" Then †+Š*…(n-ω+1)† Else Lbl test2 1€€ If €a=0 Then 1€a For η,1,dim(ƒ)-1 €€*(r-#("‚"&char(ord("a")+η)))€€ EndFor If θ>0 Then Ό(Š*r^(abs(int(΅)))/€€^ω,r,θ)/(θ!)€bn getDenom(€bn)€bd getNum(€bn)€bn Else Š*r^(abs(int(΅)))€bn €€^ω€bd EndIf EndIf €bn€€ €bd€d 1€c For η,1,dim(ƒ) If 睄 Then €€|#("‚"&char(ord("a")+€c))=ƒ[η]€€ €d|#("‚"&char(ord("a")+€c))=ƒ[η]€d €c+1€c EndIf EndFor €€|r=€€ €d|r=€d €e+real(€€/€d)€e EndIf „+1„ EndLoop Lbl next ”+€e” +5 EndLoop Lbl endp †+”|΅=n and €r=r” string(”)† inString(†,"real")€ If €>0 Then Loop left(†,€-1)&right(†,dim(†)-€-3)† inString(†,"real",€)€ If €=0 Goto endr EndLoop Lbl endr expr(†)” EndIf inString(†,"abs(")€ If €>0 Then Loop €<3€a If not €a mid(†,€-2,1)"^"€a If €a left(†,€+3)&right(†,dim(†)-€-8)† inString(†,"abs(",€+3)€ If €=0 Goto endf EndLoop Lbl endf expr(†)” EndIf factor(tCollect(tExpand(”))) EndFunc`δεάΠ€