summaryrefslogtreecommitdiff
path: root/src/binaryDerivate.c
blob: 6d2dc4a101ad2ec17132906a38d5baf1ad8b5ba1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <math.h>
#include "include/stat_fncs.h"

int BinaryDerivate(int k, int n, BitSequence *epsilon, int epsilon_l)
{
    int i = 0, j = 0;
    int Sn_k = 0;
    int n_k = n - k;
    double V = 0.0, p_value = 0.0, sqrt2 = 1.41421356237309504880;

    for (i = 0; i < k; ++i) {
        for (j = 0; j < epsilon_l - 1; ++j) {
            epsilon[j] = epsilon[j] ^ epsilon[j + 1];
        }
    }

    for (i = 0; i < n_k; ++i) {
        Sn_k += (2 * (int)epsilon[i]) - 1;
    }

    V = fabs(Sn_k) / sqrt(n_k);

    p_value = erfc(fabs(V) / sqrt2);

    if (p_value < ALPHA) {
        return 0;
    } else {
        return 1;
    }
}