USING: math.matrices sequences.deep memoize ; MEMO: fibs ( n -- seq ) 1 + { { 1 1 } { 1 0 } } 2 identity-matrix [ m. ] binary-reduce ; MEMO: fib ( n -- r ) dup 3 mod [ - fibs flatten reverse { 0 1 3 } swap nths ] keep swap nth ;