version 1.10, 2011/12/15 16:53:26 |
version 1.12, 2015/08/14 13:51:54 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/math.c,v 1.9 2011/08/24 07:20:09 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/math.c,v 1.11 2015/08/06 10:01:52 fujimoto Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include <math.h> |
#include <math.h> |
#include "parse.h" |
#include "parse.h" |
#if defined(VISUAL) |
#if defined(VISUAL) || defined(__MINGW32__) |
#include <float.h> |
#include <float.h> |
#endif |
#endif |
|
|
|
|
a = -a; |
a = -a; |
} else |
} else |
sgn = 1; |
sgn = 1; |
#if defined(i386) || defined(__alpha) || defined(VISUAL) || defined(__x86_64) |
#if defined(i386) || defined(__alpha) || defined(VISUAL) || defined(__MINGW32__) || defined(__x86_64) |
au = ((unsigned int *)&a)[1]; |
au = ((unsigned int *)&a)[1]; |
al = ((unsigned int *)&a)[0]; |
al = ((unsigned int *)&a)[0]; |
#else |
#else |
|
|
a = -a; |
a = -a; |
} else |
} else |
sgn = 1; |
sgn = 1; |
#if defined(i386) || defined(__alpha) || defined(VISUAL) || defined(__x86_64) |
#if defined(i386) || defined(__alpha) || defined(VISUAL) || defined(__MINGW32__) || defined(__x86_64) |
au = ((unsigned int *)&a)[1]; |
au = ((unsigned int *)&a)[1]; |
al = ((unsigned int *)&a)[0]; |
al = ((unsigned int *)&a)[0]; |
#else |
#else |
|
|
*rp = 0; |
*rp = 0; |
return; |
return; |
} |
} |
#if defined(VISUAL) |
#if defined(VISUAL) || defined(__MINGW32__) |
d = ToReal(ARG0(arg)); |
d = ToReal(ARG0(arg)); |
if ( d > 0 ) |
if ( d > 0 ) |
d = floor(d+0.5); |
d = floor(d+0.5); |
|
|
a = -a; |
a = -a; |
} else |
} else |
sgn = 1; |
sgn = 1; |
#if defined(i386) || defined(__alpha) || defined(VISUAL) || defined(__x86_64) |
#if defined(i386) || defined(__alpha) || defined(VISUAL) || defined(__MINGW32__) || defined(__x86_64) |
au = ((unsigned int *)&a)[1]; |
au = ((unsigned int *)&a)[1]; |
al = ((unsigned int *)&a)[0]; |
al = ((unsigned int *)&a)[0]; |
#else |
#else |
Line 369 void Pdisnan(NODE arg,Q *rp) |
|
Line 369 void Pdisnan(NODE arg,Q *rp) |
|
{ |
{ |
Real r; |
Real r; |
double d; |
double d; |
#if defined(VISUAL) |
#if defined(VISUAL) || defined(__MINGW32__) |
int c; |
int c; |
#endif |
#endif |
|
|
Line 379 void Pdisnan(NODE arg,Q *rp) |
|
Line 379 void Pdisnan(NODE arg,Q *rp) |
|
return; |
return; |
} |
} |
d = ToReal(r); |
d = ToReal(r); |
#if defined(VISUAL) |
#if defined(VISUAL) || defined(__MINGW32__) |
c = _fpclass(d); |
c = _fpclass(d); |
if ( c == _FPCLASS_SNAN || c == _FPCLASS_QNAN ) *rp = ONE; |
if ( c == _FPCLASS_SNAN || c == _FPCLASS_QNAN ) *rp = ONE; |
else if ( c == _FPCLASS_PINF || c == _FPCLASS_NINF ) STOQ(2,*rp); |
else if ( c == _FPCLASS_PINF || c == _FPCLASS_NINF ) STOQ(2,*rp); |