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

Comparing ray/src/common/calfunc.c (file contents):
Revision 2.21 by greg, Mon Jun 10 13:56:52 2019 UTC vs.
Revision 2.24 by greg, Wed Jul 24 21:20:28 2019 UTC

# Line 71 | Line 71 | static LIBR  library[MAXLIB] = {
71      { "tan", 1, ':', l_tan },
72   };
73  
74 < static int  libsize = 16;
74 > static int  libsize = 18;
75  
76   #define  resolve(ep)    ((ep)->type==VAR?(ep)->v.ln:argf((ep)->v.chan))
77  
# Line 390 | Line 390 | l_if(char *nm)         /* if(cond, then, else) conditional ex
390   static double
391   l_select(char *nm)      /* return argument #(A1+1) */
392   {
393 <        int  n;
393 >        int     narg = nargum();
394 >        double  a1 = argument(1);
395 >        int  n = (int)(a1 + .5);
396  
397 <        n = (int)(argument(1) + .5);
396 <        if (n == 0)
397 <                return(nargum()-1);
398 <        if (n < 1 || n > nargum()-1) {
397 >        if (a1 < -.5 || n >= narg) {
398                  errno = EDOM;
399                  return(0.0);
400          }
401 +        if (!n)         /* asking max index? */
402 +                return(narg-1);
403          return(argument(n+1));
404   }
405  
# Line 408 | Line 409 | l_max(char *nm)                /* general maximum function */
409   {
410          int  n = nargum();
411          int  i = 1;
412 <        int  vmax = argument(1);
412 >        double  vmax = argument(1);
413  
414          while (i++ < n) {
415                  double  v = argument(i);
# Line 424 | Line 425 | l_min(char *nm)                /* general minimum function */
425   {
426          int  n = nargum();
427          int  i = 1;
428 <        int  vmin = argument(1);
428 >        double  vmin = argument(1);
429  
430          while (i++ < n) {
431                  double  v = argument(i);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines