38 lines
		
	
	
		
			784 B
		
	
	
	
		
			Factor
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			38 lines
		
	
	
		
			784 B
		
	
	
	
		
			Factor
		
	
	
		
			Executable File
		
	
USING: math kernel hints prettyprint io combinators ;
 | 
						|
IN: benchmark.recursive
 | 
						|
 | 
						|
: fib ( m -- n )
 | 
						|
    dup 2 < [ drop 1 ] [ [ 1 - fib ] [ 2 - fib ] bi + ] if ;
 | 
						|
    inline
 | 
						|
 | 
						|
: ack ( m n -- x )
 | 
						|
    {
 | 
						|
        { [ over zero? ] [ nip 1+ ] }
 | 
						|
        { [ dup zero? ] [ drop 1- 1 ack ] }
 | 
						|
        [ [ drop 1- ] [ 1- ack ] 2bi ack ]
 | 
						|
    } cond ; inline
 | 
						|
 | 
						|
: tak ( x y z -- t )
 | 
						|
    2over <= [
 | 
						|
        2nip
 | 
						|
    ] [
 | 
						|
        [  rot 1- -rot tak ]
 | 
						|
        [ -rot 1- -rot tak ]
 | 
						|
        [      1- -rot tak ]
 | 
						|
        3tri
 | 
						|
        tak
 | 
						|
    ] if ; inline
 | 
						|
 | 
						|
: recursive ( n -- )
 | 
						|
    [ 3 swap ack . flush ]
 | 
						|
    [ 27.0 + fib . flush ]
 | 
						|
    [ 1- [ 3 * ] [ 2 * ] [ ] tri tak . flush ] tri
 | 
						|
    3 fib . flush
 | 
						|
    3.0 2.0 1.0 tak . flush ;
 | 
						|
 | 
						|
HINTS: recursive fixnum ;
 | 
						|
 | 
						|
: recursive-main 11 recursive ;
 | 
						|
 | 
						|
MAIN: recursive-main
 |