コード例 #1
0
double VPLDataSet_u32_GetMean(VPLDataSet_u32_t const* dataset)
{
    if (dataset->count == 0) {
        return 0.0;
    } else {
        return U64_TO_DOUBLE(dataset->sum) / U32_TO_DOUBLE(dataset->count);
    }
}
コード例 #2
0
ファイル: TestUtils.c プロジェクト: kstarsinic/lucy
double*
TestUtils_random_f64s(double *buf, size_t count) {
    double *f64s = buf ? buf : (double*)CALLOCATE(count, sizeof(double));
    for (size_t i = 0; i < count; i++) {
        uint64_t num = TestUtils_random_u64();
        f64s[i] = U64_TO_DOUBLE(num) / UINT64_MAX;
    }
    return f64s;
}
コード例 #3
0
double VPLDataSet_u32_GetVariance(VPLDataSet_u32_t const* dataset)
{
    if (dataset->count == 0) {
        return 0.0;
    } else {
        double mean = VPLDataSet_u32_GetMean(dataset);
        /*  # (1/n) * sum((x_i-mean)^2) ==
            # (1/n) * sum(x_i^2 - 2*mean*x_i + mean^2) ==  
            # (1/n) * (sum(x_i^2) - 2*mean*sum(x_i) + mean*mean*sum(1)) ==
            # sum(x_i^2)/n - 2*mean*(mean*n)/n + mean*mean*n/n ==
            # sum(x_i^2)/n - 2*mean*mean + mean*mean ==
        */
        return (U64_TO_DOUBLE(dataset->sum) / U32_TO_DOUBLE(dataset->count)) - 
                (mean * mean);
    }
}