field_test 0.5.0 → 0.5.1

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