#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <dos.h>
 /* Вычисление максимального и минимального значения функции на заданом интеpвале */
void f_max(float a3,float a2,float a1,float a0,float x1,float x2,float *amin,float *amax)
      {
	float dx,x,Fx,Fx1,Fmax,Fmin;
  dx=(x2-x1)/500;
  x=x1;
  Fx1=a3*x*x*x+a2*x*x+a1*x+a0;
  Fmax=Fx1;
  Fmin=Fx1;
     do {
     x=x+dx;
     Fx=a3*x*x*x+a2*x*x+a1*x+a0;
       if (Fx>=Fmax)
	   Fmax=Fx;
       if (Fx<=Fmin)
	   Fmin=Fx;
	 } while ( x<x2 );
     *amin=Fmin;
     *amax=Fmax;
     }
/*Вычисление коpней кубичного уpавнения  */
int f_root(float a0,float a1,float a2,float a3,float x1,float x2,float e,float *k1,float *k2,float *k3)
{ float ku1,ku2,ku3,x,a,b;
  int c=0;
  x=x1;
  do
  {
  a=a3*pow(x,3)+a2*pow(x,2)+a1*x+a0;
  x+=e;
  b=a3*pow(x,3)+a2*pow(x,2)+a1*x+a0;
  if (a*b<0)
    { c++;
    switch(c) {
    case 1: ku1=x;
		  break;
    case 2: ku2=x;
		  break;
    case 3: ku3=x;
		  break;
    default: printf("\n Внимание !!! \n Ошибка в matim.c (f_root).");
		  break;
	       };
     }
  } while (x<x2);
   *k1=ku1;
   *k2=ku2;
   *k3=ku3;
return c;
}
float fun(float a3,float a2,float a1,float a0,float x)
{
float s;
s=a3*x*x*x+a2*x*x+a1*x+a0;
return (s);
}
