--
-- TODO
-- 
-- This is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-- any later version.
-- 
-- This software is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
-- 
-- You should have received a copy of the GNU General Public License
-- along with this package; see the file COPYING.  If not, write to
-- the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-- Boston, MA 02111-1307, USA.  
--

This file lists all the things we would like to add in the future.
Bugs are not listed here; for a list of all known bugs (fixed and
unfixed) have a look at the file BUGS.

(completed tasks are indented one tab)

- Implement Zener diode model or extend the existing diode model.
- Use Markowitz pivoting when solving equation systems with a sparse
  matrix.
- Implement a sparse matrix template class.
- Non-ideal transient models of bias-t, dc-block and dc-feed.
	- Implement optional gmin-stepping algorithm.
	- More S-parameter computation formulas, e.g. stability factors.
- Implementation of noise and stability circle formulas.
	- Implement some more matrix operations, e.g. det(), conj(),
	  transpose() and inverse(), to be available in equations.
	- Spice to Qucs netlist converter.
- Reordering algorithm for MNA matrices (fail of convergence).
	- Allow array indices in vectors with multiple dependencies.
	- Add charge-conversing model for MOS capacitances (i.e. Simpson's
	  numerical integration rule).
- Implement variable step-size coefficient for Adams-Bashford.
	- Implement variable step-size coefficient calculations for
	  transient integrators.
- Transient model of phaseshifter.
- Transient models for controlled sources with time delay.
- Transient noise analysis.
	- Implement a real predictor for transient analysis.
	- Use Milne's formula for local truncation error estimation.
- Transient models of transmission lines.
	- Transient models of non-linear devices.
	- Implementation of transient models for capacitor, inductor and
	  resistor.
- Subcircuit definitions with properties.
	- Node-set functionality for DC and transient analysis.
	- Coplanar line implementation.
	- Microstrip via hole implementation.
	- Microstrip t-junction.
- Microstrip cross.
- Modella, HICUM, MEXTRAM and VBIC bipolar model implementations.
- MESFET (Curtize, Staatz) implementations.
- BSIMv3 implementation.
- Harmonic balance simulation.
	- Transient simulation.
	- AC noise analysis.
	- AC analysis.
	- Implement sorted node list for S-parameter analysis in order
	  to increase speed.
	- What about a damped Newton-Raphson or source-stepping?
	- Find an efficient algorithm to ensure non-zero diagonal matrix
	  elements for iterative methods.
	- Clarify pn-junction noise issue.
	- Check polarity of BJT (SPICE Gummel-Poon) device.
- Implement temperature models of existing non-linear devices.
	- Implement DC model for transmission line.
	- Implement noise model for attenuator, diode and isolator.
	- Recalculate S-parameters in touchstone files for n+1 ports.
	- Implement excess phase and polarity of SGP BJT model.
- Make Wheeler's quasi-static formulas for microstrip continual.
	- Allow subcircuits in netlist and simulate them correctly.
	- Parameter for exporting equation result to dataset.
	- What about resistors with R=0?
	- Implement DC model for phaseshifter.
	- Implement DC model for bias T.
	- Handle special DC models for dc-block, dc-feed, inductor and
	  capacitor.
	- Use LU decomposition for matrix inversion and determinants.  Done
	  by Gaussian methods.
	- Implement sec(), cosec(), sech() and cosech() functions.
	- Implement sinc() and sign() functions.
	- Fix dependency in dataset variables when e.g. using max().
	- Add constants like pi to the available symbols in equations.
	- Implement list and logarithmic sweeps and merge them with the
	  existing linear parameter sweep.
	- Do not permit duplicate parameter names in parameter sweeps, but
	  allow them in same order sweeps.
	- Implement implicit dependencies of analysis types.
	- Check for duplicate definitions in equations and parameter sweep
	  variables.
	- Add string constants to equation base class.
- Allow equation variables in component properties.
	- Implement class for vectors of matrices.
	- Check for cyclic analysis definitions.
	- Somehow merge the variable class and the equation base classes.
	- Fix dataset output of multiple variable sweeps.
	- Implement correct analysis order.
	- Optimize reduce by searching for a connection that will result 
	  in the new subnetwork with the smallest number of s-parameter
	  to calculate.
	- Avoid both types of singularities of s-parameter analysis.
	- Insert open node points if necessary.
	- Make dedicated signal ports.
	- Implement 4-port voltage controlled current source (VCCS).
	- Implement circulator.
	- Implement isolator.
	- Implement attenuator.
	- Implement 4-port transformer.
	- Implement device (touchstone file).
	- Implement netlist parser using bison + flex.
	- Permit differential s-parameters.
	- Add math functionality to the dataset class.  The functionality was
	  build into the base types.
	- Allow multiple s-parameter simulations at once.
	- Free the parsed netlist input (as checker functionality).
	- Add already implemented components to checker + factory.
	- Allow s-parameter impedances other than Z=50 Ohm.
	- Implement "@file" component property.  Is now "{file}" property.
	- Allow variable definitions and sweeps.
	- Exit code indicating simulation success/failure.
	- Status and error message file descriptors.
	- Autofy the package.
	- Make 'nr_double_t' configurable.
	- Handle reference impedance for touchstone files correctly.
	- Implement matrix conversion routines for datasets.
	- Add noise parameters in touchstone file importer.
	- Implement 6-port transformer.
	- Add microstrip elements to the list of available components.
