On Thursday 11 March 2004 20:44, Alexandre Julliard wrote:

> > --- include/msvcrt/math.h   2 Sep 2003 00:58:21 -0000       1.1
> > +++ include/msvcrt/math.h   10 Mar 2004 08:36:47 -0000
> > @@ -1,12 +1,14 @@
> > -#ifndef __WINE_MATH_H
> > -#define __WINE_MATH_H
> >
> > -#ifdef __cplusplus
> > -extern "C" {
> > -#endif
> > +#include <../include/math.h>
> 
> This is wrong, we need a proper math.h.

As part of my efforts to get msvcrt compiled on MinGW I created
a math.h and float.h based on MinGW headers. Since you're asking
for a math.h and since my patch is going to be large enough 
already I thought I'd post them here. They are not complete but
have enough to compile msvcrt itself.

 -Hans

Changelog:
  The beginnings of math.h and float.h.

Index: include/msvcrt/math.h
===================================================================
RCS file: /home/wine/wine/include/msvcrt/math.h,v
retrieving revision 1.1
diff -u -r1.1 math.h
--- include/msvcrt/math.h	2 Sep 2003 00:58:21 -0000	1.1
+++ include/msvcrt/math.h	12 Mar 2004 08:28:56 -0000
@@ -1,9 +1,90 @@
+/*
+ * Math functions.
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Hans Leidekker.
+ * This file is in the public domain.
+ */
+
 #ifndef __WINE_MATH_H
 #define __WINE_MATH_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#ifndef MSVCRT
+# ifdef USE_MSVCRT_PREFIX
+#  define MSVCRT(x)    MSVCRT_##x
+# else
+#  define MSVCRT(x)    x
+# endif
+#endif
 
 #ifdef __cplusplus
 extern "C" {
 #endif
+
+#define _DOMAIN         1       /* domain error in argument */
+#define _SING           2       /* singularity */
+#define _OVERFLOW       3       /* range overflow */
+#define _UNDERFLOW      4       /* range underflow */
+#define _TLOSS          5       /* total loss of precision */
+#define _PLOSS          6       /* partial loss of precision */
+
+#ifndef MSVCRT_EXCEPTION_DEFINED
+#define MSVCRT_EXCEPTION_DEFINED
+struct MSVCRT(_exception)
+{
+  int     type;
+  char    *name;
+  double  arg1;
+  double  arg2;
+  double  retval;
+};
+#endif /* MSVCRT_EXCEPTION_DEFINED */
+
+#ifndef MSVCRT_COMPLEX_DEFINED
+#define MSVCRT_COMPLEX_DEFINED
+struct MSVCRT(_complex)
+{
+  double x;      /* Real part */
+  double y;      /* Imaginary part */
+};
+#endif /* MSVCRT_COMPLEX_DEFINED */
+
+double sin(double);
+double cos(double);
+double tan(double);
+double sinh(double);
+double cosh(double);
+double tanh(double);
+double asin(double);
+double acos(double);
+double atan(double);
+double atan2(double, double);
+double exp(double);
+double log(double);
+double log10(double);
+double pow(double, double);
+double sqrt(double);
+double ceil(double);
+double floor(double);
+double fabs(double);
+double ldexp(double, int);
+double frexp(double, int*);
+double modf(double, double*);
+double fmod(double, double);
+
+double hypot(double, double);
+double j0(double);
+double j1(double);
+double jn(int, double);
+double y0(double);
+double y1(double);
+double yn(int, double);
+
+int MSVCRT(_matherr)(struct MSVCRT(_exception)*);
+double MSVCRT(_cabs)(struct MSVCRT(_complex));
 
 #ifdef __cplusplus
 }
--- /dev/null	2004-02-23 22:02:56.000000000 +0100
+++ include/msvcrt/float.h	2004-03-09 13:09:42.000000000 +0100
@@ -0,0 +1,93 @@
+/*
+ * Floating point arithmetic.
+ *
+ * Derived from the mingw header written by Colin Peters.
+ * Modified for Wine use by Hans Leidekker.
+ * This file is in the public domain.
+ */
+
+#ifndef __WINE_FLOAT_H
+#define __WINE_FLOAT_H
+#ifndef __WINE_USE_MSVCRT
+#define __WINE_USE_MSVCRT
+#endif
+
+#ifndef MSVCRT
+# ifdef USE_MSVCRT_PREFIX
+#  define MSVCRT(x)    MSVCRT_##x
+# else
+#  define MSVCRT(x)    x
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* _controlfp masks and bitflags - x86 only so far */
+#ifdef __i386__
+
+/* Control word masks for unMask */
+#define _MCW_EM 0x0008001F  /* Error masks */
+#define _MCW_IC 0x00040000  /* Infinity */
+#define _MCW_RC 0x00000300  /* Rounding */
+#define _MCW_PC 0x00030000  /* Precision */
+
+/* Control word values for unNew (use with related unMask above) */
+#define _EM_INVALID    0x00000010
+#define _EM_DENORMAL   0x00080000
+#define _EM_ZERODIVIDE 0x00000008
+#define _EM_OVERFLOW   0x00000004
+#define _EM_UNDERFLOW  0x00000002
+#define _EM_INEXACT    0x00000001
+#define _IC_AFFINE     0x00040000
+#define _IC_PROJECTIVE 0x00000000
+#define _RC_CHOP       0x00000300
+#define _RC_UP         0x00000200
+#define _RC_DOWN       0x00000100
+#define _RC_NEAR       0x00000000
+#define _PC_24         0x00020000
+#define _PC_53         0x00010000
+#define _PC_64         0x00000000
+#endif
+
+/* _statusfp bit flags */
+#define _SW_INEXACT    0x00000001 /* inexact (precision) */
+#define _SW_UNDERFLOW  0x00000002 /* underflow */
+#define _SW_OVERFLOW   0x00000004 /* overflow */
+#define _SW_ZERODIVIDE 0x00000008 /* zero divide */
+#define _SW_INVALID    0x00000010 /* invalid */
+
+#define _SW_UNEMULATED     0x00000040  /* unemulated instruction */
+#define _SW_SQRTNEG        0x00000080  /* square root of a neg number */
+#define _SW_STACKOVERFLOW  0x00000200  /* FP stack overflow */
+#define _SW_STACKUNDERFLOW 0x00000400  /* FP stack underflow */
+
+#define _SW_DENORMAL 0x00080000 /* denormal status bit */
+
+/* fpclass constants */
+#define _FPCLASS_SNAN 0x0001  /* Signaling "Not a Number" */
+#define _FPCLASS_QNAN 0x0002  /* Quiet "Not a Number" */
+#define _FPCLASS_NINF 0x0004  /* Negative Infinity */
+#define _FPCLASS_NN   0x0008  /* Negative Normal */
+#define _FPCLASS_ND   0x0010  /* Negative Denormal */
+#define _FPCLASS_NZ   0x0020  /* Negative Zero */
+#define _FPCLASS_PZ   0x0040  /* Positive Zero */
+#define _FPCLASS_PD   0x0080  /* Positive Denormal */
+#define _FPCLASS_PN   0x0100  /* Positive Normal */
+#define _FPCLASS_PINF 0x0200  /* Positive Infinity */
+
+double _copysign (double, double);
+double _chgsign (double);
+double _scalb(double, long);
+double _logb(double);
+double _nextafter(double, double);
+int    _finite(double);
+int    _isnan(double);
+int    _fpclass(double);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_FLOAT_H */

Reply via email to