/* Bisection method to approximate solution to X^X=55 */
#include <iostream>
#include <math.h>
using namespace std;
int main() {
void bisec(double,double);
bisec(3,4); // trivial guess [3,4] of interval where the root lies in
return 0;
}
void bisec(double lo,double hi)
{
double root,res;
root=(lo+hi)/2; // bisecting the interval
res=pow(root,root)-55; // polynomial evaluation
if(hi-lo<pow(10,-6))
{
cout<<root;
exit(0);
}
(res<0) ? bisec(root,hi) : bisec(lo,root); // recursive call depending on sign of res
}
LyogQmlzZWN0aW9uIG1ldGhvZCB0byBhcHByb3hpbWF0ZSBzb2x1dGlvbiB0byBYXlg9NTUgKi8KCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPG1hdGguaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJdm9pZCBiaXNlYyhkb3VibGUsZG91YmxlKTsKCWJpc2VjKDMsNCk7IC8vIHRyaXZpYWwgZ3Vlc3MgWzMsNF0gb2YgaW50ZXJ2YWwgd2hlcmUgdGhlIHJvb3QgbGllcyBpbgoJcmV0dXJuIDA7Cn0Kdm9pZCBiaXNlYyhkb3VibGUgbG8sZG91YmxlIGhpKQoJewoJCWRvdWJsZSByb290LHJlczsKCQlyb290PShsbytoaSkvMjsgLy8gYmlzZWN0aW5nIHRoZSBpbnRlcnZhbAoJCXJlcz1wb3cocm9vdCxyb290KS01NTsgLy8gcG9seW5vbWlhbCBldmFsdWF0aW9uCgkJaWYoaGktbG88cG93KDEwLC02KSkKCQkJewoJCQkJY291dDw8cm9vdDsKCQkJCWV4aXQoMCk7CgkJCX0KCQkocmVzPDApID8gYmlzZWMocm9vdCxoaSkgOiBiaXNlYyhsbyxyb290KTsgLy8gcmVjdXJzaXZlIGNhbGwgZGVwZW5kaW5nIG9uIHNpZ24gb2YgcmVzCgl9