Beispiel #1
0
void compute_metrics(const Ty* X1, const Ty* X2, Ty* M, int d, int n1, int n2, int opcode, const mxArray *prhs[])
{
    switch (opcode)
    {
        case 1:
            cityblock(X1, X2, M, d, n1, n2);
            break;
        case 2:
            mindiff(X1, X2, M, d, n1, n2);
            break;
        case 3:
            maxdiff(X1, X2, M, d, n1, n2);
            break;
        case 4:
            minkowski(X1, X2, M, d, n1, n2, *((const Ty*)mxGetData(prhs[3])));
            break;
        case 5:
            intersect(X1, X2, M, d, n1, n2);
            break;
        case 6:
            chisq(X1, X2, M, d, n1, n2);
            break;
        case 7:
            kldiv(X1, X2, M, d, n1, n2);
            break;
        case 8:
            jeffrey(X1, X2, M, d, n1, n2);
            break;
    }
}
Beispiel #2
0
struct cidr *
range2cidrlist(struct cidr *list, int *cli, int *cls, u_int32_t start,
    u_int32_t end)
{
	u_int8_t maxsize, diff;
	struct cidr *tmp;

	while (end >= start) {
		maxsize = maxblock(start, 32);
		diff = maxdiff(start, end);

		maxsize = MAX(maxsize, diff);
		if (*cls <= *cli + 1) {		/* one extra for terminator */
			tmp = realloc(list, (*cls + 32) * sizeof(struct cidr));
			if (tmp == NULL)
				errx(1, "malloc failed");
			list = tmp;
			*cls += 32;
		}
		list[*cli].addr = start;
		list[*cli].bits = maxsize;
		(*cli)++;
		start = start + (1 << (32 - maxsize));
	}
	return (list);
}
struct cidr *
range2cidrlist(u_int32_t start, u_int32_t end)
{
	struct cidr *list = NULL;
	size_t cs = 0, cu = 0;
	u_int8_t maxsize, diff;
	struct cidr *tmp;

	while (end >= start) {
		maxsize = maxblock(start, 32);
		diff = maxdiff(start, end);

		maxsize = MAX(maxsize, diff);
		if (cs <= cu + 1) {		/* one extra for terminator */
			tmp = realloc(list, (cs + 32) * sizeof(struct cidr));
			if (tmp == NULL)
				errx(1, "malloc failed");
			list = tmp;
			cs += 32;
		}
		list[cu].addr = start;
		list[cu].bits = maxsize;
		cu++;
		list[cu].addr = 0;
		list[cu].bits = 0;
		start = start + (1 << (32 - maxsize));
	}
	return (list);
}
int main(void) {
	int test[] = {12,-356,18,9,-10, 35};
	int size = 6;

	printf("max diff: %d\n", maxdiff(test,size));

	return 0;
}