File: s3.nick

package info (click to toggle)
vnc4 4.1.1%2BX4.3.0-31
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 171,548 kB
  • ctags: 288,231
  • sloc: ansic: 2,205,256; cpp: 56,016; sh: 38,092; pascal: 13,773; asm: 12,656; tcl: 9,182; lisp: 7,831; perl: 3,338; makefile: 2,957; yacc: 2,902; objc: 2,698; xml: 2,614; python: 2,383; lex: 1,477; awk: 901; csh: 58; sed: 50
file content (41 lines) | stat: -rw-r--r-- 864 bytes parent folder | download | duplicates (6)
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
31
32
33
34
35
36
37
38
39
40
41
/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3.nick,v 1.1 1999/11/19 13:53:55 hohndel Exp $ */

global f_ref = 14318000;

function s3_clock (m, n, r)
{
    return f_ref * (m + 2) / ((n + 2) * (2 ^ r));
}

function s3_near (f1, f2)
{
    return abs (f1 - f2) < f1 / 10;
}

function s3_clocks (f)
{
    auto    m, n, r, ft;
    auto    dist, min_dist;
    auto    min_m, min_n, min_r;

    min_dist = f / 5;
    for (r = 0; r <= 3; r++)
	for (n = 0; n <= 31; n++)
		for (m = 0; m <= 127; m++)
		{
		    ft = s3_clock (m, n, r);
		    if (s3_near (ft, f))
			printf ("m %d n %d r %d = %d\n",
				m, n, r, ft);
		    dist = abs (f - ft);
		    if (dist < min_dist)
		    {
			min_dist = dist;
			min_m = m;
			min_n = n;
			min_r = r;
		    }
		}
    printf ("m %d n %d r %d f %d dist %d\n",
	    min_m, min_n, min_r, s3_clock(min_m, min_n, min_r), min_dist);
}