ppow(pl,n): RECURSIVE Polylist = IF n = 0 THEN pconst(1) ELSIF n = 1 THEN pl ELSE pprod(pl,ppow(pl,n-1)) ENDIF MEASURE n
;^(pl,n) : MACRO Polylist = ppow(pl,n)
pdiv(pl,rnz): Polylist = (1/rnz)*pl
;/(pl,rnz): MACRO Polylist = pdiv(pl,rnz)
psq(pl): Polylist = pprod(pl,pl)
deg_rec(pl): RECURSIVE
{degans:[# allzero: bool,maxnon:below(length(pl)) #] | LET (dz,dmax)=(degans`allzero,degans`maxnon),
len =length(pl) IN
(dz IFF (FORALL (j:below(len)): nth(pl,j)=0)) AND
(dz ORFORALL (j:below(len)): j>dmax IMPLIES nth(pl,j)=0) AND
(dz OR nth(pl,dmax)/=0)} = IF null?(cdr(pl)) AND car(pl)=0 THEN (# allzero:=TRUE,maxnon:=0 #) ELSIF null?(cdr(pl)) THEN (# allzero:=FALSE,maxnon:=0 #) ELSE LET upans = deg_rec(cdr(pl)),
upvalid=(NOT upans`allzero) INIF upvalid THEN (# allzero:=FALSE,maxnon:=1+upans`maxnon #) ELSIF car(pl)=0 THEN (# allzero:=TRUE,maxnon:=0 #) ELSE (# allzero:=FALSE,maxnon:=0 #) ENDIF ENDIFMEASURE length(pl)
deg(pl): {d:below(length(pl)) |
(d>0 IFFEXISTS (j:below(length(pl))): j>0 AND nth(pl,j)/=0) AND
(d>0 IMPLIES (FORALL (j:below(length(pl))): j>d IMPLIES nth(pl,j)=0)) AND
(d>0 IMPLIES nth(pl,d)/=0)} = LET drec = deg_rec(pl) IN IF drec`allzero THEN 0 ELSE drec`maxnon ENDIF
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.