Off[General::spell];    Off[General::spell1];

listgen = {8, 16, 24, 36, 48};
igen = 1;        
ista  =  0; 
genist[0]  =  0;
gen =  
        listgen[[igen]];
If  [ 
          gen  <  $MinPrecision, $MaxPrecision =  $MinPrecision = 
              gen, 
$MinPrecision =  $MaxPrecision = 
              gen];

ifunk  =  1 ;

If[ 
        ifunk == 
          1, {funk[1][x_] := 
            SetPrecision[1. , gen] - SetPrecision[1. , gen]/x - 
              SetPrecision[2. , gen]*Log[x];  abl1funk[1][
              x_] := funk[1]'[x]; 
abl2funk[1][
              x_] := funk[1]''[x]}];
If[ifunk == 
        1, {funk[1][x], abl1funk[1][x], abl2funk[1][
          x]}]
If[ifunk == 1, 
      PaddedForm[
        SetPrecision[funk[1][3], gen], {gen + 2, gen}]]

If[
        ifunk == 
          2, {funk[2][x_] := 
            SetPrecision[1. , gen]/x - SetPrecision[1. , gen] - 
              Sin[x];                        abl1funk[2][x_] := funk[2]'[x];   abl2funk[2][
              x_] := funk[2]''[x]; }];
If[ifunk == 
        2, {funk[2][x], abl1funk[2][x], abl2funk[2][
          x]}]
If[ifunk == 2, 
      PaddedForm[
        SetPrecision[abl1funk[2][3], gen], {gen + 2, gen}]]

If[
        ifunk == 
          3, {funk[3][x_] := 
            SetPrecision[1. , gen] + 
              Sin[x];                                      abl1funk[3][x_] := funk[3]'[
              x]; 
  abl2funk[3][x_] := funk[3]''[
              x]; }];
If[ifunk == 
        3, {funk[3][x], abl1funk[3][x], abl2funk[3][
          x]}]
If[ifunk == 3, 
      PaddedForm[
        SetPrecision[funk[3][3], gen], {gen + 2, gen}]]

If[
        ifunk == 
          4, {funk[4][x_] := 
            SetPrecision[π, gen] - x -  
              Sin[x];                                 abl1funk[4][x_] := funk[4]'[x];   abl2funk[4][
              x_] := funk[4]''[x]; }];
If[ifunk == 4, 
      PaddedForm[
        SetPrecision[abl1funk[4][3], gen], {gen + 2, gen}]]

<<Graphics`Colors`                        (*  Package zur Farbdefinition in der Graphik  *)

(*    Funktion 1 :  Grenzen  für  die  x - 
              Werte und  die  y - Werte  setzen    *)

If[ifunk == 1,{xmin = 0.01;  xmax = 5;    ymin = -3;    ymax = 1;
Plot[ funk[1][x], {x, xmin, xmax}, 
                PlotRange -> {{xmin - 1, xmax}, {ymin, ymax}}, 
                AspectRatio -> 
                  0.6, 
PlotPoints -> 40, 
                AxesLabel -> { "-> X", "  ^ Y"},  
                PlotStyle -> Green]}];

(*       Funktion 2  :         Grenzen  für  die  x - 
              Werte und  die  y - Werte  setzen    *)

If[ifunk == 2,{xmin = -9. ;  xmax = 18;    ymin = -3;    ymax = 2;
Plot[ funk[2][x], {x, xmin, xmax}, 
              PlotRange -> {{xmin, xmax}, {ymin, ymax}}, 
              AspectRatio -> 0.6, 
PlotPoints -> 
                40, AxesLabel -> { "-> X", "  ^ Y"},  
              PlotStyle -> Red]}]

(*       Funktion 3  :         Grenzen  für  die  x - 
              Werte und  die  y - Werte  setzen    *)

If[ifunk == 3,{xmin = -3.0;  xmax = 15;    ymin = -0.5;    ymax = 2.5;
Plot[ funk[3][x], {x, xmin, xmax}, 
              PlotRange -> {{xmin, xmax}, {ymin, ymax}}, 
              AspectRatio -> 0.6, 
PlotPoints -> 
                40, AxesLabel -> { "-> X", "  ^ Y"},  
              PlotStyle -> Brown]}]

(*       Funktion 4  :         Grenzen  für  die  x - 
              Werte und  die  y - Werte  setzen    *)

If[ifunk == 4,{xmin = -6.0;  xmax = 15;    ymin = -9;    ymax = 9;
Plot[ funk[4][x], {x, xmin, xmax}, 
              PlotRange -> {{xmin, xmax}, {ymin, ymax}}, 
              AspectRatio -> 0.6, 
PlotPoints -> 
                40, AxesLabel -> { "-> X", "  ^ Y"},  
              PlotStyle -> Blue]}]

funktion[x_] := funk[ifunk][x];    abl1funktion[
        x_] :=  abl1funk[ifunk][x];    abl2funktion[
        x_] := abl2funk[ifunk][x]
genaus[igen] = gen;

Tabnew[0, 1]="FuNr";Tabnew[0, 2]="Gen" ;Tabnew[0, 3]="St.Nr.";Tabnew[0, 4]="Verf.";Tabnew[0, 5]="  Startw.";Tabnew[0, 6]=" Lösung";Tabnew[0, 7]= "  Funktionsw.";Tabnew[0, 8]= "It.Schr.";     
Tabmod[0, 
        1] = "    ";Tabmod[0, 
        2] = "    " ;Tabmod[0, 
        3] = "      ";Tabmod[0, 4] = "     ";Tabmod[
        0, 5] = "        ";Tabmod[0, 
        6] = "       ";Tabmod[0, 
        7] =  "            ";Tabmod[0, 
        8] =  "         ";

xx = SetPrecision[2, gen] *10^-1                        
xstart = 
        PaddedForm[xx, 6];
ista = ista  +  1;                                            
genist[igen]  =  ista;
sumgen  =  0; 
    Do[sumgen  =  sumgen  +  genist[ig - 1], {ig, 1, 
        igen}];
istgen  =  sumgen  +  ista;
mod = 
      0;  nschr  =  99;
Do[{ 
            xx  =  SetPrecision[xx  -  funktion[xx]/abl1funktion[xx], 
                gen], Print["n = ", n, "  xx = ", 
              AccountingForm[
                PaddedForm[xx, {gen + 1, gen}]], " , f(xx) = ",  
              ScientificForm[
                PaddedForm[funktion[xx], {7, 6}]], " , f'(xx) = ",  
              ScientificForm[PaddedForm[abl1funktion[xx], {7, 6}]]], 
            If[Abs[funktion[xx]] < 10^-gen,  {nschr  =  n, 
                Break[]}]}, {n, 1, nschr}]; 
Tabnew[istgen, 1] = ifunk; Tabnew[istgen, 2] = igen; 
    Tabnew[istgen, 3] = ista; Tabnew[istgen, 4] = "Newt"; 
    Tabnew[istgen, 5] = xstart; Tabnew[istgen, 6] = xx; 
    Tabnew[istgen, 8] = PaddedForm[nschr, 3]; 
    Tabnew[istgen, 7] = 
      ScientificForm[PaddedForm[funktion[xx], {7, 6}]];

\(TableForm[Table[Tabnew[isg, j], {isg, 1, istgen}, 
		{j, 1, 8}], 
      TableSpacing -> {2, 1}]\)

xx = SetPrecision[2, gen]*10^-1                                                  
xstart  =  
        PaddedForm[xx, 6];
mod  = 1;  
    nschr  =  50;
q[x_] := 
      funktion[x]*abl2funktion[x]/abl1funktion[x]^2. ;        p[x_] := 
      SetPrecision[ 1. , 
          gen]/(SetPrecision[1. , gen] - 
            q[x]);
Do[  {
xx  =  
            xx  - SetPrecision[ p[xx]*funktion[xx]/abl1funktion[xx], gen], 
          Print["n = ", n, "  xx = ", 
            AccountingForm[
              PaddedForm[Re[xx], {gen + 1, gen}]], " , f(xx) = ", 
            ScientificForm[
              PaddedForm[Re[funktion[xx]], {7, 6}]], " , f'(xx) = ",  
            ScientificForm[
              PaddedForm[
                Re[abl1funktion[xx]], {7, 6}]], "  f''(xx) = " ,  
            ScientificForm[
              PaddedForm[
                Re[abl2funktion[xx]], {7, 6}]], "  , q(xx) = ",  
            ScientificForm[
              PaddedForm[Re[q[xx]], {7, 6}]], " , p(xx) = ",  
            AccountingForm[PaddedForm[Re[p[xx]], {7, 6}]]], 
          If[Abs[funktion[xx]] < 10^-gen,  {nschr  =  n, 
              Break[]}]}, {n, 1, nschr}];
Tabmod[istgen, 1] = 
      ifunk; Tabmod[istgen, 2] = igen; Tabmod[istgen, 3] = ista; 
    Tabmod[istgen, 4] = "Nmod"; Tabmod[istgen, 5] = xstart; 
    Tabmod[istgen, 6] = Re[xx]; Tabmod[istgen, 8] =  PaddedForm[nschr, 3]; 
    Tabmod[istgen, 7] = 
      ScientificForm[PaddedForm[Re[funktion[xx]], {7, 6}]];

Print[" Ergebnisse der beiden Verfahren mit allen Genauigkeiten\! und verschiedenen\! Startwerten "];
\(If[ifunk == 1, 
        Print[\*""     Funktion 1:       f(x) = 1 - (1/x) - 2 Log(x)""]];\)
 \(If[ifunk == 2, 
          Print[\*""     Funktion 2:       f(x) =  (1/x) - 1 -  Sin(x)""]];\)
 \(If[ifunk == 3, 
          Print["     Funktion 3:      f(x) =   1 + Sin(x) ,  X =  "\ \ , \ SetPrecision[3  Pi/2, gen]]];\)

 If[ifunk  == 4, 
          Print["     Funktion 4:       f(x) =  π - x - Sin(x) , X =  \
"  ,   SetPrecision[Pi, gen]]];

\(TableForm[
        Table[{Tabnew[isg, j], Tabmod[isg, j]}, {isg, 0, istgen}, 
	{j, 1, 
            8}], TableSpacing -> {2, 1}]\)