ruby_native_statistics 0.7.2 → 0.8
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/README.md +4 -0
- data/changelog.md +3 -0
- data/ext/dispersion/dispersion.c +27 -2
- data/ext/dispersion/dispersion.h +2 -0
- data/lib/ruby_native_statistics/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df92df4cd85443dd479d5194956cc3bf427c1706
|
4
|
+
data.tar.gz: b9a45e95e2ac606bc0be3530c428f89f32b031f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0fd6beb8ae2f02c7c68623e7f9320027548ccbbae57b742ce463f40e241abb7c20524ce7667a088e2beebbcca8d285f91c2ec50d3003147f0b22cc2a77ba579f
|
7
|
+
data.tar.gz: 051d61d8698609a37ac65aca6c04cd0e784ddec4a1ae1168c5169fb8709437c08dce7a7d7e8ca283c54399c09db5ba07a78fc974be6136c177d4d5ea088489b9
|
data/README.md
CHANGED
@@ -8,6 +8,7 @@ This is a native extension to Ruby that adds native (C) statistical functions to
|
|
8
8
|
* [Population Standard Deviation](https://en.wikipedia.org/wiki/Standard_deviation#Uncorrected_sample_standard_deviation) (stdevp)
|
9
9
|
* [Sample Variance](https://en.wikipedia.org/wiki/Variance#Population_variance_and_sample_variance) (var)
|
10
10
|
* [Population Variance](https://en.wikipedia.org/wiki/Variance#Population_variance_and_sample_variance) (varp)
|
11
|
+
* Mean (mean)
|
11
12
|
|
12
13
|
Check the TravisCI build to see the currently supported versions of Ruby. This list will match whatever stable versions are specified at https://www.ruby-lang.org/en/downloads/.
|
13
14
|
|
@@ -26,6 +27,9 @@ It is much more performant than calculating the standard deviation with pure Rub
|
|
26
27
|
|
27
28
|
# calculate population standard deviation
|
28
29
|
p r.stdevp
|
30
|
+
|
31
|
+
# calculate mean
|
32
|
+
p r.mean
|
29
33
|
|
30
34
|
## Links
|
31
35
|
|
data/changelog.md
ADDED
data/ext/dispersion/dispersion.c
CHANGED
@@ -8,13 +8,13 @@ void Init_dispersion() {
|
|
8
8
|
rb_define_method(DispersionModule, "stdevp", rb_population_standard_deviation, 0);
|
9
9
|
rb_define_method(DispersionModule, "var", rb_sample_variance, 0);
|
10
10
|
rb_define_method(DispersionModule, "varp", rb_population_variance, 0);
|
11
|
+
rb_define_method(DispersionModule, "mean", rb_mean, 0);
|
11
12
|
}
|
12
13
|
|
13
|
-
double
|
14
|
+
double calculate_mean(VALUE array, unsigned long array_length){
|
14
15
|
unsigned long i;
|
15
16
|
double total = 0;
|
16
17
|
double mean = 0;
|
17
|
-
double total_distance_from_mean = 0;
|
18
18
|
|
19
19
|
for(i = 0; i < array_length; i++){
|
20
20
|
total += rb_num2dbl(rb_ary_entry(array, i));
|
@@ -22,6 +22,16 @@ double calculate_total_distance_from_mean(VALUE array, unsigned long array_lengt
|
|
22
22
|
|
23
23
|
mean = total / array_length;
|
24
24
|
|
25
|
+
return mean;
|
26
|
+
}
|
27
|
+
|
28
|
+
double calculate_total_distance_from_mean(VALUE array, unsigned long array_length){
|
29
|
+
unsigned long i;
|
30
|
+
double mean = 0;
|
31
|
+
double total_distance_from_mean = 0;
|
32
|
+
|
33
|
+
mean = calculate_mean(array, array_length);
|
34
|
+
|
25
35
|
for(i = 0; i < array_length; i++){
|
26
36
|
total_distance_from_mean += pow((rb_num2dbl(rb_ary_entry(array, i)) - mean), 2);
|
27
37
|
}
|
@@ -84,3 +94,18 @@ VALUE rb_population_variance(VALUE self) {
|
|
84
94
|
|
85
95
|
return DBL2NUM(calculate_total_distance_from_mean(self, array_length) / array_length);
|
86
96
|
}
|
97
|
+
|
98
|
+
VALUE rb_mean(VALUE self) {
|
99
|
+
unsigned int array_length;
|
100
|
+
|
101
|
+
Check_Type(self, T_ARRAY);
|
102
|
+
|
103
|
+
array_length = rb_long2int(RARRAY_LEN(self));
|
104
|
+
|
105
|
+
if (array_length <= 0) {
|
106
|
+
rb_raise(rb_eRangeError, "array must have at least one element");
|
107
|
+
}
|
108
|
+
|
109
|
+
return DBL2NUM(calculate_mean(self, array_length));
|
110
|
+
}
|
111
|
+
|
data/ext/dispersion/dispersion.h
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
VALUE DispersionModule = Qnil;
|
2
|
+
VALUE rb_mean(VALUE self);
|
2
3
|
VALUE rb_sample_standard_deviation(VALUE self);
|
3
4
|
VALUE rb_population_standard_deviation(VALUE self);
|
4
5
|
VALUE rb_sample_variance(VALUE self);
|
5
6
|
VALUE rb_population_variance(VALUE self);
|
7
|
+
double calculate_mean(VALUE array, unsigned long array_length);
|
6
8
|
double calculate_total_distance_from_mean(VALUE array, unsigned long array_length);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_native_statistics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.8'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cory Buecker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,6 +80,7 @@ files:
|
|
80
80
|
- LICENSE
|
81
81
|
- README.md
|
82
82
|
- Rakefile
|
83
|
+
- changelog.md
|
83
84
|
- ext/dispersion/dispersion.c
|
84
85
|
- ext/dispersion/dispersion.h
|
85
86
|
- ext/dispersion/extconf.rb
|