@@ -205,11 +205,9 @@ float func6(float x, float y) {
205205//CHECK-NEXT: {
206206//CHECK-NEXT: double _r0 = 0.;
207207//CHECK-NEXT: double _r1 = 0.;
208- //CHECK-NEXT: double _t0 = 0.;
209- //CHECK-NEXT: helper_pullback(x, y, _d_z, &_r0, &_r1, _t0);
208+ //CHECK-NEXT: helper_pullback(x, y, _d_z, &_r0, &_r1, _final_error);
210209//CHECK-NEXT: *_d_x += _r0;
211210//CHECK-NEXT: *_d_y += _r1;
212- //CHECK-NEXT: _final_error += _t0;
213211//CHECK-NEXT: }
214212//CHECK-NEXT: _final_error += std::abs(*_d_x * x * {{.+}});
215213//CHECK-NEXT: _final_error += std::abs(*_d_y * y * {{.+}});
@@ -262,10 +260,8 @@ float func8(float x, float y) {
262260//CHECK-NEXT: z = _t0;
263261//CHECK-NEXT: *_d_y += _d_z;
264262//CHECK-NEXT: x = _t1;
265- //CHECK-NEXT: double _t2 = 0.;
266- //CHECK-NEXT: helper2_pullback(x, _d_z, _d_x, _t2);
263+ //CHECK-NEXT: helper2_pullback(x, _d_z, _d_x, _final_error);
267264//CHECK-NEXT: _d_z = 0.F;
268- //CHECK-NEXT: _final_error += _t2;
269265//CHECK-NEXT: _final_error += std::abs(*_d_x * x * {{.+}});
270266//CHECK-NEXT: }
271267//CHECK-NEXT: _final_error += std::abs(*_d_x * x * {{.+}});
@@ -279,45 +275,58 @@ float func9(float x, float y) {
279275}
280276
281277//CHECK: void func9_grad(float x, float y, float *_d_x, float *_d_y, double &_final_error) {
282- //CHECK-NEXT: float _t1 = x;
278+ //CHECK-NEXT: float _t0 = x;
283279//CHECK-NEXT: float _d_z = 0.F;
284280//CHECK-NEXT: float z = helper(x, y) + helper2(x);
285- //CHECK-NEXT: float _t3 = z;
286- //CHECK-NEXT: float _t5 = x;
287- //CHECK-NEXT: double _t7 = helper2(x);
288- //CHECK-NEXT: float _t8 = y;
289- //CHECK-NEXT: double _t4 = helper2(y);
290- //CHECK-NEXT: z += _t7 * _t4 ;
281+ //CHECK-NEXT: float _t1 = z;
282+ //CHECK-NEXT: float _t3 = x;
283+ //CHECK-NEXT: double _t4 = helper2(x);
284+ //CHECK-NEXT: float _t5 = y;
285+ //CHECK-NEXT: double _t2 = helper2(y);
286+ //CHECK-NEXT: z += _t4 * _t2 ;
291287//CHECK-NEXT: _d_z += 1;
292288//CHECK-NEXT: {
293- //CHECK-NEXT: z = _t3;
294- //CHECK-NEXT: x = _t5;
295- //CHECK-NEXT: double _t6 = 0.;
296- //CHECK-NEXT: helper2_pullback(x, _d_z * _t4, _d_x, _t6);
297- //CHECK-NEXT: y = _t8;
298- //CHECK-NEXT: double _t9 = 0.;
299- //CHECK-NEXT: helper2_pullback(y, _t7 * _d_z, _d_y, _t9);
300- //CHECK-NEXT: _final_error += _t6 + _t9;
289+ //CHECK-NEXT: z = _t1;
290+ //CHECK-NEXT: x = _t3;
291+ //CHECK-NEXT: helper2_pullback(x, _d_z * _t2, _d_x, _final_error);
292+ //CHECK-NEXT: y = _t5;
293+ //CHECK-NEXT: helper2_pullback(y, _t4 * _d_z, _d_y, _final_error);
301294//CHECK-NEXT: _final_error += std::abs(*_d_y * y * {{.+}});
302295//CHECK-NEXT: _final_error += std::abs(*_d_x * x * {{.+}});
303296//CHECK-NEXT: }
304297//CHECK-NEXT: {
305298//CHECK-NEXT: double _r0 = 0.;
306299//CHECK-NEXT: double _r1 = 0.;
307- //CHECK-NEXT: double _t0 = 0.;
308- //CHECK-NEXT: helper_pullback(x, y, _d_z, &_r0, &_r1, _t0);
300+ //CHECK-NEXT: helper_pullback(x, y, _d_z, &_r0, &_r1, _final_error);
309301//CHECK-NEXT: *_d_x += _r0;
310302//CHECK-NEXT: *_d_y += _r1;
311- //CHECK-NEXT: x = _t1;
312- //CHECK-NEXT: double _t2 = 0.;
313- //CHECK-NEXT: helper2_pullback(x, _d_z, _d_x, _t2);
314- //CHECK-NEXT: _final_error += _t0 + _t2;
303+ //CHECK-NEXT: x = _t0;
304+ //CHECK-NEXT: helper2_pullback(x, _d_z, _d_x, _final_error);
315305//CHECK-NEXT: _final_error += std::abs(*_d_x * x * {{.+}});
316306//CHECK-NEXT: }
317307//CHECK-NEXT: _final_error += std::abs(*_d_x * x * {{.+}});
318308//CHECK-NEXT: _final_error += std::abs(*_d_y * y * {{.+}});
319309//CHECK-NEXT: }
320310
311+ double func10 (double x , double y ) {
312+ return helper (x , y );
313+ }
314+
315+ // CHECK: void func10_grad(double x, double y, double *_d_x, double *_d_y, double &_final_error) {
316+ // CHECK-NEXT: double _ret_value0 = 0.;
317+ // CHECK-NEXT: _ret_value0 = helper(x, y);
318+ // CHECK-NEXT: {
319+ // CHECK-NEXT: double _r0 = 0.;
320+ // CHECK-NEXT: double _r1 = 0.;
321+ // CHECK-NEXT: helper_pullback(x, y, 1, &_r0, &_r1, _final_error);
322+ // CHECK-NEXT: *_d_x += _r0;
323+ // CHECK-NEXT: *_d_y += _r1;
324+ // CHECK-NEXT: }
325+ // CHECK-NEXT: _final_error += std::abs(*_d_x * x * {{.+}});
326+ // CHECK-NEXT: _final_error += std::abs(*_d_y * y * {{.+}});
327+ // CHECK-NEXT: _final_error += std::abs(1. * _ret_value0 * {{.+}});
328+ // CHECK-NEXT: }
329+
321330int main () {
322331 clad ::estimate_error (func );
323332 clad ::estimate_error (func2 );
@@ -328,4 +337,5 @@ int main() {
328337 clad ::estimate_error (func7 );
329338 clad ::estimate_error (func8 );
330339 clad ::estimate_error (func9 );
340+ clad ::estimate_error (func10 );
331341}
0 commit comments