 #include <exec/types.h>
 #include <intuition/intuition.h>
 #include <proto/exec.h>
 #include <proto/dos.h>
 #include <proto/intuition.h>
 #include <proto/graphics.h>
 #include <proto/mathieeedoubbas.h>
 #include <proto/mathieeedoubtrans.h>
 #include <math.h>

 #define E   2.718281828
 #define PPI 3.14159265358979323846
 #define Mul(a,b) IEEEDPMul(a,b)
 #define Add(a,b) IEEEDPAdd(a,b)
 #define Sub(a,b) IEEEDPSub(a,b)
 #define Div(a,b) IEEEDPDiv(a,b)
 #define Flt(a)   IEEEDPFlt(a)
 #define Fix(a)   IEEEDPFix(a)
 #define Cmp(a,b) IEEEDPCmp(a,b)
 #define Abs(a)   IEEEDPAbs(a) 
 #define Neg(a)   IEEEDPNeg(a)
 #define Pow(a,b) IEEEDPPow(a,b)
 #define Tst(a)   IEEEDPTst(a)
 #define Log10(a) IEEEDPLog10(a)
 #define Floor(a) IEEEDPFloor(a)

 struct info 
  {
   USHORT code;
   struct IntuiMessage *Nachricht;
   ULONG NachrichtenArt;
   APTR IAddress;
  };

 #define MAXCHARS 500

 struct HilfsStruktur
  {
   char Formel[MAXCHARS];
   char Hilfe[MAXCHARS];
   DOUBLE Variable,Konstante1,Konstante2,Konstante3,Konstante4;
   LONG Fehler;
  };

 
 struct Konstanten 
  {
   DOUBLE k1,k2,k3,k4;
  };

 ULONG   EventAbfrage (struct Window *,struct info *);
 LONG    request(char *,char *,char *);
 DOUBLE *berechnen  (UBYTE *,DOUBLE *,struct Konstanten *,LONG *);
 DOUBLE *ev(LONG,LONG,struct HilfsStruktur *);
 DOUBLE *UmwStoF(char *);
 DOUBLE *stof(char *);
 DOUBLE *Fak(LONG);
 DOUBLE *NuK(LONG,LONG);
 char   *UmwFtoS(DOUBLE *,LONG);
 char   *left(char *,LONG);
 char   *right(char *,LONG);
 char   *mid(char *,LONG,LONG);
 LONG    checkback(LONG,LONG,LONG,LONG,char *);
 LONG    check    (LONG,LONG,LONG,LONG,char *);
 VOID    copy (LONG,LONG,char *,char *);
 VOID    Print(struct RastPort *,STRPTR,LONG,LONG,LONG);
 LONG    AnzahlKlammern(char *);
 ULONG   EventAbfrage(struct Window *,struct info *);
 
/* Fehlercodes */

#define DIVBYZERO 1 /* Es wurde durch 0 geteilt                         */
#define LOGNEG    2 /* Es wurde von Zahl <= 0 der Log gebildet          */
#define SQRTNEG   4 /* Es wurde von Zahl <0   die Wurzel gebildet       */
#define ATRIG     8 /* Es wurde von Zahl >1 oder <-1 asin/acos gebildet */
#define UNPAKLAM 16 /* Unpaarige Klammern                               */
#define TEST     32
#define NOFUNC   64 /* Keine Funktion eingegeben                        */
