#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;
}