tomoto 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/ext/tomoto/ct.cpp +11 -11
  4. data/ext/tomoto/dmr.cpp +14 -13
  5. data/ext/tomoto/dt.cpp +14 -14
  6. data/ext/tomoto/ext.cpp +7 -7
  7. data/ext/tomoto/extconf.rb +1 -3
  8. data/ext/tomoto/gdmr.cpp +7 -7
  9. data/ext/tomoto/hdp.cpp +9 -9
  10. data/ext/tomoto/hlda.cpp +13 -13
  11. data/ext/tomoto/hpa.cpp +5 -5
  12. data/ext/tomoto/lda.cpp +42 -39
  13. data/ext/tomoto/llda.cpp +6 -6
  14. data/ext/tomoto/mglda.cpp +15 -15
  15. data/ext/tomoto/pa.cpp +6 -6
  16. data/ext/tomoto/plda.cpp +6 -6
  17. data/ext/tomoto/slda.cpp +8 -8
  18. data/ext/tomoto/utils.h +16 -70
  19. data/lib/tomoto/version.rb +1 -1
  20. data/vendor/tomotopy/README.kr.rst +57 -0
  21. data/vendor/tomotopy/README.rst +55 -0
  22. data/vendor/tomotopy/src/Labeling/Phraser.hpp +3 -3
  23. data/vendor/tomotopy/src/TopicModel/CTModel.hpp +5 -2
  24. data/vendor/tomotopy/src/TopicModel/DMRModel.hpp +5 -2
  25. data/vendor/tomotopy/src/TopicModel/DTModel.hpp +5 -2
  26. data/vendor/tomotopy/src/TopicModel/HDPModel.hpp +4 -4
  27. data/vendor/tomotopy/src/TopicModel/HLDAModel.hpp +5 -2
  28. data/vendor/tomotopy/src/TopicModel/HPAModel.hpp +2 -2
  29. data/vendor/tomotopy/src/TopicModel/LDA.h +3 -3
  30. data/vendor/tomotopy/src/TopicModel/LDACVB0Model.hpp +3 -3
  31. data/vendor/tomotopy/src/TopicModel/LDAModel.hpp +34 -14
  32. data/vendor/tomotopy/src/TopicModel/LLDAModel.hpp +5 -2
  33. data/vendor/tomotopy/src/TopicModel/MGLDAModel.hpp +2 -2
  34. data/vendor/tomotopy/src/TopicModel/PAModel.hpp +1 -1
  35. data/vendor/tomotopy/src/TopicModel/PLDAModel.hpp +5 -2
  36. data/vendor/tomotopy/src/TopicModel/PTModel.hpp +5 -2
  37. data/vendor/tomotopy/src/TopicModel/SLDAModel.hpp +4 -1
  38. data/vendor/tomotopy/src/TopicModel/TopicModel.hpp +48 -21
  39. data/vendor/tomotopy/src/Utils/AliasMethod.hpp +5 -4
  40. data/vendor/tomotopy/src/Utils/Dictionary.h +2 -2
  41. data/vendor/tomotopy/src/Utils/MultiNormalDistribution.hpp +1 -1
  42. data/vendor/tomotopy/src/Utils/TruncMultiNormal.hpp +1 -1
  43. data/vendor/tomotopy/src/Utils/math.h +2 -2
  44. data/vendor/tomotopy/src/Utils/serializer.hpp +30 -5
  45. metadata +6 -6
@@ -35,11 +35,12 @@ namespace tomoto
35
35
  bitsize = o.bitsize;
36
36
  if (msize)
37
37
  {
38
- arr = std::make_unique<_Precision[]>(1 << bitsize);
39
- alias = std::make_unique<size_t[]>(1 << bitsize);
38
+ size_t n = (size_t)1 << bitsize;
39
+ arr = std::make_unique<_Precision[]>(n);
40
+ alias = std::make_unique<size_t[]>(n);
40
41
 
41
- std::copy(o.arr.get(), o.arr.get() + (1 << bitsize), arr.get());
42
- std::copy(o.alias.get(), o.alias.get() + (1 << bitsize), alias.get());
42
+ std::copy(o.arr.get(), o.arr.get() + n, arr.get());
43
+ std::copy(o.alias.get(), o.alias.get() + n, alias.get());
43
44
  }
44
45
  return *this;
45
46
  }
@@ -32,7 +32,7 @@ namespace tomoto
32
32
  auto it = dict.find(word);
33
33
  if (it == dict.end())
34
34
  {
35
- dict.emplace(std::make_pair(word, dict.size()));
35
+ dict.emplace(word, (Vid)dict.size());
36
36
  id2word.emplace_back(word);
37
37
  return (Vid)(dict.size() - 1);
38
38
  }
@@ -64,7 +64,7 @@ namespace tomoto
64
64
  serializer::readMany(reader, serializer::to_key("Dict"), id2word);
65
65
  for (size_t i = 0; i < id2word.size(); ++i)
66
66
  {
67
- dict.emplace(id2word[i], i);
67
+ dict.emplace(id2word[i], (Vid)i);
68
68
  }
69
69
  }
70
70
 
@@ -10,7 +10,7 @@ namespace tomoto
10
10
  template<typename _Ty = float>
11
11
  struct MultiNormalDistribution
12
12
  {
13
- static constexpr _Ty log2pi = 1.83787706641;
13
+ static constexpr _Ty log2pi = (_Ty)1.83787706641;
14
14
  Eigen::Matrix<_Ty, -1, 1> mean;
15
15
  Eigen::Matrix<_Ty, -1, -1> cov, l;
16
16
  _Ty logDet = 0;
@@ -58,7 +58,7 @@ namespace tomoto
58
58
  }
59
59
  else
60
60
  {
61
- z[j] = rtnorm::rtnorm(rng, lower_pos, upper_pos);
61
+ z[j] = (_Ty)rtnorm::rtnorm(rng, lower_pos, upper_pos);
62
62
  }
63
63
  }
64
64
  }
@@ -141,9 +141,9 @@ namespace tomoto
141
141
  float forSmall(float x)
142
142
  {
143
143
  if (x == 0) return -INFINITY;
144
- return log(x + 2) - 0.5f / (x + 2) - 1 / 12.f / pow(x + 2, 2) - 1 / (x + 1) - 1 / x;
144
+ return logf(x + 2) - 0.5f / (x + 2) - 1 / 12.f / powf(x + 2, 2) - 1 / (x + 1) - 1 / x;
145
145
  }
146
- float forLarge(float x) { return log(x) - 0.5f / x - 1 / 12.f / pow(x, 2); }
146
+ float forLarge(float x) { return logf(x) - 0.5f / x - 1 / 12.f / powf(x, 2); }
147
147
  float forNonFinite(float x) { if (std::isnan(x) || x < 0) return NAN; return INFINITY;}
148
148
  };
149
149
 
@@ -89,7 +89,7 @@ namespace tomoto
89
89
  template<> struct gen_seq<1> : seq<0> {};
90
90
 
91
91
  template <size_t _n, size_t ... _is>
92
- std::array<char, _n - 1> to_array(const char(&a)[_n], seq<_is...>)
92
+ constexpr std::array<char, sizeof... (_is)> to_array(const char(&a)[_n], seq<_is...>)
93
93
  {
94
94
  return { {a[_is]...} };
95
95
  }
@@ -101,7 +101,13 @@ namespace tomoto
101
101
  }
102
102
 
103
103
  template <size_t _n, size_t ... _is>
104
- std::array<char, _n> to_arrayz(const char(&a)[_n], seq<_is...>)
104
+ constexpr std::array<char, sizeof... (_is) + 1> to_arrayz(const char(&a)[_n], seq<_is...>)
105
+ {
106
+ return { {a[_is]..., 0} };
107
+ }
108
+
109
+ template <size_t _n, size_t ... _is>
110
+ constexpr std::array<char, sizeof... (_is) + 1> to_arrayz(const std::array<char, _n>& a, seq<_is...>)
105
111
  {
106
112
  return { {a[_is]..., 0} };
107
113
  }
@@ -132,17 +138,24 @@ namespace tomoto
132
138
  return std::string{ m.begin(), m.end() };
133
139
  }
134
140
 
135
- Key(const std::array<char, _len>& _m) : m(_m)
141
+ constexpr Key(const std::array<char, _len>& _m) : m(_m)
136
142
  {
137
143
  }
138
144
 
139
- Key(std::array<char, _len>&& _m) : m(_m)
145
+ constexpr Key(std::array<char, _len>&& _m) : m(_m)
140
146
  {
141
147
  }
142
148
 
143
- Key(const char(&a)[_len + 1]) : Key{ detail::to_array(a) }
149
+ constexpr Key(const char(&a)[_len + 1]) : Key{ detail::to_array(a) }
144
150
  {
145
151
  }
152
+
153
+ constexpr char operator[](size_t n) const
154
+ {
155
+ return n < _len ? m[n] : throw std::out_of_range("");
156
+ }
157
+
158
+ constexpr size_t size() const { return _len; }
146
159
  };
147
160
 
148
161
  template<typename _Ty>
@@ -161,12 +174,24 @@ namespace tomoto
161
174
  return Key<_n - 1>{detail::to_array(a)};
162
175
  }
163
176
 
177
+ template<size_t _n>
178
+ constexpr Key<_n> to_key(const Key<_n>& key)
179
+ {
180
+ return key;
181
+ }
182
+
164
183
  template<size_t _n>
165
184
  constexpr Key<_n> to_keyz(const char(&a)[_n])
166
185
  {
167
186
  return Key<_n>{detail::to_arrayz(a)};
168
187
  }
169
188
 
189
+ template<size_t _n>
190
+ constexpr Key<_n + 1> to_keyz(const Key<_n>& key)
191
+ {
192
+ return Key<_n + 1>{detail::to_arrayz(key.m, detail::GenSeq<_n>{})};
193
+ }
194
+
170
195
  template<typename _Ty, typename = void>
171
196
  struct Serializer;
172
197
 
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tomoto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
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-08-24 00:00:00.000000000 Z
11
+ date: 2021-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rice
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3'
19
+ version: '4'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '3'
26
+ version: '4'
27
27
  description:
28
28
  email: andrew@ankane.org
29
29
  executables: []