// .............................................................. bracket.c
//                                                     versione 08.APR.2003
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "corso.h"

void bracket(double *x1,double *x2,double (*ptfunz)(double x))
{
  int i;
  double f1,f2;

  if ((*x1)==(*x2)) printf("intervallo sbagliato!!!\n");
  f1=(*ptfunz)(*x1);
  f2=(*ptfunz)(*x2);
  for (i=0;i<1000;i++)
    { if ((f1*f2)<0) 
        { printf("l'intervallo e' (%.5le, %.5le)\n",*x1,*x2);
	  return;
	}
      if (fabs(f1)<fabs(f2))
        { (*x1)+=1.6*((*x1)-(*x2));
	  f1=(*ptfunz)(*x1);
	}
      else
        { (*x2)+=1.6*((*x2)-(*x1));
	  f2=(*ptfunz)(*x2);
	}
    }
  printf("non riesco a determinare l'intervallo!!!\n");
}
