/****************************************************
*   Estack_Lib                                      *
*                                                   *
*   Copyright (C) 2005 by FpgForce (Florent WEBER)  *
*   fpgforce@free.fr                                *
*   Version 0.95 - 20/08/2005                       *
*****************************************************/

#define MIN_AMS 205

#include <tigcclib.h>

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

enum LIMIT_VALUES {
	LIM_LEFT = -1,
	LIM_POINT = 0,
	LIM_RIGHT = 1
} ;

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

void integrate (ESI, ESI, ESI) ;                      // Integre la fonction
void differentiate_nth (ESI, unsigned short) ;        // Derive la fonction
void anti_deriv_nth (ESI, unsigned short) ;           // Primitive de f(x)
inline void expand (ESI) ;                            // Developpe f(x)
inline void factor (ESI) ;                            // Factorise f(x)
void solve (ESI, ESI) ;                               // Resout arg1 = arg2 en fonction de X
void zeros (ESI) ;                                    // Retourne la liste des zeros de la fonction
void czeros (ESI) ;                                   // Retourne la liste des racines complexes
void limit (ESI, ESI, unsigned short) ;               // Limite de f(x) en point et direction
void desolve (ESI, ESI, ESI, BOOL) ;                  // Equation Differentielle
inline void comdenom (ESI, ESI) ;                     // Denominateur commun
void propfrac (ESI) ;                                 // Forme rationnelle
void getdenom (ESI) ;                                 // Recupere le denominateur
void texpand (ESI) ;                                  // Developpe des expression trigo
void tcollect (ESI) ;                                 // Factorise des expressions trigo
void taylor (ESI, ESI) ;                              // Developpement limite

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

unsigned short tangent (ESI, ESI) ;                   // Tangente

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

void sort_increase_ESI_list (ESI*, short, short) ;    // Tri croissant d'un tableau d'ESI
void sort_decrease_ESI_list (ESI*, short, short) ;    // Tri decroissant d'un tableau d'ESI
short estack_list_to_array (ESI, ESI*) ;              // Recupere une liste et la met en tableau
void array_to_estack_list (ESI*, short) ;             // Pousse un tableau sur l'estack en liste

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

void output_expr_xy (int, int, ESI) ;                 // Affichage d'une expression en pretty print
void disp_str (char*) ;                               // Equivalent a la commande "disp" du ti-basic
void output_2d_expression (ESI, short) ;              // Equivalent a la commande "pause" du ti-basic
void clear_io (void) ;                                // Equivalent a la commande "clrio" du ti-basic

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

inline void decrease_estack (ESI) ;                   // Vide l'estack utilisé au cours du programme
void str2ESI (char *) ;                               // Convertit une chaine ANSI en une expression

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

const char * ESTACK_LIB_AUTHOR ;                      // Auteur de la librairie
const char * ESTACK_LIB_VERSION_STR ;                 // Version de la librairie