field_test 0.5.0 → 0.5.1

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
  SHA256:
3
- metadata.gz: 913c2ad9eaefe134cdabd915eec17f4f48fa9062c9066e37aa638989f0c05072
4
- data.tar.gz: bfe73138f6b18fbf8b72e144d2f3c6e727a1d398e6c0f09860981aade30b9d45
3
+ metadata.gz: 0b7676acb9075e7701de0019e3c7ca18a0242db8c87348d024006ff787c42d13
4
+ data.tar.gz: 92849469d6ca65422ef3f2a1b77f08c7695d79fa336b463cedf3991770be15cd
5
5
  SHA512:
6
- metadata.gz: e35ca617ba6e37ad7650f14ef46fd225ce3469faac29cb91909cc682f42b160b0af6af522906cfb53015a381e8c0ddb27ebda2e1a219c186147716e38d7d9396
7
- data.tar.gz: 3464e1e26a219ddb43a8a766d965608c60ef014a158ac2df923403d915a684c58fdef6f6ab75b9ccf60d1201f658c84638cb9c2e5025ac48a69b45f721121290
6
+ metadata.gz: 9f21fa35a6f44d085bbbfbd15e8174e7dd7f8a0d411e3a584097d59793776a0c0bd783cb4a3d7fee7f07402190a1a61487e1be554492208536f375b3e1981c7f
7
+ data.tar.gz: aeb943baab224022931a634fa190bbb3837856b3f0ee956c919f1233c6c6796a5251216a65334cd34878487e5902a251e695722a8982a19ffca6711e1d6113cf
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.5.1 (2021-09-22)
2
+
3
+ - Improved performance of Bayesian calculations
4
+
1
5
  ## 0.5.0 (2021-09-21)
2
6
 
3
7
  - Significantly improved performance of Bayesian calculations
@@ -26,14 +26,11 @@ double prob_c_beats_a_and_b(int alpha_a, int beta_a, int alpha_b, int beta_b, in
26
26
 
27
27
  double logbeta_ac_bc = logbeta(alpha_c, beta_c);
28
28
 
29
- std::vector<double> log_bb_j;
30
- log_bb_j.reserve(alpha_b);
31
- std::vector<double> logbeta_j_bb;
32
- logbeta_j_bb.reserve(alpha_b);
29
+ std::vector<double> log_bb_j_logbeta_j_bb;
30
+ log_bb_j_logbeta_j_bb.reserve(alpha_b);
33
31
 
34
32
  for (auto j = 0; j < alpha_b; j++) {
35
- log_bb_j.push_back(log(beta_b + j));
36
- logbeta_j_bb.push_back(logbeta(1 + j, beta_b));
33
+ log_bb_j_logbeta_j_bb.push_back(log(beta_b + j) + logbeta(1 + j, beta_b));
37
34
  }
38
35
 
39
36
  double abc = beta_a + beta_b + beta_c;
@@ -48,7 +45,7 @@ double prob_c_beats_a_and_b(int alpha_a, int beta_a, int alpha_b, int beta_b, in
48
45
  double sum_i = -log(beta_a + i) - logbeta(1 + i, beta_a) - logbeta_ac_bc;
49
46
 
50
47
  for (auto j = 0; j < alpha_b; j++) {
51
- total += exp(sum_i + logbeta_ac_i_j[i + j] - log_bb_j[j] - logbeta_j_bb[j]);
48
+ total += exp(sum_i + logbeta_ac_i_j[i + j] - log_bb_j_logbeta_j_bb[j]);
52
49
  }
53
50
  }
54
51
 
@@ -61,24 +58,18 @@ double prob_d_beats_a_and_b_and_c(int alpha_a, int beta_a, int alpha_b, int beta
61
58
 
62
59
  double logbeta_ad_bd = logbeta(alpha_d, beta_d);
63
60
 
64
- std::vector<double> log_bb_j;
65
- log_bb_j.reserve(alpha_b);
66
- std::vector<double> logbeta_j_bb;
67
- logbeta_j_bb.reserve(alpha_b);
61
+ std::vector<double> log_bb_j_logbeta_j_bb;
62
+ log_bb_j_logbeta_j_bb.reserve(alpha_b);
68
63
 
69
64
  for (auto j = 0; j < alpha_b; j++) {
70
- log_bb_j.push_back(log(beta_b + j));
71
- logbeta_j_bb.push_back(logbeta(1 + j, beta_b));
65
+ log_bb_j_logbeta_j_bb.push_back(log(beta_b + j) + logbeta(1 + j, beta_b));
72
66
  }
73
67
 
74
- std::vector<double> log_bc_k;
75
- log_bc_k.reserve(alpha_c);
76
- std::vector<double> logbeta_k_bc;
77
- logbeta_k_bc.reserve(alpha_c);
68
+ std::vector<double> log_bc_k_logbeta_k_bc;
69
+ log_bc_k_logbeta_k_bc.reserve(alpha_c);
78
70
 
79
71
  for (auto k = 0; k < alpha_c; k++) {
80
- log_bc_k.push_back(log(beta_c + k));
81
- logbeta_k_bc.push_back(logbeta(1 + k, beta_c));
72
+ log_bc_k_logbeta_k_bc.push_back(log(beta_c + k) + logbeta(1 + k, beta_c));
82
73
  }
83
74
 
84
75
  double abcd = beta_a + beta_b + beta_c + beta_d;
@@ -89,22 +80,14 @@ double prob_d_beats_a_and_b_and_c(int alpha_a, int beta_a, int alpha_b, int beta
89
80
  logbeta_bd_i_j_k.push_back(logbeta(alpha_d + i, abcd));
90
81
  }
91
82
 
92
- std::vector<double> sum_i_j;
93
- sum_i_j.reserve(alpha_a * alpha_b);
94
83
  for (auto i = 0; i < alpha_a; i++) {
95
84
  double sum_i = -log(beta_a + i) - logbeta(1 + i, beta_a) - logbeta_ad_bd;
96
85
 
97
86
  for (auto j = 0; j < alpha_b; j++) {
98
- sum_i_j.push_back(sum_i - log_bb_j[j] - logbeta_j_bb[j]);
99
- }
100
- }
101
-
102
- for (auto i = 0; i < alpha_a; i++) {
103
- for (auto j = 0; j < alpha_b; j++) {
104
- double sum_j = sum_i_j[i * alpha_b + j];
87
+ double sum_j = sum_i - log_bb_j_logbeta_j_bb[j];
105
88
 
106
89
  for (auto k = 0; k < alpha_c; k++) {
107
- total += exp(sum_j + logbeta_bd_i_j_k[i + j + k] - log_bc_k[k] - logbeta_k_bc[k]);
90
+ total += exp(sum_j + logbeta_bd_i_j_k[i + j + k] - log_bc_k_logbeta_k_bc[k]);
108
91
  }
109
92
  }
110
93
  }
@@ -1,3 +1,3 @@
1
1
  module FieldTest
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: field_test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-22 00:00:00.000000000 Z
11
+ date: 2021-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties