v : VAR nat
maxdepth : VAR nat
expr : VAR RealExpr
box : VAR ProperBox
dirvar : VAR DirVar
dirvars : VAR DirVarStack
M,M1,M2 : VAR IntervalMinMax
out : VAR Output
precision : VAR posreal
prune,ge : VAR ExitPred
le : VAR LocalExitPred
select : VAR DirVarSelector
acc : VAR IntervalMinMax
evaluate(box,expr) : IntervalMinMax = LET X = Eval(expr,box),
Lb = Lbbox(box),
Ub = Ubbox(box),
P1 = Eval(expr,Lb),
P2 = Eval(expr,Ub),
(lb_max,lb_box) = IF ub(P1) < ub(P2) THEN (ub(P1),Lb) ELSE (ub(P2),Ub) ENDIF,
(ub_min,ub_box) = IF lb(P1) > lb(P2) THEN (lb(P1),Lb) ELSE (lb(P2),Ub) ENDIFIN
(# mm := X,
lb_max := lb_max,
lb_box := lb_box,
ub_min := ub_min,
ub_box := ub_box
#)
branch(v,expr) : [RealExpr,RealExpr] = (expr,expr)
denorm(dirvar,M) : IntervalMinMax = M
combine(v,M1,M2) : IntervalMinMax = LET M_lb = IF M1`lb_max < M2`lb_max THEN M1 ELSE M2 ENDIF,
M_ub = IF M1`ub_min > M2`ub_min THEN M1 ELSE M2 ENDIFIN
(# mm := Safe2(Union)(mm(M1),mm(M2)),
lb_max := M_lb`lb_max,
lb_box := M_lb`lb_box,
ub_min := M_ub`ub_min,
ub_box := M_ub`ub_box #)
maxdir_maxvar(dirvars,acc,box,expr) : DirVar = LET (dir,v) = mindir_maxvar(dirvars,acc,box,expr) IN
(NOT dir,v)
altdir_maxvar(dirvars,acc,box,expr) : DirVar = LET (dir,v) = mindir_maxvar_aux(FALSE)(dirvars,acc,box,expr) IN
(even?(length(dirvars)),v)
dir_maxvar(dir)(dirvars,acc,box,expr) : DirVar = LET v = mindir_maxvar_aux(FALSE)(dirvars,acc,box,expr)`2IN
(dir,v)
max_rec(n:posnat,m:real,v:below(n),
i:subrange(1,n),b:Box | n = length(b)+i) : RECURSIVE below(n) = IF null?(b) THEN v ELSELET mm = size(car(b)) IN IF mm > m THEN max_rec(n,mm,i,i+1,cdr(b)) ELSE max_rec(n,m,v,i+1,cdr(b)) ENDIF ENDIF MEASURE b BY <<
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 und die Messung sind noch experimentell.