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