cpplib02.gms : Test extrinsic functions in cppcclib

Description

Here we test that the extrinsic function in cppcclib for the bi-variate
normal distribution CDF works as expected, by comparing the function
values to precomputed ones and derivative values to numeric
derivatives.

Contributor: Steve


Small Model of Type : GAMS


Category : GAMS Test library


Main file : cpplib02.gms

$title Test extrinsic functions in cppcclib (CPPLIB02,SEQ=636)

$onText
Here we test that the extrinsic function in cppcclib for the bi-variate
normal distribution CDF works as expected, by comparing the function
values to precomputed ones and derivative values to numeric
derivatives.

Contributor: Steve
$offText
$onDollar

$funcLibIn mvnLib cppcclib

* function pdf2    'PDF of bivariate normal'  / mvnLib.pdfBVN /;
function cdf2    'CDF of bivariate normal'  / mvnLib.cdfBVN /;

$if not set INFILE $set INFILE bvnFull
$macro f0     cdf2.value(data(T,'x'),data(T,'y'),data(T,'r'))
$macro f1(j)  cdf2.grad (j:data(T,'x'),data(T,'y'),data(T,'r'));
$macro f1n(j) cdf2.gradn(j:data(T,'x'),data(T,'y'),data(T,'r'));
$macro f2(j1,j2)  cdf2.hess (j1:j2:data(T,'x'),data(T,'y'),data(T,'r'));
$macro f2n(j1,j2) cdf2.hessn(j1:j2:data(T,'x'),data(T,'y'),data(T,'r'));

$include extrtest2a.inc

data(T, 'f_') = data(T,'cdf');

scalar
 aeps0       'absolute error tolerance: function' / 1e-15 /
 reps0       'relative error tolerance: function' / 1e-15 /
 aeps1       'absolute error tolerance: grad'     / 1e-5 /
 reps1       'relative error tolerance: grad'     / 1e-5 /
 aeps2       'absolute error tolerance: hess'     / 1e-5 /
 reps2       'relative error tolerance: hess'     / 1e-5 /
 aepsr       'absolute error tolerance: hess xr'  / 1e-2 /
 repsr       'relative error tolerance: hess xr'  / 1e-2 /
 ;

$include extrtest2b.inc