- updated code to protect against null pointers and uninitialized values and threading issues

This commit is contained in:
Mark Vejvoda
2013-02-04 08:30:43 +00:00
parent d02f91d2e0
commit f87b8b6ee2
35 changed files with 332 additions and 188 deletions

View File

@@ -52,8 +52,8 @@ P5 = 4.1381369442e-08f; /* 0x3331bb4c */
Simple x;
#endif
{
Simple y,hi,lo,c,t;
int32_t k,xsb;
Simple y,hi,lo=0,c,t;
int32_t k=0,xsb=0;
u_int32_t hx;
GET_FLOAT_WORD(hx,x);

View File

@@ -301,6 +301,8 @@ static Simple pS2[5] = {
else if(ix>=0x40f71c58){p = pR5; q= pS5;}
else if(ix>=0x4036db68){p = pR3; q= pS3;}
else if(ix>=0x40000000){p = pR2; q= pS2;}
//else throw std::exception("unknown state for pointers p and q!");
else throw "unknown state for pointers p and q!";
z = one/(x*x);
r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4]))));
@@ -437,6 +439,8 @@ static Simple qS2[6] = {
else if(ix>=0x40f71c58){p = qR5; q= qS5;}
else if(ix>=0x4036db68){p = qR3; q= qS3;}
else if(ix>=0x40000000){p = qR2; q= qS2;}
//else throw std::exception("unknown state for pointer p!");
else throw "unknown state for pointers p and q!";
z = one/(x*x);
r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));

View File

@@ -300,6 +300,8 @@ static Simple ps2[5] = {
else if(ix>=0x40f71c58){p = pr5; q= ps5;}
else if(ix>=0x4036db68){p = pr3; q= ps3;}
else if(ix>=0x40000000){p = pr2; q= ps2;}
//else throw std::exception("unknown state for pointer p!");
else throw "unknown state for pointers p and q!";
z = one/(x*x);
r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4]))));
@@ -437,6 +439,8 @@ static Simple qs2[6] = {
else if(ix>=0x40f71c58){p = qr5; q= qs5;}
else if(ix>=0x4036db68){p = qr3; q= qs3;}
else if(ix>=0x40000000){p = qr2; q= qs2;}
//else throw std::exception("unknown state for pointer p!");
else throw "unknown state for pointers p and q!";
z = one/(x*x);
r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));