diff --git a/ChangeLog b/ChangeLog index 34c712d54..81d15ba13 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2010-11-06 Dietmar Warning + * analysis/dctran.c: use ceil function for correct round up + 2010-11-06 Robert Larice * src/spicelib/devices/ndev/ndevdump.c : drop some unused static variables diff --git a/src/spicelib/analysis/dctran.c b/src/spicelib/analysis/dctran.c index bd3fbec8a..6ca396762 100644 --- a/src/spicelib/analysis/dctran.c +++ b/src/spicelib/analysis/dctran.c @@ -99,7 +99,7 @@ DCtran(CKTcircuit *ckt, ckt->CKTsizeIncr = 10; ckt->CKTtimeIndex = -1; /* before the DC soln has been stored */ - ckt->CKTtimeListSize = ckt->CKTfinalTime / maxstepsize + 0.5; + ckt->CKTtimeListSize = (int) ceil( ckt->CKTfinalTime / maxstepsize ); ltra_num = CKTtypelook("LTRA"); if (ltra_num >= 0 && ckt->CKThead[ltra_num] != NULL) ckt->CKTtimePoints = NEWN(double, ckt->CKTtimeListSize); @@ -349,12 +349,12 @@ DCtran(CKTcircuit *ckt, if (ckt->CKTtimeIndex >= ckt->CKTtimeListSize) { /* need more space */ int need; - need = 0.5 + (ckt->CKTfinalTime - ckt->CKTtime) / maxstepsize; + need = (int) ceil( (ckt->CKTfinalTime - ckt->CKTtime) / maxstepsize ); if (need < ckt->CKTsizeIncr) need = ckt->CKTsizeIncr; ckt->CKTtimeListSize += need; - ckt->CKTtimePoints = TREALLOC(double, ckt->CKTtimePoints, ckt->CKTtimeListSize); - ckt->CKTsizeIncr *= 1.4; + ckt->CKTtimePoints = TREALLOC(double, ckt->CKTtimePoints, ckt->CKTtimeListSize); + ckt->CKTsizeIncr = (int) ceil(1.4 * ckt->CKTsizeIncr); } *(ckt->CKTtimePoints + ckt->CKTtimeIndex) = ckt->CKTtime; } @@ -549,7 +549,7 @@ resume: */ ckt->CKTorder = 1; #ifdef STEPDEBUG - if( (ckt->CKTdelta >.1* ckt->CKTsaveDelta) || + if( (ckt->CKTdelta > .1*ckt->CKTsaveDelta) || (ckt->CKTdelta > .1*(*(ckt->CKTbreaks+1)-*(ckt->CKTbreaks))) ) { if(ckt->CKTsaveDelta < (*(ckt->CKTbreaks+1)-*(ckt->CKTbreaks))) { (void)printf("limited by pre-breakpoint delta (saveDelta: %g, nxt_breakpt: %g, curr_breakpt: %g\n",