#include <stdlib.h>
#include <string.h>

void *calloc1(size_t nmemb, size_t size)
{
	return calloc(nmemb,size);
}

void *calloc2(size_t nmemb, size_t size)
{
	return memset(malloc(nmemb*size),0,nmemb*size);
}

void *calloc3(size_t nmemb, size_t size)
{
	size_t *d = (size_t *)malloc(nmemb*size);
	size_t clearsize = nmemb*size;
	size_t nclears = clearsize/sizeof(size_t);
	if (nclears > 9)
		memset(d,0,clearsize);
	else {
		*(d+0) = 0;
		*(d+1) = 0;
		*(d+2) = 0;
		if (nclears > 4) {
			*(d+3) = 0;
			*(d+4) = 0;
			if (nclears > 6) {
				*(d+5) = 0;
				*(d+6) = 0;
				if (nclears > 8) {
					*(d+7) = 0;
					*(d+8) = 0;
				}
			}
		}
	}
	return d;
}

