[nexuiz-commits] r8690 - in trunk/data/qcsrc: client common menu server warpzonelib

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Feb 28 14:42:42 EST 2010


Author: div0
Date: 2010-02-28 14:42:41 -0500 (Sun, 28 Feb 2010)
New Revision: 8690

Added:
   trunk/data/qcsrc/warpzonelib/mathlib.qc
   trunk/data/qcsrc/warpzonelib/mathlib.qh
Removed:
   trunk/data/qcsrc/common/mathlib.qc
   trunk/data/qcsrc/common/mathlib.qh
Modified:
   trunk/data/qcsrc/client/progs.src
   trunk/data/qcsrc/menu/progs.src
   trunk/data/qcsrc/server/progs.src
Log:
move mathlib into warpzonelib too

Modified: trunk/data/qcsrc/client/progs.src
===================================================================
--- trunk/data/qcsrc/client/progs.src	2010-02-28 19:42:36 UTC (rev 8689)
+++ trunk/data/qcsrc/client/progs.src	2010-02-28 19:42:41 UTC (rev 8690)
@@ -8,10 +8,10 @@
 csqc_builtins.qc
 
 ../warpzonelib/anglestransform.qh
+../warpzonelib/mathlib.qh
 ../warpzonelib/common.qh
 ../warpzonelib/client.qh
 
-../common/mathlib.qh
 ../common/util.qh
 ../common/items.qh
 
@@ -65,8 +65,7 @@
 ../common/mapinfo.qc
 ../common/items.qc
 
-../common/mathlib.qc
-
 ../warpzonelib/anglestransform.qc
+../common/mathlib.qc
 ../warpzonelib/common.qc
 ../warpzonelib/client.qc

Deleted: trunk/data/qcsrc/common/mathlib.qc
===================================================================
--- trunk/data/qcsrc/common/mathlib.qc	2010-02-28 19:42:36 UTC (rev 8689)
+++ trunk/data/qcsrc/common/mathlib.qc	2010-02-28 19:42:41 UTC (rev 8690)
@@ -1,288 +0,0 @@
-/*
-Copyright (c) 2009 Rudolf Polzer
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-int fpclassify(float x)
-{
-	if(isnan(x))
-		return FP_NAN;
-	if(isinf(x))
-		return FP_INFINITE;
-	if(x == 0)
-		return FP_ZERO;
-	return FP_NORMAL;
-}
-int isfinite(float x)
-{
-	return !(isnan(x) || isinf(x));
-}
-int isinf(float x)
-{
-	return (x != 0) && (x + x == x);
-}
-int isnan(float x)
-{
-	return !(x + x == x + x);
-}
-int isnormal(float x)
-{
-	return isfinite(x);
-}
-int signbit(float x)
-{
-	return (x < 0);
-}
-
-float acosh(float x)
-{
-	return log(x + sqrt(x*x - 1));
-}
-float asinh(float x)
-{
-	return log(x + sqrt(x*x + 1));
-}
-float atanh(float x)
-{
-	return 0.5 * log((1+x) / (1-x));
-}
-float cosh(float x)
-{
-	return 0.5 * (exp(x) + exp(-x));
-}
-float sinh(float x)
-{
-	return 0.5 * (exp(x) - exp(-x));
-}
-float tanh(float x)
-{
-	return sinh(x) / cosh(x);
-}
-
-float exp(float x)
-{
-	return pow(M_E, x);
-}
-float exp2(float x)
-{
-	return pow(2, x);
-}
-float expm1(float x)
-{
-	return exp(x) - 1;
-}
-
-vector frexp(float x)
-{
-	vector v;
-	v_z = 0;
-	v_y = ilogb(x) + 1;
-	v_x = x / exp2(v_y);
-	return v;
-}
-int ilogb(float x)
-{
-	return floor(log2(fabs(x)));
-}
-float ldexp(float x, int e)
-{
-	return x * pow(2, e);
-}
-float log10(float x)
-{
-	return log(x) * M_LOG10E;
-}
-float log1p(float x)
-{
-	return log(x + 1);
-}
-float log2(float x)
-{
-	return log(x) * M_LOG2E;
-}
-float logb(float x)
-{
-	return floor(log2(fabs(x)));
-}
-vector modf(float f)
-{
-	return '1 0 0' * (f - trunc(f)) + '0 1 0' * trunc(f);
-}
-
-float scalbn(float x, int n)
-{
-	return x * pow(2, n);
-}
-
-float cbrt(float x)
-{
-	return copysign(pow(fabs(x), 1.0/3.0), x);
-}
-float hypot(float x, float y)
-{
-	return sqrt(x*x + y*y);
-}
-
-float erf(float x)
-{
-	// approximation taken from wikipedia
-	float y;
-	y = x*x;
-	return copysign(sqrt(1 - exp(-y * (1.273239544735163 + 0.14001228868667 * y) / (1 + 0.14001228868667 * y))), x);
-}
-float erfc(float x)
-{
-	return 1.0 - erf(x);
-}
-vector lgamma(float x)
-{
-	// TODO improve accuracy
-	if(!isfinite(x))
-		return fabs(x) * '1 0 0' + copysign(1, x) * '0 1 0';
-	if(x < 1 && x == floor(x))
-		return nan("gamma") * '1 1 1';
-	if(x < 0.1)
-	{
-		vector v;
-		v = lgamma(1.0 - x);
-		// reflection formula:
-		// gamma(1-z) * gamma(z) = pi / sin(pi*z)
-		// lgamma(1-z) + lgamma(z) = log(pi) - log(sin(pi*z))
-		// sign of gamma(1-z) = sign of gamma(z) * sign of sin(pi*z)
-		v_z = sin(M_PI * x);
-		v_x = log(M_PI) - log(fabs(v_z)) - v_x;
-		if(v_z < 0)
-			v_y = -v_y;
-		v_z = 0;
-		return v;
-	}
-	if(x < 1.1)
-		return lgamma(x + 1) - log(x) * '1 0 0';
-	x -= 1;
-	return (0.5 * log(2 * M_PI * x) + x * (log(x) - 1)) * '1 0 0' + '0 1 0';
-}
-float tgamma(float x)
-{
-	vector v;
-	v = lgamma(x);
-	return exp(v_x) * v_y;
-}
-
-float nearbyint(float x)
-{
-	return rint(x);
-}
-float trunc(float x)
-{
-	return (x>=0) ? floor(x) : ceil(x);
-}
-
-float fmod(float x, float y)
-{
-	return x - y * trunc(x / y);
-}
-float remainder(float x, float y)
-{
-	return x - y * rint(x / y);
-}
-vector remquo(float x, float y)
-{
-	vector v;
-	v_z = 0;
-	v_y = rint(x / y);
-	v_x = x - y * v_y;
-	return v;
-}
-
-float copysign(float x, float y)
-{
-	return fabs(x) * ((y>0) ? 1 : -1);
-}
-float nan(string tag)
-{
-	return sqrt(-1);
-}
-float nextafter(float x, float y)
-{
-	// TODO very crude
-	if(x == y)
-		return nan("nextafter");
-	if(x > y)
-		return -nextafter(-x, -y);
-	// now we know that x < y
-	// so we need the next number > x
-	float d, a, b;
-	d = max(fabs(x), 0.00000000000000000000001);
-	a = x + d;
-	do
-	{
-		d *= 0.5;
-		b = a;
-		a = x + d;
-	}
-	while(a != x);
-	return b;
-}
-float nexttoward(float x, float y)
-{
-	return nextafter(x, y);
-}
-
-float fdim(float x, float y)
-{
-	return max(x-y, 0);
-}
-float fmax(float x, float y)
-{
-	return max(x, y);
-}
-float fmin(float x, float y)
-{
-	return min(x, y);
-}
-float fma(float x, float y, float z)
-{
-	return x * y + z;
-}
-
-int isgreater(float x, float y)
-{
-	return x > y;
-}
-int isgreaterequal(float x, float y)
-{
-	return x >= y;
-}
-int isless(float x, float y)
-{
-	return x < y;
-}
-int islessequal(float x, float y)
-{
-	return x <= y;
-}
-int islessgreater(float x, float y)
-{
-	return x < y || x > y;
-}
-int isunordered(float x, float y)
-{
-	return !(x < y || x == y || x > y);
-}

Deleted: trunk/data/qcsrc/common/mathlib.qh
===================================================================
--- trunk/data/qcsrc/common/mathlib.qh	2010-02-28 19:42:36 UTC (rev 8689)
+++ trunk/data/qcsrc/common/mathlib.qh	2010-02-28 19:42:41 UTC (rev 8690)
@@ -1,124 +0,0 @@
-/*
-Copyright (c) 2009 Rudolf Polzer
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-// <math.h>
-
-// The commented-out functions need no implementation because DarkPlaces offers
-// them as builtins. They are listed here anyway for completeness sake.
-
-#define int float
-
-#define FP_NAN 0
-#define FP_INFINITE 1
-#define FP_ZERO 2
-#define FP_SUBNORMAL 3
-#define FP_NORMAL 4
-int fpclassify(float x);
-int isfinite(float x);
-int isinf(float x);
-int isnan(float x);
-int isnormal(float x);
-int signbit(float x);
-
-//float acos(float x);
-//float asin(float x);
-//float atan(float x);
-//float atan2(float y, float x);
-//float cos(float x);
-//float sin(float x);
-//float tan(float x);
-
-float acosh(float x);
-float asinh(float x);
-float atanh(float x);
-float cosh(float x);
-float sinh(float x);
-float tanh(float x);
-
-float exp(float x);
-float exp2(float x);
-float expm1(float x);
-
-vector frexp(float x); // returns mantissa as _x, exponent as _y
-int ilogb(float x);
-float ldexp(float x, int e);
-//float log(float x);
-float log10(float x);
-float log1p(float x);
-float log2(float x);
-float logb(float x);
-vector modf(float f); // fraction as _x, integer as _y
-
-float scalbn(float x, int n);
-
-float cbrt(float x);
-//float fabs(float x);
-float hypot(float x, float y);
-//float pow(float x, float y);
-//float sqrt(float x, float y);
-
-float erf(float x);
-float erfc(float x);
-vector lgamma(float x); // value in _x, sign in _y
-float tgamma(float x);
-
-//float ceil(float x);
-//float floor(float x);
-float nearbyint(float x);
-//float rint(float x);
-//float round(float x);
-float trunc(float x);
-
-float fmod(float x, float y);
-float remainder(float x, float y);
-vector remquo(float x, float y);
-
-float copysign(float x, float y);
-float nan(string tag);
-float nextafter(float x, float y);
-float nexttoward(float x, float y);
-
-float fdim(float x, float y);
-float fmax(float x, float y);
-float fmin(float x, float y);
-float fma(float x, float y, float z);
-
-int isgreater(float x, float y);
-int isgreaterequal(float x, float y);
-int isless(float x, float y);
-int islessequal(float x, float y);
-int islessgreater(float x, float y);
-int isunordered(float x, float y);
-
-#define M_E        2.7182818284590452354   /* e */
-#define M_LOG2E    1.4426950408889634074   /* log_2 e */
-#define M_LOG10E   0.43429448190325182765  /* log_10 e */
-#define M_LN2      0.69314718055994530942  /* log_e 2 */
-#define M_LN10     2.30258509299404568402  /* log_e 10 */
-#define M_PI       3.14159265358979323846  /* pi */
-#define M_PI_2     1.57079632679489661923  /* pi/2 */
-#define M_PI_4     0.78539816339744830962  /* pi/4 */
-#define M_1_PI     0.31830988618379067154  /* 1/pi */
-#define M_2_PI     0.63661977236758134308  /* 2/pi */
-#define M_2_SQRTPI 1.12837916709551257390  /* 2/sqrt(pi) */
-#define M_SQRT2    1.41421356237309504880  /* sqrt(2) */
-#define M_SQRT1_2  0.70710678118654752440  /* 1/sqrt(2) */

Modified: trunk/data/qcsrc/menu/progs.src
===================================================================
--- trunk/data/qcsrc/menu/progs.src	2010-02-28 19:42:36 UTC (rev 8689)
+++ trunk/data/qcsrc/menu/progs.src	2010-02-28 19:42:41 UTC (rev 8690)
@@ -4,7 +4,7 @@
 ../common/util-pre.qh
 msys.qh
 mbuiltin.qh
-../common/mathlib.qh
+../warpzonelib/mathlib.qh
 ../common/util.qh
 
 oo/base.h
@@ -40,4 +40,4 @@
 ../common/mapinfo.qc
 ../common/items.qc
 
-../common/mathlib.qc
+../warpzonelib/mathlib.qc

Modified: trunk/data/qcsrc/server/progs.src
===================================================================
--- trunk/data/qcsrc/server/progs.src	2010-02-28 19:42:36 UTC (rev 8689)
+++ trunk/data/qcsrc/server/progs.src	2010-02-28 19:42:41 UTC (rev 8690)
@@ -8,11 +8,11 @@
 post-builtins.qh
 
 ../warpzonelib/anglestransform.qh
+../warpzonelib/mathlib.qh
 ../warpzonelib/common.qh
 ../warpzonelib/util_server.qh
 ../warpzonelib/server.qh
 
-../common/mathlib.qh
 constants.qh
 ../common/constants.qh
 ../common/util.qh
@@ -165,14 +165,13 @@
 monsters/monster_zombie.qc
 csqcprojectile.qc
 
-../common/mathlib.qc
-
 playerdemo.qc
 
 anticheat.qc
 cheats.qc
 
 ../warpzonelib/anglestransform.qc
+../warpzonelib/mathlib.qc
 ../warpzonelib/common.qc
 ../warpzonelib/util_server.qc
 ../warpzonelib/server.qc

Copied: trunk/data/qcsrc/warpzonelib/mathlib.qc (from rev 8689, trunk/data/qcsrc/common/mathlib.qc)
===================================================================
--- trunk/data/qcsrc/warpzonelib/mathlib.qc	                        (rev 0)
+++ trunk/data/qcsrc/warpzonelib/mathlib.qc	2010-02-28 19:42:41 UTC (rev 8690)
@@ -0,0 +1,266 @@
+int fpclassify(float x)
+{
+	if(isnan(x))
+		return FP_NAN;
+	if(isinf(x))
+		return FP_INFINITE;
+	if(x == 0)
+		return FP_ZERO;
+	return FP_NORMAL;
+}
+int isfinite(float x)
+{
+	return !(isnan(x) || isinf(x));
+}
+int isinf(float x)
+{
+	return (x != 0) && (x + x == x);
+}
+int isnan(float x)
+{
+	return !(x + x == x + x);
+}
+int isnormal(float x)
+{
+	return isfinite(x);
+}
+int signbit(float x)
+{
+	return (x < 0);
+}
+
+float acosh(float x)
+{
+	return log(x + sqrt(x*x - 1));
+}
+float asinh(float x)
+{
+	return log(x + sqrt(x*x + 1));
+}
+float atanh(float x)
+{
+	return 0.5 * log((1+x) / (1-x));
+}
+float cosh(float x)
+{
+	return 0.5 * (exp(x) + exp(-x));
+}
+float sinh(float x)
+{
+	return 0.5 * (exp(x) - exp(-x));
+}
+float tanh(float x)
+{
+	return sinh(x) / cosh(x);
+}
+
+float exp(float x)
+{
+	return pow(M_E, x);
+}
+float exp2(float x)
+{
+	return pow(2, x);
+}
+float expm1(float x)
+{
+	return exp(x) - 1;
+}
+
+vector frexp(float x)
+{
+	vector v;
+	v_z = 0;
+	v_y = ilogb(x) + 1;
+	v_x = x / exp2(v_y);
+	return v;
+}
+int ilogb(float x)
+{
+	return floor(log2(fabs(x)));
+}
+float ldexp(float x, int e)
+{
+	return x * pow(2, e);
+}
+float log10(float x)
+{
+	return log(x) * M_LOG10E;
+}
+float log1p(float x)
+{
+	return log(x + 1);
+}
+float log2(float x)
+{
+	return log(x) * M_LOG2E;
+}
+float logb(float x)
+{
+	return floor(log2(fabs(x)));
+}
+vector modf(float f)
+{
+	return '1 0 0' * (f - trunc(f)) + '0 1 0' * trunc(f);
+}
+
+float scalbn(float x, int n)
+{
+	return x * pow(2, n);
+}
+
+float cbrt(float x)
+{
+	return copysign(pow(fabs(x), 1.0/3.0), x);
+}
+float hypot(float x, float y)
+{
+	return sqrt(x*x + y*y);
+}
+
+float erf(float x)
+{
+	// approximation taken from wikipedia
+	float y;
+	y = x*x;
+	return copysign(sqrt(1 - exp(-y * (1.273239544735163 + 0.14001228868667 * y) / (1 + 0.14001228868667 * y))), x);
+}
+float erfc(float x)
+{
+	return 1.0 - erf(x);
+}
+vector lgamma(float x)
+{
+	// TODO improve accuracy
+	if(!isfinite(x))
+		return fabs(x) * '1 0 0' + copysign(1, x) * '0 1 0';
+	if(x < 1 && x == floor(x))
+		return nan("gamma") * '1 1 1';
+	if(x < 0.1)
+	{
+		vector v;
+		v = lgamma(1.0 - x);
+		// reflection formula:
+		// gamma(1-z) * gamma(z) = pi / sin(pi*z)
+		// lgamma(1-z) + lgamma(z) = log(pi) - log(sin(pi*z))
+		// sign of gamma(1-z) = sign of gamma(z) * sign of sin(pi*z)
+		v_z = sin(M_PI * x);
+		v_x = log(M_PI) - log(fabs(v_z)) - v_x;
+		if(v_z < 0)
+			v_y = -v_y;
+		v_z = 0;
+		return v;
+	}
+	if(x < 1.1)
+		return lgamma(x + 1) - log(x) * '1 0 0';
+	x -= 1;
+	return (0.5 * log(2 * M_PI * x) + x * (log(x) - 1)) * '1 0 0' + '0 1 0';
+}
+float tgamma(float x)
+{
+	vector v;
+	v = lgamma(x);
+	return exp(v_x) * v_y;
+}
+
+float nearbyint(float x)
+{
+	return rint(x);
+}
+float trunc(float x)
+{
+	return (x>=0) ? floor(x) : ceil(x);
+}
+
+float fmod(float x, float y)
+{
+	return x - y * trunc(x / y);
+}
+float remainder(float x, float y)
+{
+	return x - y * rint(x / y);
+}
+vector remquo(float x, float y)
+{
+	vector v;
+	v_z = 0;
+	v_y = rint(x / y);
+	v_x = x - y * v_y;
+	return v;
+}
+
+float copysign(float x, float y)
+{
+	return fabs(x) * ((y>0) ? 1 : -1);
+}
+float nan(string tag)
+{
+	return sqrt(-1);
+}
+float nextafter(float x, float y)
+{
+	// TODO very crude
+	if(x == y)
+		return nan("nextafter");
+	if(x > y)
+		return -nextafter(-x, -y);
+	// now we know that x < y
+	// so we need the next number > x
+	float d, a, b;
+	d = max(fabs(x), 0.00000000000000000000001);
+	a = x + d;
+	do
+	{
+		d *= 0.5;
+		b = a;
+		a = x + d;
+	}
+	while(a != x);
+	return b;
+}
+float nexttoward(float x, float y)
+{
+	return nextafter(x, y);
+}
+
+float fdim(float x, float y)
+{
+	return max(x-y, 0);
+}
+float fmax(float x, float y)
+{
+	return max(x, y);
+}
+float fmin(float x, float y)
+{
+	return min(x, y);
+}
+float fma(float x, float y, float z)
+{
+	return x * y + z;
+}
+
+int isgreater(float x, float y)
+{
+	return x > y;
+}
+int isgreaterequal(float x, float y)
+{
+	return x >= y;
+}
+int isless(float x, float y)
+{
+	return x < y;
+}
+int islessequal(float x, float y)
+{
+	return x <= y;
+}
+int islessgreater(float x, float y)
+{
+	return x < y || x > y;
+}
+int isunordered(float x, float y)
+{
+	return !(x < y || x == y || x > y);
+}

Copied: trunk/data/qcsrc/warpzonelib/mathlib.qh (from rev 8689, trunk/data/qcsrc/common/mathlib.qh)
===================================================================
--- trunk/data/qcsrc/warpzonelib/mathlib.qh	                        (rev 0)
+++ trunk/data/qcsrc/warpzonelib/mathlib.qh	2010-02-28 19:42:41 UTC (rev 8690)
@@ -0,0 +1,102 @@
+// <math.h>
+
+// The commented-out functions need no implementation because DarkPlaces offers
+// them as builtins. They are listed here anyway for completeness sake.
+
+#define int float
+
+#define FP_NAN 0
+#define FP_INFINITE 1
+#define FP_ZERO 2
+#define FP_SUBNORMAL 3
+#define FP_NORMAL 4
+int fpclassify(float x);
+int isfinite(float x);
+int isinf(float x);
+int isnan(float x);
+int isnormal(float x);
+int signbit(float x);
+
+//float acos(float x);
+//float asin(float x);
+//float atan(float x);
+//float atan2(float y, float x);
+//float cos(float x);
+//float sin(float x);
+//float tan(float x);
+
+float acosh(float x);
+float asinh(float x);
+float atanh(float x);
+float cosh(float x);
+float sinh(float x);
+float tanh(float x);
+
+float exp(float x);
+float exp2(float x);
+float expm1(float x);
+
+vector frexp(float x); // returns mantissa as _x, exponent as _y
+int ilogb(float x);
+float ldexp(float x, int e);
+//float log(float x);
+float log10(float x);
+float log1p(float x);
+float log2(float x);
+float logb(float x);
+vector modf(float f); // fraction as _x, integer as _y
+
+float scalbn(float x, int n);
+
+float cbrt(float x);
+//float fabs(float x);
+float hypot(float x, float y);
+//float pow(float x, float y);
+//float sqrt(float x, float y);
+
+float erf(float x);
+float erfc(float x);
+vector lgamma(float x); // value in _x, sign in _y
+float tgamma(float x);
+
+//float ceil(float x);
+//float floor(float x);
+float nearbyint(float x);
+//float rint(float x);
+//float round(float x);
+float trunc(float x);
+
+float fmod(float x, float y);
+float remainder(float x, float y);
+vector remquo(float x, float y);
+
+float copysign(float x, float y);
+float nan(string tag);
+float nextafter(float x, float y);
+float nexttoward(float x, float y);
+
+float fdim(float x, float y);
+float fmax(float x, float y);
+float fmin(float x, float y);
+float fma(float x, float y, float z);
+
+int isgreater(float x, float y);
+int isgreaterequal(float x, float y);
+int isless(float x, float y);
+int islessequal(float x, float y);
+int islessgreater(float x, float y);
+int isunordered(float x, float y);
+
+#define M_E        2.7182818284590452354   /* e */
+#define M_LOG2E    1.4426950408889634074   /* log_2 e */
+#define M_LOG10E   0.43429448190325182765  /* log_10 e */
+#define M_LN2      0.69314718055994530942  /* log_e 2 */
+#define M_LN10     2.30258509299404568402  /* log_e 10 */
+#define M_PI       3.14159265358979323846  /* pi */
+#define M_PI_2     1.57079632679489661923  /* pi/2 */
+#define M_PI_4     0.78539816339744830962  /* pi/4 */
+#define M_1_PI     0.31830988618379067154  /* 1/pi */
+#define M_2_PI     0.63661977236758134308  /* 2/pi */
+#define M_2_SQRTPI 1.12837916709551257390  /* 2/sqrt(pi) */
+#define M_SQRT2    1.41421356237309504880  /* sqrt(2) */
+#define M_SQRT1_2  0.70710678118654752440  /* 1/sqrt(2) */



More information about the nexuiz-commits mailing list