tomoto 0.1.4 → 0.2.0

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.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/ext/tomoto/ct.cpp +8 -4
  4. data/ext/tomoto/dmr.cpp +10 -4
  5. data/ext/tomoto/dt.cpp +13 -4
  6. data/ext/tomoto/extconf.rb +1 -1
  7. data/ext/tomoto/gdmr.cpp +14 -6
  8. data/ext/tomoto/hdp.cpp +9 -4
  9. data/ext/tomoto/hlda.cpp +9 -4
  10. data/ext/tomoto/hpa.cpp +9 -4
  11. data/ext/tomoto/lda.cpp +8 -4
  12. data/ext/tomoto/llda.cpp +8 -4
  13. data/ext/tomoto/mglda.cpp +11 -1
  14. data/ext/tomoto/pa.cpp +9 -4
  15. data/ext/tomoto/plda.cpp +8 -4
  16. data/ext/tomoto/slda.cpp +13 -5
  17. data/lib/tomoto/gdmr.rb +2 -2
  18. data/lib/tomoto/version.rb +1 -1
  19. data/vendor/EigenRand/EigenRand/Core.h +6 -1107
  20. data/vendor/EigenRand/EigenRand/Dists/Basic.h +490 -43
  21. data/vendor/EigenRand/EigenRand/Dists/Discrete.h +916 -285
  22. data/vendor/EigenRand/EigenRand/Dists/GammaPoisson.h +85 -36
  23. data/vendor/EigenRand/EigenRand/Dists/NormalExp.h +1038 -290
  24. data/vendor/EigenRand/EigenRand/EigenRand +2 -2
  25. data/vendor/EigenRand/EigenRand/Macro.h +4 -4
  26. data/vendor/EigenRand/EigenRand/MorePacketMath.h +54 -22
  27. data/vendor/EigenRand/EigenRand/MvDists/Multinomial.h +222 -0
  28. data/vendor/EigenRand/EigenRand/MvDists/MvNormal.h +492 -0
  29. data/vendor/EigenRand/EigenRand/PacketFilter.h +2 -2
  30. data/vendor/EigenRand/EigenRand/PacketRandomEngine.h +2 -2
  31. data/vendor/EigenRand/EigenRand/RandUtils.h +65 -11
  32. data/vendor/EigenRand/EigenRand/doc.h +142 -25
  33. data/vendor/EigenRand/LICENSE +1 -1
  34. data/vendor/EigenRand/README.md +109 -24
  35. data/vendor/tomotopy/README.kr.rst +27 -6
  36. data/vendor/tomotopy/README.rst +29 -8
  37. data/vendor/tomotopy/src/Labeling/FoRelevance.cpp +60 -12
  38. data/vendor/tomotopy/src/Labeling/FoRelevance.h +2 -2
  39. data/vendor/tomotopy/src/Labeling/Phraser.hpp +33 -21
  40. data/vendor/tomotopy/src/TopicModel/CT.h +8 -5
  41. data/vendor/tomotopy/src/TopicModel/CTModel.cpp +2 -6
  42. data/vendor/tomotopy/src/TopicModel/CTModel.hpp +29 -23
  43. data/vendor/tomotopy/src/TopicModel/DMR.h +33 -4
  44. data/vendor/tomotopy/src/TopicModel/DMRModel.cpp +2 -6
  45. data/vendor/tomotopy/src/TopicModel/DMRModel.hpp +231 -57
  46. data/vendor/tomotopy/src/TopicModel/DT.h +24 -5
  47. data/vendor/tomotopy/src/TopicModel/DTModel.cpp +2 -8
  48. data/vendor/tomotopy/src/TopicModel/DTModel.hpp +41 -28
  49. data/vendor/tomotopy/src/TopicModel/GDMR.h +31 -5
  50. data/vendor/tomotopy/src/TopicModel/GDMRModel.cpp +2 -7
  51. data/vendor/tomotopy/src/TopicModel/GDMRModel.hpp +211 -104
  52. data/vendor/tomotopy/src/TopicModel/HDP.h +11 -2
  53. data/vendor/tomotopy/src/TopicModel/HDPModel.cpp +2 -6
  54. data/vendor/tomotopy/src/TopicModel/HDPModel.hpp +52 -45
  55. data/vendor/tomotopy/src/TopicModel/HLDA.h +11 -2
  56. data/vendor/tomotopy/src/TopicModel/HLDAModel.cpp +2 -6
  57. data/vendor/tomotopy/src/TopicModel/HLDAModel.hpp +13 -16
  58. data/vendor/tomotopy/src/TopicModel/HPA.h +5 -2
  59. data/vendor/tomotopy/src/TopicModel/HPAModel.cpp +2 -6
  60. data/vendor/tomotopy/src/TopicModel/HPAModel.hpp +51 -21
  61. data/vendor/tomotopy/src/TopicModel/LDA.h +9 -2
  62. data/vendor/tomotopy/src/TopicModel/LDACVB0Model.hpp +8 -8
  63. data/vendor/tomotopy/src/TopicModel/LDAModel.cpp +2 -6
  64. data/vendor/tomotopy/src/TopicModel/LDAModel.hpp +70 -28
  65. data/vendor/tomotopy/src/TopicModel/LLDA.h +1 -2
  66. data/vendor/tomotopy/src/TopicModel/LLDAModel.cpp +2 -6
  67. data/vendor/tomotopy/src/TopicModel/LLDAModel.hpp +22 -12
  68. data/vendor/tomotopy/src/TopicModel/MGLDA.h +12 -3
  69. data/vendor/tomotopy/src/TopicModel/MGLDAModel.cpp +2 -10
  70. data/vendor/tomotopy/src/TopicModel/MGLDAModel.hpp +42 -19
  71. data/vendor/tomotopy/src/TopicModel/PA.h +9 -4
  72. data/vendor/tomotopy/src/TopicModel/PAModel.cpp +2 -6
  73. data/vendor/tomotopy/src/TopicModel/PAModel.hpp +48 -25
  74. data/vendor/tomotopy/src/TopicModel/PLDA.h +13 -2
  75. data/vendor/tomotopy/src/TopicModel/PLDAModel.cpp +2 -6
  76. data/vendor/tomotopy/src/TopicModel/PLDAModel.hpp +27 -19
  77. data/vendor/tomotopy/src/TopicModel/PT.h +12 -5
  78. data/vendor/tomotopy/src/TopicModel/PTModel.cpp +2 -3
  79. data/vendor/tomotopy/src/TopicModel/PTModel.hpp +29 -14
  80. data/vendor/tomotopy/src/TopicModel/SLDA.h +18 -6
  81. data/vendor/tomotopy/src/TopicModel/SLDAModel.cpp +2 -10
  82. data/vendor/tomotopy/src/TopicModel/SLDAModel.hpp +93 -43
  83. data/vendor/tomotopy/src/TopicModel/TopicModel.hpp +58 -23
  84. data/vendor/tomotopy/src/Utils/AliasMethod.hpp +6 -6
  85. data/vendor/tomotopy/src/Utils/Dictionary.h +11 -0
  86. data/vendor/tomotopy/src/Utils/SharedString.hpp +26 -1
  87. data/vendor/tomotopy/src/Utils/Trie.hpp +46 -21
  88. data/vendor/tomotopy/src/Utils/Utils.hpp +99 -14
  89. data/vendor/tomotopy/src/Utils/exception.h +1 -1
  90. data/vendor/tomotopy/src/Utils/math.h +5 -7
  91. data/vendor/tomotopy/src/Utils/serializer.hpp +329 -201
  92. data/vendor/tomotopy/src/Utils/text.hpp +8 -0
  93. data/vendor/tomotopy/src/Utils/tvector.hpp +49 -7
  94. metadata +9 -7
@@ -4,6 +4,7 @@
4
4
  #include <string>
5
5
  #include <iostream>
6
6
  #include <iterator>
7
+ #include <iomanip>
7
8
  #include <algorithm>
8
9
  #include <cstdio>
9
10
 
@@ -31,6 +32,13 @@ namespace tomoto
31
32
  return s;
32
33
  }
33
34
 
35
+ inline std::string quote(const std::string& s)
36
+ {
37
+ std::ostringstream stream;
38
+ stream << std::quoted(s);
39
+ return stream.str();
40
+ }
41
+
34
42
  inline std::vector<std::string> split(const std::string& str, const std::string& delim)
35
43
  {
36
44
  std::vector<std::string> tokens;
@@ -1,6 +1,8 @@
1
1
  #pragma once
2
2
  #include <algorithm>
3
3
  #include <cstring>
4
+ #include "serializer.hpp"
5
+
4
6
  namespace tomoto
5
7
  {
6
8
  /**
@@ -24,14 +26,10 @@ namespace tomoto
24
26
 
25
27
  tvector() noexcept
26
28
  {
27
- _first = _Alloc{}.allocate(4);
28
- _last = _first;
29
- _rsvEnd = _first + 4;
30
29
  }
31
30
 
32
31
  tvector(std::nullptr_t) noexcept
33
32
  {
34
-
35
33
  }
36
34
 
37
35
  // non-owning, just pointing constructor
@@ -292,7 +290,7 @@ namespace tomoto
292
290
 
293
291
  bool isOwner() const noexcept
294
292
  {
295
- return _rsvEnd;
293
+ return _rsvEnd || (_rsvEnd == nullptr && _first == nullptr);
296
294
  }
297
295
 
298
296
  // 23.3.11.5, modifiers:
@@ -521,8 +519,11 @@ namespace tomoto
521
519
  {
522
520
  size_type s = size();
523
521
  T *tarr = _Alloc{}.allocate(newSize);
524
- memcpy(tarr, _first, s * sizeof(T));
525
- _Alloc{}.deallocate(_first, capacity());
522
+ if (_first)
523
+ {
524
+ memcpy(tarr, _first, s * sizeof(T));
525
+ _Alloc{}.deallocate(_first, capacity());
526
+ }
526
527
  _first = tarr;
527
528
  _last = _first + s;
528
529
  _rsvEnd = _first + newSize;
@@ -544,4 +545,45 @@ namespace tomoto
544
545
  return geometric;
545
546
  }
546
547
  };
548
+
549
+ namespace serializer
550
+ {
551
+ template<typename _Ty>
552
+ struct Serializer<tvector<_Ty>, typename std::enable_if<std::is_fundamental<_Ty>::value>::type>
553
+ {
554
+ using VTy = tvector<_Ty>;
555
+ void write(std::ostream& ostr, const VTy& v)
556
+ {
557
+ writeToStream(ostr, (uint32_t)v.size());
558
+ if (!ostr.write((const char*)v.data(), sizeof(_Ty) * v.size()))
559
+ throw std::ios_base::failure(std::string("writing type '") + typeid(_Ty).name() + std::string("' is failed"));
560
+ }
561
+
562
+ void read(std::istream& istr, VTy& v)
563
+ {
564
+ auto size = readFromStream<uint32_t>(istr);
565
+ v.resize(size);
566
+ if (!istr.read((char*)v.data(), sizeof(_Ty) * size))
567
+ throw std::ios_base::failure(std::string("reading type '") + typeid(_Ty).name() + std::string("' is failed"));
568
+ }
569
+ };
570
+
571
+ template<typename _Ty>
572
+ struct Serializer<tvector<_Ty>, typename std::enable_if<!std::is_fundamental<_Ty>::value>::type>
573
+ {
574
+ using VTy = tvector<_Ty>;
575
+ void write(std::ostream& ostr, const VTy& v)
576
+ {
577
+ writeToStream(ostr, (uint32_t)v.size());
578
+ for (auto& e : v) Serializer<_Ty>{}.write(ostr, e);
579
+ }
580
+
581
+ void read(std::istream& istr, VTy& v)
582
+ {
583
+ auto size = readFromStream<uint32_t>(istr);
584
+ v.resize(size);
585
+ for (auto& e : v) Serializer<_Ty>{}.read(istr, e);
586
+ }
587
+ };
588
+ }
547
589
  }
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.1.4
4
+ version: 0.2.0
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-03-15 00:00:00.000000000 Z
11
+ date: 2021-05-23 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: '2.2'
19
+ version: '3'
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: '2.2'
26
+ version: '3'
27
27
  description:
28
28
  email: andrew@ankane.org
29
29
  executables: []
@@ -75,6 +75,8 @@ files:
75
75
  - vendor/EigenRand/EigenRand/EigenRand
76
76
  - vendor/EigenRand/EigenRand/Macro.h
77
77
  - vendor/EigenRand/EigenRand/MorePacketMath.h
78
+ - vendor/EigenRand/EigenRand/MvDists/Multinomial.h
79
+ - vendor/EigenRand/EigenRand/MvDists/MvNormal.h
78
80
  - vendor/EigenRand/EigenRand/PacketFilter.h
79
81
  - vendor/EigenRand/EigenRand/PacketRandomEngine.h
80
82
  - vendor/EigenRand/EigenRand/RandUtils.h
@@ -499,7 +501,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
499
501
  requirements:
500
502
  - - ">="
501
503
  - !ruby/object:Gem::Version
502
- version: '2.5'
504
+ version: '2.6'
503
505
  required_rubygems_version: !ruby/object:Gem::Requirement
504
506
  requirements:
505
507
  - - ">="