34 #ifndef MATHLIB_LOG2_SCALAR_H_
35 #define MATHLIB_LOG2_SCALAR_H_
43 #include "../common/MATHLIB_scalarTables.h"
44 #include "../common/MATHLIB_types.h"
45 #include "c6x_migration.h"
57 #pragma CODE_SECTION(divdpMod_log2dpi, ".text:optci");
66 X = X * (TWO - (b * X));
67 X = X * (TWO - (b * X));
73 #pragma CODE_SECTION(MATHLIB_log2_scalar_ci, ".text:optci");
78 double ln2 = 0.693147180559945;
79 double base = 1.4426950408890;
80 float c1 = -0.2302894f;
81 float c2 = 0.1908169f;
82 float c3 = -0.2505905f;
83 float c4 = 0.3333164f;
84 float c5 = -0.5000002f;
85 float MAXe = 3.402823466E+38f;
86 float pol, r1, r2, r3, r4, res;
87 double dr, frcpax, rcp, T;
92 rcp = _rcpdp((
double) a);
93 frcpax = _itod(_clr(_hi(rcp), 0u, 16u), 0u);
94 dr = (frcpax * (double) a) - 1.0;
102 pol = (c5 * r2) + ((c4 * r3) + ((((c2 * r1) + c3) + (c1 * r2)) * r4));
106 N = (int) _extu(_hi(frcpax), 1u, 21u) - 1023;
107 T_index = _extu(_hi(frcpax), 12u, 29u);
109 res = (float) ((dr * base) + T) + pol;
112 res = _itof(0xFF800000u);
static float MATHLIB_log2_scalar_ci(float a)
static double divdpMod_log2dpi(double a, double b)
const double MATHLIB_logTable[8]