34 #ifndef MATHLIB_LOG10_SCALAR_H_
35 #define MATHLIB_LOG10_SCALAR_H_
43 #include "../common/MATHLIB_scalarTables.h"
44 #include "../common/MATHLIB_types.h"
45 #include "../common/MATHLIB_utility.h"
46 #include "c6x_migration.h"
55 #pragma CODE_SECTION(MATHLIB_log10_scalar_ci, ".text:optci");
62 double ln2 = 0.693147180559945f;
63 double base = 0.4342944819033f;
64 float c1 = -0.2302894f;
65 float c2 = 0.1908169f;
66 float c3 = -0.2505905f;
67 float c4 = 0.3333164f;
68 float c5 = -0.5000002f;
69 float MAXe = 3.402823466E+38f;
70 float pol, r1, r2, r3, r4, res;
71 double dr, frcpax, rcp, T;
76 rcp = _rcpdp((
double) a);
77 frcpax = _itod(_clr(_hi(rcp), 0u, 16u), 0u);
78 dr = (frcpax * (double) a) - 1.0;
86 pol = (c5 * r2) + ((c4 * r3) + ((((c2 * r1) + c3) + (c1 * r2)) * r4));
90 N = (int) _extu(_hi(frcpax), 1u, 21u) - 1023;
91 T_index = _extu(_hi(frcpax), 12u, 29u);
93 res = (float) ((dr * base) + T) + pol;
96 res = _itof(0xFF800000u);
110 double MAXe = 1.7976931348623157e+308;
111 double srHalf = 0.70710678118654752440;
112 double MINe = 2.2250738585072014e-308;
113 double a0 = -0.64124943423745581147e+2;
114 double a1 = 0.16383943563021534222e+2;
115 double a2 = -0.78956112887491257267e+0;
116 double b0 = -0.76949932108494879777e+3;
117 double b1 = 0.31203222091924532844e+3;
118 double b2 = -0.35667977739034646171e+2;
119 double c1 = 0.693359375;
120 double c2 = -2.121944400546905827679e-4;
121 double c10e = 0.43429448190325182765;
124 double Rz, Sa, Bd, Cn, Da;
130 exp_ = (int) _extu(_hi(Y), 1u, 21u);
134 upper = _clr(_hi(Y), 20u, 31u);
135 upper = 0x3fe00000u | upper;
136 Z = _itod(upper, _lo(Y));
143 zn = (Z - Half) - Half;
144 zd = (Z * Half) + Half;
148 zd = (zn * Half) + Half;
154 Bd = ((((W + b2) * W) + b1) * W) + b0;
155 Cn = (((W * a2) + a1) * W) + a0;
159 Da = ((Cn * c2) + Sa) + (Cn * c1);
166 Da = 308.254715974092;
175 float result = MATHLIB_log10_scalar_ci<float>(a);
181 double result = MATHLIB_log10_scalar_ci<double>(a);
static T MATHLIB_log10_scalar_ci(T a)
static float MATHLIB_log10_scalar_sp(float a)
static double MATHLIB_log10_scalar_dp(double a, double b)
double divdpMod_log10dpi(double a, double b)
const double MATHLIB_logTable[8]
static double cmn_DIVDP(double a, double b)