ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/data.c
(Generate patch)

Comparing ray/src/rt/data.c (file contents):
Revision 2.39 by greg, Wed Mar 13 06:36:03 2024 UTC vs.
Revision 2.40 by greg, Wed Mar 13 07:24:53 2024 UTC

# Line 409 | Line 409 | data_interp(DATARRAY *dp, double *pt, double coef, DAT
409          DATARRAY        sd;
410          int             stride, i;
411          double          x, c0, c1, y0, y1;
412 +                                        /* unlikely, but may as well check */
413 +        if ((-FTINY <= coef) & (coef <= FTINY))
414 +                return(0.);
415                                          /* set up dimensions for recursion */
416          if (dp->nd > 1) {
417                  sd.name = dp->name;
# Line 478 | Line 481 | data_interp(DATARRAY *dp, double *pt, double coef, DAT
481                  } else if (dp->type == SPECTY) {
482                          double  f;
483                          sd.arr.s = dp->arr.s + i*stride;
484 <                        f = ldexp(1.0, (int)sd.arr.s[sd.dim[0].ne]
485 <                                        - (COLXS+8));
486 <                        for (i = sd.dim[0].ne; i--; )
487 <                                rvec[i] += c0*f*(sd.arr.s[i] + 0.5);
484 >                        if ((sd.arr.s[sd.dim[0].ne] > 0) & ((-FTINY>c0)|(c0>FTINY))) {
485 >                                f = c0*ldexp(1., (int)sd.arr.s[sd.dim[0].ne]-(COLXS+8));
486 >                                for (i = sd.dim[0].ne; i--; )
487 >                                        rvec[i] += f*(sd.arr.s[i] + 0.5);
488 >                        }
489                          sd.arr.s += stride;
490 <                        f = ldexp(1.0, (int)sd.arr.s[sd.dim[0].ne]
491 <                                        - (COLXS+8));
492 <                        for (i = sd.dim[0].ne; i--; )
493 <                                rvec[i] += c1*f*(sd.arr.s[i] + 0.5);
490 >                        if ((sd.arr.s[sd.dim[0].ne] > 0) & ((-FTINY>c1)|(c1>FTINY))) {
491 >                                f = c1*ldexp(1., (int)sd.arr.s[sd.dim[0].ne]-(COLXS+8));
492 >                                for (i = sd.dim[0].ne; i--; )
493 >                                        rvec[i] += f*(sd.arr.s[i] + 0.5);
494 >                        }
495                  } else {
496                          sd.arr.c = dp->arr.c + i*stride;
497                          for (i = sd.dim[0].ne; i--; )
# Line 517 | Line 522 | data_interp(DATARRAY *dp, double *pt, double coef, DAT
522                          y1 = dp->arr.d[i+1];
523                  } else if (dp->type == SPECTY) {
524                          if (dp->arr.s[dp->dim[0].ne]) {
525 <                                double  f = ldexp(1.0, -(COLXS+8) +
526 <                                                (int)dp->arr.s[dp->dim[0].ne]);
527 <                                y0 = (dp->arr.s[i] + 0.5)*f;
528 <                                y1 = (dp->arr.s[i+1] + 0.5)*f;
525 >                                double  f = dp->arr.s[dp->dim[0].ne]
526 >                                        ? ldexp(1., -(COLXS+8) +
527 >                                                (int)dp->arr.s[dp->dim[0].ne])
528 >                                        : 0.;
529 >                                y0 = f*(dp->arr.s[i] + 0.5);
530 >                                y1 = f*(dp->arr.s[i+1] + 0.5);
531                          } else
532                                  y0 = y1 = 0.0;
533                  } else {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines