procedure sval(var v: vector; var r,x,y: scalar);
var
  n: integer;
  s1,s2: scalar;
begin { sval }
  sabs(x,s1);
  squot(s1,r,s2);
  isdiv(vdim+1,s2);
  sdiff(sone,s2,s1);
  if s1.l.si<=0 then writeln('sval: argument too large')
  else begin
    squot(sone,s1,s2);
    sprod(s2,v[vdim],y);
    ssymm(y,y);
    for n:=vdim-1 downto 0 do begin
      sprod(x,y,s1);
      ssum(v[n],s1,y);
    end;
  end;
end { sval };

