log() function is now a builtin (this means we need the current engine if any code...
authordiv0 <div0@f962a42d-fe04-0410-a3ab-8c8b0445ebaa>
Sun, 8 Nov 2009 18:03:28 +0000 (18:03 +0000)
committerdiv0 <div0@f962a42d-fe04-0410-a3ab-8c8b0445ebaa>
Sun, 8 Nov 2009 18:03:28 +0000 (18:03 +0000)
git-svn-id: svn://svn.icculus.org/nexuiz/trunk@8251 f962a42d-fe04-0410-a3ab-8c8b0445ebaa

data/qcsrc/client/csqc_builtins.qc
data/qcsrc/common/mathlib.qc
data/qcsrc/common/mathlib.qh
data/qcsrc/menu/mbuiltin.qh
data/qcsrc/server/extensions.qh

index 54f70c7..171353c 100644 (file)
@@ -294,3 +294,4 @@ float(float a) tan = #475; // returns tangent value (which is simply sin(a)/cos(
 float DEG2RAD = 0.0174532925199432957692369076848861271344287188854172545609719144;
 float RAD2DEG = 57.2957795130823208767981548141051703324054724665643215491602438612;
 float PI      = 3.1415926535897932384626433832795028841971693993751058209749445923;
+float log(float f) = #532;
index 65e53fb..6a58a7b 100644 (file)
@@ -105,31 +105,6 @@ float ldexp(float x, int e)
 {
        return x * pow(2, e);
 }
-float log(float x)
-{
-       // TODO improve speed
-       float i;
-       float r, r0;
-       if(x <= 0)
-               return nan("log");
-       if(!isfinite(x))
-               return x;
-       if(x >= 8)
-               return -log(1 / x); // faster
-       if(x < 0.0009765625)
-               return 2 * log(sqrt(x)); // faster
-       r = 1;
-       r0 = 0;
-       for(i = 1; fabs(r - r0) >= 0.00001; ++i)
-       {
-               // Newton iteration on exp(r) = x:
-               //   r <- r - (exp(r) - x) / (exp(r))
-               //   r <- r - 1 + x / exp(r)
-               r0 = r;
-               r = r0 - 1 + x / exp(r0);
-       }
-       return r;
-}
 float log10(float x)
 {
        return log(x) * M_LOG10E;
index 190da06..c550208 100644 (file)
@@ -61,7 +61,7 @@ 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 log(float x);
 float log10(float x);
 float log1p(float x);
 float log2(float x);
index 5b079c5..d3abf30 100644 (file)
@@ -347,3 +347,4 @@ float(float i) argv_end_index = #516;
 string(float, float) getgamedirinfo = #626;
 #define GETGAMEDIRINFO_NAME 0
 #define GETGAMEDIRINFO_DESCRIPTION 1
+float log(float f) = #532;
index c7c8a06..327a755 100644 (file)
@@ -800,6 +800,13 @@ float GETTIME_CDTRACK = 4;
 //description:
 //returns the playing time of the current cdtrack when passed to gettime()
 
+//DP_QC_LOG
+//darkplaces implementation: div0
+//builtin definitions:
+float log(float f) = #532;
+//description:
+//logarithm
+
 //DP_QC_MINMAXBOUND
 //idea: LordHavoc
 //darkplaces implementation: LordHavoc