zeroripple.gms : Zero Ripple Test

Description

```Test result of one-argument functions when input is zero.

Contributor: M. Bussieck, September 2019
```

Small Model of Type : GAMS

Category : GAMS Test library

Main file : zeroripple.gms

``````\$title Zero Ripple Test (ZERORIPPLE,SEQ=803)

\$onText
Test result of one-argument functions when input is zero.

Contributor: M. Bussieck, September 2019
\$offText

scalar x;
* Functions with univariate flavor and zeroRipple=true better result in 0 when called with argument 0
\$onechoV > "%gams.scrDir%zr1.%gams.scrExt%"
x = ceil(%1);          abort\$(x<>0) 'ceil(%1);         ', x;
x = floor(%1);         abort\$(x<>0) 'floor(%1);        ', x;
x = round(%1);         abort\$(x<>0) 'round(%1);        ', x;
x = trunc(%1);         abort\$(x<>0) 'trunc(%1);        ', x;
x = sign(%1);          abort\$(x<>0) 'sign(%1);         ', x;
x = sqr(%1);           abort\$(x<>0) 'sqr(%1);          ', x;
x = sqrt(%1);          abort\$(x<>0) 'sqrt(%1);         ', x;
x = abs(%1);           abort\$(x<>0) 'abs(%1);          ', x;
x = sin(%1);           abort\$(x<>0) 'sin(%1);          ', x;
x = arctan(%1);        abort\$(x<>0) 'arctan(%1);       ', x;
x = frac(%1);          abort\$(x<>0) 'frac(%1);         ', x;
x = Entropy(%1);       abort\$(x<>0) 'Entropy(%1);      ', x;
x = sinh(%1);          abort\$(x<>0) 'sinh(%1);         ', x;
x = tanh(%1);          abort\$(x<>0) 'tanh(%1);         ', x;
x = tan(%1);           abort\$(x<>0) 'tan(%1);          ', x;
x = arcsin(%1);        abort\$(x<>0) 'arcsin(%1);       ', x;
x = JobStatus(%1);     abort\$(x<>0) 'JobStatus(%1);    ', x;
x = JobKill(%1);       abort\$(x<>0) 'JobKill(%1);      ', x;
x = JobTerminate(%1);  abort\$(x<>0) 'JobTerminate(%1); ', x;
x = gdow(%1);          abort\$(x<>0) 'gdow(%1);         ', x;
x = gleap(%1);         abort\$(x<>0) 'gleap(%1);        ', x;
x = ghour(%1);         abort\$(x<>0) 'ghour(%1);        ', x;
x = gminute(%1);       abort\$(x<>0) 'gminute(%1);      ', x;
x = gsecond(%1);       abort\$(x<>0) 'gsecond(%1);      ', x;
x = EDist(%1);         abort\$(x<>0) 'EDist(%1);        ', x;
x = Gmillisec(%1);     abort\$(x<>0) 'Gmillisec(%1);    ', x;

* Functions with univariate flavor and zeroRipple=false better result in ~0 when called with argument 0
x = exp(%1);             abort\$(x=0) 'exp(%1);     ';
x = cos(%1);             abort\$(x=0) 'cos(%1);     ';
x = errorf(%1);          abort\$(x=0) 'errorf(%1);  ';
x = gyear(%1);           abort\$(x=0) 'gyear(%1);   ';
x = gmonth(%1);          abort\$(x=0) 'gmonth(%1);  ';
x = gday(%1);            abort\$(x=0) 'gday(%1);    ';
x = Fact(%1);            abort\$(x=0) 'Fact(%1);    ';
x = Sigmoid(%1);         abort\$(x=0) 'Sigmoid(%1); ';
x = sllog10(%1);         abort\$(x=0) 'sllog10(%1); ';
x = sqlog10(%1);         abort\$(x=0) 'sqlog10(%1); ';
x = slexp(%1);           abort\$(x=0) 'slexp(%1);   ';
x = sqexp(%1);           abort\$(x=0) 'sqexp(%1);   ';
x = slrec(%1);           abort\$(x=0) 'slrec(%1);   ';
x = sqrec(%1);           abort\$(x=0) 'sqrec(%1);   ';
x = cosh(%1);            abort\$(x=0) 'cosh(%1);    ';
x = arccos(%1);          abort\$(x=0) 'arccos(%1);  ';
\$offecho
\$batInclude "%gams.scrDir%zr1.%gams.scrExt%" 0
\$batInclude "%gams.scrDir%zr1.%gams.scrExt%" EPS

** These functions produce an error when called with argument 0, so we skip the test
**x = log(0);          abort\$(x=0) 'log(0);         ';
**x = log10(0);        abort\$(x=0) 'log10(0);       ';
**x = log2(0);         abort\$(x=0) 'log2(0);        ';
**x = Gamma(0);        abort\$(x=0) 'Gamma(0);       ';
**x = LogGamma(0);     abort\$(x=0) 'LogGamma(0);    ';
**x = HandleSubmit(0); abort\$(x=0) 'HandleSubmit(0);';
**x = HandleDelete(0); abort\$(x=0) 'HandleDelete(0);';

** sleep(0) has some side effects (https://stackoverflow.com/questions/3727420/significance-of-sleep0),
** so we want this to be actually called with arg 0
**x = sleep(0);        abort\$(x=0) 'sleep(0);       ';

** These functions distiguish between 0 and eps and hence we better leave zeroRipple=false even if they return 0 for 0
**x = bool_not(eps|0);      abort\$(x=0) 'bool_not(eps|0);';
**x = HandleStatus(eps|0);  abort\$(x=0) 'HandleStatus(eps|0); ';
**x = HandleCollect(eps|0); abort\$(x=0) 'HandleCollect(eps|0);';
**x = mapval(eps|0);        abort\$(x=0) 'mapval(eps|0);';
``````
GAMS Development Corp.
GAMS Software GmbH

General Information and Sales
U.S. (+1) 202 342-0180
Europe: (+49) 221 949-9170