1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
/* * compute 10**x by successive squaring. */ #include <_ansi.h> double _DEFUN (__exp10, (x), unsigned x) { static _CONST double powtab[] = {1.0, 10.0, 100.0, 1000.0, 10000.0}; if (x < (sizeof (powtab) / sizeof (double))) return powtab[x]; else if (x & 1) { return 10.0 * __exp10 (x - 1); } else { double n = __exp10 (x / 2); return n * n; } }