/* @(#)Copyright (c), 1987, 1993 StatSci, Inc.  All rights reserved. */
static char whatssi[] = "@(#)quantum.c version 3.11 created 3/12/93 ";

#include <stdlib.h>

quantum(N, mm, DD, kk, dd)
long *N, *mm, *DD, *kk, *dd;
{
	int k = *kk, D = *DD, m = *mm, d, i, nout;

	for(i = 0; i <= k; i++)
		dd[i] = 0;
	for(d = 1; d <= D; d++) { /* count the outliers */
		nout = 0;
		for(i = 0; i < m; i++) {
			int n = round((int)N[i]*d, D);
			nout += 2*abs(n*D - (int)N[i]*d) > d;
			if(nout > k) break;
		}
		if(nout > k || dd[nout] > 0) continue;
		k = nout;
		dd[k] = d;
		if(k == 0) break;
	}
}

round(n, d)
int n, d;
{
	double x = (double)n/d;
	return((int)(x+0.5));
}
