chris_lib 1.1.11 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/chris_lib/chris_math.rb +5 -13
- data/lib/chris_lib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55f439aa3d9c69f76fe0d8e71ca2792d54a86371403c24e48a8b364216f3d1f3
|
4
|
+
data.tar.gz: aa416d12ca0916cf34d54985ad185e1bf4a49ed39befbc39b146f4c9002f1494
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b08c41d77e18cd3cb849f65feab716370cf0a1d5ac91bdd9a0292c82fe76e0abfa18d352ac3222472b37584fb7fc1e2d25d8e5c37f5468f08b31a562f11cee53
|
7
|
+
data.tar.gz: 17fffc4641e04f756ea8444fcc9e2234d83dc8f46c7c8c56a87fd70d73f320947e5ec1c65645ebb2e739a01736893038e2d453a0c76d41f5ad7274e8a953187f
|
data/lib/chris_lib/chris_math.rb
CHANGED
@@ -3,7 +3,7 @@ Integer.class_eval do
|
|
3
3
|
def factorial
|
4
4
|
n = self
|
5
5
|
if n > 20
|
6
|
-
|
6
|
+
raise 'Number too large'
|
7
7
|
else
|
8
8
|
(1..n).inject {|prod, i| prod * i}
|
9
9
|
end
|
@@ -34,15 +34,13 @@ end
|
|
34
34
|
Array.class_eval do
|
35
35
|
# mean of array
|
36
36
|
def mean
|
37
|
-
|
38
|
-
# returns 9.705073
|
39
|
-
fail 'Length must be greater than 0.' if length < 1
|
37
|
+
raise 'Length must be greater than 0.' if length < 1
|
40
38
|
sum.to_f / length
|
41
39
|
end
|
42
40
|
|
43
41
|
# unbiased sample variance of array
|
44
42
|
def var
|
45
|
-
|
43
|
+
raise 'Length must be greater than 1' if length < 2
|
46
44
|
mu = mean
|
47
45
|
map { |v| (v**2 - mu**2) }.sum.to_f / (length - 1)
|
48
46
|
end
|
@@ -69,12 +67,6 @@ Array.class_eval do
|
|
69
67
|
end
|
70
68
|
end
|
71
69
|
|
72
|
-
def histogram
|
73
|
-
k = Hash.new(0)
|
74
|
-
self.each { |x| k[x] += 1 }
|
75
|
-
k
|
76
|
-
end
|
77
|
-
|
78
70
|
# deep dup, takes about 20 microseconds for scores arrays
|
79
71
|
# https://www.thoughtco.com/making-deep-copies-in-ruby-2907749
|
80
72
|
def deep_dup
|
@@ -136,7 +128,7 @@ module ChrisMath
|
|
136
128
|
|
137
129
|
def std(values)
|
138
130
|
n = values.length
|
139
|
-
|
131
|
+
raise 'n = #{n} but must be greater than 1' if n < 2
|
140
132
|
m = mean(values)
|
141
133
|
sum = values.inject { |s,v| s + (v**2 - m**2)}
|
142
134
|
sqrt(sum.to_f/(n - 1))
|
@@ -153,7 +145,7 @@ module ChrisMath
|
|
153
145
|
end
|
154
146
|
sum
|
155
147
|
else
|
156
|
-
|
148
|
+
raise 'Error, #{r} must be >= 0 and <= #{n}'
|
157
149
|
end
|
158
150
|
end
|
159
151
|
|
data/lib/chris_lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chris_lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dotenv
|