define math_log2

This commit is contained in:
David Rose 2007-01-19 21:32:01 +00:00
parent a2a49aa9fb
commit 93c959a754
2 changed files with 10 additions and 4 deletions

View File

@ -335,6 +335,11 @@ choose_segment() {
return permute[choose_idx++]; return permute[choose_idx++];
} }
double Triangulator::
math_log2(double v) {
static const double log2 = log(2.0);
return log(v) / log2;
}
/* Get log*n for given n */ /* Get log*n for given n */
int Triangulator:: int Triangulator::
@ -343,7 +348,7 @@ math_logstar_n(int n) {
double v; double v;
for (i = 0, v = (double) n; v >= 1; i++) for (i = 0, v = (double) n; v >= 1; i++)
v = log2(v); v = math_log2(v);
return (i - 1); return (i - 1);
} }
@ -355,7 +360,7 @@ math_N(int n, int h) {
double v; double v;
for (i = 0, v = (int) n; i < h; i++) for (i = 0, v = (int) n; i < h; i++)
v = log2(v); v = math_log2(v);
return (int) ceil((double) 1.0*n/v); return (int) ceil((double) 1.0*n/v);
} }

View File

@ -170,8 +170,9 @@ private:
void make_segment(const vector_int &range); void make_segment(const vector_int &range);
int choose_segment(); int choose_segment();
int math_logstar_n(int n); static double math_log2(double v);
int math_N(int n, int h); static int math_logstar_n(int n);
static int math_N(int n, int h);
int newnode(); int newnode();
int newtrap(); int newtrap();