All pastes #248837 Raw Edit

TPK

public text v1 · immutable
#248837 ·published 2006-11-15 02:00 UTC
rendered paste body
\ tpk.fs:  Knuth's TPK program in ISO/ANS Standard Forth (compiled by Gforth 0.6.2)

: farray ( u "name" -- )
  create floats allot  does> ( i -- f-addr )  swap floats + ;

10 farray A[]

80 constant /input
create input  /input chars allot

: getfloat ( F: -- r )
  begin
    input dup /input accept  >float 0= while
      ." Invalid input, please re-enter:" cr
  repeat ;

: f ( F: r1 -- r2 )
\  f(x) = sqrt(|x|) + 5*x**3
  fdup fabs fsqrt  fswap  3e f** 5e f*  f+ ;

: tpk ( -- )
  11 0 do  i . getfloat i A[] f! cr  loop  cr
  0 10 do  i A[] f@ f
    fdup 400e f> if  i . ."  too large"  fdrop  else  i . f.  then  cr
  -1 +loop ;