chris_lib 1.1.10 → 2.0.2
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 +19 -13
- data/lib/chris_lib/version.rb +1 -1
- data/lib/chris_lib.rb +1 -0
- metadata +11 -163
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0aa6a70c43d3a1eb61de63a1512ebb5d923ad1b7ef9c7b696a6756d6a54ab43d
|
4
|
+
data.tar.gz: aca4e314380f79a159a1392ab5d14e8d9a6a5c7bbe3b294f0b55d4157552b0e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b3dad798054cf7d62ddca361c33f5718e1fc91a977ac64109a763adb1e27d39fc291e145e063ddfb514df2b275d1cc006717930769c0db782ea27335782bd8a
|
7
|
+
data.tar.gz: '068762bb346e73ee1ff196778a9e3386620743d238c871cfdd72c1ea89c26869ec09a97e36b1a8f1e8241929f053c51361b01efdc8c6bea4b22481053ac54c61'
|
data/lib/chris_lib/chris_math.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
+
require 'matrix'
|
1
2
|
Integer.class_eval do
|
2
3
|
def factorial
|
3
4
|
n = self
|
4
5
|
if n > 20
|
5
|
-
|
6
|
+
raise 'Number too large'
|
6
7
|
else
|
7
8
|
(1..n).inject {|prod, i| prod * i}
|
8
9
|
end
|
@@ -10,25 +11,36 @@ Integer.class_eval do
|
|
10
11
|
end
|
11
12
|
|
12
13
|
Matrix.class_eval do
|
14
|
+
# right pseudo-inverse for linearly independent rows
|
13
15
|
def pinv
|
14
16
|
full_rank = (rank == [row_count, column_count].min)
|
15
17
|
raise ExceptionForMatrix::ErrNotRegular unless full_rank
|
16
18
|
transpose * (self * transpose).inv
|
17
19
|
end
|
20
|
+
|
21
|
+
# for linearly independent rows
|
22
|
+
def pinv_right
|
23
|
+
full_rank = (rank == [row_count, column_count].min)
|
24
|
+
raise ExceptionForMatrix::ErrNotRegular unless full_rank
|
25
|
+
transpose * (self * transpose).inv
|
26
|
+
end
|
27
|
+
|
28
|
+
# for linearly independent columns
|
29
|
+
def pinv_left
|
30
|
+
(transpose * self).inv * transpose
|
31
|
+
end
|
18
32
|
end
|
19
33
|
|
20
34
|
Array.class_eval do
|
21
35
|
# mean of array
|
22
36
|
def mean
|
23
|
-
|
24
|
-
# returns 9.705073
|
25
|
-
fail 'Length must be greater than 0.' if length < 1
|
37
|
+
raise 'Length must be greater than 0.' if length < 1
|
26
38
|
sum.to_f / length
|
27
39
|
end
|
28
40
|
|
29
41
|
# unbiased sample variance of array
|
30
42
|
def var
|
31
|
-
|
43
|
+
raise 'Length must be greater than 1' if length < 2
|
32
44
|
mu = mean
|
33
45
|
map { |v| (v**2 - mu**2) }.sum.to_f / (length - 1)
|
34
46
|
end
|
@@ -55,12 +67,6 @@ Array.class_eval do
|
|
55
67
|
end
|
56
68
|
end
|
57
69
|
|
58
|
-
def histogram
|
59
|
-
k = Hash.new(0)
|
60
|
-
self.each { |x| k[x] += 1 }
|
61
|
-
k
|
62
|
-
end
|
63
|
-
|
64
70
|
# deep dup, takes about 20 microseconds for scores arrays
|
65
71
|
# https://www.thoughtco.com/making-deep-copies-in-ruby-2907749
|
66
72
|
def deep_dup
|
@@ -122,7 +128,7 @@ module ChrisMath
|
|
122
128
|
|
123
129
|
def std(values)
|
124
130
|
n = values.length
|
125
|
-
|
131
|
+
raise 'n = #{n} but must be greater than 1' if n < 2
|
126
132
|
m = mean(values)
|
127
133
|
sum = values.inject { |s,v| s + (v**2 - m**2)}
|
128
134
|
sqrt(sum.to_f/(n - 1))
|
@@ -139,7 +145,7 @@ module ChrisMath
|
|
139
145
|
end
|
140
146
|
sum
|
141
147
|
else
|
142
|
-
|
148
|
+
raise 'Error, #{r} must be >= 0 and <= #{n}'
|
143
149
|
end
|
144
150
|
end
|
145
151
|
|
data/lib/chris_lib/version.rb
CHANGED
data/lib/chris_lib.rb
CHANGED
metadata
CHANGED
@@ -1,197 +1,45 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chris_lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.2
|
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-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dotenv
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '2.2'
|
20
17
|
- - ">="
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
19
|
+
version: '0'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '2.2'
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 2.2.1
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: actionview
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - "~>"
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '5.1'
|
40
|
-
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: 5.2.4.3
|
43
|
-
type: :development
|
44
|
-
prerelease: false
|
45
|
-
version_requirements: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - "~>"
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '5.1'
|
50
|
-
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: 5.2.4.3
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: actionpack
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - "~>"
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: '5.2'
|
60
|
-
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: 5.2.4.6
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - "~>"
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '5.2'
|
70
|
-
- - ">="
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: 5.2.4.6
|
73
|
-
- !ruby/object:Gem::Dependency
|
74
|
-
name: loofah
|
75
|
-
requirement: !ruby/object:Gem::Requirement
|
76
|
-
requirements:
|
77
|
-
- - "~>"
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
version: '2.3'
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 2.3.1
|
83
|
-
type: :development
|
84
|
-
prerelease: false
|
85
|
-
version_requirements: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '2.3'
|
90
24
|
- - ">="
|
91
25
|
- !ruby/object:Gem::Version
|
92
|
-
version:
|
26
|
+
version: '0'
|
93
27
|
- !ruby/object:Gem::Dependency
|
94
28
|
name: rails
|
95
29
|
requirement: !ruby/object:Gem::Requirement
|
96
30
|
requirements:
|
97
|
-
- - "~>"
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: '5.1'
|
100
31
|
- - ">="
|
101
32
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
103
|
-
type: :
|
104
|
-
prerelease: false
|
105
|
-
version_requirements: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - "~>"
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '5.1'
|
110
|
-
- - ">="
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: 5.1.4.6
|
113
|
-
- !ruby/object:Gem::Dependency
|
114
|
-
name: rspec-rails
|
115
|
-
requirement: !ruby/object:Gem::Requirement
|
116
|
-
requirements:
|
117
|
-
- - "~>"
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
version: '3.7'
|
120
|
-
- - ">="
|
121
|
-
- !ruby/object:Gem::Version
|
122
|
-
version: 3.7.2
|
123
|
-
type: :development
|
124
|
-
prerelease: false
|
125
|
-
version_requirements: !ruby/object:Gem::Requirement
|
126
|
-
requirements:
|
127
|
-
- - "~>"
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
version: '3.7'
|
130
|
-
- - ">="
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: 3.7.2
|
133
|
-
- !ruby/object:Gem::Dependency
|
134
|
-
name: sqlite3
|
135
|
-
requirement: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
137
|
-
- - "~>"
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: '1.3'
|
140
|
-
- - ">="
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
version: 1.3.11
|
143
|
-
type: :development
|
144
|
-
prerelease: false
|
145
|
-
version_requirements: !ruby/object:Gem::Requirement
|
146
|
-
requirements:
|
147
|
-
- - "~>"
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version: '1.3'
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: 1.3.11
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: nokogiri
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - "~>"
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '1.10'
|
160
|
-
- - ">="
|
161
|
-
- !ruby/object:Gem::Version
|
162
|
-
version: 1.11.4
|
163
|
-
type: :development
|
164
|
-
prerelease: false
|
165
|
-
version_requirements: !ruby/object:Gem::Requirement
|
166
|
-
requirements:
|
167
|
-
- - "~>"
|
168
|
-
- !ruby/object:Gem::Version
|
169
|
-
version: '1.10'
|
170
|
-
- - ">="
|
171
|
-
- !ruby/object:Gem::Version
|
172
|
-
version: 1.11.4
|
173
|
-
- !ruby/object:Gem::Dependency
|
174
|
-
name: rack
|
175
|
-
requirement: !ruby/object:Gem::Requirement
|
176
|
-
requirements:
|
177
|
-
- - "~>"
|
178
|
-
- !ruby/object:Gem::Version
|
179
|
-
version: '2.0'
|
180
|
-
- - ">="
|
181
|
-
- !ruby/object:Gem::Version
|
182
|
-
version: 2.2.3
|
183
|
-
type: :development
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
184
35
|
prerelease: false
|
185
36
|
version_requirements: !ruby/object:Gem::Requirement
|
186
37
|
requirements:
|
187
|
-
- - "~>"
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: '2.0'
|
190
38
|
- - ">="
|
191
39
|
- !ruby/object:Gem::Version
|
192
|
-
version:
|
40
|
+
version: '0'
|
193
41
|
- !ruby/object:Gem::Dependency
|
194
|
-
name:
|
42
|
+
name: rspec
|
195
43
|
requirement: !ruby/object:Gem::Requirement
|
196
44
|
requirements:
|
197
45
|
- - ">="
|
@@ -205,7 +53,7 @@ dependencies:
|
|
205
53
|
- !ruby/object:Gem::Version
|
206
54
|
version: '0'
|
207
55
|
- !ruby/object:Gem::Dependency
|
208
|
-
name:
|
56
|
+
name: nokogiri
|
209
57
|
requirement: !ruby/object:Gem::Requirement
|
210
58
|
requirements:
|
211
59
|
- - ">="
|
@@ -219,7 +67,7 @@ dependencies:
|
|
219
67
|
- !ruby/object:Gem::Version
|
220
68
|
version: '0'
|
221
69
|
- !ruby/object:Gem::Dependency
|
222
|
-
name:
|
70
|
+
name: pry
|
223
71
|
requirement: !ruby/object:Gem::Requirement
|
224
72
|
requirements:
|
225
73
|
- - ">="
|
@@ -269,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
269
117
|
- !ruby/object:Gem::Version
|
270
118
|
version: '0'
|
271
119
|
requirements: []
|
272
|
-
rubygems_version: 3.1.
|
120
|
+
rubygems_version: 3.1.6
|
273
121
|
signing_key:
|
274
122
|
specification_version: 4
|
275
123
|
summary: This an eclectic collection of methods. It include maths, datetime, and rspec
|