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

Comparing ray/src/cal/tabfunc.c (file contents):
Revision 1.4 by schorsch, Mon Jul 14 20:02:29 2003 UTC vs.
Revision 1.10 by greg, Thu Mar 18 03:09:34 2021 UTC

# Line 7 | Line 7 | static const char      RCSid[] = "$Id$";
7   *      2/2/95  Greg Ward
8   */
9  
10 #include <stdio.h>
10   #include <stdlib.h>
12 #include <string.h>
11   #include <math.h>
12   #include <ctype.h>
15 #include <sys/types.h>
13  
14   #include "rtprocess.h" /* getpid() */
15   #include "rtmath.h"
# Line 20 | Line 17 | static const char      RCSid[] = "$Id$";
17  
18   #define  isdelim(c)     (isspace(c) || (c)==',')
19  
20 < #define  MAXTAB         1024            /* maximum number of data rows */
21 < #define  MAXLINE        4096            /* maximum line width (characters) */
20 > #define  MAXTAB         8192            /* maximum number of data rows */
21 > #define  MAXLINE        16384           /* maximum line width (characters) */
22   #define  OUTFMT         "%.7g"          /* output format conversion string */
23  
24   int     interpolate = 0;
# Line 151 | Line 148 | absc_exp(void)                 /* produce expression for abscissa */
148                                  strcpy(ourexp, "x");
149                          else
150                                  sprintf(ourexp, "x-%g", abscissa[0]-1);
151 <                } else
151 >                } else if (fabs(abscissa[0]) < eps)
152 >                        sprintf(ourexp, "x/%g+1", step);
153 >                else
154                          sprintf(ourexp, "(x-%g)/%g+1", abscissa[0], step);
155          } else {
156                  printf("X`%s(i):select(i,", locID);
157                  putlist(abscissa, tabsize, 20);
158                  puts(");");
159 <                if (increasing) {
159 >                if (increasing)
160 >                        printf("fx2`%s(x,i):if(x-X`%s(i),\n", locID, locID);
161 >                else
162 >                        printf("fx2`%s(x,i):if(X`%s(i)-x,\n", locID, locID);
163 >                printf("\ti+(x-X`%s(i))/(X`%s(i+1)-X`%s(i)),\n",
164 >                                locID, locID, locID);
165 >                printf("\tfx2`%s(x,i-1));\n", locID);
166 >                if (increasing)
167                          printf("fx`%s(x):if(x-%g,if(%g-x,fx2`%s(x,%d),%d),1);\n",
168                                          locID, abscissa[0], abscissa[tabsize-1],
169                                          locID, tabsize, tabsize);
170 <                        printf("fx2`%s(x,i):if(x-X`%s(i),\n", locID, locID);
165 <                } else {
170 >                else
171                          printf("fx`%s(x):if(%g-x,if(x-%g,fx2`%s(x,%d),%d),1);\n",
172                                          locID, abscissa[0], abscissa[tabsize-1],
173                                          locID, tabsize, tabsize);
169                        printf("fx2`%s(x,i):if(X`%s(i)-x,\n", locID, locID);
170                }
171                printf("\ti+(x-X`%s(i))/(X`%s(i+1)-X`%s(i)),\n",
172                                locID, locID, locID);
173                printf("\tfx2`%s(x,i-1));\n", locID);
174                  sprintf(ourexp, "fx`%s(x)", locID);
175          }
176          return(ourexp);
# Line 187 | Line 187 | char   *xe
187  
188          xelen = strlen(xe);
189          for (i = 0; i < nfuncs; i++) {
190 <                if (func[i][0] == '\0' | func[i][0] == '0')
190 >                if ((func[i][0] == '\0') | (func[i][0] == '0'))
191                          continue;
192                  if (interpolate) {
193                          printf("%s`%s(i):select(i,", func[i], locID);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines