procedure ptrans(d2: integer; var sd: scalar; var v1,v2: vector);
var
  j,i,imax: integer;
  st: scalar;  
begin { ptrans }
  imax:=min(d2,vdim-1);
  v2[0]:=v1[imax];
  for i:=1 to imax do begin
    v2[i]:=v2[i-1];
    for j:=i-1 downto 1 do begin
      sprod(sd,v2[j],st);
      ssum(st,v2[j-1],v2[j]);
    end;
    sprod(sd,v2[0],st);
    ssum(st,v1[imax-i],v2[0]);
  end;
  for i:=imax+1 to vdim do szero(v2[i]);
end { ptrans };

