For each type of device, a *convTest function determines if the
current through that device is converged within tolerance,
and sets CKTnoncon if the current is not yet converged.
ASCRconvTest() erroneously subtracted old current from old,
rather than old from new, when evaluating convergence.
Also, since at least 3f5, the calling function NIconvTest assumed
that the worker functions indicated non-convergence through their
return value, so was ignoring the reports of current nonconvergence.
which have been invalidated by commit:
ifparm, #4/16, missing IF_REDUNDANT for some aliases, introduce IOPAPR
before this commit, sensitivity to "capacitance" was published twice,
once with name "c1" (reference name of a CAP device)
and as "c1_c" (reference name of a CAP concatenated with param name "c")
after said commit, sensitivity is no longer published as "c1_c"
(because "c" is only an "alias"/IF_REDUNDANT of the main parameter
which is named "capacitance", and "capacitance" is a IF_PRINCIPAL
and thus avoids "concatenation" of the parameter name)
identified and reported by Marcel Hendrix,
expressions of this kind could trigger a segmentation violation.
PTdifferentiate() roughly evaluates to
ternary_fcn(ge0(0-expr), 0, PTdifferentate(expr))
and mkb() optimizes
0 - expr --> unary_minus(expr)
IFeval() invokes PTeval() for the derivative too,
PTeval() looks at the incorrect tree->funcnum
and tries to PTeval for a second argument which is not there,
(unary_minus does not have a second argument)
causing a segmentation fault.
reported by Siddhant Saraf in
> [ngspice:discussion] "out of memory" error : simulating a 2bit AND gate"
This comes in two flavours,
1) an empty circuit
2) a xspice circuit with exclusively xspice event nodes
check xpressn.c parser capability to parse {2--3}
check .control parser capability to parse 2--3
check B parser capability to parse 2--3
check echo commands capability to print "--"
check echo commands capability to print upper and lower case
check xpressn.c parser capabilities
check precision of some transcendental functions