#include <iostream>
#include <cmath>
#include <stdexcept>
using namespace std;
double my_sqrt(double x)
{
if(x < 0)
{
throw invalid_argument("sqrt received negative argument");
}
return sqrt(x);
}
int main(int argc, char *argv[])
{
try
{
double s = my_sqrt(-1);
}
catch(const exception& e)
{
cout << "Caught " << e.what() << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxzdGRleGNlcHQ+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKZG91YmxlIG15X3NxcnQoZG91YmxlIHgpCnsKCWlmKHggPCAwKQoJewoJCXRocm93IGludmFsaWRfYXJndW1lbnQoInNxcnQgcmVjZWl2ZWQgbmVnYXRpdmUgYXJndW1lbnQiKTsKCX0KCXJldHVybiBzcXJ0KHgpOwp9CgoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewoJdHJ5Cgl7CgkJZG91YmxlIHMgPSBteV9zcXJ0KC0xKTsKCX0KCWNhdGNoKGNvbnN0IGV4Y2VwdGlvbiYgZSkKCXsKCQljb3V0IDw8ICJDYXVnaHQgIiA8PCBlLndoYXQoKSA8PCBlbmRsOwoJfQoJcmV0dXJuIDA7Cn0=