inline bool check_triangular( const char* function, RealType lower, RealType mode, RealType upper, RealType* result, const Policy& pol) { if ((check_triangular_lower(function, lower, result, pol) == false) || (check_triangular_mode(function, mode, result, pol) == false) || (check_triangular_upper(function, upper, result, pol) == false)) { // Some parameter not finite. return false; } else if (lower >= upper) // lower == upper NOT useful. { // lower >= upper. *result = policies::raise_domain_error<RealType>( function, "lower parameter is %1%, but must be less than upper!", lower, pol); return false; } else { // Check lower <= mode <= upper. if (mode < lower) { *result = policies::raise_domain_error<RealType>( function, "mode parameter is %1%, but must be >= than lower!", lower, pol); return false; } if (mode > upper) { *result = policies::raise_domain_error<RealType>( function, "mode parameter is %1%, but must be <= than upper!", upper, pol); return false; } return true; // All OK. } } // bool check_triangular
inline bool check_triangular( const char* function, RealType lower, RealType mode, RealType upper, RealType* result, const Policy& pol) { if(check_triangular_lower(function, lower, result, pol) && check_triangular_mode(function, mode, result, pol) && check_triangular_upper(function, upper, result, pol) && (lower < upper) // lower == upper NOT useful. ) { if (mode < lower) { *result = policies::raise_domain_error<RealType>( function, "mode parameter is %1%, but must be >= than lower!", lower, pol); return false; } if (mode > upper ) { *result = policies::raise_domain_error<RealType>( function, "mode parameter is %1%, but must be <= than upper!", upper, pol); return false; } return true; } else { // upper and lower have each been checked before, so must be lower >= upper. *result = policies::raise_domain_error<RealType>( function, "lower parameter is %1%, but must be less than upper!", lower, pol); return false; } } // bool check_triangular