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 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