procedure squot(var x1,x2,x3: scalar);
begin { squot }
  underflow:=false;
  if (x2.l.si<=0) and (x2.u.si>=0)
  then writeln('squot: error - division by zero')
  else if (x1.l.si=0) and (x1.u.si=0) then begin
    x3.l.si:=0;
    x3.u.si:=0;
  end
  else if x2.l.si>0 then begin
    if x1.l.si>=0 then begin
      rquot(x1.l,x2.u,x3.l);
      r_quot(up,x1.u,x2.l,x3.u);
    end
    else if x1.u.si<=0 then begin
      r_quot(down,x1.l,x2.l,x3.l);
      rquot(x1.u,x2.u,x3.u);
    end
    else begin
      r_quot(down,x1.l,x2.l,x3.l);
      r_quot(up,x1.u,x2.l,x3.u);
    end;
  end
  else begin
    if x1.l.si>=0 then begin
      r_quot(down,x1.u,x2.u,x3.l);
      rquot(x1.l,x2.u,x3.u);
    end
    else if x1.u.si<=0 then begin
      rquot(x1.u,x2.l,x3.l);
      r_quot(up,x1.l,x2.u,x3.u);
    end
    else begin
      r_quot(down,x1.u,x2.u,x3.l);
      r_quot(up,x1.l,x2.u,x3.u);
    end;
  end;
  if underflow then snormalize(x3);
end { squot };

