$title test correctness of intrinsic functions (FUNCS5,SEQ=149) set fn 'intrinsic functions with tests that pass' / sqr exp log log2 log10 sqrt cos sin atan 'arctan' errf errf2 'errf' power fact pi ncpf ncpf2 'ncpf' ncpcm ncpcm2 'ncpcm' entro 'entropy' entro2 'entropy' sigmo 'sigmoid' sigmo2 'sigmoid' rpow 'rpower' rpow2 'rpower' rpow3 'rpower' * edist not yet implemented sllog10 'sllog10' sllog102 'sllog10' sqlog10 'sqlog10' sqlog102 'sqlog10' slexp 'slexp' slexp2 'slexp' sqexp 'sqexp' sqexp2 'sqexp' slrec 'slrec' slrec2 'slrec' sqrec 'sqrec' sqrec2 'sqrec' * cvpower not yet implemented vcpow 'vcpower' vcpow2 'vcpower' * centr 'centropy, large x' * centr2 'centropy, small x' centr3 'centropy, typical inputs' centr4 'centropy, typical inputs' centr5 'centropy, nice inputs' centr6 'centropy, very small inputs' * centrx 'centropy eXceptions' centry 'centropy exceptions' gamma 'gamma, positive inputs' * gamma2 DOES NOT PASS THE TEST loggamma 'loggamma, exceptional and normal inputs' beta 'beta, easy inputs and wide tols' logbeta 'logbeta, easy inputs and wide tols' * gammareg not yet implemented * betareg not yet implemented sinh cosh tanh spowx 'signpower' spown 'signpower' ncpvus 'NcpVUsin' ncpvup 'NcpVUpow' ncpvux 'NcpVUsin and NcpVUpow' binomial 'binomial' tan acos 'arccos' acosx 'arccos eXceptions' asin 'arcsin' asinx 'arcsin eXceptions' atan2 'arctan2' atan2n 'arctan2 compared to numerical derivs' atan2x 'arctan2 eXceptions' sincosintrv 'sin/cos func/grad interval evals' logit 'ln(p/(1-p)' lse 'Log of Sum of Exponents max/min' lsemax 'ln(exp(x1)+exp(x2)+ ...)' lsemaxsc 'ln(exp(t*x1)+exp(t*x2)+ ...) / t' lsemin '-ln(exp(-x1)+exp(-x2)+ ...)' lseminsc '-ln(exp(-t*x1)+exp(-t*x2)+ ...) / t' /; SET tfn(fn) 'functions to test'; $if not set FN $goTo allfuncs SET tfn(fn) / %FN% /; $goTo have_tfn $label allfuncs tfn(fn) = yes; $label have_tfn file fp /'fnscript.gms'/; put fp '$onDollar' /; loop {fn(tfn), put '$call =testlib -q fn' fn.tl:0 /; put '$if errorlevel 1 $abort Could not retrieve test fn' fn.tl:0 /; put '$call =gams fn' fn.tl:0 ' lo=2 ZeroRes=2e-299 FDDelta=1e-3' /; put '$if errorlevel 1 $abort Error running test fn' fn.tl:0 /; }; putclose fp; scalar rc; execute '=gams fnscript lo=%GAMS.lo%'; rc=errorlevel; abort$rc 'intrinsic function test failed';