admst/ngspice*.xml, use _f prefix

to avoid name collision with well known function names
actually the leading underscore itself is reserved
This commit is contained in:
rlar 2017-09-25 20:39:43 +02:00 committed by Holger Vogt
parent e17f2ea54b
commit 305d004c38
4 changed files with 31 additions and 31 deletions

View File

@ -641,7 +641,7 @@
or name='asinh' or name='acosh' or name='atanh' or name='atan2'
or name='atan' or name='ln' or name='log' or name='exp' or name='sqrt' or name='abs' or name='limexp'
or name='div' or name='pow' or name='hypot' or name='min' or name='max' ]">
<admst:return name="x" value="_$function($args)"/>
<admst:return name="x" value="_f_$function($args)"/>
<admst:for-each select="$globalanalogfunction/variable[input='yes']">
<admst:value-of select="name"/> <admst:variable name="name" select="%s"/>
<admst:variable name="ret" select=""/>

View File

@ -124,62 +124,62 @@ static inline double min(double x,double y) { return ((x)&lt;(y))?(x):(y); }
#define _circuit_temp ckt-&gt;CKTtemp
#define _scale 1.0
#define _cos(val,arg) val = cos(arg);
#define _f_cos(val,arg) val = cos(arg);
#define _d_cos(val,dval,arg) val = cos(arg); dval = (-sin(arg));
#define _sin(val,arg) val = sin(arg);
#define _f_sin(val,arg) val = sin(arg);
#define _d_sin(val,dval,arg) val = sin(arg); dval = (cos(arg));
#define _tan(val,arg) val = tan(arg);
#define _f_tan(val,arg) val = tan(arg);
#define _d_tan(val,dval,arg) val = tan(arg); dval = (1.0/cos(arg)/cos(arg));
#define _asinh(val,arg) val = asinh(arg);
#define _f_asinh(val,arg) val = asinh(arg);
#define _d_asinh(val,dval,arg) val = asinh(arg); dval = (1.0/sqrt(arg*arg + 1));
#define _hypot(xy,x,y) xy = sqrt((x)*(x)+(y)*(y));
#define _f_hypot(xy,x,y) xy = sqrt((x)*(x)+(y)*(y));
#define _dx_hypot(dx,xy,x,y) dx = (x)/(xy);
#define _dy_hypot(dy,xy,x,y) dy = (y)/(xy);
#define _max(xy,x,y) xy = ((x)&gt;(y))?(x):(y);
#define _f_max(xy,x,y) xy = ((x)&gt;(y))?(x):(y);
#define _dx_max(dx,xy,x,y) dx = ((x)&gt;(y))?1.0:0.0;
#define _dy_max(dy,xy,x,y) dy = ((x)&gt;(y))?0.0:1.0;
#define _min(xy,x,y) xy = ((x)&lt;(y))?(x):(y);
#define _f_min(xy,x,y) xy = ((x)&lt;(y))?(x):(y);
#define _dx_min(dx,xy,x,y) dx = ((x)&lt;(y))?1.0:0.0;
#define _dy_min(dy,xy,x,y) dy = ((x)&lt;(y))?0.0:1.0;
#define _cosh(val,arg) val = cosh(arg);
#define _f_cosh(val,arg) val = cosh(arg);
#define _d_cosh(val,dval,arg) val = cosh(arg); dval = (sinh(arg));
#define _sinh(val,arg) val = sinh(arg);
#define _f_sinh(val,arg) val = sinh(arg);
#define _d_sinh(val,dval,arg) val = sinh(arg); dval = (cosh(arg));
#define _tanh(val,arg) val = tanh(arg);
#define _f_tanh(val,arg) val = tanh(arg);
#define _d_tanh(val,dval,arg) val = tanh(arg); dval = (1.0/cosh(arg)/cosh(arg));
#define _acos(val,arg) val = acos(arg);
#define _f_acos(val,arg) val = acos(arg);
#define _d_acos(val,dval,arg) val = acos(arg); dval = (-1.0/sqrt(1-arg*arg));
#define _asin(val,arg) val = asin(arg);
#define _f_asin(val,arg) val = asin(arg);
#define _d_asin(val,dval,arg) val = asin(arg); dval = (+1.0/sqrt(1-arg*arg));
#define _atan(val,arg) val = atan(arg);
#define _f_atan(val,arg) val = atan(arg);
#define _d_atan(val,dval,arg) val = atan(arg); dval = (+1.0/(1+arg*arg));
#define _logE(val,arg) val = log(arg);
#define _f_logE(val,arg) val = log(arg);
#define _d_logE(val,dval,arg) val = log(arg); dval = (1.0/arg);
#define _log10(val,arg) val = log10(arg);
#define _f_log10(val,arg) val = log10(arg);
#define _d_log10(val,dval,arg) val = log10(arg); dval = (1.0/arg/log(10));
#define _exp(val,arg) val = exp(arg);
#define _f_exp(val,arg) val = exp(arg);
#define _d_exp(val,dval,arg) val = exp(arg); dval = val;
#define _sqrt(val,arg) val = sqrt(arg);
#define _f_sqrt(val,arg) val = sqrt(arg);
#define _d_sqrt(val,dval,arg) val = sqrt(arg); dval = (1.0/val/2.0);
#define _pow(xy,x,y) xy = pow(x,y);
#define _f_pow(xy,x,y) xy = pow(x,y);
#define _dx_pow(dx,xy,x,y) dx = (x==0.0)?0.0:((y/x)*xy);
#define _dy_pow(dy,xy,x,y) dy = (x==0.0)?0.0:((log(x)/exp(0.0))*xy);
#define _atan2(xy,x,y) xy = atan2(x,y);
#define _f_atan2(xy,x,y) xy = atan2(x,y);
#define _dx_atan2(dx,x,y) dx = -(y)/((x)*(x)+(y)*(y));
#define _dy_atan2(dy,x,y) dy = (x)/((x)*(x)+(y)*(y));
#define _div1(x,y) ((x)/(y))
#define _div0(xy,x,y) xy=(x)/(y);
#define _div(xy,dx,x,y) dx=1/(y); xy=(x)*dx;
#define _f_div1(x,y) ((x)/(y))
#define _f_div0(xy,x,y) xy=(x)/(y);
#define _f_div(xy,dx,x,y) dx=1/(y); xy=(x)*dx;
#define _dx_div(dx,xy,x,y)
#define _dy_div(dy,dx,xy,x,y) dy = -xy*dx;
#define _limexp(val,arg) val = ((arg)&lt;(90)) ? (exp(arg)) : (exp(90)*(1.0+(arg-90)));
#define _f_limexp(val,arg) val = ((arg)&lt;(90)) ? (exp(arg)) : (exp(90)*(1.0+(arg-90)));
#define _d_limexp(val,dval,arg) val = ((arg)&lt;(90)) ? (exp(arg)) : (exp(90)*(1.0+(arg-90))); dval = val;
#define _fabs(val,arg) val = fabs(arg);
#define _f_fabs(val,arg) val = fabs(arg);
#define _d_fabs(val,dval,arg) val = fabs(arg); dval = (((val)&gt;=0)?(+1.0):(-1.0));
#define _abs(val) ((val)&lt;(0) ? (-(val)):(val))
#define _f_abs(val) ((val)&lt;(0) ? (-(val)):(val))
/* declarations for $(module) MOSFETs */

View File

@ -26,7 +26,7 @@
<!-- expression//function: mapping verilog-name == C-name of function -->
<admst:template match="fname">
<admst:choose>
<admst:when test="[name='div']"><admst:return name="fname" value="_div1"/></admst:when>
<admst:when test="[name='div']"><admst:return name="fname" value="_f_div1"/></admst:when>
<admst:when test="[name='abs']"><admst:return name="fname" value="fabs"/></admst:when>
<admst:when test="[name='\$shrinkl']"><admst:return name="fname" value="shrinkl"/></admst:when>
<admst:when test="[name='\$shrinka']"><admst:return name="fname" value="shrinka"/></admst:when>

View File

@ -1184,7 +1184,7 @@
<admst:value-of select="position(.)-1"/>
<admst:apply-templates select="." match="function:getname"/>
<admst:apply-templates select="." match="function:getname"/>
<admst:text format="_%s(__%s_%s,"/>
<admst:text format="_f_%s(__%s_%s,"/>
<admst:join select="arguments" separator=",">
<admst:apply-templates select="." match="subexpression:stringify:noprobe"/>
<admst:text format="(%s)"/>
@ -1198,7 +1198,7 @@
<admst:value-of select="position(.)-1"/>
<admst:apply-templates select="." match="function:getname"/>
<admst:apply-templates select="." match="function:getname"/>
<admst:text format="_%s"/>
<admst:text format="_f_%s"/>
<admst:text test="[name='div']" format="0"/>
<admst:text format="(__%s_%s,"/>
<admst:join select="arguments" separator=",">
@ -1277,7 +1277,7 @@
<admst:value-of select="../position(.)-1"/>
<admst:apply-templates select=".." match="function:getname"/>
<admst:apply-templates select=".." match="function:getname"/>
<admst:text format="_%s(__%s_%s,(%s))\n"/>
<admst:text format="_f_%s(__%s_%s,(%s))\n"/>
</admst:otherwise>
</admst:choose>
</admst:for-each>
@ -1286,7 +1286,7 @@
<admst:value-of select="./position(.)-1"/>
<admst:apply-templates select="." match="function:getname"/>
<admst:apply-templates select="." match="function:getname"/>
<admst:text format="_%s(__%s_%s,"/>
<admst:text format="_f_%s(__%s_%s,"/>
<admst:text test="[name='div']" format="__dFx_%(name)_%(position(.)-1),"/>
<admst:join select="arguments" separator=",">
<admst:apply-templates select="." match="subexpression:stringify:noprobe"/>