chris_lib 1.1.9 → 2.0.1
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 +28 -13
- data/lib/chris_lib/version.rb +1 -1
- data/lib/chris_lib.rb +1 -0
- metadata +14 -146
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a49b1a56101739eda525ada550a7ac6d142bfae37daa8cab662ad1da8e2081fa
|
4
|
+
data.tar.gz: 585607c18aa8cdebbfc56fa8f85afa999a10554f64dec38cd0a34492d2a3f4bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ccbee869659d8937a609458d799902899c13fb6abdd168d3235e0e0713bb52ef6a673778ccbd0a265475e035e7bf75e0cb0634209027dcac47fb023632318e4
|
7
|
+
data.tar.gz: caaf85adaca705933ffa161441aba021c69c42d74e36ac201723f6d4b939d4b838ebf06a7a7b87a697e242e832c76e177546eccdce122330cfdec382e09b7894
|
data/lib/chris_lib/chris_math.rb
CHANGED
@@ -1,25 +1,46 @@
|
|
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
|
9
10
|
end
|
10
11
|
end
|
12
|
+
|
13
|
+
Matrix.class_eval do
|
14
|
+
# right pseudo-inverse for linearly independent rows
|
15
|
+
def pinv
|
16
|
+
full_rank = (rank == [row_count, column_count].min)
|
17
|
+
raise ExceptionForMatrix::ErrNotRegular unless full_rank
|
18
|
+
transpose * (self * transpose).inv
|
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
|
32
|
+
end
|
33
|
+
|
11
34
|
Array.class_eval do
|
12
35
|
# mean of array
|
13
36
|
def mean
|
14
|
-
|
15
|
-
# returns 9.705073
|
16
|
-
fail 'Length must be greater than 0.' if length < 1
|
37
|
+
raise 'Length must be greater than 0.' if length < 1
|
17
38
|
sum.to_f / length
|
18
39
|
end
|
19
40
|
|
20
41
|
# unbiased sample variance of array
|
21
42
|
def var
|
22
|
-
|
43
|
+
raise 'Length must be greater than 1' if length < 2
|
23
44
|
mu = mean
|
24
45
|
map { |v| (v**2 - mu**2) }.sum.to_f / (length - 1)
|
25
46
|
end
|
@@ -46,12 +67,6 @@ Array.class_eval do
|
|
46
67
|
end
|
47
68
|
end
|
48
69
|
|
49
|
-
def histogram
|
50
|
-
k = Hash.new(0)
|
51
|
-
self.each { |x| k[x] += 1 }
|
52
|
-
k
|
53
|
-
end
|
54
|
-
|
55
70
|
# deep dup, takes about 20 microseconds for scores arrays
|
56
71
|
# https://www.thoughtco.com/making-deep-copies-in-ruby-2907749
|
57
72
|
def deep_dup
|
@@ -113,7 +128,7 @@ module ChrisMath
|
|
113
128
|
|
114
129
|
def std(values)
|
115
130
|
n = values.length
|
116
|
-
|
131
|
+
raise 'n = #{n} but must be greater than 1' if n < 2
|
117
132
|
m = mean(values)
|
118
133
|
sum = values.inject { |s,v| s + (v**2 - m**2)}
|
119
134
|
sqrt(sum.to_f/(n - 1))
|
@@ -130,7 +145,7 @@ module ChrisMath
|
|
130
145
|
end
|
131
146
|
sum
|
132
147
|
else
|
133
|
-
|
148
|
+
raise 'Error, #{r} must be >= 0 and <= #{n}'
|
134
149
|
end
|
135
150
|
end
|
136
151
|
|
data/lib/chris_lib/version.rb
CHANGED
data/lib/chris_lib.rb
CHANGED
metadata
CHANGED
@@ -1,177 +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.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-28 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
24
|
- - ">="
|
41
25
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
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: loofah
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - "~>"
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: '2.3'
|
60
|
-
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: 2.3.1
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - "~>"
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '2.3'
|
70
|
-
- - ">="
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: 2.3.1
|
26
|
+
version: '0'
|
73
27
|
- !ruby/object:Gem::Dependency
|
74
28
|
name: rails
|
75
29
|
requirement: !ruby/object:Gem::Requirement
|
76
30
|
requirements:
|
77
|
-
- - "~>"
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
version: '5.1'
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 5.1.4.3
|
83
|
-
type: :development
|
84
|
-
prerelease: false
|
85
|
-
version_requirements: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '5.1'
|
90
|
-
- - ">="
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
version: 5.1.4.3
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
name: rspec-rails
|
95
|
-
requirement: !ruby/object:Gem::Requirement
|
96
|
-
requirements:
|
97
|
-
- - "~>"
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: '3.7'
|
100
|
-
- - ">="
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: 3.7.2
|
103
|
-
type: :development
|
104
|
-
prerelease: false
|
105
|
-
version_requirements: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - "~>"
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '3.7'
|
110
|
-
- - ">="
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: 3.7.2
|
113
|
-
- !ruby/object:Gem::Dependency
|
114
|
-
name: sqlite3
|
115
|
-
requirement: !ruby/object:Gem::Requirement
|
116
|
-
requirements:
|
117
|
-
- - "~>"
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
version: '1.3'
|
120
31
|
- - ">="
|
121
32
|
- !ruby/object:Gem::Version
|
122
|
-
version:
|
123
|
-
type: :
|
124
|
-
prerelease: false
|
125
|
-
version_requirements: !ruby/object:Gem::Requirement
|
126
|
-
requirements:
|
127
|
-
- - "~>"
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
version: '1.3'
|
130
|
-
- - ">="
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: 1.3.11
|
133
|
-
- !ruby/object:Gem::Dependency
|
134
|
-
name: nokogiri
|
135
|
-
requirement: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
137
|
-
- - "~>"
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: '1.10'
|
140
|
-
- - ">="
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
version: 1.10.8
|
143
|
-
type: :development
|
144
|
-
prerelease: false
|
145
|
-
version_requirements: !ruby/object:Gem::Requirement
|
146
|
-
requirements:
|
147
|
-
- - "~>"
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version: '1.10'
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: 1.10.8
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: rack
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - "~>"
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '2.0'
|
160
|
-
- - ">="
|
161
|
-
- !ruby/object:Gem::Version
|
162
|
-
version: 2.2.3
|
163
|
-
type: :development
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
164
35
|
prerelease: false
|
165
36
|
version_requirements: !ruby/object:Gem::Requirement
|
166
37
|
requirements:
|
167
|
-
- - "~>"
|
168
|
-
- !ruby/object:Gem::Version
|
169
|
-
version: '2.0'
|
170
38
|
- - ">="
|
171
39
|
- !ruby/object:Gem::Version
|
172
|
-
version:
|
40
|
+
version: '0'
|
173
41
|
- !ruby/object:Gem::Dependency
|
174
|
-
name:
|
42
|
+
name: rspec
|
175
43
|
requirement: !ruby/object:Gem::Requirement
|
176
44
|
requirements:
|
177
45
|
- - ">="
|
@@ -185,7 +53,7 @@ dependencies:
|
|
185
53
|
- !ruby/object:Gem::Version
|
186
54
|
version: '0'
|
187
55
|
- !ruby/object:Gem::Dependency
|
188
|
-
name:
|
56
|
+
name: nokogiri
|
189
57
|
requirement: !ruby/object:Gem::Requirement
|
190
58
|
requirements:
|
191
59
|
- - ">="
|
@@ -199,7 +67,7 @@ dependencies:
|
|
199
67
|
- !ruby/object:Gem::Version
|
200
68
|
version: '0'
|
201
69
|
- !ruby/object:Gem::Dependency
|
202
|
-
name:
|
70
|
+
name: pry
|
203
71
|
requirement: !ruby/object:Gem::Requirement
|
204
72
|
requirements:
|
205
73
|
- - ">="
|
@@ -234,7 +102,7 @@ licenses:
|
|
234
102
|
metadata:
|
235
103
|
source_code_uri: https://github.com/obromios/chris_lib
|
236
104
|
changelog_uri: https://github.com/obromios/chris_lib/blob/master/CHANGELOG.md
|
237
|
-
post_install_message:
|
105
|
+
post_install_message:
|
238
106
|
rdoc_options: []
|
239
107
|
require_paths:
|
240
108
|
- lib
|
@@ -249,8 +117,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
249
117
|
- !ruby/object:Gem::Version
|
250
118
|
version: '0'
|
251
119
|
requirements: []
|
252
|
-
rubygems_version: 3.1.
|
253
|
-
signing_key:
|
120
|
+
rubygems_version: 3.1.6
|
121
|
+
signing_key:
|
254
122
|
specification_version: 4
|
255
123
|
summary: This an eclectic collection of methods. It include maths, datetime, and rspec
|
256
124
|
access test libraries.
|