[Mono-dev] Patch for Math.cs
Miguel de Icaza
miguel at novell.com
Fri Mar 9 16:53:31 EST 2007
Hello,
The patch should use:
throw new ArgumentException (Locale.GetText ("...."))
So that this can be later internationalized.
Can someone send me the updated patch?
> Just out of interest, could you check the performance of the method if
> you change code patterns like:
>
> if (value > 0)
> return Floor (value + 0.5);
> else
> return Ceiling (value - 0.5);
>
> to:
>
> return (value > 0) ? Floor(value+0.5) : Ceiling(value - 0.5);
>
> When i was profiling stuff before i think there was a performance
> boost when using the turnary form, I may be wrong though. If it does
> turn out to be faster, you could make that change to. If it isn't, no
> worries.
>
> Alan.
>
>
> On 3/4/07, Dennis Hayes <denisraytek at yahoo.com> wrote:
> This is a minor clean up of Math.cs.
> Basicly, in the methods that use MidpointRounding Mode, it
> moves the check for a valid mode to the end of the method.
>
> Since the mode is checked in the method, doing this eliminates
> the extra check. Also, the check should never fail, since an
> enum is being passed in. This will make the code a little
> faster.
>
> I don't have svn access setup, so I need someone to check this
> in also.
>
> I did not include any tests, because this should not
> have added or modifyed anything testable.
>
> Should I do anything elseor do anything differently?
> Would this be better as a switch?
> Thanks,
> Dennis
>
> ______________________________________________________________
> Need a quick answer? Get one in minutes from people who know.
> Ask your question on Yahoo! Answers.
> --0-164504892-1173052624=:24413--
>
>
> Index: Math.cs
> ===================================================================
> --- Math.cs (revision 73696)
> +++ Math.cs (working copy)
> @@ -373,27 +373,27 @@
> [MonoTODO ("Not implemented")]
> public static decimal Round (decimal d,
> MidpointRounding mode)
> {
> - if ((mode != MidpointRounding.ToEven )
> && (mode != MidpointRounding.AwayFromZero))
> - throw new ArgumentException
> ("The value '" + mode + "' is not valid for this usage of the
> type MidpointRounding.", "mode");
> -
> if (mode == MidpointRounding.ToEven)
> return Round (d);
> - throw new NotImplementedException ();
> + if (mode ==
> MidpointRounding.AwayFromZero)
> + throw new NotImplementedException
> ();
> +
> + throw new ArgumentException ("The
> value '" + mode + "' is not valid for this usage of the type
> MidpointRounding.", "mode");
> }
>
> [MonoTODO ("Not implemented")]
> public static decimal Round (decimal d, int
> decimals, MidpointRounding mode)
> {
> - if ((mode != MidpointRounding.ToEven)
> && (mode != MidpointRounding.AwayFromZero))
> - throw new ArgumentException
> ("The value '" + mode + "' is not valid for this usage of the
> type MidpointRounding.", "mode");
> -
> if (mode == MidpointRounding.ToEven)
> return Round (d, decimals);
> - throw new NotImplementedException ();
> + if (mode ==
> MidpointRounding.AwayFromZero)
> + throw new NotImplementedException
> ();
> +
> + throw new ArgumentException ("The
> value '" + mode + "' is not valid for this usage of the type
> MidpointRounding.", "mode");
> }
> #endif
>
> - [MethodImplAttribute
> (MethodImplOptions.InternalCall)]
> + [MethodImplAttribute
> (MethodImplOptions.InternalCall)]
> public extern static double Round (double d);
>
> public static double Round (double value, int
> digits)
> @@ -411,26 +411,25 @@
> #if NET_2_0
> public static double Round (double value,
> MidpointRounding mode)
> {
> - if ((mode != MidpointRounding.ToEven)
> && (mode != MidpointRounding.AwayFromZero))
> - throw new ArgumentException
> ("The value '" + mode + "' is not valid for this usage of the
> type MidpointRounding.", "mode");
> -
> if (mode == MidpointRounding.ToEven)
> return Round (value);
> if (value > 0)
> return Floor (value + 0.5);
> else
> return Ceiling (value - 0.5);
> +
> + throw new ArgumentException ("The
> value '" + mode + "' is not valid for this usage of the type
> MidpointRounding.", "mode");
> }
>
> [MonoTODO ("Not implemented")]
> public static double Round (double value, int
> digits, MidpointRounding mode)
> {
> - if ((mode != MidpointRounding.ToEven)
> && (mode != MidpointRounding.AwayFromZero))
> - throw new ArgumentException
> ("The value '" + mode + "' is not valid for this usage of the
> type MidpointRounding.", "mode");
> -
> - if (mode == MidpointRounding.ToEven)
> + if (mode == MidpointRounding.ToEven)
> return Round (value, digits);
> - throw new NotImplementedException ();
> + if (mode == MidpointRounding.ToEven)
> + throw new NotImplementedException
> ();
> +
> + throw new ArgumentException ("The
> value '" + mode + "' is not valid for this usage of the type
> MidpointRounding.", "mode");
> }
>
> public static double Truncate (double d)
> @@ -454,7 +453,7 @@
> }
> #endif
>
> - public static int Sign (decimal value)
> + public static int Sign (decimal value)
> {
> if (value > 0) return 1;
> return (value == 0)? 0: -1;
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
More information about the Mono-devel-list
mailing list