@@ -153,6 +153,7 @@ ad_test: @autodiff @print type = {
153153 }
154154}
155155
156+
156157write_output: (func: std::string, x: double, x_d: double, y: double, y_d: double, ret) = {
157158 std::cout << "diff((func)$) at (x = (x)$, x_d = (x_d)$, y = (y)$, y_d = (y_d)$) = (r = (ret.r)$, r_d = (ret.r_d)$)" << std::endl;
158159}
@@ -164,29 +165,29 @@ main: () = {
164165 y: double = 3.0;
165166 y_d: double = 2.0;
166167
167- write_output("x + y", x, x_d, y, y_d, ad_test::add_1_diff (x, x_d, y, y_d));
168- write_output("x + y + x", x, x_d, y, y_d, ad_test::add_2_diff (x, x_d, y, y_d));
169- write_output("x - y", x, x_d, y, y_d, ad_test::sub_1_diff (x, x_d, y, y_d));
170- write_output("x - y - x", x, x_d, y, y_d, ad_test::sub_2_diff (x, x_d, y, y_d));
171- write_output("x + y - x", x, x_d, y, y_d, ad_test::add_sub_2_diff (x, x_d, y, y_d));
172- write_output("x * y", x, x_d, y, y_d, ad_test::mul_1_diff (x, x_d, y, y_d));
173- write_output("x * y * x", x, x_d, y, y_d, ad_test::mul_2_diff (x, x_d, y, y_d));
174- write_output("x / y", x, x_d, y, y_d, ad_test::div_1_diff (x, x_d, y, y_d));
175- write_output("x / y / y", x, x_d, y, y_d, ad_test::div_2_diff (x, x_d, y, y_d));
176- write_output("x * y / x", x, x_d, y, y_d, ad_test::mul_div_2_diff (x, x_d, y, y_d));
177- write_output("x * (x + y)", x, x_d, y, y_d, ad_test::mul_add_diff (x, x_d, y, y_d));
178- write_output("x + x * y", x, x_d, y, y_d, ad_test::add_mul_diff (x, x_d, y, y_d));
179- write_output("x * func(x, y)", x, x_d, y, y_d, ad_test::func_call_diff (x, x_d, y, y_d));
180- write_output("sin(x + y)", x, x_d, y, y_d, ad_test::sin_call_diff (x, x_d, y, y_d));
181- write_output("if branch", x, x_d, y, y_d, ad_test::if_branch_diff (x, x_d, y, y_d));
182- write_output("if else branch", x, x_d, y, y_d, ad_test::if_else_branch_diff (x, x_d, y, y_d));
183- write_output("direct return", x, x_d, y, y_d, ad_test::direct_return_diff (x, x_d, y, y_d));
184- write_output("intermediate var", x, x_d, y, y_d, ad_test::intermediate_var_diff (x, x_d, y, y_d));
185- write_output("intermediate passive var", x, x_d, y, y_d, ad_test::intermediate_passive_var_diff (x, x_d, y, y_d));
186- write_output("intermediate untyped", x, x_d, y, y_d, ad_test::intermediate_untyped_diff (x, x_d, y, y_d));
187- write_output("intermediate default init", x, x_d, y, y_d, ad_test::intermediate_default_init_diff (x, x_d, y, y_d));
188- write_output("intermediate no init", x, x_d, y, y_d, ad_test::intermediate_no_init_diff (x, x_d, y, y_d));
189- write_output("while loop", x, x_d, y, y_d, ad_test::while_loop_diff (x, x_d, y, y_d));
190- write_output("do while loop", x, x_d, y, y_d, ad_test::do_while_loop_diff (x, x_d, y, y_d));
191- write_output("for loop", x, x_d, y, y_d, ad_test::for_loop_diff (x, x_d, y, y_d));
168+ write_output("x + y", x, x_d, y, y_d, ad_test::add_1_d (x, x_d, y, y_d));
169+ write_output("x + y + x", x, x_d, y, y_d, ad_test::add_2_d (x, x_d, y, y_d));
170+ write_output("x - y", x, x_d, y, y_d, ad_test::sub_1_d (x, x_d, y, y_d));
171+ write_output("x - y - x", x, x_d, y, y_d, ad_test::sub_2_d (x, x_d, y, y_d));
172+ write_output("x + y - x", x, x_d, y, y_d, ad_test::add_sub_2_d (x, x_d, y, y_d));
173+ write_output("x * y", x, x_d, y, y_d, ad_test::mul_1_d (x, x_d, y, y_d));
174+ write_output("x * y * x", x, x_d, y, y_d, ad_test::mul_2_d (x, x_d, y, y_d));
175+ write_output("x / y", x, x_d, y, y_d, ad_test::div_1_d (x, x_d, y, y_d));
176+ write_output("x / y / y", x, x_d, y, y_d, ad_test::div_2_d (x, x_d, y, y_d));
177+ write_output("x * y / x", x, x_d, y, y_d, ad_test::mul_div_2_d (x, x_d, y, y_d));
178+ write_output("x * (x + y)", x, x_d, y, y_d, ad_test::mul_add_d (x, x_d, y, y_d));
179+ write_output("x + x * y", x, x_d, y, y_d, ad_test::add_mul_d (x, x_d, y, y_d));
180+ write_output("x * func(x, y)", x, x_d, y, y_d, ad_test::func_call_d (x, x_d, y, y_d));
181+ write_output("sin(x + y)", x, x_d, y, y_d, ad_test::sin_call_d (x, x_d, y, y_d));
182+ write_output("if branch", x, x_d, y, y_d, ad_test::if_branch_d (x, x_d, y, y_d));
183+ write_output("if else branch", x, x_d, y, y_d, ad_test::if_else_branch_d (x, x_d, y, y_d));
184+ write_output("direct return", x, x_d, y, y_d, ad_test::direct_return_d (x, x_d, y, y_d));
185+ write_output("intermediate var", x, x_d, y, y_d, ad_test::intermediate_var_d (x, x_d, y, y_d));
186+ write_output("intermediate passive var", x, x_d, y, y_d, ad_test::intermediate_passive_var_d (x, x_d, y, y_d));
187+ write_output("intermediate untyped", x, x_d, y, y_d, ad_test::intermediate_untyped_d (x, x_d, y, y_d));
188+ write_output("intermediate default init", x, x_d, y, y_d, ad_test::intermediate_default_init_d (x, x_d, y, y_d));
189+ write_output("intermediate no init", x, x_d, y, y_d, ad_test::intermediate_no_init_d (x, x_d, y, y_d));
190+ write_output("while loop", x, x_d, y, y_d, ad_test::while_loop_d (x, x_d, y, y_d));
191+ write_output("do while loop", x, x_d, y, y_d, ad_test::do_while_loop_d (x, x_d, y, y_d));
192+ write_output("for loop", x, x_d, y, y_d, ad_test::for_loop_d (x, x_d, y, y_d));
192193}
0 commit comments