22double _statistics[10];
26 return rand()/(double) RAND_MAX;
31 for (
size_t i = 0; i < n; i++) y[i] = x[i] - y[i];
37 for (i = 0; i < n; i++) res += x[i]*y[i];
43 for (
size_t i = 0; i < n; i++) y[i] = x[i] + beta * y[i];
49 for (
size_t i = 0; i < n; i++) x[i] += beta * y[i];
55 if (!*u) *u =
gv_calloc(m,
sizeof(
float));
57 for (
size_t i = 0; i < m; i++) {
72 const size_t *
const ss1 =
s1;
73 const size_t *
const ss2 = s2;
74 const double *
const v = values;
76 if (v[*ss1] > v[*ss2]) {
78 }
else if (v[*ss1] < v[*ss2]) {
85 size_t *
const p =
gv_calloc(n,
sizeof(
size_t));
87 for (
size_t i = 0; i < n; i++) {
112 for (i = 0; i <
dim; i++)
dist += (p1[i] - p2[i])*(p1[i] - p2[i]);
119 for (
size_t i = strlen(
s); ; i--) {
120 if (first &&
s[i] ==
'.') {
124 if (
s[i] ==
'/')
return &
s[i+1];
Memory allocation wrappers that exit on failure.
static void * gv_calloc(size_t nmemb, size_t size)
static double dist(int dim, double *x, double *y)
size_t * vector_ordering(size_t n, double *v)
static int comp_ascend(const void *s1, const void *s2, void *values)
double * vector_saxpy(size_t n, double *x, double *y, double beta)
y = x+beta*y
char * strip_dir(char *s)
double distance(double *x, int dim, int i, int j)
double vector_product(int n, double *x, double *y)
double * vector_subtract_to(size_t n, double *x, double *y)
y = x-y
double * vector_saxpy2(size_t n, double *x, double *y, double beta)
x = x+beta*y
void vector_float_take(size_t n, float *v, size_t m, size_t *p, float **u)
double distance_cropped(double *x, int dim, int i, int j)
double point_distance(double *p1, double *p2, int dim)
NEATOPROCS_API void s1(graph_t *, node_t *)
qsort with carried along context
static void gv_sort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *, void *), void *arg)
qsort with an extra state parameter, ala qsort_r