void checkBivariateAtZero(const std::string& tag, Real tolerance) {
void checkBivariateAtZero(const char* tag, Real tolerance) {
void checkBivariateAtZero(const std::string& tag, Real tolerance) {    /*    BVN(0.0,0.0,rho) = 1/4 + arcsin(rho)/(2*M_PI)    "Handbook of the Normal Distribution", J.K. Patel & C.B.Read, 2nd Ed, 1996    */    const Real rho[] = { 0.0, 0.1, 0.2, 0.3, 0.4, 0.5,                         0.6, 0.7, 0.8, 0.9, 0.99999 };    const Real x(0.0);    const Real y(0.0);    for (Size i=0;i<LENGTH(rho);i++) {        for (Integer sgn=-1; sgn < 2; sgn+=2) {            Bivariate bvn(sgn*rho[i]);            Real expected = 0.25 + std::asin(sgn*rho[i]) / (2*M_PI) ;            Real realised = bvn(x,y);            if (std::fabs(realised-expected)>=tolerance) {                BOOST_ERROR(tag << " bivariate cumulative distribution\n"                            << QL_SCIENTIFIC                            << "    rho: " << sgn*rho[i] << "\n"                            << "    expected:  " << expected << "\n"                            << "    realised:  " << realised << "\n"                            << "    tolerance: " << tolerance);            }        }    }}