mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 06:15:52 +00:00
Create a branch for Aleksandar Andrejevic for his work on NTVDM. See http://jira.reactos.org/browse/CORE-7250 for more details.
svn path=/branches/ntvdm/; revision=59241
This commit is contained in:
parent
3e3200acef
commit
4f0b8d3db0
20620 changed files with 0 additions and 1232833 deletions
76
lib/sdk/crt/startup/merr.c
Normal file
76
lib/sdk/crt/startup/merr.c
Normal file
|
@ -0,0 +1,76 @@
|
|||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
||||
*/
|
||||
|
||||
#include <internal.h>
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
typedef int (__cdecl *fUserMathErr)(struct _exception *);
|
||||
static fUserMathErr stUserMathErr;
|
||||
|
||||
void __mingw_raise_matherr (int typ, const char *name, double a1, double a2,
|
||||
double rslt)
|
||||
{
|
||||
struct _exception ex;
|
||||
if (!stUserMathErr)
|
||||
return;
|
||||
ex.type = typ;
|
||||
ex.name = (char*)name;
|
||||
ex.arg1 = a1;
|
||||
ex.arg2 = a2;
|
||||
ex.retval = rslt;
|
||||
(*stUserMathErr)(&ex);
|
||||
}
|
||||
|
||||
#undef __setusermatherr
|
||||
|
||||
void __mingw_setusermatherr (int (__cdecl *f)(struct _exception *))
|
||||
{
|
||||
stUserMathErr = f;
|
||||
__setusermatherr (f);
|
||||
}
|
||||
|
||||
int __CRTDECL
|
||||
_matherr (struct _exception *pexcept)
|
||||
{
|
||||
const char * type;
|
||||
|
||||
switch(pexcept->type)
|
||||
{
|
||||
case _DOMAIN:
|
||||
type = "Argument domain error (DOMAIN)";
|
||||
break;
|
||||
|
||||
case _SING:
|
||||
type = "Argument singularity (SIGN)";
|
||||
break;
|
||||
|
||||
case _OVERFLOW:
|
||||
type = "Overflow range error (OVERFLOW)";
|
||||
break;
|
||||
|
||||
case _PLOSS:
|
||||
type = "Partial loss of significance (PLOSS)";
|
||||
break;
|
||||
|
||||
case _TLOSS:
|
||||
type = "Total loss of significance (TLOSS)";
|
||||
break;
|
||||
|
||||
case _UNDERFLOW:
|
||||
type = "The result is too small to be represented (UNDERFLOW)";
|
||||
break;
|
||||
|
||||
default:
|
||||
type = "Unknown error";
|
||||
break;
|
||||
}
|
||||
|
||||
__mingw_fprintf (stderr, "_matherr(): %s in %s(%g, %g) (retval=%g)\n",
|
||||
type, pexcept->name, pexcept->arg1, pexcept->arg2, pexcept->retval);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue