Skip to content

Commit e7bacb3

Browse files
authored
Merge pull request #1220 from CodingThrust/feat/growth-polynomial-exponents
Support polynomial exponents and variable bases in the growth domain
2 parents 888d714 + ef31e35 commit e7bacb3

4 files changed

Lines changed: 1575 additions & 714 deletions

File tree

‎problemreductions-expr/tests/fixtures/sympy_oracle.json‎

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -849,6 +849,111 @@
849849
"right": "exp(n)",
850850
"ratio_limit": "0",
851851
"relation": "right_dominates"
852+
},
853+
{
854+
"name": "polynomial_exponent",
855+
"left": "2^(n^2)",
856+
"right": "3^n",
857+
"ratio_limit": "oo",
858+
"relation": "left_dominates"
859+
},
860+
{
861+
"name": "sqrt_exponent_over_polynomial",
862+
"left": "2^sqrt(n)",
863+
"right": "n^100",
864+
"ratio_limit": "oo",
865+
"relation": "left_dominates"
866+
},
867+
{
868+
"name": "exponential_over_sqrt_exponent",
869+
"left": "1.0001^n",
870+
"right": "2^sqrt(n)",
871+
"ratio_limit": "oo",
872+
"relation": "left_dominates"
873+
},
874+
{
875+
"name": "quasi_polynomial",
876+
"left": "2^(log(n)^2)",
877+
"right": "n^100",
878+
"ratio_limit": "oo",
879+
"relation": "left_dominates"
880+
},
881+
{
882+
"name": "self_power_over_binary_power",
883+
"left": "n^n",
884+
"right": "2^(n * log(n))",
885+
"ratio_limit": "oo",
886+
"relation": "left_dominates"
887+
},
888+
{
889+
"name": "variable_base_rate",
890+
"left": "n^(2 * n)",
891+
"right": "n^n",
892+
"ratio_limit": "oo",
893+
"relation": "left_dominates"
894+
},
895+
{
896+
"name": "mixed_base_product",
897+
"left": "2^(2 * n) * 3^n",
898+
"right": "2^n * 4^n",
899+
"ratio_limit": "oo",
900+
"relation": "left_dominates"
901+
},
902+
{
903+
"name": "close_exponential_rates",
904+
"left": "2^(0.773 * n)",
905+
"right": "1.1996^n",
906+
"ratio_limit": "oo",
907+
"relation": "left_dominates"
908+
},
909+
{
910+
"name": "exponent_cancellation",
911+
"left": "2^((n + 1)^2 - n^2)",
912+
"right": "2^(2 * n)",
913+
"ratio_limit": "2",
914+
"relation": "equivalent"
915+
},
916+
{
917+
"name": "decaying_factor",
918+
"left": "2^n * 0.5^n",
919+
"right": "1",
920+
"ratio_limit": "1",
921+
"relation": "equivalent"
922+
},
923+
{
924+
"name": "reverse_variable_base",
925+
"left": "2^n",
926+
"right": "n^n",
927+
"ratio_limit": "0",
928+
"relation": "right_dominates"
929+
},
930+
{
931+
"name": "stirling_factorial",
932+
"left": "factorial(n)",
933+
"right": "n^n * sqrt(n) * exp(-n)",
934+
"ratio_limit": "sqrt(2)*sqrt(pi)",
935+
"relation": "equivalent"
936+
},
937+
{
938+
"name": "factorial_below_self_power",
939+
"left": "n^n",
940+
"right": "factorial(n)",
941+
"ratio_limit": "oo",
942+
"relation": "left_dominates"
943+
},
944+
{
945+
"name": "factorial_above_base_e_power",
946+
"left": "factorial(n)",
947+
"right": "(n / 3)^n",
948+
"ratio_limit": "oo",
949+
"relation": "left_dominates"
950+
},
951+
{
952+
"name": "scaled_factorial",
953+
"left": "factorial(2 * n)",
954+
"right": "(2 * n)^(2 * n) * sqrt(n) * exp(-2 * n)",
955+
"ratio_limit": "2*sqrt(pi)",
956+
"relation": "equivalent"
852957
}
853958
],
854959
"factorial_domain_cases": [

‎scripts/generate_symbolic_expr_fixture.py‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,21 @@
148148
("exponential_poly_tie_break", "2^n * n", "2^n"),
149149
("reverse_polynomial_degree", "n", "n^2"),
150150
("reverse_exponential", "n^100", "exp(n)"),
151+
("polynomial_exponent", "2^(n^2)", "3^n"),
152+
("sqrt_exponent_over_polynomial", "2^sqrt(n)", "n^100"),
153+
("exponential_over_sqrt_exponent", "1.0001^n", "2^sqrt(n)"),
154+
("quasi_polynomial", "2^(log(n)^2)", "n^100"),
155+
("self_power_over_binary_power", "n^n", "2^(n * log(n))"),
156+
("variable_base_rate", "n^(2 * n)", "n^n"),
157+
("mixed_base_product", "2^(2 * n) * 3^n", "2^n * 4^n"),
158+
("close_exponential_rates", "2^(0.773 * n)", "1.1996^n"),
159+
("exponent_cancellation", "2^((n + 1)^2 - n^2)", "2^(2 * n)"),
160+
("decaying_factor", "2^n * 0.5^n", "1"),
161+
("reverse_variable_base", "2^n", "n^n"),
162+
("stirling_factorial", "factorial(n)", "n^n * sqrt(n) * exp(-n)"),
163+
("factorial_below_self_power", "n^n", "factorial(n)"),
164+
("factorial_above_base_e_power", "factorial(n)", "(n / 3)^n"),
165+
("scaled_factorial", "factorial(2 * n)", "(2 * n)^(2 * n) * sqrt(n) * exp(-2 * n)"),
151166
]
152167

153168

0 commit comments

Comments
 (0)