Loading...
Searching...
No Matches
shortfl.cc File Reference
`#include "misc/auxiliary.h"`
`#include "misc/mylimits.h"`
`#include "reporter/reporter.h"`
`#include "coeffs/numbers.h"`
`#include "coeffs/coeffs.h"`
`#include "coeffs/mpr_complex.h"`
`#include "coeffs/shortfl.h"`
`#include "coeffs/longrat.h"`
`#include <cmath>`

Go to the source code of this file.

## Data Structures

union | nf

## Macros

#define | SR_HDL(A)
#define | IS_INT(A)
#define | IS_IMM(A)
#define | GET_NOM(A)
#define | GET_DENOM(A)

## Functions

static nMapFunc | nrSetMap (const coeffs src, const coeffs dst)
| Get a mapping function from src into the domain of this type: n_R.
static number | nrMapQ (number from, const coeffs r, const coeffs aRing)
SI_FLOAT | nrFloat (number n)
| Converts a n_R number into a float. Needed by Maps.
static BOOLEAN | nrGreaterZero (number k, const coeffs r)
static number | nrMult (number a, number b, const coeffs r)
static number | nrInit (long i, const coeffs r)
static long | nrInt (number &n, const coeffs r)
static number | nrAdd (number a, number b, const coeffs r)
static number | nrSub (number a, number b, const coeffs r)
static BOOLEAN | nrIsZero (number a, const coeffs r)
static BOOLEAN | nrIsOne (number a, const coeffs r)
static BOOLEAN | nrIsMOne (number a, const coeffs r)
static number | nrDiv (number a, number b, const coeffs r)
static number | nrInvers (number c, const coeffs r)
static number | nrNeg (number c, const coeffs r)
static BOOLEAN | nrGreater (number a, number b, const coeffs r)
static BOOLEAN | nrEqual (number a, number b, const coeffs r)
static void | nrWrite (number a, const coeffs r)
static const char * | nrRead (const char *s, number *a, const coeffs r)
static BOOLEAN | nrDBTest (number a, const char *f, const int l, const coeffs r)
static number | nrMapP (number from, const coeffs aRing, const coeffs r)
static number | nrMapLongR (number from, const coeffs aRing, const coeffs r)
static number | nrMapC (number from, const coeffs aRing, const coeffs r)
static number | nrMapZ (number from, const coeffs aRing, const coeffs r)
static char * | nrCoeffString (const coeffs r)
static char * | nrCoeffName (const coeffs r)
BOOLEAN | nrInitChar (coeffs n, void *p)
| Initialize r.

## Variables

static const SI_FLOAT | nrEps = 1.0e-3

## Macro Definition Documentation

## GET_DENOM

#define GET_DENOM | ( |  | A | ) |

Value:
((A)->n)
A
#define A
Definition sirandom.c:24

## GET_NOM

#define GET_NOM | ( |  | A | ) |

Value:
((A)->z)

## IS_IMM

#define IS_IMM | ( |  | A | ) |

Value:
(SR_HDL(A) & SR_INT)
SR_INT
#define SR_INT
Definition longrat.h:67
SR_HDL
#define SR_HDL(A)
Definition tgb.cc:35

## IS_INT

#define IS_INT | ( |  | A | ) |

Value:
((A)->s==3)

## SR_HDL

#define SR_HDL | ( |  | A | ) |

Value:
((long)(A))

## Function Documentation

## nrAdd()

number nrAdd | ( | number | a,
|  | number | b,
|  | const coeffs | r )

static

Definition at line 94 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
SI_FLOAT x = nf(a).F();
SI_FLOAT y = nf(b).F();
SI_FLOAT f = x + y;
if (x > 0.0)
{
if (y < 0.0)
{
x = f / (x - y);
if (x < 0.0)
x = -x;
if (x < nrEps)
f = 0.0;
}
}
else
{
if (y > 0.0)
{
x = f / (y - x);
if (x < 0.0)
x = -x;
if (x < nrEps)
f = 0.0;
}
}
return nf(f).N();
}
x
Variable x
Definition cfModGcd.cc:4090
b
CanonicalForm b
Definition cfModGcd.cc:4111
f
FILE * f
Definition checklibs.c:9
n_R
@ n_R
single prescision (6,6) real numbers
Definition coeffs.h:31
getCoeffType
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
Definition coeffs.h:431
y
const CanonicalForm int const CFList const Variable & y
Definition facAbsFact.cc:53
assume
#define assume(x)
Definition mod2.h:389
nrEps
static const SI_FLOAT nrEps
Definition shortfl.cc:30
SI_FLOAT
#define SI_FLOAT
Definition shortfl.h:15
nf
Definition gnumpfl.cc:25
nf::F
SI_FLOAT F() const
Definition gnumpfl.cc:30
nf::N
number N() const
Definition gnumpfl.cc:31

## nrCoeffName()

char * nrCoeffName | ( | const coeffs | r | ) |

static

Definition at line 653 of file shortfl.cc.

{
return (char*)"Float()";
}

## nrCoeffString()

char * nrCoeffString | ( | const coeffs | r | ) |

static

Definition at line 648 of file shortfl.cc.

{
return omStrDup("Float()");
}
omStrDup
#define omStrDup(s)
Definition omAllocDecl.h:263

## nrDBTest()

BOOLEAN nrDBTest | ( | number | a,
|  | const char * | f,
|  | const int | l,
|  | const coeffs | r )

static

Definition at line 370 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
return TRUE;
}
TRUE
#define TRUE
Definition auxiliary.h:101

## nrDiv()

number nrDiv | ( | number | a,
|  | number | b,
|  | const coeffs | r )

static

Definition at line 183 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
SI_FLOAT n = nf(b).F();
if (n == 0.0)
{
WerrorS(nDivBy0);
return nf((SI_FLOAT)0.0).N();
}
else
return nf(nf(a).F() / n).N();
}
WerrorS
void WerrorS(const char *s)
Definition feFopen.cc:24
nDivBy0
const char *const nDivBy0
Definition numbers.h:90

## nrEqual()

BOOLEAN nrEqual | ( | number | a,
|  | number | b,
|  | const coeffs | r )

static

Definition at line 224 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
number x = nrSub(a,b,r);
return nf(x).F() == nf((SI_FLOAT)0.0).F();
}
nrSub
static number nrSub(number a, number b, const coeffs r)
Definition shortfl.cc:126

## nrFloat()

SI_FLOAT nrFloat | ( | number | n | ) |

Converts a n_R number into a float. Needed by Maps.

Definition at line 48 of file shortfl.cc.

{
return nf(n).F();
}

## nrGreater()

BOOLEAN nrGreater | ( | number | a,
|  | number | b,
|  | const coeffs | r )

static

Definition at line 217 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
return nf(a).F() > nf(b).F();
}

## nrGreaterZero()

BOOLEAN nrGreaterZero | ( | number | k,
|  | const coeffs | r )

static

Definition at line 53 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
return nf(k).F() >= 0.0;
}
k
int k
Definition cfEzgcd.cc:99

## nrInit()

number nrInit | ( | long | i,
|  | const coeffs | r )

static

Definition at line 70 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
SI_FLOAT f = (SI_FLOAT)i;
return nf(nf(f).F()).N();
}
i
int i
Definition cfEzgcd.cc:132

## nrInitChar()

BOOLEAN nrInitChar | ( | coeffs | n,
|  | void * | p )

Initialize r.

Definition at line 658 of file shortfl.cc.

{
assume( getCoeffType(n) == n_R );
assume( p == NULL );
n->is_field=TRUE;
n->is_domain=TRUE;
n->rep=n_rep_float;
//n->cfKillChar = ndKillChar; /* dummy */
n->ch = 0;
n->cfCoeffName = nrCoeffName;
n->cfCoeffString = nrCoeffString;
n->cfInit = nrInit;
n->cfInt = nrInt;
n->cfAdd = nrAdd;
n->cfSub = nrSub;
n->cfMult = nrMult;
n->cfDiv = nrDiv;
n->cfExactDiv= nrDiv;
n->cfInpNeg = nrNeg;
n->cfInvers= nrInvers;
//n->cfCopy = ndCopy;
n->cfGreater = nrGreater;
n->cfEqual = nrEqual;
n->cfIsZero = nrIsZero;
n->cfIsOne = nrIsOne;
n->cfIsMOne = nrIsMOne;
n->cfGreaterZero = nrGreaterZero;
n->cfWriteLong = nrWrite;
n->cfRead = nrRead;
//n->cfPower = nrPower;
n->cfSetMap = nrSetMap;
/* nName= ndName; */
/*nSize = ndSize;*/
#ifdef LDEBUG
n->cfDBTest=nrDBTest; // not yet implemented: nrDBTest;
#endif
//n->nCoeffIsEqual = ndCoeffIsEqual;
n->float_len = SHORT_REAL_LENGTH;
n->float_len2 = SHORT_REAL_LENGTH;
// TODO: Any variables?
return FALSE;
}
FALSE
#define FALSE
Definition auxiliary.h:97
p
int p
Definition cfModGcd.cc:4086
n_rep_float
@ n_rep_float
(float), see shortfl.h
Definition coeffs.h:123
SHORT_REAL_LENGTH
#define SHORT_REAL_LENGTH
Definition numbers.h:57
NULL
#define NULL
Definition omList.c:12
nrMult
static number nrMult(number a, number b, const coeffs r)
Definition shortfl.cc:60
nrCoeffName
static char * nrCoeffName(const coeffs r)
Definition shortfl.cc:653
nrSetMap
static nMapFunc nrSetMap(const coeffs src, const coeffs dst)
Get a mapping function from src into the domain of this type: n_R.
Definition shortfl.cc:617
nrDBTest
static BOOLEAN nrDBTest(number a, const char *f, const int l, const coeffs r)
Definition shortfl.cc:370
nrInvers
static number nrInvers(number c, const coeffs r)
Definition shortfl.cc:197
nrDiv
static number nrDiv(number a, number b, const coeffs r)
Definition shortfl.cc:183
nrAdd
static number nrAdd(number a, number b, const coeffs r)
Definition shortfl.cc:94
nrNeg
static number nrNeg(number c, const coeffs r)
Definition shortfl.cc:210
nrEqual
static BOOLEAN nrEqual(number a, number b, const coeffs r)
Definition shortfl.cc:224
nrWrite
static void nrWrite(number a, const coeffs r)
Definition shortfl.cc:232
nrCoeffString
static char * nrCoeffString(const coeffs r)
Definition shortfl.cc:648
nrRead
static const char * nrRead(const char *s, number *a, const coeffs r)
Definition shortfl.cc:299
nrIsZero
static BOOLEAN nrIsZero(number a, const coeffs r)
Definition shortfl.cc:158
nrInit
static number nrInit(long i, const coeffs r)
Definition shortfl.cc:70
nrGreater
static BOOLEAN nrGreater(number a, number b, const coeffs r)
Definition shortfl.cc:217
nrIsMOne
static BOOLEAN nrIsMOne(number a, const coeffs r)
Definition shortfl.cc:174
nrIsOne
static BOOLEAN nrIsOne(number a, const coeffs r)
Definition shortfl.cc:165
nrInt
static long nrInt(number &n, const coeffs r)
Definition shortfl.cc:81
nrGreaterZero
static BOOLEAN nrGreaterZero(number k, const coeffs r)
Definition shortfl.cc:53

## nrInt()

long nrInt | ( | number & | n,
|  | const coeffs | r )

static

Definition at line 81 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
long i;
SI_FLOAT f = nf(n).F();
if (((SI_FLOAT)(-MAX_INT_VAL-1) <= f) || ((SI_FLOAT)MAX_INT_VAL >= f))
i = (long)f;
else
i = 0;
return i;
}
MAX_INT_VAL
const int MAX_INT_VAL
Definition mylimits.h:12

## nrInvers()

number nrInvers | ( | number | c,
|  | const coeffs | r )

static

Definition at line 197 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
SI_FLOAT n = nf(c).F();
if (n == 0.0)
{
WerrorS(nDivBy0);
return nf((SI_FLOAT)0.0).N();
}
return nf(1.0 / n).N();
}

## nrIsMOne()

BOOLEAN nrIsMOne | ( | number | a,
|  | const coeffs | r )

static

Definition at line 174 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
SI_FLOAT aa=nf(a).F()+1.0;
if (aa<0.0) aa=-aa;
return (aa<nrEps);
}

## nrIsOne()

BOOLEAN nrIsOne | ( | number | a,
|  | const coeffs | r )

static

Definition at line 165 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
SI_FLOAT aa=nf(a).F()-1.0;
if (aa<0.0) aa=-aa;
return (aa<nrEps);
}

## nrIsZero()

BOOLEAN nrIsZero | ( | number | a,
|  | const coeffs | r )

static

Definition at line 158 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
return (0.0 == nf(a).F());
}

## nrMapC()

number nrMapC | ( | number | from,
|  | const coeffs | aRing,
|  | const coeffs | r )

static

Definition at line 397 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
assume( getCoeffType(aRing) == n_long_C );
gmp_float h = ((gmp_complex*)from)->real();
SI_FLOAT t =(SI_FLOAT)mpf_get_d((mpf_srcptr)&h);
return nf(t).N();
}
gmp_complex
gmp_complex numbers based on
Definition mpr_complex.h:181
gmp_float
Definition mpr_complex.h:32
n_long_C
@ n_long_C
complex floating point (GMP) numbers
Definition coeffs.h:41
h
STATIC_VAR Poly * h
Definition janet.cc:971

## nrMapLongR()

number nrMapLongR | ( | number | from,
|  | const coeffs | aRing,
|  | const coeffs | r )

static

Definition at line 388 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
assume( getCoeffType(aRing) == n_long_R );
SI_FLOAT t =(SI_FLOAT)mpf_get_d((mpf_srcptr)from);
return nf(t).N();
}
n_long_R
@ n_long_R
real floating point (GMP) numbers
Definition coeffs.h:33

## nrMapP()

number nrMapP | ( | number | from,
|  | const coeffs | aRing,
|  | const coeffs | r )

static

Definition at line 378 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
assume( getCoeffType(aRing) == n_Zp );
int i = (int)((long)from);
SI_FLOAT f = (SI_FLOAT)i;
return nf(f).N();
}
n_Zp
@ n_Zp
\F{p < 2^31}
Definition coeffs.h:29

## nrMapQ()

number nrMapQ | ( | number | from,
|  | const coeffs | r,
|  | const coeffs | aRing )

static

Definition at line 408 of file shortfl.cc.

{
/* in longrat.h
#define SR_INT 1
#define mpz_size1(A) (ABS((A)->_mp_size))
*/
#define SR_HDL(A) ((long)(A))
#define IS_INT(A) ((A)->s==3)
#define IS_IMM(A) (SR_HDL(A) & SR_INT)
#define GET_NOM(A) ((A)->z)
#define GET_DENOM(A) ((A)->n)
assume( getCoeffType(r) == n_R );
assume( aRing->rep == n_rep_gap_rat );
if (IS_IMM(from))
{
SI_FLOAT f = (SI_FLOAT)SR_TO_INT(from);
return nf(nf(f).F()).N();
}
else
{
/* read out the enumerator */
if (IS_INT(from))
{
mpf_t e;
mpf_init(e);
mpf_set_z(e,GET_NOM(from));
SI_FLOAT f = mpf_get_d(e);
mpf_clear(e);
return nf(nf(f).F()).N();
}
else /*quotient*/
{
mpf_t z,n,q;
mpf_init(z);
mpf_init(n);
mpf_init(q);
mpf_set_z(z,GET_NOM(from));
mpf_set_z(n,GET_DENOM(from));
mpf_div(q,z,n);
mpf_clear(z);
mpf_clear(n);
SI_FLOAT f = mpf_get_d(q);
mpf_clear(q);
return nf(nf(f).F()).N();
}
}
}
n_rep_gap_rat
@ n_rep_gap_rat
(number), see longrat.h
Definition coeffs.h:118
SR_TO_INT
#define SR_TO_INT(SR)
Definition longrat.h:69
IS_INT
#define IS_INT(A)
IS_IMM
#define IS_IMM(A)
GET_DENOM
#define GET_DENOM(A)
GET_NOM
#define GET_NOM(A)

## nrMapZ()

number nrMapZ | ( | number | from,
|  | const coeffs | aRing,
|  | const coeffs | r )

static

Definition at line 458 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
assume( aRing->rep == n_rep_gap_gmp );
mpz_ptr z;
mpz_ptr zz=NULL;
if (IS_IMM(from))
{
zz=(mpz_ptr)omAlloc(sizeof(mpz_t));
mpz_init_set_si(zz,SR_TO_INT(from));
z=zz;
}
else
{
/* read out the enumerator */
z=(mpz_ptr)from;
}
int i = mpz_size1(z);
mpf_t e;
mpf_init(e);
mpf_set_z(e,z);
int sign= mpf_sgn(e);
mpf_abs (e, e);
if (zz!=NULL)
{
mpz_clear(zz);
omFreeSize(zz,sizeof(mpz_t));
}
if(i>4)
{
WerrorS("float overflow");
return nf(0.0).N();
}
double basis;
signed long int exp;
basis = mpf_get_d_2exp(&exp, e);
SI_FLOAT f= sign*ldexp(basis,exp);
mpf_clear(e);
return nf(f).N();
}
n_rep_gap_gmp
@ n_rep_gap_gmp
(), see rinteger.h, new impl.
Definition coeffs.h:119
exp
gmp_float exp(const gmp_float &a)
Definition mpr_complex.cc:349
omFreeSize
#define omFreeSize(addr, size)
Definition omAllocDecl.h:260
omAlloc
#define omAlloc(size)
Definition omAllocDecl.h:210
sign
static int sign(int x)
Definition ring.cc:3504
mpz_size1
#define mpz_size1(A)
Definition si_gmp.h:17

## nrMult()

number nrMult | ( | number | a,
|  | number | b,
|  | const coeffs | r )

static

Definition at line 60 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
return nf(nf(a).F() * nf(b).F()).N();
}

## nrNeg()

number nrNeg | ( | number | c,
|  | const coeffs | r )

static

Definition at line 210 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
return nf(-nf(c).F()).N();
}

## nrRead()

const char * nrRead | ( | const char * | s,
|  | number * | a,
|  | const coeffs | r )

static

Definition at line 299 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
static const char *nIllegalChar="illegal character in number";
const char *t;
const char *start=s;
SI_FLOAT z1,z2;
SI_FLOAT n=1.0;
s = nrEatr(s, &z1);
if (*s == '/')
{
if (s==start) { WerrorS(nIllegalChar);return s; }
s++;
s = nrEatr(s, &z2);
if (z2==0.0)
WerrorS(nDivBy0);
else
z1 /= z2;
}
else if (*s =='.')
{
if (s==start) { WerrorS(nIllegalChar);return s; }
s++;
t = s;
while (*t >= '0' && *t <= '9')
{
t++;
n *= 10.0;
}
s = nrEatr(s, &z2);
z1 = (z1*n + z2) / n;
if (*s=='e')
{
int e=0; /* exponent */
int si=1;/* sign of exponent */
s++;
if (*s=='+') s++;
else if (*s=='-') {s++; si=-1; }
while (*s >= '0' && *s <= '9')
{
e=e*10+(*s)-'0';
s++;
}
if (si==1)
{
while (e>0) {z1*=10.0; e--; }
}
else
{
while (e>0) {z1/=10.0; e--; }
}
}
}
*a = nf(z1).N();
return s;
}
s
const CanonicalForm int s
Definition facAbsFact.cc:51

## nrSetMap()

nMapFunc nrSetMap | ( | const coeffs | src,
|  | const coeffs | dst )

static

Get a mapping function from src into the domain of this type: n_R.

Definition at line 617 of file shortfl.cc.

{
assume( getCoeffType(dst) == n_R );
if (src->rep==n_rep_gap_rat) /*Q, Z */
{
return nrMapQ;
}
if (src->rep==n_rep_gap_gmp) /*Q, Z */
{
return nrMapZ;
}
if ((src->rep==n_rep_gmp_float) && nCoeff_is_long_R(src))
{
return nrMapLongR;
}
if ((src->rep==n_rep_float) && nCoeff_is_R(src))
{
return ndCopyMap;
}
if ((src->rep==n_rep_int) && nCoeff_is_Zp(src))
{
return nrMapP;
}
if ((src->rep==n_rep_gmp_complex) && nCoeff_is_long_C(src))
{
return nrMapC;
}
return NULL;
}
ndCopyMap
number ndCopyMap(number a, const coeffs src, const coeffs dst)
Definition numbers.cc:293
nCoeff_is_long_R
static FORCE_INLINE BOOLEAN nCoeff_is_long_R(const coeffs r)
Definition coeffs.h:886
nCoeff_is_Zp
static FORCE_INLINE BOOLEAN nCoeff_is_Zp(const coeffs r)
Definition coeffs.h:795
n_rep_int
@ n_rep_int
(int), see modulop.h
Definition coeffs.h:117
n_rep_gmp_float
@ n_rep_gmp_float
(gmp_float), see
Definition coeffs.h:124
n_rep_gmp_complex
@ n_rep_gmp_complex
(gmp_complex), see gnumpc.h
Definition coeffs.h:125
nCoeff_is_R
static FORCE_INLINE BOOLEAN nCoeff_is_R(const coeffs r)
Definition coeffs.h:831
nCoeff_is_long_C
static FORCE_INLINE BOOLEAN nCoeff_is_long_C(const coeffs r)
Definition coeffs.h:889
nrMapQ
static number nrMapQ(number from, const coeffs r, const coeffs aRing)
Definition shortfl.cc:408
nrMapC
static number nrMapC(number from, const coeffs aRing, const coeffs r)
Definition shortfl.cc:397
nrMapZ
static number nrMapZ(number from, const coeffs aRing, const coeffs r)
Definition shortfl.cc:458
nrMapP
static number nrMapP(number from, const coeffs aRing, const coeffs r)
Definition shortfl.cc:378
nrMapLongR
static number nrMapLongR(number from, const coeffs aRing, const coeffs r)
Definition shortfl.cc:388

## nrSub()

number nrSub | ( | number | a,
|  | number | b,
|  | const coeffs | r )

static

Definition at line 126 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
SI_FLOAT x = nf(a).F();
SI_FLOAT y = nf(b).F();
SI_FLOAT f = x - y;
if (x > 0.0)
{
if (y > 0.0)
{
x = f / (x + y);
if (x < 0.0)
x = -x;
if (x < nrEps)
f = 0.0;
}
}
else
{
if (y < 0.0)
{
x = f / (x + y);
if (x < 0.0)
x = -x;
if (x < nrEps)
f = 0.0;
}
}
return nf(f).N();
}

## nrWrite()

void nrWrite | ( | number | a,
|  | const coeffs | r )

static

Definition at line 232 of file shortfl.cc.

{
assume( getCoeffType(r) == n_R );
//#if SIZEOF_DOUBLE == SIZEOF_LONG
//char ch[16];
//int n = snprintf(ch,16,"%12.6e", nf(a).F());
//#else
char ch[11];
int n = snprintf(ch,11,"%9.3e", nf(a).F());
//#endif
if (ch[0] == '-')
{
char* chbr = (char*)omAlloc(n+3);
memcpy(&chbr[2],&ch[1],n-1);
chbr[0] = '-';
chbr[1] = '(';
chbr[n+1] = ')';
chbr[n+2] = '\0';
StringAppendS(chbr);
omFreeSize(chbr,n+3);
}
else
StringAppend("(%s)",ch);
}
StringAppend
#define StringAppend
Definition emacs.cc:79
StringAppendS
void StringAppendS(const char *st)
Definition reporter.cc:107

## Variable Documentation

## nrEps

const SI_FLOAT nrEps = 1.0e-3

static

Definition at line 30 of file shortfl.cc.