SPAN_DECLARE(float) vec_circular_dot_prodf(const float x[], const float y[], int n, int pos) { float z; z = vec_dot_prodf(&x[pos], &y[0], n - pos); z += vec_dot_prodf(&x[0], &y[n - pos], pos); return z; }
static int test_vec_dot_prodf(void) { int i; float x[100]; float y[100]; float zsa; float zsb; float ratio; printf("Testing vec_dot_prodf()\n"); for (i = 0; i < 99; i++) { x[i] = rand(); y[i] = rand(); } for (i = 1; i < 99; i++) { zsa = vec_dot_prodf(x, y, i); zsb = vec_dot_prodf_dumb(x, y, i); ratio = zsa/zsb; if (ratio < 0.9999f || ratio > 1.0001f) { printf("vec_dot_prodf() - %e %e\n", zsa, zsb); printf("Tests failed\n"); exit(2); } } return 0; }