[LNT] r238973 - All of these routines make the assumption of floats, check that
Justin Bogner
mail at justinbogner.com
Wed Jun 3 15:29:26 PDT 2015
Chris Matthews <cmatthews5 at apple.com> writes:
> Author: cmatthews
> Date: Wed Jun 3 16:01:45 2015
> New Revision: 238973
>
> URL: http://llvm.org/viewvc/llvm-project?rev=238973&view=rev
> Log:
> All of these routines make the assumption of floats, check that
>
> Modified:
> lnt/trunk/lnt/util/stats.py
>
> Modified: lnt/trunk/lnt/util/stats.py
> URL:
> http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/util/stats.py?rev=238973&r1=238972&r2=238973&view=diff
> ==============================================================================
> --- lnt/trunk/lnt/util/stats.py (original)
> +++ lnt/trunk/lnt/util/stats.py Wed Jun 3 16:01:45 2015
> @@ -10,17 +10,34 @@ def safe_min(l):
> else:
> return min(l)
>
> +
> +def check_floating(l):
> + """These math ops are totally wrong when they done on anything besides
> + floats. I would just cast them, however that really slows them down.
> + So lets error on this """
> + for v in l:
> + assert type(v) == float, "Math op on non-floating point:" + str(v) + \
> + str(l)
> +
> +
> def mean(l):
> + check_floating(l)
> if l:
> - return sum(l)/len(l)
> + l = map(float, l)
> + return float_mean(l)
No need for the map here, since you just did check_floating.
> else:
> return None
>
>
> +def float_mean(l):
> + return sum(l)/len(l)
> +
> +
> def median(l):
> if not l:
> return None
> - l = list(l)
> + l = list(l) # Could be a tuple.
> + check_floating(l)
> l.sort()
> N = len(l)
> return (l[(N-1)//2] + l[N//2])*.5
> @@ -29,11 +46,13 @@ def median(l):
> def median_absolute_deviation(l, med = None):
> if med is None:
> med = median(l)
> + check_floating(l)
> return median([abs(x - med) for x in l])
>
>
> def standard_deviation(l):
> - m = mean(l)
> + check_floating(l)
> + m = float_mean(l)
> means_sqrd = sum([(v - m)**2 for v in l]) / len(l)
> rms = math.sqrt(means_sqrd)
> return rms
> @@ -43,6 +62,8 @@ def mannwhitneyu(a, b, sigLevel = .05):
> """
> Determine if sample a and b are the same at given significance level.
> """
> + check_floating(a)
> + check_floating(b)
> if len(a) <= 20 and len(b) <= 20:
> return mannwhitneyu_small(a, b, sigLevel)
> else:
> @@ -62,7 +83,7 @@ def mannwhitneyu_small(a, b, sigLevel):
> assert len(a) <= 20, "Sample size must be less than 20."
> assert len(b) <= 20, "Sample size must be less than 20."
>
> - if not sigLevel in SIGN_TABLES:
> + if sigLevel not in SIGN_TABLES:
> raise ValueError("Do not have according significance table.")
>
> # Calculate U value for sample groups using method described on Wikipedia.
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list