示例#1
0
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;
}