program SPIRALS { www.merlyn.demon.co.uk >= 2001-07-01 } ; function atan2(y : extended ; x : extended) : extended ; assembler ; asm fld [y] ; fld [x] ; fpatan end ; var D, F, X, XX, Y, XY : extended ; J : integer ; begin X := 1 ; Y := 0 ; D := 0.3 ; F := 0.05 ; // F should be small, say +0.05 or -0.05 F := 1.0 + F ; repeat XX := X*F ; XY := Y*F ; X := XX - D*XY; Y := XY + D*XX ; Writeln(X:12, '':3, Y:12, {'':3, sqrt(X*X+Y*Y):12,} atan2(Y, X):10:3) ; until false ; end.