Add a user-settable variable measureprec to set the number of digits
when printing the measure outputs. Internally this is a global variable measure_precision. Enable all measure commands to recognize measure_precision when printing an output. Default value is 5 (yielding 6 digits after .?).
This commit is contained in:
parent
5ec437f672
commit
d163db99c7
|
|
@ -16,6 +16,8 @@
|
|||
#include "com_measure2.h"
|
||||
#include "breakp2.h"
|
||||
|
||||
int measure_precision = -1;
|
||||
|
||||
typedef enum {
|
||||
MEASUREMENT_OK = 0,
|
||||
MEASUREMENT_FAILURE = 1
|
||||
|
|
@ -86,6 +88,9 @@ measure_get_precision(void)
|
|||
if ((env_ptr = getenv("NGSPICE_MEAS_PRECISION")) != NULL)
|
||||
precision = atoi(env_ptr);
|
||||
|
||||
if (measure_precision > 0)
|
||||
precision = measure_precision;
|
||||
|
||||
return precision;
|
||||
}
|
||||
|
||||
|
|
@ -1810,9 +1815,13 @@ get_measure2(
|
|||
|
||||
// print results
|
||||
if (out_line)
|
||||
sprintf(out_line, "%-20s= %e targ= %e trig= %e\n", mName, (measTarg->m_measured - measTrig->m_measured), measTarg->m_measured, measTrig->m_measured);
|
||||
sprintf(out_line, "%-20s= %.*e targ= %.*e trig= %.*e\n",
|
||||
mName, precision, (measTarg->m_measured - measTrig->m_measured),
|
||||
precision, measTarg->m_measured, precision, measTrig->m_measured);
|
||||
else
|
||||
fprintf(mout,"%-20s= %e targ= %e trig= %e\n", mName, (measTarg->m_measured - measTrig->m_measured), measTarg->m_measured, measTrig->m_measured);
|
||||
fprintf(mout,"%-20s= %.*e targ= %.*e trig= %.*e\n", mName, precision,
|
||||
(measTarg->m_measured - measTrig->m_measured),
|
||||
precision, measTarg->m_measured, precision, measTrig->m_measured);
|
||||
|
||||
*result = (measTarg->m_measured - measTrig->m_measured);
|
||||
|
||||
|
|
@ -1883,9 +1892,9 @@ err_ret1:
|
|||
|
||||
// print results
|
||||
if (out_line)
|
||||
sprintf(out_line, "%-20s= %e\n", mName, meas->m_measured);
|
||||
sprintf(out_line, "%-20s= %.*e\n", mName, precision, meas->m_measured);
|
||||
else
|
||||
fprintf(mout,"%-20s= %e\n", mName, meas->m_measured);
|
||||
fprintf(mout,"%-20s= %.*e\n", mName, precision, meas->m_measured);
|
||||
|
||||
*result = meas->m_measured;
|
||||
|
||||
|
|
@ -1924,7 +1933,7 @@ err_ret2:
|
|||
if (out_line)
|
||||
sprintf(out_line, "%-20s= %.*e\n", mName, precision, meas->m_measured);
|
||||
else
|
||||
fprintf(mout, "%-20s= %e\n", mName, meas->m_measured);
|
||||
fprintf(mout, "%-20s= %.*e\n", mName, precision, meas->m_measured);
|
||||
|
||||
*result = meas->m_measured;
|
||||
|
||||
|
|
@ -2012,9 +2021,11 @@ err_ret4:
|
|||
|
||||
// print results
|
||||
if (out_line)
|
||||
sprintf(out_line, "%-20s= %e from= %e to= %e\n", mName, meas->m_measured, meas->m_at, meas->m_measured_at);
|
||||
sprintf(out_line, "%-20s= %.*e from= %.*e to= %.*e\n", mName,
|
||||
precision, meas->m_measured, precision, meas->m_at, precision, meas->m_measured_at);
|
||||
else
|
||||
fprintf(mout, "%-20s= %e from= %e to= %e\n", mName, meas->m_measured, meas->m_at, meas->m_measured_at);
|
||||
fprintf(mout, "%-20s= %.*e from= %.*e to= %.*e\n", mName,
|
||||
precision, meas->m_measured, precision, meas->m_at, precision, meas->m_measured_at);
|
||||
|
||||
*result = meas->m_measured;
|
||||
|
||||
|
|
@ -2059,17 +2070,21 @@ err_ret5:
|
|||
if ((mFunctionType == AT_MIN) || (mFunctionType == AT_MAX)) {
|
||||
// print results
|
||||
if (out_line)
|
||||
sprintf(out_line, "%-20s= %e at= %e\n", mName, measTrig->m_measured, measTrig->m_measured_at);
|
||||
sprintf(out_line, "%-20s= %.*e at= %.*e\n",
|
||||
mName, precision, measTrig->m_measured, precision, measTrig->m_measured_at);
|
||||
else
|
||||
fprintf(mout, "%-20s= %e at= %e\n", mName, measTrig->m_measured, measTrig->m_measured_at);
|
||||
fprintf(mout, "%-20s= %.*e at= %.*e\n",
|
||||
mName, precision, measTrig->m_measured, precision, measTrig->m_measured_at);
|
||||
|
||||
*result = measTrig->m_measured;
|
||||
} else {
|
||||
// print results
|
||||
if (out_line)
|
||||
sprintf(out_line, "%-20s= %e with= %e\n", mName, measTrig->m_measured_at, measTrig->m_measured);
|
||||
sprintf(out_line, "%-20s= %.*e with= %.*e\n",
|
||||
mName, precision, measTrig->m_measured_at, precision, measTrig->m_measured);
|
||||
else
|
||||
fprintf(mout, "%-20s= %e with= %e\n", mName, measTrig->m_measured_at, measTrig->m_measured);
|
||||
fprintf(mout, "%-20s= %.*e with= %.*e\n",
|
||||
mName, precision, measTrig->m_measured_at, precision, measTrig->m_measured);
|
||||
|
||||
*result = measTrig->m_measured_at;
|
||||
}
|
||||
|
|
@ -2117,9 +2132,11 @@ err_ret6:
|
|||
|
||||
// print results
|
||||
if (out_line)
|
||||
sprintf(out_line, "%-20s= %e from= %e to= %e\n", mName, (maxValue - minValue), measTrig->m_from, measTrig->m_to);
|
||||
sprintf(out_line, "%-20s= %.*e from= %.*e to= %.*e\n",
|
||||
mName, precision, (maxValue - minValue), precision, measTrig->m_from, precision, measTrig->m_to);
|
||||
else
|
||||
fprintf(mout, "%-20s= %e from= %e to= %e\n", mName, (maxValue - minValue), measTrig->m_from, measTrig->m_to);
|
||||
fprintf(mout, "%-20s= %.*e from= %.*e to= %.*e\n",
|
||||
mName, precision, (maxValue - minValue), precision, measTrig->m_from, precision, measTrig->m_to);
|
||||
|
||||
*result = (maxValue - minValue);
|
||||
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ char *ft_setkwords[] = {
|
|||
"lprplot5",
|
||||
"lprps",
|
||||
"maxwins",
|
||||
"measureprec",
|
||||
"modelcard",
|
||||
"modelline",
|
||||
"moremode",
|
||||
|
|
|
|||
|
|
@ -342,6 +342,16 @@ cp_usrset(struct variable *var, bool isset)
|
|||
raw_prec = var->va_num;
|
||||
else
|
||||
fprintf(cp_err, "Bad 'rawfileprec' \"%s\"\n", var->va_name);
|
||||
}
|
||||
else if (eq(var->va_name, "measureprec")) {
|
||||
if ((var->va_type == CP_BOOL) && (isset == FALSE))
|
||||
measure_precision = -1;
|
||||
else if (var->va_type == CP_REAL)
|
||||
measure_precision = (int)floor(var->va_real + 0.5);
|
||||
else if (var->va_type == CP_NUM)
|
||||
measure_precision = var->va_num;
|
||||
else
|
||||
fprintf(cp_err, "Bad 'measureprec' \"%s\"\n", var->va_name);
|
||||
} else if (eq(var->va_name, "numdgt")) {
|
||||
if ((var->va_type == CP_BOOL) && (isset == FALSE))
|
||||
cp_numdgt = -1;
|
||||
|
|
@ -350,7 +360,7 @@ cp_usrset(struct variable *var, bool isset)
|
|||
else if (var->va_type == CP_NUM)
|
||||
cp_numdgt = var->va_num;
|
||||
else
|
||||
fprintf(cp_err, "Excuse me??\n");
|
||||
fprintf(cp_err, "Bad 'numdgt' \"%s\"\n", var->va_name);
|
||||
} else if (eq(var->va_name, "unixcom")) {
|
||||
cp_dounixcom = isset;
|
||||
if (isset) {
|
||||
|
|
|
|||
|
|
@ -304,6 +304,9 @@ extern struct plot *raw_read(char *name);
|
|||
extern bool do_measure(char *what, bool chk_only);
|
||||
extern bool check_autostop(char *what);
|
||||
|
||||
/* com_measure2.c*/
|
||||
extern int measure_precision;
|
||||
|
||||
/* resource.c */
|
||||
|
||||
extern void ft_ckspace(void);
|
||||
|
|
|
|||
Loading…
Reference in New Issue