void checkBivariate(const std::string& tag) {
void checkBivariate(const char* tag) {
void checkBivariate(const std::string& tag) {    BivariateTestData values[] = {        /* The data below are from           "Option pricing formulas", E.G. Haug, McGraw-Hill 1998           pag 193        */        {  0.0,  0.0,  0.0, 0.250000 },        {  0.0,  0.0, -0.5, 0.166667 },        {  0.0,  0.0,  0.5, 1.0/3    },        {  0.0, -0.5,  0.0, 0.154269 },        {  0.0, -0.5, -0.5, 0.081660 },        {  0.0, -0.5,  0.5, 0.226878 },        {  0.0,  0.5,  0.0, 0.345731 },        {  0.0,  0.5, -0.5, 0.273122 },        {  0.0,  0.5,  0.5, 0.418340 },        { -0.5,  0.0,  0.0, 0.154269 },        { -0.5,  0.0, -0.5, 0.081660 },        { -0.5,  0.0,  0.5, 0.226878 },        { -0.5, -0.5,  0.0, 0.095195 },        { -0.5, -0.5, -0.5, 0.036298 },        { -0.5, -0.5,  0.5, 0.163319 },        { -0.5,  0.5,  0.0, 0.213342 },        { -0.5,  0.5, -0.5, 0.145218 },        { -0.5,  0.5,  0.5, 0.272239 },        {  0.5,  0.0,  0.0, 0.345731 },        {  0.5,  0.0, -0.5, 0.273122 },        {  0.5,  0.0,  0.5, 0.418340 },        {  0.5, -0.5,  0.0, 0.213342 },        {  0.5, -0.5, -0.5, 0.145218 },        {  0.5, -0.5,  0.5, 0.272239 },        {  0.5,  0.5,  0.0, 0.478120 },        {  0.5,  0.5, -0.5, 0.419223 },        {  0.5,  0.5,  0.5, 0.546244 },        // known analytical values        {  0.0, 0.0, std::sqrt(1/2.0), 3.0/8},//      {  0.0,  big,  any, 0.500000 },        {  0.0,   30, -1.0, 0.500000 },        {  0.0,   30,  0.0, 0.500000 },        {  0.0,   30,  1.0, 0.500000 },//      { big,  big,   any, 1.000000 },        {  30,   30,  -1.0, 1.000000 },        {  30,   30,   0.0, 1.000000 },        {  30,   30,   1.0, 1.000000 },//      {-big,  any,   any, 0.000000 }        { -30, -1.0,  -1.0, 0.000000 },        { -30,  0.0,  -1.0, 0.000000 },        { -30,  1.0,  -1.0, 0.000000 },        { -30, -1.0,   0.0, 0.000000 },        { -30,  0.0,   0.0, 0.000000 },        { -30,  1.0,   0.0, 0.000000 },        { -30, -1.0,   1.0, 0.000000 },        { -30,  0.0,   1.0, 0.000000 },        { -30,  1.0,   1.0, 0.000000 }    };    for (Size i=0; i<LENGTH(values); i++) {        Bivariate bcd(values[i].rho);        Real value = bcd(values[i].a, values[i].b);        Real tolerance = 1.0e-6;        if (std::fabs(value-values[i].result) >= tolerance) {          BOOST_ERROR(tag << " bivariate cumulative distribution\n"                      << "    case: " << i+1 << "\n"                      << QL_FIXED                      << "    a:    " << values[i].a << "\n"                      << "    b:    " << values[i].b << "\n"                      << "    rho:  " << values[i].rho <<"\n"                      << QL_SCIENTIFIC                      << "    tabulated value:  " << values[i].result << "\n"                      << "    result:           " << value);        }    }}