Fibonacci numbers example
%3
outer_cluster_i64-10912160959110460649
cluster_i64-10912160959110460649
outer_cluster_i64-16783941965674463102
cluster_i64-16783941965674463102
outer_cluster_fib-4208978898528913939-value
cluster_fib-4208978898528913939-value
outer_cluster_fib-11743562013128004906-value
cluster_fib-11743562013128004906-value
outer_cluster_i64-4208978898528913939
cluster_i64-4208978898528913939
outer_cluster_i64-0
cluster_i64-0
outer_cluster_fib-10912160959110460649-value
cluster_fib-10912160959110460649-value
outer_cluster_fib-16783941965674463102-value
cluster_fib-16783941965674463102-value
outer_cluster_fib-0-value
cluster_fib-0-value
outer_cluster_i64-5040379952546458196
cluster_i64-5040379952546458196
outer_cluster_fib-10080759905092916392-value
cluster_fib-10080759905092916392-value
outer_cluster_i64-11743562013128004906
cluster_i64-11743562013128004906
outer_cluster_fib-5040379952546458196-value
cluster_fib-5040379952546458196-value
outer_cluster_i64-10080759905092916392
cluster_i64-10080759905092916392
outer_cluster_i64-5871781006564002453
cluster_i64-5871781006564002453
outer_cluster_fib-5871781006564002453-value
cluster_fib-5871781006564002453-value
outer_cluster_i64-17615343019692007359
cluster_i64-17615343019692007359
outer_cluster_fib-17615343019692007359-value
cluster_fib-17615343019692007359-value
fib-4208978898528913939:s->i64-4208978898528913939
fib-11743562013128004906:s->i64-11743562013128004906
fib-10912160959110460649:s->i64-10912160959110460649
fib-16783941965674463102:s->i64-16783941965674463102
fib-0:s->i64-0
fib-10080759905092916392:s->i64-10080759905092916392
fib-5040379952546458196:s->i64-5040379952546458196
fib-5871781006564002453:s->i64-5871781006564002453
fib-17615343019692007359:s->i64-17615343019692007359
i64-10912160959110460649
5
i64-16783941965674463102
6
fib-4208978898528913939
fib
i64-4208978898528913939
7
fib-4208978898528913939-value
21
fib-11743562013128004906
fib
i64-11743562013128004906
2
fib-11743562013128004906-value
2
i64-0
0
fib-10912160959110460649
fib
fib-10912160959110460649-value
8
fib-16783941965674463102
fib
fib-16783941965674463102-value
13
fib-0
fib
fib-0-value
1
i64-5040379952546458196
4
fib-10080759905092916392
fib
i64-10080759905092916392
8
fib-10080759905092916392-value
34
fib-5040379952546458196
fib
fib-5040379952546458196-value
5
i64-5871781006564002453
1
fib-5871781006564002453
fib
fib-5871781006564002453-value
1
i64-17615343019692007359
3
fib-17615343019692007359
fib
fib-17615343019692007359-value
3
from __future__ import annotations
from egglog import *
egraph = EGraph ()
@egraph . function
def fib ( x : i64Like ) -> i64 : # type: ignore[empty-body]
...
f0 , f1 , x = vars_ ( "f0 f1 x" , i64 )
egraph . register (
set_ ( fib ( 0 )) . to ( i64 ( 1 )),
set_ ( fib ( 1 )) . to ( i64 ( 1 )),
rule (
eq ( f0 ) . to ( fib ( x )),
eq ( f1 ) . to ( fib ( x + 1 )),
) . then ( set_ ( fib ( x + 2 )) . to ( f0 + f1 )),
)
egraph . run ( 7 )
egraph . check ( eq ( fib ( i64 ( 7 ))) . to ( i64 ( 21 )))
egraph
Total running time of the script: (0 minutes 0.174 seconds)
Gallery generated by Sphinx-Gallery