Skip to content

Commit add101a

Browse files
authored
improve whir recursion cycle count (#110)
1 parent de3149b commit add101a

File tree

1 file changed

+38
-44
lines changed

1 file changed

+38
-44
lines changed

crates/rec_aggregation/recursion_program.lean_lang

Lines changed: 38 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -498,73 +498,67 @@ fn dot_product_ee_dynamic(a, b, res, n) {
498498
if n == 16 {
499499
dot_product_ee(a, b, res, 16);
500500
return;
501+
} else {
502+
if n == NUM_QUERIES_0 {
503+
dot_product_ee(a, b, res, NUM_QUERIES_0);
504+
return;
505+
} else {
506+
dot_product_ee_dynamic_helper_1(a, b, res, n);
507+
return;
508+
}
501509
}
502510

503-
dot_product_ee_dynamic_helper_1(a, b, res, n);
504-
return;
505511
}
506512

507513
fn dot_product_ee_dynamic_helper_1(a, b, res, n) {
508-
if n == NUM_QUERIES_0 {
509-
dot_product_ee(a, b, res, NUM_QUERIES_0);
510-
return;
511-
}
512-
513-
dot_product_ee_dynamic_helper_2(a, b, res, n);
514-
return;
515-
}
516-
517-
fn dot_product_ee_dynamic_helper_2(a, b, res, n) {
518514
if n == NUM_QUERIES_1 {
519515
dot_product_ee(a, b, res, NUM_QUERIES_1);
520516
return;
517+
} else {
518+
if n == NUM_QUERIES_2 {
519+
dot_product_ee(a, b, res, NUM_QUERIES_2);
520+
return;
521+
} else {
522+
dot_product_ee_dynamic_helper_3(a, b, res, n);
523+
return;
524+
}
521525
}
522-
if n == NUM_QUERIES_2 {
523-
dot_product_ee(a, b, res, NUM_QUERIES_2);
524-
return;
525-
}
526-
527-
dot_product_ee_dynamic_helper_3(a, b, res, n);
528-
return;
529526
}
530527

531528
fn dot_product_ee_dynamic_helper_3(a, b, res, n) {
532529
if n == NUM_QUERIES_3 {
533530
dot_product_ee(a, b, res, NUM_QUERIES_3);
534531
return;
532+
} else {
533+
if n == NUM_QUERIES_0 + 1 {
534+
dot_product_ee(a, b, res, NUM_QUERIES_0 + 1);
535+
return;
536+
} else {
537+
dot_product_ee_dynamic_helper_4(a, b, res, n);
538+
return;
539+
}
535540
}
536-
if n == NUM_QUERIES_0 + 1 {
537-
dot_product_ee(a, b, res, NUM_QUERIES_0 + 1);
538-
return;
539-
}
540-
541-
dot_product_ee_dynamic_helper_4(a, b, res, n);
542-
return;
543541
}
544542

545543
fn dot_product_ee_dynamic_helper_4(a, b, res, n) {
546544
if n == NUM_QUERIES_1 + 1 {
547545
dot_product_ee(a, b, res, NUM_QUERIES_1 + 1);
548546
return;
547+
} else {
548+
if n == NUM_QUERIES_2 + 1 {
549+
dot_product_ee(a, b, res, NUM_QUERIES_2 + 1);
550+
return;
551+
} else {
552+
if n == NUM_QUERIES_3 + 1 {
553+
dot_product_ee(a, b, res, NUM_QUERIES_3 + 1);
554+
return;
555+
}
556+
557+
TODO_dot_product_ee_dynamic = 0;
558+
print(TODO_dot_product_ee_dynamic, n);
559+
panic();
560+
}
549561
}
550-
if n == NUM_QUERIES_2 + 1 {
551-
dot_product_ee(a, b, res, NUM_QUERIES_2 + 1);
552-
return;
553-
}
554-
555-
dot_product_ee_dynamic_helper_5(a, b, res, n);
556-
return;
557-
}
558-
559-
fn dot_product_ee_dynamic_helper_5(a, b, res, n) {
560-
if n == NUM_QUERIES_3 + 1 {
561-
dot_product_ee(a, b, res, NUM_QUERIES_3 + 1);
562-
return;
563-
}
564-
565-
TODO_dot_product_ee_dynamic = 0;
566-
print(TODO_dot_product_ee_dynamic, n);
567-
panic();
568562
}
569563

570564
fn poly_eq_extension(point, n, two_pow_n) -> 1 {

0 commit comments

Comments
 (0)