#include <iostream.h>
#include <math.h>
#include <stl.h>
struct square_root : public unary_function<double, double>
{
square_root () {}
double operator () (double x_) const { return sqrt (x_); }
};
int input [3] = { -1, -4, -16 };
int main ()
{
int output [3];
transform (input, input + 3, output,
unary_compose<square_root, negate<int> > (square_root (), negate<int> ()));
for (int i = 0; i < 3; i++)
cout << output[i] << endl;
return 0;
}