45 lines
		
	
	
		
			851 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			851 B
		
	
	
	
		
			Factor
		
	
	
|  | IN: benchmark.recursive | ||
|  | USING: math kernel hints prettyprint io ;
 | ||
|  | 
 | ||
|  | : fib ( m -- n )
 | ||
|  |     dup 2 < [ drop 1 ] [ dup 1 - fib swap 2 - fib + ] if ;
 | ||
|  | 
 | ||
|  | ! HINTS: fib { fixnum float } ; | ||
|  | ! 
 | ||
|  | : ack ( m n -- x )
 | ||
|  |     over zero? [ | ||
|  |         nip 1+ | ||
|  |     ] [ | ||
|  |         dup zero? [ | ||
|  |             drop 1- 1 ack | ||
|  |         ] [ | ||
|  |             dupd 1- ack >r 1- r> ack | ||
|  |         ] if
 | ||
|  |     ] if ;
 | ||
|  | 
 | ||
|  | ! HINTS: ack fixnum fixnum ; | ||
|  | 
 | ||
|  | : tak ( x y z -- t )
 | ||
|  |     pick pick swap < [ | ||
|  |         [ rot 1- -rot tak ] 3keep
 | ||
|  |         [ -rot 1- -rot tak ] 3keep
 | ||
|  |         1- -rot tak | ||
|  |         tak | ||
|  |     ] [ | ||
|  |         2nip
 | ||
|  |     ] if ;
 | ||
|  | 
 | ||
|  | ! HINTS: tak { fixnum float } { fixnum float } { fixnum float } ; | ||
|  | 
 | ||
|  | : recursive ( n -- )
 | ||
|  |     3 over ack . flush
 | ||
|  |     dup 27.0 + fib . flush
 | ||
|  |     1- | ||
|  |     dup 3 * over 2 * rot tak . flush
 | ||
|  |     3 fib . flush
 | ||
|  |     3.0 2.0 1.0 tak . flush ;
 | ||
|  | 
 | ||
|  | : recursive-main 11 recursive ;
 | ||
|  | 
 | ||
|  | MAIN: recursive-main |