1 /*
2 * DO NOT MODIFY THIS FILE.
3 * This file generated from similar file t/ffi/float.c
4 * all instances of "float" have been changed to "double"
5 */
6 #include "libtest.h"
7
8 EXTERN double
double_add(double a,double b)9 double_add(double a, double b)
10 {
11 return a + b;
12 }
13
14 EXTERN double*
double_inc(double * a,double b)15 double_inc(double *a, double b)
16 {
17 static double keeper;
18 keeper = *a += b;
19 return &keeper;
20 }
21
22 EXTERN double
double_sum(double list[10])23 double_sum(double list[10])
24 {
25 int i;
26 double total;
27 for(i=0,total=0; i<10; i++)
28 {
29 total += list[i];
30 }
31 return total;
32 }
33
34 EXTERN double
double_sum2(double * list,size_t size)35 double_sum2(double *list, size_t size)
36 {
37 int i;
38 double total;
39 for(i=0,total=0; i<size; i++)
40 {
41 total += list[i];
42 }
43 return total;
44 }
45
46 EXTERN void
double_array_inc(double list[10])47 double_array_inc(double list[10])
48 {
49 int i;
50 for(i=0; i<10; i++)
51 {
52 list[i]++;
53 }
54 }
55
56 EXTERN double *
double_static_array(void)57 double_static_array(void)
58 {
59 static double foo[] = { -5.5, 5.5, -10, 10, -15.5, 15.5, 20, -20, 25.5, -25.5 };
60 return foo;
61 }
62
63 typedef double (*closure_t)(double);
64 static closure_t my_closure;
65
66 EXTERN void
double_set_closure(closure_t closure)67 double_set_closure(closure_t closure)
68 {
69 my_closure = closure;
70 }
71
72 EXTERN double
double_call_closure(double value)73 double_call_closure(double value)
74 {
75 return my_closure(value);
76 }
77