# 2.11BSD#431 - /usr/src/usr.sbin/ntp/man/loop.c

##### Functions

    main              X

##### Variables

    Kf                X
    Kg                X
    Kh                X
    S                 X
    T                 X
    U                 X
    a                 X
    c                 X
    d                 X
    f                 X
    filt              X
    freq              X
    g                 X
    h                 X
    i                 X
    n                 X
    ns                X
    offset            X
    poll              X
    q                 X
    t                 X
    x                 X
    z                 X

##### Macros

    DAY               X
    DMAX              X
    FMAX              X
    PI                X

       1: /*
       2: ***********************************************************************
       3: * Program to simulate NTP phase-lock loop                             *
       4: ***********************************************************************
       5: */
       6: #include <stdio.h>
       7: #include <ctype.h>
       8: #include <math.h>
       9: /*
      10: Parameters
      11: */
      12: #define FMAX 8                  /* max filter size */
      13: #define DAY 86400               /* one day of seconds */
      14: #define DMAX .128               /* max clock aperture */
      15: #define PI 3.1415926535         /* the real thing */
      16: /*
      17: Function declarations
      18: */
      19: extern double pow(double, double);
      20: /*
      21: Global declarations
      22: */
      23: double Kf = 1024;               /* frequency weight */
      24: double Kg = 256;                /* phase weight */
      25: double Kh = 256;                /* compliance weight */
      26: double S = 16;                  /* compliance maximum */
      27: double T = 262144;              /* compliance factor */
      28: double U = 4;                   /* adjustment interval */
      29: double poll = 64;               /* poll interval */
      30: ;
      31: double f = 0;                   /* frequency error */
      32: double g = 0;                   /* phase error */
      33: double h = 0;                   /* compliance */
      34: double c = 0;                   /* clock error */
      35: double d;                       /* current filter output */
      36: double filt[FMAX];              /* clock filter */
      37: ;
      38: double offset = .01;             /* initial phase offset */
      39: double freq = 10e-6;             /* initial frequency offset */
      40: ;
      41: double t;                       /* current time */
      42: double q, a, x, z;              /* temporaries */
      43: int ns = 0;                     /* reset counter */
      44: int n,i;                        /* integer temporary */
      45: /*
      46: Main program
      47: */
      48: main() {
      49:     n = poll/U; q = 1-1/Kg; q = ((pow(q,n)-1)/(q-1))/Kg;
      50:     ns = 0; x = 0; z = 8;
      51:         for (t = 0; t < 2*DAY; t += poll) {
      52:         for (i = FMAX-1; i > 0; i--) filt[i] = filt[i-1];
      53:         filt[0] = (offset-c-freq*t); d = filt[FMAX-1];
      54:         if (fabs(d) >= DMAX) {
      55:             ns++; c = c+d;
      56:             for (i = 0; i < FMAX; i++) filt[i] = 0;
      57:             printf("Reset %5.0f\n", d*1000);
      58:             }
      59:         a = S-T*fabs(h); if (a<1) a=1;
      60:         h = h+(d-h)/Kh;
      61:         f = f+d/(a*poll);
      62:         g = d*q; c = c+g+(poll/(U*Kf))*f;
      63:
      64:         printf("%8.2f%8.2f%8.2f%8.2f%8.2f   %8.2e",
      65:         t/60, offset*1000, d*1000, (f/(U*Kf)+freq)*1e6,
      66:         h*1000, a);
      67:         printf("\n");
      68:         }
      69:     return (0);
      70:     }

#### Defined functions

main defined in line 48; never used

#### Defined variables

Kf defined in line 23; used 2 times

- in line 62-65(2)

Kg defined in line 24; used 2 times

- in line 49(2)

Kh defined in line 25; used 1 times

- in line 60

S defined in line 26; used 1 times

- in line 59

T defined in line 27; used 1 times

- in line 59

U defined in line 28; used 3 times

- in line 49, 62-65(2)

a defined in line 42; used 5 times

- in line 59-66(5)

c defined in line 34; used 5 times

- in line 53-55(3), 62(2)

d defined in line 35; used 8 times

- in line 53-65(8)

f defined in line 31; used 4 times

- in line 61-65(4)

filt defined in line 36; used 5 times

- in line 52-56(5)

freq defined in line 39; used 2 times

- in line 53, 65

g defined in line 32; used 2 times

- in line 62(2)

h defined in line 33; used 5 times

- in line 59-60(4), 66

i defined in line 44; used 9 times

- in line 52-56(9)

n defined in line 44; used 2 times

- in line 49(2)

ns defined in line 43; used 2 times

- in line 50-55(2)

offset defined in line 38; used 2 times

- in line 53, 65

poll defined in line 29; used 4 times

- in line 49-51(2), 61-62(2)

q defined in line 42; used 5 times

- in line 49(4), 62

t defined in line 41; used 5 times

- in line 51-53(4), 65

x defined in line 42; used 1 times

- in line 50

z defined in line 42; used 1 times

- in line 50

#### Defined macros

DAY defined in line 13; used 1 times

- in line 51

DMAX defined in line 14; used 1 times

- in line 54

FMAX defined in line 12; used 4 times

- in line 36, 52-56(3)

PI defined in line 15; never used

Last modified: 1989-03-31 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1258 |