chris_lib 1.1.8 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 03f6e00ed5866fc18ab2c1549033b6266b2a32f8c0a192794d4739ff8592737c
4
- data.tar.gz: caace78897a191844afc736ed495f170dd6ae7c262cc2d20ccdd8d68a24100f0
3
+ metadata.gz: 55f439aa3d9c69f76fe0d8e71ca2792d54a86371403c24e48a8b364216f3d1f3
4
+ data.tar.gz: aa416d12ca0916cf34d54985ad185e1bf4a49ed39befbc39b146f4c9002f1494
5
5
  SHA512:
6
- metadata.gz: 9c94b34ec5979339e2e93d7d681125adf475a79bce7e384eb849004176dacc56c2284610e756a0263a37218df25224c06bd9cfbc0fb6dbc1bcb6f06159446947
7
- data.tar.gz: dc169e4c377e796e105959e1ba604b8e01897bf69158b9a47742bd32031e0ca413ae780823b5c011ee57b1b2e06b49b235be2f0a3835c5887a53303befe1a333
6
+ metadata.gz: b08c41d77e18cd3cb849f65feab716370cf0a1d5ac91bdd9a0292c82fe76e0abfa18d352ac3222472b37584fb7fc1e2d25d8e5c37f5468f08b31a562f11cee53
7
+ data.tar.gz: 17fffc4641e04f756ea8444fcc9e2234d83dc8f46c7c8c56a87fd70d73f320947e5ec1c65645ebb2e739a01736893038e2d453a0c76d41f5ad7274e8a953187f
data/lib/chris_lib.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'matrix'
1
2
  require "chris_lib/version"
2
3
  require "chris_lib/date_ext"
3
4
  require "chris_lib/test_access"
@@ -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
- fail 'Number too large'
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
- # s=c(7.08195525827783, 10.831582068121444, 9.288611270369554, 9.054684238411918, 12.268532229606647)
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
- fail 'Length must be greater than 1' if length < 2
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
- fail 'n = #{n} but must be greater than 1' if n < 2
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
- fail 'Error, #{r} must be >= 0 and <= #{n}'
148
+ raise 'Error, #{r} must be >= 0 and <= #{n}'
134
149
  end
135
150
  end
136
151
 
@@ -1,3 +1,3 @@
1
1
  module ChrisLib
2
- VERSION = "1.1.8"
2
+ VERSION = "2.0.0"
3
3
  end
metadata CHANGED
@@ -1,175 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chris_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.8
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-25 00:00:00.000000000 Z
11
+ date: 2021-08-18 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: 2.2.1
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.1.6.2
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
24
  - - ">="
51
25
  - !ruby/object:Gem::Version
52
- version: 5.1.6.2
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
31
  - - ">="
81
32
  - !ruby/object:Gem::Version
82
- version: 5.1.6.2
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.6.2
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
33
+ version: '0'
34
+ type: :runtime
104
35
  prerelease: false
105
36
  version_requirements: !ruby/object:Gem::Requirement
106
37
  requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '3.7'
110
38
  - - ">="
111
39
  - !ruby/object:Gem::Version
112
- version: 3.7.2
40
+ version: '0'
113
41
  - !ruby/object:Gem::Dependency
114
- name: sqlite3
42
+ name: rspec
115
43
  requirement: !ruby/object:Gem::Requirement
116
44
  requirements:
117
- - - "~>"
118
- - !ruby/object:Gem::Version
119
- version: '1.3'
120
45
  - - ">="
121
46
  - !ruby/object:Gem::Version
122
- version: 1.3.11
47
+ version: '0'
123
48
  type: :development
124
49
  prerelease: false
125
50
  version_requirements: !ruby/object:Gem::Requirement
126
51
  requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: '1.3'
130
52
  - - ">="
131
53
  - !ruby/object:Gem::Version
132
- version: 1.3.11
54
+ version: '0'
133
55
  - !ruby/object:Gem::Dependency
134
56
  name: nokogiri
135
57
  requirement: !ruby/object:Gem::Requirement
136
58
  requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: '1.10'
140
59
  - - ">="
141
60
  - !ruby/object:Gem::Version
142
- version: 1.10.8
61
+ version: '0'
143
62
  type: :development
144
63
  prerelease: false
145
64
  version_requirements: !ruby/object:Gem::Requirement
146
65
  requirements:
147
- - - "~>"
148
- - !ruby/object:Gem::Version
149
- version: '1.10'
150
66
  - - ">="
151
67
  - !ruby/object:Gem::Version
152
- version: 1.10.8
68
+ version: '0'
153
69
  - !ruby/object:Gem::Dependency
154
- name: rack
70
+ name: pry
155
71
  requirement: !ruby/object:Gem::Requirement
156
72
  requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '2.0'
160
73
  - - ">="
161
74
  - !ruby/object:Gem::Version
162
- version: 2.0.8
75
+ version: '0'
163
76
  type: :development
164
77
  prerelease: false
165
78
  version_requirements: !ruby/object:Gem::Requirement
166
79
  requirements:
167
- - - "~>"
168
- - !ruby/object:Gem::Version
169
- version: '2.0'
170
80
  - - ">="
171
81
  - !ruby/object:Gem::Version
172
- version: 2.0.8
82
+ version: '0'
173
83
  description: It includes maths, datetime, and rspec access test libraries.
174
84
  email:
175
85
  - obromios@gmail.com
@@ -192,7 +102,7 @@ licenses:
192
102
  metadata:
193
103
  source_code_uri: https://github.com/obromios/chris_lib
194
104
  changelog_uri: https://github.com/obromios/chris_lib/blob/master/CHANGELOG.md
195
- post_install_message:
105
+ post_install_message:
196
106
  rdoc_options: []
197
107
  require_paths:
198
108
  - lib
@@ -207,8 +117,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
207
117
  - !ruby/object:Gem::Version
208
118
  version: '0'
209
119
  requirements: []
210
- rubygems_version: 3.1.2
211
- signing_key:
120
+ rubygems_version: 3.1.6
121
+ signing_key:
212
122
  specification_version: 4
213
123
  summary: This an eclectic collection of methods. It include maths, datetime, and rspec
214
124
  access test libraries.