{ reps.i rnormalize(var x: hreal); normalize x rst(var x: hreal): longstring; rst:=(string describing x) srset(s: longstring; var x: hreal); x:=(value described by s) rtowinfty(var x: hreal); round away from zero rtowzero(var x: hreal); round towards zero minhreal: hreal; minhreal:=(smallest pos hreal) negminhreal: hreal; negminhreal:=(largest neg hreal) rup(var x: hreal); round up rdown(var x: hreal); round down irdiff(var x1,x2: hreal): integer32; x1-x2 and irdiff have same sign rsum(var x1,x2,x3: hreal); x3:=x1+x2 (may truncate) r_sum(u: boolean; var x1,x2,x3: hreal); x3:=x1+x2 (upper/lower bound) rdiff(var x1,x2,x3: hreal); x3:=x1-x2 (may truncate) r_diff(u: boolean; var x1,x2,x3: hreal); x3:=x1-x2 (upper/lower bound) irset(i: integer; var x: hreal); x:=i irmult(i: integer; var x: hreal); x:=x*i (may truncate) ir_mult(u: boolean; i: integer; var x: hreal); x:=x*i (upper/lower bound) rprod(var x1,x2,x3: hreal); x3:=x1*x2 (may truncate) r_prod(u: boolean; var x1,x2,x3: hreal); x3:=x1*x2 (upper/lower bound) irdiv(i: integer; var x: hreal); x:=x/i (may truncate) ir_div(u: boolean; i: integer; var x: hreal); x:=x/i (upper/lower bound) rquot(var x1,x2,x3: hreal); x3:=x1/x2 (may truncate) r_quot(u: boolean; var x1,x2,x3: hreal); x3:=x1/x2 (upper/lower bound) rsqrt(var x1,x2: hreal); x2:=sqrt(x1) (may truncate) r_sqrt(u: boolean; var x1,x2: hreal); x2:=sqrt(x1) (upper/lower bound) Notes: Address of last argument has to be different from others. All (base 10000) digits returned by the procedures are supposed to be correct. The procedures set trunc:=true (false) if the result has (not) been truncated. Make sure that hdim+xmax