code 34345;
procedure COMKWD(PR,PI,QR,QI,GR,GI,KR,KI);
value PR,PI,QR,QI;real PR,PI,QR,QI,GR,GI,KR,KI;
begin
if QR=0 & QI = 0 then
begin KR:=KI:=0 ;GR:=PR*2;GI:=PI*2 end else
if PR=0 & PI= 0 then
begin COMSQRT(QR,QI,GR,GI);KR:=-GR;KI:=-GI end else
begin real HR,HI;
if ABS(PR) > 1 or ABS(PI) >1 then begin
COMDIV(QR,QI,PR,PI,HR,HI);
COMDIV(HR,HI,PR,PI,HR,HI);
COMSQRT(1+HR,HI,HR,HI);
COMMUL(PR,PI,HR+1,HI,GR,GI);
end else begin COMSQRT(QR+(PR+PI)*(PR-PI),QI+ PR*PI*2,HR,HI);
if PR * HR + PI * HI > 0 then
begin GR := PR + HR;GI := PI + HI end else
begin GR := PR - HR;GI:= PI - HI end;
end;
COMDIV(-QR,-QI,GR,GI,KR,KI);
end
end COMKWD;
eop