
//
// To jest przykładowy kod z podrozdziału 24.8 „Standardowe funkcje matematyczne” książki
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

#include <iostream>
#include <limits>
#include <cmath>
#include <cerrno>

using namespace std;

//------------------------------------------------------------------------------

const double very_large = std::numeric_limits<double>::max();

int main()
{
    errno = 0;
    double s2 = sqrt(-1.0);
    if (errno) cerr << "Coś, gdzieś się czemuś nie udało.";
    if (errno == EDOM)    // błąd dziedziny
        cerr << "Funkcja sqrt() nie przyjmuje ujemnych argumentów.";
    pow(very_large,2);    // Zły pomysł.
    if (errno==ERANGE)    // Błąd zakresu.
        cerr << "Wartość pow(" << very_large << ",2) za duża dla typu double.";

}

//------------------------------------------------------------------------------
