Changeset d232f66 in tol


Ignore:
Timestamp:
Oct 26, 2009, 3:41:15 PM (17 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
d00af3a
Parents:
fbc0756
Message:

Fixed #621

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@1573 be4846ae-f051-483a-831f-b64e7d08527f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tol/btol/vmatrix_type/vmat_arith.cpp

    rfbc0756 rd232f66  
    683683  else     
    684684  {
    685     assert(n0+1>=0);
     685    assert(n0+i>=0);
    686686    xk = X0[n0+i];
    687687  }
    … …  
    698698{
    699699  double xk = 0;
    700   i+=P[k].Degree();
    701   if(i<n)
     700  BMonome<BDat>& Pk = P[k];
     701  int d = Pk.Degree();
     702  double c = Pk.Coef().Value();
     703  int id = i+d;
     704  if(id<n)
    702705  {
    703     assert(i>=0);
    704     xk = X[i];
     706    assert(id>=0);
     707    xk = X[id];
     708/*  Std(BText("  GetForwardValue ")+
     709      "\tn0= "+n0+
     710      "\tn= "+n+
     711      "\ti= "+i+
     712      "\tk= "+k+
     713      "\td= "+d+
     714      "\tc= "+c+
     715      "\tid= "+id+
     716      "\txk= X["+id+"]="+xk+
     717      "\tc*xk= "+(c * xk)+
     718      "\n"); */
    705719  }
    706720  else     
    707721  {
    708     assert(n+i<n0);
    709     xk = X0[n+i];
    710   }
    711   return(P[k].Coef().Value() * xk);
     722    assert(id-n<n0);
     723    xk = X0[id-n];
     724/*  Std(BText("  GetForwardValue ")+
     725      "\tn0= "+n0+
     726      "\tn= "+n+
     727      "\ti= "+i+
     728      "\tk= "+k+
     729      "\td= "+d+
     730      "\tc= "+c+
     731      "\tid= "+id+
     732      "\txk= X0["+(id-n)+"]="+xk+
     733      "\tc*xk= "+(c * xk)+
     734      "\n"); */
     735  }
     736  return(c * xk);
    712737}
    713738
    … …  
    853878  BVMatColMajIter y0_(Y0, fName);
    854879  BArray<double> _x0, _x, _y0;
    855   double *x0, *x, *y0, *y;
    856   double *yij= ((double*)Y->s_.blasRdense_->x);
     880  double *x0=NULL, *x=NULL, *y0=NULL, *y=NULL;
     881  double *yij= ((double*)Y->s_.blasRdense_->x)+(r*c-1);
    857882  int nnz = 0;
    858   for(j=0; j<c; j++)
    859   {
    860     x0_.GetCol(j,_x0); x0 = _x0.GetBuffer();
    861     x_ .GetCol(j,_x ); x  = _x .GetBuffer();
    862     y0_.GetCol(j,_y0); y0 = _y0.GetBuffer();
    863     y = yij;
     883  for(j=c-1; j>=0; j--)
     884  {
     885    if(p) { x0_.GetCol(j,_x0); x0 = _x0.GetBuffer(); }
     886            x_ .GetCol(j,_x ); x  = _x .GetBuffer();
     887    if(q) { y0_.GetCol(j,_y0); y0 = _y0.GetBuffer(); }
     888    y = yij-r+1;
    864889        for(i=r-1; i>=0; i--)
    865890          {
    866891            *yij = 0.0;
     892    //Std(BText("BackDifEq AR\n"));
    867893            for(k=0; k<num.Size(); k++)
    868894            {
    869895                    *yij += GetForwardValue(num,x0,p,x,r,i,k);
    870896            }
     897    //Std(BText("BackDifEq MA\n"));
    871898            for(k=1; k<den.Size(); k++)
    872899            {
    … …  
    875902      if(fabs(*yij)<chop) { *yij=0.0; }
    876903      if(fabs(*yij)>0.0)  { nnz++; }
    877       yij++;
     904    //Std(BText("y[")+i+"]="+y[i]+"\n");
     905      yij--;
    878906          }
    879907  }
Note: See TracChangeset for help on using the changeset viewer.