\ Forth implementation of Newton's method for finding
\ roots, simplified.
: z1 ( i -- ) ( f: -- z1 )
z F@ xn{ SWAP } F@ F-
;
: Newton ( i -- ) ( f: e d p -- e d p )
\ calculate new D
DUP z1 FROT F* FOVER F+
\ calculate new P
FSWAP DUP z1 F* dif{ OVER } F@ F+
\ calculate new E
FROT z1 FABS F* FOVER FABS F+
\ restore stack order
FROT FROT
;
: FNewt ( &xn &dif n -- ) ( f: z -- e d p)
>R
& dif{ &!
& xn{ &!
R>
z F! 0.0e0 0.0e0 0.0e0
0 DO
I Newton
LOOP
;
| Back: 1951-1970 |