/* Integrate library (header file) by Daniele Finocchiaro E-mail: df133590@ipifidpt.difi.unipi.it 1.11.1994 v1.0 IPISA94 */ /* Integra la funzione f() nell'intervallo [a,b], compiendo tutte le valutazioni necessarie attraverso chiamate a f(). L'algoritmo cerca di raggiungere (*prec) cifre di precisione dopo la virgola. Int_function restituisce il valore dell'integrale, e in (*prec) il numero di cifre che crede essere esatte (in genere questo è almeno quanto (*prec) prima della chiamata. */ double Int_function( double (*f)(double), double from, double to, int *prec); /* Integra l'espressione contenuta in `expr'. */ double Int_string( char *expr, double from, double to, int *prec); /* PARSER Per usare questo modulo bisogna: - includere questo header nel file .c - chiamare addfunction() per aggiungere delle funzioni che potranno essere usate oltre a quelle standard. - chiamare eval() o evalx() con una stringa contenente un'espressione - testare `error' per verificare se è OK. */ double Parse_eval(char *expr); /* Expr: espressione da valutare */ double Parse_evalx(char *expr, double x); /* x: valore da dare a 'x' */ int Parse_addfunction(char *name, double (*f)(double) ); /* Aggiunge una nuova funzione, 0=OK */ extern int Parse_error; /* 0: tutto OK */ /* 1: Syntax error */ /* 2: Unbalanced parentheses */ /* 3: No expression present */ /* 4: Division by zero */ /* 5: Internal error */ /* 6: Undefined function */ /* 7: Wrong assignment */ /* Simple Integrators library di Daniele Finocchiaro */ double Int_eq_points(int n, double h, double fx[]); double Int_points(int n,double x[], double fx[]); double Int_eq_points_p(int n, double h, double fx[], double partial[]); double Int_points_p(int n,double x[], double fx[], double partial[]);