Wed Feb 17 23:42:13 EST 2016

Spice: TODO

1. Assume Gv-i=0 needs to be solved numerically.
2. Later, see if the gaussian elimination can be done structurally

Methods that use structure are usually iterative, so implement
conjugate gradient?  This is a tracking problem, so iterative solution
might actually work better.


- Express the multiplication by G as a program

- Use the conjugate gradient method to solve the system equation

- The update G(k) -> G(k+1), e.g. the computation of the derivatives,
  can likely be expressed as an iterative update in its own right.

As long as the time step is small, all these iterative steps should be
quite precise.  The problem is reaching the initial state.  For some
circuits, this might be possible to do by powering them up slowly.

Computation of derivatives:
  - Use autodiff to obtain program that computes derivative

  - To evaluate the trancendentals, use a single iteration that uses
    the previous value as a starting point.

Question though, is will that drift?

The only transcendental I need is exp, for diodes and ebers-moll.  I
have some evaluators for that.  A possible approach is to pipeline a
non-drifting version over N steps, and then replace the iterative

This comes back the the essential need for "control rate" processing.