1617a3babSopenharmony_ci#define f1(i) ((i)*(i))
2617a3babSopenharmony_ci#define I2(f, n) f(n) + f(n+1)
3617a3babSopenharmony_ci#define I3(f, n) I2(f, n) + f(n+2)
4617a3babSopenharmony_ci
5617a3babSopenharmony_ci#define FL_f1(i) ((i)*(i))
6617a3babSopenharmony_ci#define FL_I2(f, n) f(n) + f(n+0.2)
7617a3babSopenharmony_ci#define FL_I3(f, n) FL_I2(f, n) + f(n+0.5)
8617a3babSopenharmony_ci
9617a3babSopenharmony_civoid main()
10617a3babSopenharmony_ci{
11617a3babSopenharmony_ci    int f1 = 4;
12617a3babSopenharmony_ci    int f2 = f1;
13617a3babSopenharmony_ci    int f3 = f1(3);
14617a3babSopenharmony_ci    int f4 = I2(f1, 0);
15617a3babSopenharmony_ci    int f5 = I3(f1, 0);
16617a3babSopenharmony_ci
17617a3babSopenharmony_ci    highp float fl_f5 = FL_I3(FL_f1, 0.1);
18617a3babSopenharmony_ci}
19617a3babSopenharmony_ci
20617a3babSopenharmony_ci// f5 = I3(f1, 0)
21617a3babSopenharmony_ci//    = I2(f1, 0) + f1(0 + 2)
22617a3babSopenharmony_ci//    = f1(0) + f1(0+1) + f1(0+2)
23617a3babSopenharmony_ci//    = 0*0 + 1*1 + 2*2
24617a3babSopenharmony_ci//    = 5
25617a3babSopenharmony_ci
26617a3babSopenharmony_ci// fl_f5 = FL_I3(FL_f1, 0.1)
27617a3babSopenharmony_ci//       = FL_I2(FL_f1, 0.1) + FL_f1(0.1 + 0.5)
28617a3babSopenharmony_ci//       = FL_f1(0.1) + FL_f1(0.1 + 0.2) + FL_f1(0.1 + 0.5)
29617a3babSopenharmony_ci//       = 0.1*0.1 + 0.3*0.3 + 0.6*0.6
30617a3babSopenharmony_ci//       = 0.46
31