⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mymath.c

📁 自己做的常用库和实现的数据结构。public domain.
💻 C
字号:
#include "my.h"/* Get the medium value among all int type para(s). */int imed(size_t n, ...){	va_list p;	size_t i;	int t, *q, *head = mem('m', n * sizeof(int));	q = head;	va_start(p, n);	for(i=0; i<n; i++)		*q++ = va_arg(p, int);	va_end(p);	t = *( (int *)medium(1, head, n, sizeof(int), icmpa));	free(head);	return t;}/* Get the medium value among all long type para(s). */int lmed(size_t n, ...){	va_list p;	size_t i;	long t, *q, *head = mem('m', n * sizeof(long));	q = head;	va_start(p, n);	for(i=0; i<n; i++)		*q++ = va_arg(p, long);	va_end(p);	t = *( (long *)medium(1, head, n, sizeof(long), lcmpa));	return t;}#if defined(__ISOC) && (__ISOC >= 1999)/* Get the medium value among all long long type para(s). */int llmed(size_t n, ...){	va_list p;	size_t i;	long long t, *q, *head = mem('m', n * sizeof(long long));	q = head;	va_start(p, n);	for(i=0; i<n; i++)		*q++ = va_arg(p, long long);	va_end(p);	t = *( (long long *)medium(1, head, n, sizeof(long long), llcmpa));	return t;}#endif/* Sum all int type para(s). */int isum(size_t n, ...){	va_list p;	size_t i;	int sum=0;	va_start(p, n);	for(i=0; i<n; i++)		sum += va_arg(p, int);	va_end(p);	return sum;}/* Sum all long type para(s). */long lsum(size_t n, ...){	va_list p;	size_t i;	long sum=0L;	va_start(p, n);	for(i=0; i<n; i++)		sum += va_arg(p, long);	va_end(p);	return sum;}#if defined(__ISOC) && (__ISOC >= 1999)/* Sum all long long type para(s). */long long llsum(size_t n, ...){	va_list p;	size_t i;	long long sum=0LL;	va_start(p, n);	for(i=0; i<n; i++)		sum += va_arg(p, long long);	va_end(p);	return sum;}#endif/* Find the max value among all int type para(s). */int imax(size_t n, ...){	va_list p;	size_t i;	int t,max=INT_MIN;	va_start(p, n);	for(i=0; i<n; i++) {		if( (t = va_arg(p, int)) > max )				max = t;	}	va_end(p);	return max;}/* Find the max value among all long type para(s). */long lmax(size_t n, ...){	va_list p;	size_t i;	long t,max=LONG_MIN;	va_start(p, n);	for(i=0; i<n; i++) {		if( (t = va_arg(p, long)) > max )				max = t;	}	va_end(p);	return max;}#if defined(__ISOC) && (__ISOC >= 1999)/* Find the max value among all long long type para(s). */long long llmax(size_t n, ...){	va_list p;	size_t i;	long long t,max=LLONG_MIN;	va_start(p, n);	for(i=0; i<n; i++) {		if( (t = va_arg(p, long long)) > max )				max = t;	}	va_end(p);	return max;}#endif/* Find the min value among all int type para(s). */int imin(size_t n, ...){	va_list p;	size_t i;	int t,min=INT_MAX;	va_start(p, n);	for(i=0; i<n; i++) {		if( (t = va_arg(p, int)) < min )				min = t;	}	va_end(p);	return min;}/* Find the min value among all long type para(s). */long lmin(size_t n, ...){	va_list p;	size_t i;	long t,min=LONG_MAX;	va_start(p, n);	for(i=0; i<n; i++) {		if( (t = va_arg(p, long)) < min )				min = t;	}	va_end(p);	return min;}#if defined(__ISOC) && (__ISOC >= 1999)/* Find the min value among all long long type para(s). */long long llmin(size_t n, ...){	va_list p;	size_t i;	long long t,min=LLONG_MAX;	va_start(p, n);	for(i=0; i<n; i++) {		if( (t = va_arg(p, long long)) < min )				min = t;	}	va_end(p);	return min;}#endif/* Sum = para1*para2*paraN, all int type... */int imply(size_t n, ...){	va_list p;	size_t i;	int sum=1;	va_start(p, n);	for(i=0; i<n; i++) {		sum *= va_arg(p, int);	}	va_end(p);	return sum;}/* Sum = para1*para2*paraN, all long type... */long lmply(size_t n, ...){	va_list p;	size_t i;	long sum=1L;	va_start(p, n);	for(i=0; i<n; i++) {		sum *= va_arg(p, long);	}	va_end(p);	return sum;}#if defined(__ISOC) && (__ISOC >= 1999)/* Sum = para1*para2*paraN, all long long type... */long long llmply(size_t n, ...){	va_list p;	size_t i;	long long sum=1LL;	va_start(p, n);	for(i=0; i<n; i++) {		sum *= va_arg(p, long long);	}	va_end(p);	return sum;}#endif/* Sum of arithmetic progression array. */double dsumarpr(double a1, double d, size_t n) {	return n*a1 + n*(n-1)*d/2.0;}/* Sum of arithmetic progression array. */int isumarpr(int a1, int d, size_t n) {	return n*a1 + n*(n-1)*d/2;}/* Sum of arithmetic progression array. */long lsumarpr(long a1, long d, size_t n) {	return n*a1 + n*(n-1)*d/2;}#if defined(__ISOC) && (__ISOC >= 1999)/* Sum of arithmetic progression array. */long long llsumarpr(long long a1, long long d, size_t n) {	return n*a1 + n*(n-1)*d/2;}#endif/* Sum of geometric proportion array. */double dsumgepr(double a1, double q, size_t n) {	if((int)q == 1)		return a1;	return a1*(1.0 - pow(q,n))/(1.0-q);}/* Sum of geometric proportion array. */int isumgepr(int a1, int q, size_t n) {	size_t i;		long sum=a1;	for(i=1; i<n; i++,q *= q)		sum += a1*q;	return sum;}/* Sum of geometric proportion array. */long lsumgepr(long a1, long q, size_t n) {	size_t i;		long sum=a1;	for(i=1; i<n; i++,q *= q)		sum += a1*q;	return sum;}#if defined(__ISOC) && (__ISOC >= 1999)/* Sum of geometric proportion array. */long long llsumgepr(long long a1, long long q, size_t n) {	size_t i;		long long sum=a1;	for(i=1; i<n; i++,q *= q)		sum += a1*q;	return sum;}#endif/* Check if n is a prime number or not. */bool isprime(size_t n){	size_t i;	for(i=2; i <= (size_t)sqrt(n + 1); i++)		if(! n%i)			return false;		return true;}/* Return the ceil prime value of n. */size_t ceilprime(double n){	size_t i = (size_t)ceil(n);	for(;;i++)		if(isprime(i))			return i;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -