42 lines
779 B
Plaintext
42 lines
779 B
Plaintext
/* $RCSId: $ */
|
|
|
|
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);
|
|
}
|