32 #include <fors_double.h>
34 #include <fors_utils.h>
42 #define LIST_ELEM double
57 double_duplicate(
const double *d)
59 double *dp = cpl_malloc(
sizeof(*dp));
69 double_delete(
double **d)
72 cpl_free(*d); *d = NULL;
83 double_eval(
const double *d,
void *data)
101 double_subtract(
double x,
double dx,
105 assure( error != NULL,
return 0, NULL );
107 assure( dx >= 0,
return 0, NULL );
108 assure( dy >= 0,
return 0, NULL );
110 *error = sqrt( dx*dx + dy*dy );
129 double_divide(
double x,
double dx,
133 assure( error != NULL,
return 0, NULL );
135 assure( y*y > 0,
return 0, NULL );
136 assure( dx >= 0,
return 0, NULL );
137 assure( dy >= 0,
return 0, NULL );
139 *error = ( dx*dx + dy*dy * x*x / (y*y) ) / (y*y);
140 *error = sqrt(*error);
160 double_atan2(
double y,
double dy,
164 assure( error != NULL,
return 0, NULL );
165 assure( dy >= 0,
return 0, NULL );
166 assure( dx >= 0,
return 0, NULL );
167 assure( (x*x + y*y)*(x*x + y*y) > 0,
return 0, NULL );
170 *error = (dy*dy*x*x + dx*dx*y*y) / ((x*x + y*y)*(x*x + y*y));
171 *error = sqrt(*error);
173 assert( *error >= 0 );