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