iproute2/netem/pareto.c
<<
>>
Prefs
   1/*
   2 * Pareto distribution table generator
   3 * Taken from the uncopyrighted NISTnet code.
   4 */
   5#include <stdio.h>
   6#include <stdlib.h>
   7#include <math.h>
   8#include <limits.h>
   9
  10#include <linux/types.h>
  11#include <linux/pkt_sched.h>
  12
  13static const double a=3.0;
  14#define TABLESIZE       16384
  15#define TABLEFACTOR     NETEM_DIST_SCALE
  16
  17int
  18main(int argc, char **argv)
  19{
  20        int i, n;
  21        double dvalue;
  22
  23        printf("# This is the distribution table for the pareto distribution.\n");
  24
  25        for (i = 65536, n = 0; i > 0; i -= 16) {
  26                dvalue = (double)i/(double)65536;
  27                dvalue = 1.0/pow(dvalue, 1.0/a);
  28                dvalue -= 1.5;
  29                dvalue *= (4.0/3.0)*(double)TABLEFACTOR;
  30                if (dvalue > 32767)
  31                        dvalue = 32767;
  32
  33                printf(" %d", (int)rint(dvalue));
  34                if (++n == 8) {
  35                        putchar('\n');
  36                        n = 0;
  37                }
  38        }
  39
  40        return 0;
  41}
  42