#include <iostream> 
#include <iomanip> 
#include <cmath> 
 
using  namespace  std; 
 
double  f( double  x)  { 
    return  ( ( 2.0  *  x -  3.0 )  *  x +  4.0 )  *  x -  5.0 ; 
} 
 
int  main( )  { 
    double  x1, x2, x3, f1, f2, f3, tolerance; 
 
    cout  <<  "Secant Method with Horner's Rule"  <<  endl; 
    cout  <<  "f(x) = 2x³ - 3x² + 4x - 5"  <<  endl; 
 
    cout  <<  "Enter the value of x1: " ; 
    cin  >>  x1; 
    cout  <<  "Enter the value of x2: " ; 
    cin  >>  x2; 
    cout  <<  "Enter the tolerance: " ; 
    cin  >>  tolerance; 
 
    f1 =  f( x1) ; 
    f2 =  f( x2) ; 
 
    cout  <<  fixed <<  setprecision( 6 ) ; 
    cout  <<  "\n Iteration\t x1\t \t x2\t \t x3\t \t f(x1)\t \t f(x2)\t \t Residual"  <<  endl; 
    cout  <<  "----------------------------------------------------------------------------------------"  <<  endl; 
 
    int  iteration =  0 ; 
 
    do  { 
        x3 =  ( f2 *  x1 -  f1 *  x2)  /  ( f2 -  f1) ; 
        f3 =  f( x3) ; 
 
        iteration++ ; 
 
        cout  <<  iteration <<  "\t \t "  <<  x1 <<  "\t "  <<  x2 <<  "\t "  <<  x3
             <<  "\t "  <<  f1 <<  "\t "  <<  f2 <<  "\t "  <<  fabs ( f3)  <<  endl; 
 
        x1 =  x2; 
        f1 =  f2; 
        x2 =  x3; 
        f2 =  f3; 
 
    }  while  ( fabs ( f3)  >=  tolerance &&  iteration <  100 ) ; 
 
    cout  <<  "\n Approximate root = "  <<  x3 <<  endl; 
    cout  <<  "Final residual = "  <<  f3 <<  endl; 
    cout  <<  "Iterations needed = "  <<  iteration <<  endl; 
 
    return  0 ; 
} 
 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNtYXRoPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmRvdWJsZSBmKGRvdWJsZSB4KSB7CiAgICByZXR1cm4gKCgyLjAgKiB4IC0gMy4wKSAqIHggKyA0LjApICogeCAtIDUuMDsKfQoKaW50IG1haW4oKSB7CiAgICBkb3VibGUgeDEsIHgyLCB4MywgZjEsIGYyLCBmMywgdG9sZXJhbmNlOwoKICAgIGNvdXQgPDwgIlNlY2FudCBNZXRob2Qgd2l0aCBIb3JuZXIncyBSdWxlIiA8PCBlbmRsOwogICAgY291dCA8PCAiZih4KSA9IDJ4wrMgLSAzeMKyICsgNHggLSA1IiA8PCBlbmRsOwoKICAgIGNvdXQgPDwgIkVudGVyIHRoZSB2YWx1ZSBvZiB4MTogIjsKICAgIGNpbiA+PiB4MTsKICAgIGNvdXQgPDwgIkVudGVyIHRoZSB2YWx1ZSBvZiB4MjogIjsKICAgIGNpbiA+PiB4MjsKICAgIGNvdXQgPDwgIkVudGVyIHRoZSB0b2xlcmFuY2U6ICI7CiAgICBjaW4gPj4gdG9sZXJhbmNlOwoKICAgIGYxID0gZih4MSk7CiAgICBmMiA9IGYoeDIpOwoKICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDYpOwogICAgY291dCA8PCAiXG5JdGVyYXRpb25cdHgxXHRcdHgyXHRcdHgzXHRcdGYoeDEpXHRcdGYoeDIpXHRcdFJlc2lkdWFsIiA8PCBlbmRsOwogICAgY291dCA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgPDwgZW5kbDsKCiAgICBpbnQgaXRlcmF0aW9uID0gMDsKCiAgICBkbyB7CiAgICAgICAgeDMgPSAoZjIgKiB4MSAtIGYxICogeDIpIC8gKGYyIC0gZjEpOwogICAgICAgIGYzID0gZih4Myk7CgogICAgICAgIGl0ZXJhdGlvbisrOwoKICAgICAgICBjb3V0IDw8IGl0ZXJhdGlvbiA8PCAiXHRcdCIgPDwgeDEgPDwgIlx0IiA8PCB4MiA8PCAiXHQiIDw8IHgzCiAgICAgICAgICAgICA8PCAiXHQiIDw8IGYxIDw8ICJcdCIgPDwgZjIgPDwgIlx0IiA8PCBmYWJzKGYzKSA8PCBlbmRsOwoKICAgICAgICB4MSA9IHgyOwogICAgICAgIGYxID0gZjI7CiAgICAgICAgeDIgPSB4MzsKICAgICAgICBmMiA9IGYzOwoKICAgIH0gd2hpbGUgKGZhYnMoZjMpID49IHRvbGVyYW5jZSAmJiBpdGVyYXRpb24gPCAxMDApOwoKICAgIGNvdXQgPDwgIlxuQXBwcm94aW1hdGUgcm9vdCA9ICIgPDwgeDMgPDwgZW5kbDsKICAgIGNvdXQgPDwgIkZpbmFsIHJlc2lkdWFsID0gIiA8PCBmMyA8PCBlbmRsOwogICAgY291dCA8PCAiSXRlcmF0aW9ucyBuZWVkZWQgPSAiIDw8IGl0ZXJhdGlvbiA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9