~ubuntu-branches/ubuntu/trusty/libc++/trusty

« back to all changes in this revision

Viewing changes to libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval.pass.cpp

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-04-24 09:32:41 UTC
  • mfrom: (1.1.3)
  • Revision ID: package-import@ubuntu.com-20130424093241-80ospffb33lml11k
Tags: 1.0~svn180177-1~exp1
* New upstream release
* Minimal clang version (>= 3.2)
* Standards-Version updated to version 3.9.4

Show diffs side-by-side

added added

removed removed

Lines of Context:
177
177
        }
178
178
        var /= u.size();
179
179
        double dev = std::sqrt(var);
180
 
        skew /= u.size() * dev * var;
181
 
        kurtosis /= u.size() * var * var;
182
 
        kurtosis -= 3;
 
180
        // In this case:
 
181
        //   skew     computes to 0./0. == nan
 
182
        //   kurtosis computes to 0./0. == nan
 
183
        //   x_skew     == inf
 
184
        //   x_kurtosis == inf
 
185
        //   These tests are commented out because UBSan warns about division by 0
 
186
//        skew /= u.size() * dev * var;
 
187
//        kurtosis /= u.size() * var * var;
 
188
//        kurtosis -= 3;
183
189
        double x_mean = d.t() * d.p();
184
190
        double x_var = x_mean*(1-d.p());
185
 
        double x_skew = (1-2*d.p()) / std::sqrt(x_var);
186
 
        double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
 
191
//        double x_skew = (1-2*d.p()) / std::sqrt(x_var);
 
192
//        double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
187
193
        assert(mean == x_mean);
188
194
        assert(var == x_var);
 
195
//        assert(skew == x_skew);
 
196
//        assert(kurtosis == x_kurtosis);
189
197
    }
190
198
    {
191
199
        typedef std::binomial_distribution<> D;
215
223
        }
216
224
        var /= u.size();
217
225
        double dev = std::sqrt(var);
218
 
        skew /= u.size() * dev * var;
219
 
        kurtosis /= u.size() * var * var;
220
 
        kurtosis -= 3;
 
226
        // In this case:
 
227
        //   skew     computes to 0./0. == nan
 
228
        //   kurtosis computes to 0./0. == nan
 
229
        //   x_skew     == -inf
 
230
        //   x_kurtosis == inf
 
231
        //   These tests are commented out because UBSan warns about division by 0
 
232
//        skew /= u.size() * dev * var;
 
233
//        kurtosis /= u.size() * var * var;
 
234
//        kurtosis -= 3;
221
235
        double x_mean = d.t() * d.p();
222
236
        double x_var = x_mean*(1-d.p());
223
 
        double x_skew = (1-2*d.p()) / std::sqrt(x_var);
224
 
        double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
 
237
//        double x_skew = (1-2*d.p()) / std::sqrt(x_var);
 
238
//        double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
225
239
        assert(mean == x_mean);
226
240
        assert(var == x_var);
 
241
//        assert(skew == x_skew);
 
242
//        assert(kurtosis == x_kurtosis);
227
243
    }
228
244
    {
229
245
        typedef std::binomial_distribution<> D;
333
349
        }
334
350
        var /= u.size();
335
351
        double dev = std::sqrt(var);
336
 
        skew /= u.size() * dev * var;
337
 
        kurtosis /= u.size() * var * var;
338
 
        kurtosis -= 3;
 
352
        // In this case:
 
353
        //   skew     computes to 0./0. == nan
 
354
        //   kurtosis computes to 0./0. == nan
 
355
        //   x_skew     == inf
 
356
        //   x_kurtosis == inf
 
357
        //   These tests are commented out because UBSan warns about division by 0
 
358
//        skew /= u.size() * dev * var;
 
359
//        kurtosis /= u.size() * var * var;
 
360
//        kurtosis -= 3;
339
361
        double x_mean = d.t() * d.p();
340
362
        double x_var = x_mean*(1-d.p());
341
 
        double x_skew = (1-2*d.p()) / std::sqrt(x_var);
342
 
        double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
 
363
//        double x_skew = (1-2*d.p()) / std::sqrt(x_var);
 
364
//        double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
343
365
        assert(mean == x_mean);
344
366
        assert(var == x_var);
 
367
//        assert(skew == x_skew);
 
368
//        assert(kurtosis == x_kurtosis);
345
369
    }
346
370
    {
347
371
        typedef std::binomial_distribution<> D;
371
395
        }
372
396
        var /= u.size();
373
397
        double dev = std::sqrt(var);
374
 
        skew /= u.size() * dev * var;
375
 
        kurtosis /= u.size() * var * var;
376
 
        kurtosis -= 3;
 
398
        // In this case:
 
399
        //   skew     computes to 0./0. == nan
 
400
        //   kurtosis computes to 0./0. == nan
 
401
        //   x_skew     == inf
 
402
        //   x_kurtosis == inf
 
403
        //   These tests are commented out because UBSan warns about division by 0
 
404
//        skew /= u.size() * dev * var;
 
405
//        kurtosis /= u.size() * var * var;
 
406
//        kurtosis -= 3;
377
407
        double x_mean = d.t() * d.p();
378
408
        double x_var = x_mean*(1-d.p());
379
 
        double x_skew = (1-2*d.p()) / std::sqrt(x_var);
380
 
        double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
 
409
//        double x_skew = (1-2*d.p()) / std::sqrt(x_var);
 
410
//        double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
381
411
        assert(mean == x_mean);
382
412
        assert(var == x_var);
 
413
//        assert(skew == x_skew);
 
414
//        assert(kurtosis == x_kurtosis);
383
415
    }
384
416
    {
385
417
        typedef std::binomial_distribution<> D;
409
441
        }
410
442
        var /= u.size();
411
443
        double dev = std::sqrt(var);
412
 
        skew /= u.size() * dev * var;
413
 
        kurtosis /= u.size() * var * var;
414
 
        kurtosis -= 3;
 
444
        // In this case:
 
445
        //   skew     computes to 0./0. == nan
 
446
        //   kurtosis computes to 0./0. == nan
 
447
        //   x_skew     == -inf
 
448
        //   x_kurtosis == inf
 
449
        //   These tests are commented out because UBSan warns about division by 0
 
450
//        skew /= u.size() * dev * var;
 
451
//        kurtosis /= u.size() * var * var;
 
452
//        kurtosis -= 3;
415
453
        double x_mean = d.t() * d.p();
416
454
        double x_var = x_mean*(1-d.p());
417
 
        double x_skew = (1-2*d.p()) / std::sqrt(x_var);
418
 
        double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
 
455
//        double x_skew = (1-2*d.p()) / std::sqrt(x_var);
 
456
//        double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
419
457
        assert(mean == x_mean);
420
458
        assert(var == x_var);
 
459
//        assert(skew == x_skew);
 
460
//        assert(kurtosis == x_kurtosis);
421
461
    }
422
462
}