#include
using namespace std;
class Root{
private:
static unsigned long double pow(unsigned long double number,
int power){
unsigned long double retVal = number;
for(int i=0; i retVal *= number;}return retVal;
}public:
static unsigned long double nroot(unsigned long double number, int root)
{if(number < 0){
throw "ERROR - It is possible that tere were no real
answers.nNumber entered was less than 0.";}unsigned long double low = 0, high = (number/2)+1, mid =
(low+high)/2;for(;(low < high) && ((pow(mid, root)-number)>0.000001 ||
(pow(mid, root)-number)<-0.000001); mid = (low+high)/2){if(pow(mid, root) < number){
low = mid;}else if(pow(mid, root) > number){high = mid;}else{
return mid;
}}return (low+high)/2;
}static unsigned long double sqrt(unsigned long double number){return nroot(number, 2);
}};int main(...){
try{
cout << endl << Root::nroot(123.14159, 15) << endl;}catch(char* error){cout << error << endl;}return 0;
}