|
|
|
@ -305,8 +305,8 @@ PZeval(int strat, PZtrial **set, PZtrial **new_trial_p) |
|
|
|
} |
|
|
|
} else if (CKTpzTrapped == 3) { |
|
|
|
if (new_trial->s.real <= set[0]->s.real |
|
|
|
|| new_trial->s.real == set[1]->s.real |
|
|
|
&& new_trial->s.imag == set[1]->s.imag |
|
|
|
|| (new_trial->s.real == set[1]->s.real |
|
|
|
&& new_trial->s.imag == set[1]->s.imag) |
|
|
|
|| new_trial->s.real >= set[2]->s.real) { |
|
|
|
#ifdef PZDEBUG |
|
|
|
DEBUG(1) |
|
|
|
@ -481,8 +481,8 @@ int CKTpzStrat(PZtrial **set) |
|
|
|
/* minima in magnitude */ |
|
|
|
/* Search for exact mag. minima, look for complex pair */ |
|
|
|
suggestion = SYM; |
|
|
|
} else if (a_mag > b_mag || a_mag == b_mag |
|
|
|
&& fabs(a) > fabs(b)) |
|
|
|
} else if (a_mag > b_mag || (a_mag == b_mag |
|
|
|
&& fabs(a) > fabs(b))) |
|
|
|
suggestion = SPLIT_LEFT; |
|
|
|
else |
|
|
|
suggestion = SPLIT_RIGHT; |
|
|
|
@ -557,7 +557,7 @@ CKTpzRunTrial(CKTcircuit *ckt, PZtrial **new_trialp, PZtrial **set) |
|
|
|
C_SUBEQ(diff_frac,p->s,new_trial->s); |
|
|
|
|
|
|
|
if (diff_frac.real < 0.0 |
|
|
|
|| diff_frac.real == 0.0 && diff_frac.imag < 0.0) { |
|
|
|
|| (diff_frac.real == 0.0 && diff_frac.imag < 0.0)) { |
|
|
|
prev = p; |
|
|
|
if (p->flags & ISAMINIMA) |
|
|
|
base = p; |
|
|
|
@ -705,8 +705,8 @@ CKTpzRunTrial(CKTcircuit *ckt, PZtrial **new_trialp, PZtrial **set) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (error == E_SINGULAR || new_trial->f_raw.real == 0.0 |
|
|
|
&& new_trial->f_raw.imag == 0.0) { |
|
|
|
if (error == E_SINGULAR || (new_trial->f_raw.real == 0.0 |
|
|
|
&& new_trial->f_raw.imag == 0.0)) { |
|
|
|
new_trial->f_raw.real = 0.0; |
|
|
|
new_trial->f_raw.imag = 0.0; |
|
|
|
new_trial->mag_raw = 0; |
|
|
|
@ -942,8 +942,8 @@ CKTpzUpdateSet(PZtrial **set, PZtrial *new) |
|
|
|
this_move = FAR_LEFT; |
|
|
|
} else if (new->s.real < set[1]->s.real) { |
|
|
|
if (!CKTpzTrapped || new->mag_def < set[1]->mag_def |
|
|
|
|| new->mag_def == set[1]->mag_def |
|
|
|
&& fabs(new->f_def.real) < fabs(set[1]->f_def.real)) { |
|
|
|
|| (new->mag_def == set[1]->mag_def |
|
|
|
&& fabs(new->f_def.real) < fabs(set[1]->f_def.real))) { |
|
|
|
/* Really should check signs, not just compare fabs( ) */ |
|
|
|
set[2] = set[1]; /* XXX = set[2]->prev :: possible opt */ |
|
|
|
set[1] = new; |
|
|
|
@ -954,8 +954,8 @@ CKTpzUpdateSet(PZtrial **set, PZtrial *new) |
|
|
|
} |
|
|
|
} else if (new->s.real < set[2]->s.real) { |
|
|
|
if (!CKTpzTrapped || new->mag_def < set[1]->mag_def |
|
|
|
|| new->mag_def == set[1]->mag_def |
|
|
|
&& fabs(new->f_def.real) < fabs(set[1]->f_def.real)) { |
|
|
|
|| (new->mag_def == set[1]->mag_def |
|
|
|
&& fabs(new->f_def.real) < fabs(set[1]->f_def.real))) { |
|
|
|
/* Really should check signs, not just compare fabs( ) */ |
|
|
|
set[0] = set[1]; |
|
|
|
set[1] = new; |
|
|
|
|