[BACK]Return to calc.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / plot

Diff for /OpenXM_contrib2/asir2000/plot/calc.c between version 1.4 and 1.5

version 1.4, 2001/08/22 09:19:21 version 1.5, 2001/10/09 01:36:27
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/plot/calc.c,v 1.3 2000/08/22 05:04:30 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/plot/calc.c,v 1.4 2001/08/22 09:19:21 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
   #include "parse.h"
 #include "ifplot.h"  #include "ifplot.h"
 #include <math.h>  #include <math.h>
 #if PARI  #if PARI
 #include "genpari.h"  #include "genpari.h"
 #endif  #endif
   
 double usubstrp(P,double);  void calc(double **tab,struct canvas *can,int nox)
   
 void calc(tab,can,nox)  
 double **tab;  
 struct canvas *can;  
 int nox;  
 {  {
         double x,y,xmin,ymin,xstep,ystep;          double x,y,xmin,ymin,xstep,ystep;
         int ix,iy;          int ix,iy;
Line 84  int nox;
Line 80  int nox;
                 for( iy = 0, y = ymin; iy < h ; iy++, y += ystep )                  for( iy = 0, y = ymin; iy < h ; iy++, y += ystep )
                         tab[ix][iy] = usubstrp(g,y);                          tab[ix][iy] = usubstrp(g,y);
 #endif  #endif
                 BDY(rx) = x; substr(CO,0,fr,vx,x?(P)rx:0,&t); devalr(CO,t,&g);                  BDY(rx) = x; substr(CO,0,fr,vx,x?(Obj)rx:0,&t);
                   devalr(CO,t,&g);
                 if ( !nox ) marker(can,DIR_X,ix);                  if ( !nox ) marker(can,DIR_X,ix);
                 for( iy = 0, y = ymin; iy < h ; iy++, y += ystep ) {                  for( iy = 0, y = ymin; iy < h ; iy++, y += ystep ) {
                         BDY(ry) = y;                          BDY(ry) = y;
                         substr(CO,0,g,vy,y?(P)ry:0,&t); devalr(CO,t,&s);                          substr(CO,0,g,vy,y?(Obj)ry:0,&t);
                           devalr(CO,t,&s);
                         tab[ix][iy] = ToReal(s);                          tab[ix][iy] = ToReal(s);
                 }                  }
         }          }
 }  }
   
 double usubstrp(p,r)  double usubstrp(P p,double r)
 P p;  
 double r;  
 {  {
         double t;          double t;
         DCP dc;          DCP dc;
Line 119  double r;
Line 115  double r;
         return t;          return t;
 }  }
   
 void qcalc(tab,can)  void qcalc(char **tab,struct canvas *can)
 char **tab;  
 struct canvas *can;  
 {  {
         Q dx,dy,w,h,xstep,ystep,c,q1,q2;          Q dx,dy,w,h,xstep,ystep,c,q1;
         P g,g1,f1,f2,x,y,t,s;          P g,g1,f1,f2,x,y,t,s;
         DCP dc;  
         int ix,iy;          int ix,iy;
         int *a,*pa;          int *a,*pa;
         char *px;  
         VECT ss;          VECT ss;
   
   
Line 148  struct canvas *can;
Line 140  struct canvas *can;
                         for ( iy = 0; iy < can->height; iy++ )                          for ( iy = 0; iy < can->height; iy++ )
                                 tab[ix][iy] = 1;                                  tab[ix][iy] = 1;
                 else if ( !NUM(g1) ) {                  else if ( !NUM(g1) ) {
                         strum(CO,g1,&ss); seproot(ss,0,can->height,a);                          sturmseq(CO,g1,&ss); seproot(ss,0,can->height,a);
                         for ( iy = 0, pa = a; iy < can->height; iy++, pa++ )                          for ( iy = 0, pa = a; iy < can->height; iy++, pa++ )
                                 if ( *pa < 0 || (*(pa+1) >= 0 && (*pa > *(pa+1))) )                                  if ( *pa < 0 || (*(pa+1) >= 0 && (*pa > *(pa+1))) )
                                         tab[ix][iy] = 1;                                          tab[ix][iy] = 1;
Line 162  struct canvas *can;
Line 154  struct canvas *can;
                         for ( ix = 0; ix < can->width; ix++ )                          for ( ix = 0; ix < can->width; ix++ )
                                 tab[ix][iy] = 1;                                  tab[ix][iy] = 1;
                 else if ( !NUM(g1) ) {                  else if ( !NUM(g1) ) {
                         strum(CO,g1,&ss); seproot(ss,0,can->width,a);                          sturmseq(CO,g1,&ss); seproot(ss,0,can->width,a);
                         for ( ix = 0, pa = a; ix < can->width; ix++, pa++ )                          for ( ix = 0, pa = a; ix < can->width; ix++, pa++ )
                                 if ( *pa < 0 || (*(pa+1) >= 0 && (*pa > *(pa+1))) )                                  if ( *pa < 0 || (*(pa+1) >= 0 && (*pa > *(pa+1))) )
                                         tab[ix][iy] = 1;                                          tab[ix][iy] = 1;
Line 170  struct canvas *can;
Line 162  struct canvas *can;
         }          }
 }  }
   
 strum(vl,p,rp)  void sturmseq(VL vl,P p,VECT *rp)
 VL vl;  
 P p;  
 VECT *rp;  
 {  {
         P g1,g2,q,r,s;          P g1,g2,q,r,s;
         P *t;          P *t;
Line 214  VECT *rp;
Line 203  VECT *rp;
         *rp = ret;          *rp = ret;
 }  }
   
 seproot(s,min,max,ar)  void seproot(VECT s,int min,int max,int *ar)
 VECT s;  
 int min,max;  
 int *ar;  
 {  {
         P f;          P f;
         P *ss;          P *ss;
Line 257  int *ar;
Line 243  int *ar;
         seproot(s,k,j,ar);          seproot(s,k,j,ar);
 }  }
   
 numch(s,n,a0)  int numch(VECT s,Q n,Q a0)
 VECT s;  
 Q n,a0;  
 {  {
         int len,i,c;          int len,i,c;
         Q a;          Q a;
Line 277  Q n,a0;
Line 261  Q n,a0;
         return c;          return c;
 }  }
   
 usubstqp(p,r,v)  void usubstqp(P p,Q r,Q *v)
 P p;  
 Q r;  
 Q *v;  
 {  {
         Q d,d1,a,b,t;          Q d,d1,a,b,t;
         DCP dc;          DCP dc;
Line 303  Q *v;
Line 284  Q *v;
         }          }
 }  }
   
 void plotcalc(can)  void plotcalc(struct canvas *can)
 struct canvas *can;  
 {  {
         double x,xmin,xstep,ymax,ymin,dy;          double x,xmin,xstep,ymax,ymin,dy;
         int ix;          int ix;
Line 325  struct canvas *can;
Line 305  struct canvas *can;
         for( ix = 0, x = xmin; ix < w ; ix++, x += xstep ) {          for( ix = 0, x = xmin; ix < w ; ix++, x += xstep ) {
                 /* full substitution */                  /* full substitution */
                 BDY(rx) = x;                  BDY(rx) = x;
                 substr(CO,0,fr,can->vx,x?(P)rx:0,&s); devalr(CO,(Obj)s,&t);                  substr(CO,0,fr,can->vx,x?(Obj)rx:0,&s);
                   devalr(CO,(Obj)s,&t);
                 if ( t && (OID(t)!=O_N || NID((Num)t)!=N_R) )                  if ( t && (OID(t)!=O_N || NID((Num)t)!=N_R) )
                         error("plotcalc : invalid evaluation");                          error("plotcalc : invalid evaluation");
                 tab[ix] = ToReal((Num)t);                  tab[ix] = ToReal((Num)t);
Line 361  struct canvas *can;
Line 342  struct canvas *can;
                 else if ( t < -MAXSHORT )                  else if ( t < -MAXSHORT )
                         YC(pa[ix]) = -MAXSHORT;                          YC(pa[ix]) = -MAXSHORT;
                 else                  else
                         YC(pa[ix]) = t;                          YC(pa[ix]) = (long)t;
         }          }
 }  }

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>