include ceil and floor function

This commit is contained in:
dwarning 2020-12-20 17:59:19 +01:00 committed by Holger Vogt
parent 7cef1871bb
commit 30ccbc9a18
4 changed files with 16 additions and 5 deletions

View File

@ -587,12 +587,13 @@ static inline double _d0_vt(double arg) { (void) arg; return (1.380650
</admst:apply-templates>
</admst:for-each>
<admst:choose>
<admst:when test="[ name='cos' or name='sin' or name='tan' or
<admst:when test="[name='cos' or name='sin' or name='tan' or
name='cosh' or name='sinh' or name='tanh' or
name='acos' or name='asin' or name='atan' or name='atan2' or
name='acosh' or name='asinh' or name='atanh' 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' or name='\$vt' ]">
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' or name='\$vt' or
name='floor' or name='ceil']">
<admst:return name="x" value="_fn_$function($args)"/>
<admst:for-each select="$globalanalogfunction/variable[input='yes']">
<admst:value-of select="name"/> <admst:variable name="name" select="%s"/>

View File

@ -62,6 +62,8 @@
#define m00_exp(v00,x) v00 = exp(x);
#define m10_exp(v10,v00,x) v10 = v00;
#define m00_abs(v00) ((v00)&lt;(0)?(-(v00)):(v00))
#define m00_floor(v00,x) v00 = floor(x);
#define m00_ceil(v00,x) v00 = ceil(x);
#define m00_limexp(v00,x) v00 = ((x)&lt;90.0?exp(x):EXP90*(x-89.0));
#define m10_limexp(v10,v00,x) v10 = ((x)&lt;90.0?(v00):EXP90);
#define m00_atan2(v00,x,y) v00 = atan2(x,y);

View File

@ -180,6 +180,8 @@ static inline double min(double x,double y) { return ((x)&lt;(y))?(x):(y); }
#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 _f_abs(val) ((val)&lt;(0) ? (-(val)):(val))
#define _f_floor(val,arg) val = floor(arg);
#define _f_ceil(val,arg) val = ceil(arg);
/* declarations for $(module) MOSFETs */

View File

@ -37,7 +37,13 @@
<admst:when test="[name='\$model']"><admst:return name="fname" value="_modelname"/></admst:when>
<admst:when test="[name='\$instance']"><admst:return name="fname" value="_instancename"/></admst:when>
<admst:when test="[name='\$temperature']"><admst:return name="fname" value="_circuit_temp"/></admst:when>
<admst:when test="[name='abs' or name='acos' or name='asinh' or name='acosh' or name='atanh' or name='asin' or name='atan' or name='cos' or name='cosh' or name='exp' or name='hypot' or name='limexp' or name='ln' or name='log' or name='sin' or name='sinh' or name='sqrt' or name='tan' or name='tanh' or name='atan2' or name='pow' or name='max' or name='min']">
<admst:when test="[name='cos' or name='sin' or name='tan' or
name='cosh' or name='sinh' or name='tanh' or
name='acos' or name='asin' or name='atan' or name='atan2' or
name='acosh' or name='asinh' or name='atanh' 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' or name='\$vt' or
name='floor' or name='ceil']">
<admst:return name="fname" value="%(name)"/>
</admst:when>
<admst:otherwise><admst:return name="fname" value="$(module)_%(name)"/></admst:otherwise>
@ -47,7 +53,7 @@
<admst:template match="function">
<admst:choose>
<admst:when test="[name='\$port_connected']">
<admst:message format="ZZ 11!! port_connecte, this one\n"/>
<admst:message format="ZZ 11!! port_connected, this one\n"/>
<admst:for-each select="arguments[position(.)=1]">
<admst:value-to select="/simulator/tmp" value="(here->%(.)Node_connected /* port_connected 13 */)"/>
</admst:for-each>