Skip to content

Commit a286c84

Browse files
committed
Handling of member access.
1 parent 803dfde commit a286c84

File tree

6 files changed

+637
-537
lines changed

6 files changed

+637
-537
lines changed

regression-tests/pure2-autodiff.cpp2

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ func_outer: (x: double, y: double) -> (ret: double) = {
44
ret = x + y;
55
}
66

7+
type_outer: type = {
8+
public a: double = 0.0;
9+
}
10+
711
ad_test: @autodiff @print type = {
812

913
add_1: (x: double, y: double) -> (r: double) = {
@@ -159,6 +163,13 @@ ad_test: @autodiff @print type = {
159163
r = r + t;
160164
}
161165
}
166+
167+
type_outer_use: (x: double, y: double) -> (r: double) = {
168+
t : type_outer = ();
169+
t.a = x;
170+
171+
r = t.a + y;
172+
}
162173
}
163174
}
164175

@@ -205,6 +216,7 @@ main: () = {
205216
write_output("while loop", x, x_d, y, y_d, ad_name::ad_test::while_loop_d(x, x_d, y, y_d));
206217
write_output("do while loop", x, x_d, y, y_d, ad_name::ad_test::do_while_loop_d(x, x_d, y, y_d));
207218
write_output("for loop", x, x_d, y, y_d, ad_name::ad_test::for_loop_d(x, x_d, y, y_d));
219+
write_output("tye_outer.a + y", x, x_d, y, y_d, ad_name::ad_test::type_outer_use_d(x, x_d, y, y_d));
208220

209221
r_twice := ad_test_twice::mul_1_d_d2(x, x_d, x_d, 0.0);
210222
std::cout << "2nd order diff of x*x at (x)$ = (r_twice.r_d_d2)$" << std::endl;

regression-tests/test-results/gcc-13-c++2b/pure2-autodiff.cpp.execution

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@ diff(intermediate no init) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d =
2424
diff(while loop) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 8.000000, r_d = 5.000000)
2525
diff(do while loop) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 8.000000, r_d = 5.000000)
2626
diff(for loop) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 5.000000, r_d = 3.000000)
27+
diff(tye_outer.a + y) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 5.000000, r_d = 3.000000)
2728
2nd order diff of x*x at 2.000000 = 2.000000

0 commit comments

Comments
 (0)