Metropoli BBS
VIEWER: polynome.c MODE: TEXT (CP437)
//        ╔═══════════════════════════════════════════════╗
//	  ║                Polynome.C                     ║
//	  ║                                               ║
//	  ║       By Volpone of Malorean Effect           ║
//	  ║     for crazy mathematicians like Toto        ║
//	  ║                                               ║
//	  ║                                               ║
//	  ║               Version 1.0                     ║
//	  ║          Release November 1993                ║
//	  ║                                               ║
//	  ║  Hello to : Toto,Sally,42 Crew,Aghesacha,     ║
//	  ║             Mc2,Sun,Redlight,Locked,Fafa      ║
//	  ║                                               ║
//	  ╚═══════════════════════════════════════════════╝

#include <math.h>


typedef struct { char D0,D1,D2,D3,D4    ; } Poly;
typedef enum   {Deriv1,Deriv2,Deriv3,Deriv4} Deg;

Poly operator +(Poly  U,Poly V);
Poly operator -(Poly  U,Poly V);
Poly operator *(char  U,Poly V);

Poly   Derive (Poly U,Deg Degres);
int    Image  (Poly P,int X      );
float  Image  (Poly P,float X    );

//************************************************************************

Poly operator +(Poly U,
		Poly V)
{ Poly Buf ;
  Buf.D0=U.D0+V.D0;
  Buf.D1=U.D0+V.D1;
  Buf.D2=U.D0+V.D2;
  Buf.D3=U.D0+V.D3;
  Buf.D4=U.D0+V.D4;
  return (Buf);
};

//************************************************************************
Poly operator -(Poly U,
		Poly V)
{ Poly Buf ;
  Buf.D0=U.D0-V.D0;
  Buf.D1=U.D0-V.D1;
  Buf.D2=U.D0-V.D2;
  Buf.D3=U.D0-V.D3;
  Buf.D4=U.D0-V.D4;
  return (Buf);
};


//************************************************************************



Poly operator *(char    U,
		Poly    V )
{ Poly Buf ;
  Buf.D0=U*V.D0;
  Buf.D1=U*V.D1;
  Buf.D2=U*V.D2;
  Buf.D3=U*V.D3;
  Buf.D4=U*V.D4;

  return (Buf);
};

//************************************************************************
Poly Derive (Poly U,Deg Degres)
{ Poly Buf   ;

  if (Degres=1) { Buf.D0=  U.D1	 ;
		  Buf.D1=2*U.D2	 ;
		  Buf.D2=3*U.D3	 ;
		  Buf.D3=4*U.D4  ;
		  Buf.D4=0	 ; };

  if (Degres=2) { Buf.D0=2 *U.D2 ;
		  Buf.D1=6 *U.D3 ;
		  Buf.D2=12*U.D4 ;
		  Buf.D3=0	 ;
		  Buf.D4=0	 ; };

  if (Degres=3) { Buf.D0=6 *U.D3 ;
		  Buf.D1=24*U.D4 ;
		  Buf.D2=0	 ;
		  Buf.D3=0	 ;
		  Buf.D4=0	 ; };

  if (Degres=4) { Buf.D0=24*U.D4 ;
		  Buf.D1=0	 ;
		  Buf.D2=0	 ;
		  Buf.D3=0	 ;
		  Buf.D4=0	 ; };

  return (Buf);
}

//************************************************************************

int  Image  (Poly P,int X    )
{ int Buf;
  Buf=P.D4*X*X*X*X+P.D3*X*X*X+P.D2*X*X+P.D1*X+P.D0;
  return (Buf);

}
[ RETURN TO DIRECTORY ]