/*
 * Heron-Verfahren zur Berechnung der Quadratwurzel
 * Version 3 (mit Funktionen)
 *
 * 2019-07-08, Andre M. Maier
 */
#include <stdio.h>

double berechne_wurzel(double radikand, double schaetzwert)
{
   const double epsilon = 0.000001;
   double t=schaetzwert;
   double x=radikand;
   while((t<x/t-epsilon)||(t>x/t+epsilon)) 
   {
      t = ( t + (x/t) ) / 2;
   }
   return t;
}

double lies_radikand_ein() {
   printf("Radikand eingeben: x = ");
   double x;
   scanf("%lf",&x);
   return x;
}

int main(int argc, char **argv)
{
   double radikand = lies_radikand_ein();
   if(radikand<0)
   {
      printf("Fehler: Negativer Radikand.\n");
      return 1;
   }
   double wurzel = berechne_wurzel(radikand,radikand/2);
   printf("t=%.35lf\n",wurzel);
   return 0;
}
