From b2598cbe58e31de9e33db5e95b161fecb979f5e4 Mon Sep 17 00:00:00 2001 From: r29173 Date: Thu, 5 Jul 2007 09:44:11 +0000 Subject: [PATCH] added new evaluate function (support of ddx operator used inside contribs) --- .../devices/adms/admst/ngspiceMODULE.hxx.xml | 2867 +++++++++++++++++ .../adms/admst/ngspiceMODULEload.c.xml | 12 +- .../devices/adms/admst/ngspiceMakefile.am.xml | 18 +- 3 files changed, 2887 insertions(+), 10 deletions(-) create mode 100644 src/spicelib/devices/adms/admst/ngspiceMODULE.hxx.xml diff --git a/src/spicelib/devices/adms/admst/ngspiceMODULE.hxx.xml b/src/spicelib/devices/adms/admst/ngspiceMODULE.hxx.xml new file mode 100644 index 000000000..6a66396db --- /dev/null +++ b/src/spicelib/devices/adms/admst/ngspiceMODULE.hxx.xml @@ -0,0 +1,2867 @@ + + + + + + + + + + + + + +/* arithmetics */ +#define EXP90 1.220403294317841e+039 +#define m00_hypot(v00,x,y) v00 = sqrt((x)*(x)+(y)*(y)); +#define m10_hypot(v10,v00,x,y) v10 = (x)/(v00); +#define m11_hypot(v11,v00,x,y) v11 = (y)/(v00); +#define m00_max(v00,x,y) v00 = ((x)>(y))?(x):(y); +#define m10_max(v10,v00,x,y) v10 = ((x)>(y))?1.0:0.0; +#define m11_max(v11,v00,x,y) v11 = ((x)>(y))?0.0:1.0; +#define m00_min(v00,x,y) v00 = ((x)<(y))?(x):(y); +#define m10_min(v10,v00,x,y) v10 = ((x)<(y))?1.0:0.0; +#define m11_min(v11,v00,x,y) v11 = ((x)<(y))?0.0:1.0; +#define m00_pow(v00,x,y) v00 = pow(x,y); +#define m10_pow(v10,v00,x,y) v10 = (x==0.0)?0.0:(v00)*(y)/(x); +#define m11_pow(v11,v00,x,y) v11 = (x==0.0)?0.0:(log(x)*(v00)); +#define m00_div(v00,v10,x,y) double v10=1/(y); double v00=(x)*v10; +#define m10_div(v10,v00,vv,x,y) +#define m11_div(v11,v00,vv,x,y) double v11 = -v00*vv; +#define m00_mult(v00,v10,v11,x,y) double v10=(x); double v11=(y); double v00=v10*v11; +#define m00_add(v00,x,y) double v00=(x)+(y); +#define m00_cos(v00,x) v00 = cos(x); +#define m10_cos(v10,v00,x) v10 = (-sin(x)); +#define m00_sin(v00,x) v00 = sin(x); +#define m10_sin(v10,v00,x) v10 = (cos(x)); +#define m00_tan(v00,x) v00 = tan(x); +#define m10_tan(v10,v00,x) v10 = (1.0/cos(x)/cos(x)); +#define m00_cosh(v00,x) v00 = cosh(x); +#define m10_cosh(v10,v00,x) v10 = (sinh(x)); +#define m00_sinh(v00,x) v00 = sinh(x); +#define m10_sinh(v10,v00,x) v10 = (cosh(x)); +#define m00_tanh(v00,x) v00 = tanh(x); +#define m10_tanh(v10,v00,x) v10 = (1.0/cosh(x)/cosh(x)); +#define m00_acos(v00,x) v00 = acos(x); +#define m10_acos(v10,v00,x) v10 = (-1.0/sqrt(1-x*x)); +#define m00_asin(v00,x) v00 = asin(x); +#define m10_asin(v10,v00,x) v10 = (+1.0/sqrt(1-x*x)); +#define m00_atan(v00,x) v00 = atan(x); +#define m10_atan(v10,v00,x) v10 = (+1.0/(1+x*x)); +#define m00_logE(v00,x) v00 = log(x); +#define m10_logE(v10,v00,x) v10 = (1.0/x); +#define m00_log10(v00,x) v00 = log10(x); +#define m10_log10(v10,v00,x) v10 = (1.0/x/log(10)); +#define m00_sqrt(v00,x) v00 = sqrt(x); +#define m10_sqrt(v10,v00,x) v10 = (0.5/v00); +#define m00_fabs(v00,x) v00 = fabs(x); +#define m10_fabs(v10,v00,x) v10 = (((x)>=0)?(+1.0):(-1.0)); +#define m00_exp(v00,x) v00 = exp(x); +#define m10_exp(v10,v00,x) v10 = v00; +#define m00_abs(v00) ((v00)<(0)?(-(v00)):(v00)) +#define m00_limexp(v00,x) v00 = ((x)<90.0?exp(x):EXP90*(x-89.0)); +#define m10_limexp(v10,v00,x) v10 = ((x)<90.0?(v00):EXP90); + +#define m20_logE(v00) (-1.0/v00/v00) +#define m20_exp(v00) exp(v00) +#define m20_limexp(v00) ((v00)<90.0?exp(v00):0.0) +#define m20_sqrt(v00) (-0.25/(v00)/sqrt(v00)) +#define m20_fabs(v00) 0.0 + + + + +/*wrapper*/ +#define pModel model +#define mint_get_circuit_tempK() _circuit_temp +#define voltages(n) NP(n) +#define _DDT(q) q +#define _DDX +#define _DERIVATEFORDDX + + + + +inline double _cos(double arg) { return cos(arg); } +inline double _d0_cos(double arg) { return (-sin(arg)); } +inline double _sin(double arg) { return sin(arg); } +inline double _d0_sin(double arg) { return (cos(arg)); } +inline double _tan(double arg) { return tan(arg); } +inline double _d0_tan(double arg) { return (1.0/cos(arg)/cos(arg)); } +inline double _cosh(double arg) { return cosh(arg); } +inline double _d0_cosh(double arg) { return (sinh(arg)); } +inline double _sinh(double arg) { return sinh(arg); } +inline double _d0_sinh(double arg) { return (cosh(arg)); } +inline double _tanh(double arg) { return tanh(arg); } +inline double _d0_tanh(double arg) { return (1.0/cosh(arg)/cosh(arg)); } +inline double _acos(double arg) { return acos(arg); } +inline double _d0_acos(double arg) { return (-1.0/sqrt(1-arg*arg)); } +inline double _asin(double arg) { return asin(arg); } +inline double _d0_asin(double arg) { return (+1.0/sqrt(1-arg*arg)); } +inline double _atan(double arg) { return atan(arg); } +inline double _d0_atan(double arg) { return (+1.0/(1+arg*arg)); } +inline double _logE(double arg) { return log(arg); } +inline double _d0_logE(double arg) { return (1.0/arg); } +inline double _log10(double arg) { return log10(arg); } +inline double _d0_log10(double arg) { return (1.0/arg/log(10)); } +inline double _exp(double arg) { return exp(arg); } +inline double _d0_exp(double arg) { return exp(arg); } +inline double _sqrt(double arg) { return sqrt(arg); } +inline double _d0_sqrt(double arg) { return (1.0/sqrt(arg)/2.0); } +inline double _abs(double arg) { return fabs(arg); } +inline double _d0_abs(double arg) { return (((arg)>=0)?(+1.0):(-1.0)); } + +inline double _hypot(double x,double y) { return sqrt((x)*(x)+(y)*(y)); } +inline double _d0_hypot(double x,double y) { return (x)/sqrt((x)*(x)+(y)*(y)); } +inline double _d1_hypot(double x,double y) { return (y)/sqrt((x)*(x)+(y)*(y)); } + +inline double _max(double x,double y) { return ((x)>(y))?(x):(y); } +inline double _d0_max(double x,double y) { return ((x)>(y))?1.0:0.0; } +inline double _d1_max(double x,double y) { return ((x)>(y))?0.0:1.0; } + +inline double _min(double x,double y) { return ((x)<(y))?(x):(y); } +inline double _d0_min(double x,double y) { return ((x)<(y))?1.0:0.0; } +inline double _d1_min(double x,double y) { return ((x)<(y))?0.0:1.0; } + +inline double _pow(double x,double y) { return pow(x,y); } +inline double _d0_pow(double x,double y) { return (x==0.0)?0.0:((y/x)*pow(x,y)); } +inline double _d1_pow(double x,double y) { return (x==0.0)?0.0:((log(x)/exp(0.0))*pow(x,y)); } + +#define _limexp(arg) _exp(val,arg) +#define _d_limexp(arg) _d_exp(val,dval,arg) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + int + double + char* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fabs + shrinkl + shrinka + log10 + logE + limexp + limexp + %(name) + + + + + $e + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + printf( + _warning( + _error( + _finish( + _stop( + + + + + + %(e(tree)) + "\\n" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/spicelib/devices/adms/admst/ngspiceMODULEload.c.xml b/src/spicelib/devices/adms/admst/ngspiceMODULEload.c.xml index 92103baac..5354fcd74 100644 --- a/src/spicelib/devices/adms/admst/ngspiceMODULEload.c.xml +++ b/src/spicelib/devices/adms/admst/ngspiceMODULEload.c.xml @@ -3,7 +3,10 @@