From 02b7fc950e033d11874b52d80a96a2397a1c97bf Mon Sep 17 00:00:00 2001 From: Francesco Lannutti Date: Sat, 13 Feb 2016 19:33:29 +0100 Subject: [PATCH] PSS Fix: thanks to Marcel Hendrix, a possible bug has been found for division by 0 --- src/spicelib/analysis/dcpss.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/spicelib/analysis/dcpss.c b/src/spicelib/analysis/dcpss.c index a35cf692c..9f5add4f9 100644 --- a/src/spicelib/analysis/dcpss.c +++ b/src/spicelib/analysis/dcpss.c @@ -744,7 +744,11 @@ DCpss(CKTcircuit *ckt, { /* Pitagora ha sempre ragione!!! :))) */ /* pred is treated as FREQUENCY to avoid numerical overflow when derivative is close to ZERO */ - pred [i] = RHS_derivative [i] / err_conv [i] ; + if ((RHS_derivative [i] != 0) && (err_conv [i] == 0)) { + pred [i] = DBL_MAX ; + } else { + pred [i] = RHS_derivative [i] / err_conv [i] ; + } #ifdef STEPDEBUG fprintf (stderr, "Pred is so high or so low! Diff is: %g\n", err_conv [i]) ;