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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 52cf53c63c8128a6280c289b0670c3e60e999c2b
4
- data.tar.gz: 963420d1f1b62e85553b2d377eaa0fc929194799
3
+ metadata.gz: df92df4cd85443dd479d5194956cc3bf427c1706
4
+ data.tar.gz: b9a45e95e2ac606bc0be3530c428f89f32b031f8
5
5
  SHA512:
6
- metadata.gz: 3fc91f7644dd63d5a3d472c7258c536bec4537859703e4dab6398688c6a0320d138a6be7b256d2067b327e19c909c2a58e1d671f93e5a7ee3a82d6ecaa367143
7
- data.tar.gz: 44c796d4939933db97bd403368fe17f498ac07da9ef1f76db78c478e5530c78d4c875f17765d04fff28cd19dbd3d3f95a9720af6fac39e7bc9cbc29d2c599304
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
@@ -0,0 +1,3 @@
1
+ # Version 0.8
2
+
3
+ * Added mean method
@@ -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 calculate_total_distance_from_mean(VALUE array, unsigned long array_length){
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
+
@@ -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);
@@ -1,3 +1,3 @@
1
1
  module RubyNativeStatistics
2
- VERSION = "0.7.2"
2
+ VERSION = "0.8"
3
3
  end
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.7.2
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-03-24 00:00:00.000000000 Z
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