(elen, e, b, h)
| 1291 | /*****************************************************************************/ |
| 1292 | |
| 1293 | int scale_expansion_zeroelim(elen, e, b, h) /* e and h cannot be the same. */ |
| 1294 | int elen; |
| 1295 | REAL *e; |
| 1296 | REAL b; |
| 1297 | REAL *h; |
| 1298 | { |
| 1299 | INEXACT REAL Q, sum; |
| 1300 | REAL hh; |
| 1301 | INEXACT REAL product1; |
| 1302 | REAL product0; |
| 1303 | int eindex, hindex; |
| 1304 | REAL enow; |
| 1305 | INEXACT REAL bvirt; |
| 1306 | REAL avirt, bround, around; |
| 1307 | INEXACT REAL c; |
| 1308 | INEXACT REAL abig; |
| 1309 | REAL ahi, alo, bhi, blo; |
| 1310 | REAL err1, err2, err3; |
| 1311 | |
| 1312 | Split(b, bhi, blo); |
| 1313 | Two_Product_Presplit(e[0], b, bhi, blo, Q, hh); |
| 1314 | hindex = 0; |
| 1315 | if (hh != 0) { |
| 1316 | h[hindex++] = hh; |
| 1317 | } |
| 1318 | for (eindex = 1; eindex < elen; eindex++) { |
| 1319 | enow = e[eindex]; |
| 1320 | Two_Product_Presplit(enow, b, bhi, blo, product1, product0); |
| 1321 | Two_Sum(Q, product0, sum, hh); |
| 1322 | if (hh != 0) { |
| 1323 | h[hindex++] = hh; |
| 1324 | } |
| 1325 | Fast_Two_Sum(product1, sum, Q, hh); |
| 1326 | if (hh != 0) { |
| 1327 | h[hindex++] = hh; |
| 1328 | } |
| 1329 | } |
| 1330 | if ((Q != 0.0) || (hindex == 0)) { |
| 1331 | h[hindex++] = Q; |
| 1332 | } |
| 1333 | return hindex; |
| 1334 | } |
| 1335 | |
| 1336 | /*****************************************************************************/ |
| 1337 | /* */ |
no outgoing calls
no test coverage detected