$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);';