|
1 | 1 | ad_name: namespace = {
|
2 | 2 |
|
| 3 | +func_outer: (x: double, y: double) -> (ret: double) = { |
| 4 | + ret = x + y; |
| 5 | +} |
| 6 | + |
3 | 7 | ad_test: @autodiff @print type = {
|
4 | 8 |
|
5 | 9 | add_1: (x: double, y: double) -> (r: double) = {
|
@@ -58,6 +62,10 @@ ad_test: @autodiff @print type = {
|
58 | 62 | r = x * func(x, y);
|
59 | 63 | }
|
60 | 64 |
|
| 65 | + func_outer_call: (x: double, y: double) -> (r: double) = { |
| 66 | + r = x * func_outer(x, y); |
| 67 | + } |
| 68 | + |
61 | 69 | sin_call: (x: double, y: double) -> (r: double) = {
|
62 | 70 | r = sin(x - y);
|
63 | 71 | }
|
@@ -184,6 +192,7 @@ main: () = {
|
184 | 192 | write_output("x * (x + y)", x, x_d, y, y_d, ad_name::ad_test::mul_add_d(x, x_d, y, y_d));
|
185 | 193 | write_output("x + x * y", x, x_d, y, y_d, ad_name::ad_test::add_mul_d(x, x_d, y, y_d));
|
186 | 194 | write_output("x * func(x, y)", x, x_d, y, y_d, ad_name::ad_test::func_call_d(x, x_d, y, y_d));
|
| 195 | + write_output("x * func_outer(x, y)", x, x_d, y, y_d, ad_name::ad_test::func_outer_call_d(x, x_d, y, y_d)); |
187 | 196 | write_output("sin(x - y)", x, x_d, y, y_d, ad_name::ad_test::sin_call_d(x, x_d, y, y_d));
|
188 | 197 | write_output("if branch", x, x_d, y, y_d, ad_name::ad_test::if_branch_d(x, x_d, y, y_d));
|
189 | 198 | write_output("if else branch", x, x_d, y, y_d, ad_name::ad_test::if_else_branch_d(x, x_d, y, y_d));
|
|
0 commit comments