procedure ispower(i: integer; var x1,x2: scalar);
var
  d,j: integer;
  x,xt: scalar;
begin { ispower }
  if i=0 then x2:=sone else begin
    if i>0 then begin
      j:=i;
      x:=x1;
    end
    else begin
      j:=-i;
      squot(sone,x1,x);
    end;
    d:=j mod 2;
    j:=j div 2;
    if d=0 then x2:=sone else x2:=x;
    while j>0 do begin
      xt:=x;
      sprod(xt,xt,x);
      d:=j mod 2;
      j:=j div 2;
      if d>0 then begin
        xt:=x2;
        sprod(x,xt,x2);
      end;
    end;
  end;
end { ispower };

