00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __SYS_MathPermute__
00021 #define __SYS_MathPermute__
00022
00023 #ifndef __SYS_Math__
00024 #error SYS_Math must be included prior to including this file
00025 #endif
00026
00027 #define ARGS_2(fname) \
00028 static inline fpreal64 fname(fpreal32 a, fpreal64 b) \
00029 { return fname((fpreal64)a, b); } \
00030 static inline fpreal64 fname(fpreal64 a, fpreal32 b) \
00031 { return fname(a, (fpreal64)b); } \
00032
00033 #define ARGS_3(fname) \
00034 static inline fpreal64 fname(fpreal32 a, fpreal64 b, fpreal64 c) \
00035 { return fname((fpreal64)a, b, c); } \
00036 static inline fpreal64 fname(fpreal64 a, fpreal32 b, fpreal64 c) \
00037 { return fname(a, (fpreal64)b, c); } \
00038 static inline fpreal64 fname(fpreal32 a, fpreal32 b, fpreal64 c) \
00039 { return fname((fpreal64)a, (fpreal64)b, c); } \
00040 static inline fpreal64 fname(fpreal64 a, fpreal64 b, fpreal32 c) \
00041 { return fname(a, b, (fpreal64)c); } \
00042 static inline fpreal64 fname(fpreal32 a, fpreal64 b, fpreal32 c) \
00043 { return fname((fpreal64)a, b, (fpreal64)c); } \
00044 static inline fpreal64 fname(fpreal64 a, fpreal32 b, fpreal32 c) \
00045 { return fname(a, (fpreal64)b, (fpreal64)c); }
00046
00047 #define ARGS_4(fname) \
00048 static inline fpreal64 fname(fpreal64 a,fpreal32 b,fpreal32 c,fpreal32 d) \
00049 { return fname(a, (fpreal64)b, (fpreal64)c, (fpreal64)d); } \
00050 static inline fpreal64 fname(fpreal32 a,fpreal64 b,fpreal32 c,fpreal32 d) \
00051 { return fname((fpreal64)a, b, (fpreal64)c, (fpreal64)d); } \
00052 static inline fpreal64 fname(fpreal64 a,fpreal64 b,fpreal32 c,fpreal32 d) \
00053 { return fname(a, b, (fpreal64)c, (fpreal64)d); } \
00054 static inline fpreal64 fname(fpreal32 a,fpreal32 b,fpreal64 c,fpreal32 d) \
00055 { return fname((fpreal64)a, (fpreal64)b, c, (fpreal64)d); } \
00056 static inline fpreal64 fname(fpreal64 a,fpreal32 b,fpreal64 c,fpreal32 d) \
00057 { return fname(a, (fpreal64)b, c, (fpreal64)d); } \
00058 static inline fpreal64 fname(fpreal32 a,fpreal64 b,fpreal64 c,fpreal32 d) \
00059 { return fname((fpreal64)a, b, c, (fpreal64)d); } \
00060 static inline fpreal64 fname(fpreal64 a,fpreal64 b,fpreal64 c,fpreal32 d) \
00061 { return fname(a, b, c, (fpreal64)d); } \
00062 static inline fpreal64 fname(fpreal32 a,fpreal32 b,fpreal32 c,fpreal64 d) \
00063 { return fname((fpreal64)a, (fpreal64)b, (fpreal64)c, d); } \
00064 static inline fpreal64 fname(fpreal64 a,fpreal32 b,fpreal32 c,fpreal64 d) \
00065 { return fname(a, (fpreal64)b, (fpreal64)c, d); } \
00066 static inline fpreal64 fname(fpreal32 a,fpreal64 b,fpreal32 c,fpreal64 d) \
00067 { return fname((fpreal64)a, b, (fpreal64)c, d); } \
00068 static inline fpreal64 fname(fpreal64 a,fpreal64 b,fpreal32 c,fpreal64 d) \
00069 { return fname(a, b, (fpreal64)c, d); } \
00070 static inline fpreal64 fname(fpreal32 a,fpreal32 b,fpreal64 c,fpreal64 d) \
00071 { return fname((fpreal64)a, (fpreal64)b, c, d); } \
00072 static inline fpreal64 fname(fpreal64 a,fpreal32 b,fpreal64 c,fpreal64 d) \
00073 { return fname(a, (fpreal64)b, c, d); } \
00074 static inline fpreal64 fname(fpreal32 a,fpreal64 b,fpreal64 c,fpreal64 d) \
00075 { return fname((fpreal64)a, b, c, d); }
00076
00077 ARGS_2(SYSmin)
00078 ARGS_3(SYSmin)
00079 ARGS_4(SYSmin)
00080 ARGS_2(SYSmax)
00081 ARGS_3(SYSmax)
00082 ARGS_4(SYSmax)
00083 ARGS_3(SYSavg)
00084 ARGS_4(SYSavg)
00085
00086 ARGS_3(SYSclamp)
00087 ARGS_3(SYSlerp)
00088 ARGS_3(SYSsmooth)
00089 ARGS_4(SYSsmooth)
00090
00091
00092
00093
00094 ARGS_2(SYSatan)
00095 ARGS_2(SYSatan2)
00096 ARGS_2(SYShypot)
00097
00098 ARGS_2(SYSroundAngle)
00099
00100 static inline bool
00101 SYSequalZero(fpreal32 v, fpreal64 tol)
00102 { return SYSequalZero(v, (fpreal32)tol); }
00103
00104 static inline bool
00105 SYSequalZero(fpreal64 v, fpreal32 tol)
00106 { return SYSequalZero(v, (fpreal64)tol); }
00107
00108 #define CMP_PERM(fname) \
00109 static inline bool fname(fpreal32 a, fpreal32 b, fpreal64 tol) \
00110 { return fname(a, b, (fpreal32)tol); } \
00111 static inline bool fname(fpreal64 a, fpreal64 b, fpreal32 tol) \
00112 { return fname(a, b, (fpreal64)tol); } \
00113 static inline bool fname(fpreal32 a, fpreal64 b, fpreal32 tol) \
00114 { return fname((fpreal64)a, b, (fpreal64)tol); } \
00115 static inline bool fname(fpreal64 a, fpreal32 b, fpreal32 tol) \
00116 { return fname(a, (fpreal64)b, (fpreal64)tol); } \
00117 static inline bool fname(fpreal32 a, fpreal64 b, fpreal64 tol=FP64_TOLERANCE) \
00118 { return fname((fpreal64)a, b, tol); } \
00119 static inline bool fname(fpreal64 a, fpreal32 b, fpreal64 tol=FP64_TOLERANCE) \
00120 { return fname(a, (fpreal64)b, tol); } \
00121 static inline bool fname(fpreal32 a, int b, fpreal32 tol=FP32_TOLERANCE) \
00122 { return fname(a, (fpreal32)b, tol); } \
00123 static inline bool fname(fpreal32 a, int b, fpreal64 tol) \
00124 { return fname((fpreal64)a, (fpreal64)b, tol); } \
00125 static inline bool fname(fpreal64 a, int b, fpreal64 tol=FP64_TOLERANCE) \
00126 { return fname(a, (fpreal64)b, tol); } \
00127 static inline bool fname(int a, fpreal32 b, fpreal32 tol=FP32_TOLERANCE) \
00128 { return fname((fpreal32)a, b, tol); } \
00129 static inline bool fname(int a, fpreal32 b, fpreal64 tol) \
00130 { return fname((fpreal64)a, (fpreal64)b, tol); } \
00131 static inline bool fname(int a, fpreal64 b, fpreal64 tol=FP64_TOLERANCE) \
00132 { return fname((fpreal64)a, b, tol); }
00133
00134 CMP_PERM(SYSisEqual)
00135 CMP_PERM(SYSisGreater)
00136 CMP_PERM(SYSisGreaterOrEqual)
00137 CMP_PERM(SYSisLess)
00138 CMP_PERM(SYSisLessOrEqual)
00139
00140 #undef CMP_PERM
00141 #undef ARGS_2
00142 #undef ARGS_3
00143 #undef ARGS_4
00144
00145 #endif