1 
2 double func(double a);
3 double func2(double a,double b);
4 
assign(void)5 double assign(void) { double a = 2.5; return a; }
assign2(void)6 double assign2(void) { double a; a = 2.5; func(a); return a; }
assign_via_pointer(double * a)7 double assign_via_pointer(double *a) { *a = 10.0; }
funccall(double a)8 double funccall(double a) { return func(a); }
9 
funcptr(double a)10 double funcptr(double a) {
11     double (*ptr)(double,double) = func2;
12 
13     return ptr(a,1.0);
14 }
15 
add(double a,double b)16 double add(double a, double b) { return a + b; }
sub(double a,double b)17 double sub(double a, double b) { return a - b; }
mul(double a,double b)18 double mul(double a, double b) { return a * b; }
div(double a,double b)19 double div(double a, double b) { return a / b; }
20 
eq(double a,double b)21 int eq(double a, double b) { return a == b; }
ne(double a,double b)22 int ne(double a, double b) { return a != b; }
lt(double a,double b)23 int lt(double a, double b) { return a < b; }
le(double a,double b)24 int le(double a, double b) { return a <= b; }
gt(double a,double b)25 int gt(double a, double b) { return a > b; }
ge(double a,double b)26 int ge(double a, double b) { return a >= b; }
27 
neg(double a)28 double neg(double a) { return -a; }
29 
inverse(double a)30 double inverse(double a) { return 1/a; }
31 
cschar(signed char c)32 double cschar(signed char c) { return (double) c; }
cuchar(unsigned char c)33 double cuchar(unsigned char c) { return (double) c; }
csint(signed int i)34 double csint(signed int i) { return (double) i; }
cuint(unsigned int i)35 double cuint(unsigned int i) { return (double) i; }
cslong(signed long i)36 double cslong(signed long i) { return (double) i; }
culong(unsigned long i)37 double culong(unsigned long i) { return (double) i; }
38