libsidplayfp  0.3.5
OpAmp.h
1 #ifndef OPAMP_H
2 #define OPAMP_H
3 
4 #include "Spline.h"
5 
6 namespace reSIDfp
7 {
8 
17 class OpAmp {
18 
19 private:
20  static const double EPSILON;
21 
23  double x;
24 
25  const double Vddt, vmin, vmax;
26 
27  Spline* opamp;
28 
29  double out[2];
30 
31 public:
38  OpAmp(const double opamp[][2], const int opamplength, const double Vddt) :
39  x(0.),
40  Vddt(Vddt),
41  vmin(opamp[0][0]),
42  vmax(opamp[opamplength - 1][0]),
43  opamp(new Spline(opamp, opamplength)) {}
44 
45  ~OpAmp() { delete opamp; }
46 
47  void reset() {
48  x = vmin;
49  }
50 
58  double solve(const double n, const double vi);
59 };
60 
61 } // namespace reSIDfp
62 
63 #endif