summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/solver
diff options
context:
space:
mode:
author couriersud <couriersud@arcor.de>2016-03-28 13:45:45 +0200
committer couriersud <couriersud@arcor.de>2016-03-28 13:48:28 +0200
commit628cef3d97103a7a7348f66c1a9f6a7680b64443 (patch)
tree9ba0d3f636bafb8eaeb87394210dad46977eadfe /src/lib/netlist/solver
parent8c69d3ad1562d79790bd48e3fe4521db304efceb (diff)
Added some notes about Sherman-Morrison.
Diffstat (limited to 'src/lib/netlist/solver')
-rw-r--r--src/lib/netlist/solver/nld_ms_sm.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/lib/netlist/solver/nld_ms_sm.h b/src/lib/netlist/solver/nld_ms_sm.h
index 81395a11492..7336e060510 100644
--- a/src/lib/netlist/solver/nld_ms_sm.h
+++ b/src/lib/netlist/solver/nld_ms_sm.h
@@ -3,6 +3,31 @@
/*
* nld_ms_direct.h
*
+ *
+ * Sherman-Morrison Solver
+ *
+ * Computes the updated inverse of A given that the change in A is
+ *
+ * A <- A + (u x v) u,v vectors
+ *
+ * In this specific implementation, u is a unit vector specifying the row which
+ * changed. Thus v contains the changed column.
+ *
+ * Than z = A⁻¹ u , w = transpose(A⁻¹) v , lambda = v z
+ *
+ * A⁻¹ <- 1.0 / (1.0 + lambda) * (z x w)
+ *
+ * The approach is iterative and applied for each row changed.
+ *
+ * The performance for a typical circuit like kidniki compared to Gaussian
+ * elimination is poor:
+ *
+ * a) The code needs to be run for each row change.
+ * b) The inverse of A typically is fully occupied.
+ *
+ * It may have advantages for circuits with a high number of elements and only
+ * few dynamic/active components.
+ *
*/
#ifndef NLD_MS_SM_H_