chris_lib 1.1.8 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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.