Skip to content

Commit

Permalink
euler benchmark
Browse files Browse the repository at this point in the history
Approximates Euler's number using the Taylor series
  • Loading branch information
Kei Imada committed Aug 30, 2023
1 parent 46f1850 commit 1aef7c2
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 0 deletions.
83 changes: 83 additions & 0 deletions benchmarks/float/euler.bril
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Approximate Euler's number using the Taylor series

# ARGS: 18
@main(n: float) {
v0: float = id n;
e: float = call @taylor_series_euler v0;
e: float = id e;
v1: float = id e;
print v1;
v2: int = const 0;
}

@factorial(n: float): float {
v1: float = id n;
v2: float = const 1;
v3: bool = fle v1 v2;
br v3 .then.0 .else.0;
.then.0:
v4: float = const 1;
ret v4;
jmp .endif.0;
.else.0:
.endif.0:
v5: float = id n;
v6: float = const 1;
v7: float = fsub v5 v6;
v8: float = call @factorial v7;
v9: float = id n;
v10: float = fmul v8 v9;
ret v10;
}

@taylor_series_euler(n: float): float {
v0: float = const 0;
e: float = id v0;
v2: float = const 0;
i: float = id v2;
.for.cond.1:
v3: float = id i;
v4: float = id n;
v5: bool = flt v3 v4;
br v5 .for.body.1 .for.end.1;
.for.body.1:
v6: float = const 1;
v7: float = id i;
v8: float = call @factorial v7;
v9: float = fdiv v6 v8;
v10: float = id e;
v11: float = fadd v9 v10;
e: float = id v11;
v12: float = id i;
v13: float = const 1;
v14: float = fadd v12 v13;
i: float = id v14;
jmp .for.cond.1;
.for.end.1:
v15: float = id e;
ret v15;
}

# The Typescript file that generated the above code:
# ts2bril euler.ts | bril2txt > euler.bril

# function main(n: number) {
# var e: number = taylor_series_euler(n);
# console.log(e);
# }
#
# function factorial(n: number): number {
# if n <= 1 {
# return 1;
# }
# return factorial(n-1)*n;
# }
#
# function taylor_series_euler(n: number): number {
# var e: number = 0;
# var i: number;
# for(let i = 0; i < n; i=i+1) {
# e = 1 / factorial(i) + e;
# }
# return e;
# }
1 change: 1 addition & 0 deletions benchmarks/float/euler.out
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2.71828182845904553
1 change: 1 addition & 0 deletions benchmarks/float/euler.prof
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
total_dyn_inst: 1908

0 comments on commit 1aef7c2

Please sign in to comment.