Merge pull request #1933 from alexrp/master
[mono.git] / mono / metadata / sysmath.c
index 5338b80c5557b0a65e10ee5729a95a9fdb838447..de24fcb0fa51d5c40bc1b613658527350e7653ed 100644 (file)
@@ -1,5 +1,12 @@
-/* math.c - these are based on bob smith's csharp routines */
-
+/*
+ * sysmath.c: these are based on bob smith's csharp routines 
+ *
+ * Author:
+ *     Mono Project (http://www.mono-project.com)
+ *
+ * Copyright 2001-2003 Ximian, Inc (http://www.ximian.com)
+ * Copyright 2004-2009 Novell, Inc (http://www.novell.com)
+ */
 #define __USE_ISOC99
 #include <math.h>
 #include <mono/metadata/sysmath.h>
@@ -31,13 +38,12 @@ static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
 
 
 gdouble ves_icall_System_Math_Floor (gdouble x) {
-       MONO_ARCH_SAVE_REGS;
        return floor(x);
 }
 
 gdouble ves_icall_System_Math_Round (gdouble x) {
        double int_part, dec_part;
-       MONO_ARCH_SAVE_REGS;
+
        int_part = floor(x);
        dec_part = x - int_part;
        if (((dec_part == 0.5) &&
@@ -54,13 +60,10 @@ gdouble ves_icall_System_Math_Round2 (gdouble value, gint32 digits, gboolean awa
 #endif
        double p;
 
-       MONO_ARCH_SAVE_REGS;
        if (value == HUGE_VAL)
                return HUGE_VAL;
        if (value == -HUGE_VAL)
                return -HUGE_VAL;
-       if (digits == 0)
-               return ves_icall_System_Math_Round(value);
        p = pow(10, digits);
 #if defined (HAVE_ROUND) && defined (HAVE_RINT)
        if (away_from_zero)
@@ -90,56 +93,42 @@ gdouble ves_icall_System_Math_Round2 (gdouble value, gint32 digits, gboolean awa
 gdouble 
 ves_icall_System_Math_Sin (gdouble x)
 {
-       MONO_ARCH_SAVE_REGS;
-
        return sin (x);
 }
 
 gdouble 
 ves_icall_System_Math_Cos (gdouble x)
 {
-       MONO_ARCH_SAVE_REGS;
-
        return cos (x);
 }
 
 gdouble 
 ves_icall_System_Math_Tan (gdouble x)
 {
-       MONO_ARCH_SAVE_REGS;
-
        return tan (x);
 }
 
 gdouble 
 ves_icall_System_Math_Sinh (gdouble x)
 {
-       MONO_ARCH_SAVE_REGS;
-
        return sinh (x);
 }
 
 gdouble 
 ves_icall_System_Math_Cosh (gdouble x)
 {
-       MONO_ARCH_SAVE_REGS;
-
        return cosh (x);
 }
 
 gdouble 
 ves_icall_System_Math_Tanh (gdouble x)
 {
-       MONO_ARCH_SAVE_REGS;
-
        return tanh (x);
 }
 
 gdouble 
 ves_icall_System_Math_Acos (gdouble x)
 {
-       MONO_ARCH_SAVE_REGS;
-
        if (x < -1 || x > 1)
                return NAN;
 
@@ -149,8 +138,6 @@ ves_icall_System_Math_Acos (gdouble x)
 gdouble 
 ves_icall_System_Math_Asin (gdouble x)
 {
-       MONO_ARCH_SAVE_REGS;
-
        if (x < -1 || x > 1)
                return NAN;
 
@@ -160,8 +147,6 @@ ves_icall_System_Math_Asin (gdouble x)
 gdouble 
 ves_icall_System_Math_Atan (gdouble x)
 {
-       MONO_ARCH_SAVE_REGS;
-
        return atan (x);
 }
 
@@ -169,7 +154,6 @@ gdouble
 ves_icall_System_Math_Atan2 (gdouble y, gdouble x)
 {
        double result;
-       MONO_ARCH_SAVE_REGS;
 
        if ((y == HUGE_VAL && x == HUGE_VAL) ||
                (y == HUGE_VAL && x == -HUGE_VAL) ||
@@ -184,16 +168,12 @@ ves_icall_System_Math_Atan2 (gdouble y, gdouble x)
 gdouble 
 ves_icall_System_Math_Exp (gdouble x)
 {
-       MONO_ARCH_SAVE_REGS;
-
        return exp (x);
 }
 
 gdouble 
 ves_icall_System_Math_Log (gdouble x)
 {
-       MONO_ARCH_SAVE_REGS;
-
        if (x == 0)
                return -HUGE_VAL;
        else if (x < 0)
@@ -205,8 +185,6 @@ ves_icall_System_Math_Log (gdouble x)
 gdouble 
 ves_icall_System_Math_Log10 (gdouble x)
 {
-       MONO_ARCH_SAVE_REGS;
-
        if (x == 0)
                return -HUGE_VAL;
        else if (x < 0)
@@ -219,7 +197,6 @@ gdouble
 ves_icall_System_Math_Pow (gdouble x, gdouble y)
 {
        double result;
-       MONO_ARCH_SAVE_REGS;
 
        if (isnan(x) || isnan(y)) {
                return NAN;
@@ -254,8 +231,6 @@ ves_icall_System_Math_Pow (gdouble x, gdouble y)
 gdouble 
 ves_icall_System_Math_Sqrt (gdouble x)
 {
-       MONO_ARCH_SAVE_REGS;
-
        if (x < 0)
                return NAN;