double __cdecl AL1Iteration( double x, /* The input value x */ double L, /* The parameter Lamda */ double ( __cdecl *f )( double ), /* The function f(x) */ double ( __cdecl *f1 )( double ) /* The 1st derivative */ ) { double Numerator; double Denominator; double f_0 = f( x ); double f_1 = f1( x ); Numerator = x * f_0; Denominator = -f_1 * x + L * f_0; return x + Numerator/Denominator; } double k; double f(double x) { return x*x -k; } double f1(double x) { return x+x; } #include #include #include int main( ) { double x = 2.2; double l; double result; k = 5.0; for ( l = -1; l <= 1.0; l+= 0.5e0L) { result = AL1Iteration(x, l, f, f1); printf("2 %.16f\n", result); } puts(""); for ( l = 2.2; l <= 2.26; l+= 0.005e0L) { result = f(l); printf("%.16f %.16f\n", l, result); } return 0; }