📄 mymath.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 + -