@ladybugmem/icebug 0.1.0 → 0.1.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.
Files changed (625) hide show
  1. package/binding.gyp +32 -10
  2. package/lib/index.js +23 -11
  3. package/package.json +8 -13
  4. package/prebuilds/darwin-arm64/icebug.node +0 -0
  5. package/{vendor/lib → prebuilds/darwin-arm64}/libnetworkit.dylib +0 -0
  6. package/prebuilds/linux-x64/icebug.node +0 -0
  7. package/prebuilds/linux-x64/libnetworkit.so +0 -0
  8. package/scripts/download-icebug.sh +92 -0
  9. package/build/Release/.deps/Release/icebug.node.d +0 -1
  10. package/build/Release/.deps/Release/obj.target/icebug/src/addon.o.d +0 -291
  11. package/build/Release/icebug.node +0 -0
  12. package/build/Release/obj.target/icebug/src/addon.o +0 -0
  13. package/vendor/include/networkit/GlobalState.hpp +0 -86
  14. package/vendor/include/networkit/Globals.hpp +0 -41
  15. package/vendor/include/networkit/algebraic/AlgebraicGlobals.hpp +0 -27
  16. package/vendor/include/networkit/algebraic/CSRGeneralMatrix.hpp +0 -1292
  17. package/vendor/include/networkit/algebraic/CSRMatrix.hpp +0 -11
  18. package/vendor/include/networkit/algebraic/DenseMatrix.hpp +0 -537
  19. package/vendor/include/networkit/algebraic/DynamicMatrix.hpp +0 -514
  20. package/vendor/include/networkit/algebraic/GraphBLAS.hpp +0 -323
  21. package/vendor/include/networkit/algebraic/MatrixTools.hpp +0 -156
  22. package/vendor/include/networkit/algebraic/Semirings.hpp +0 -171
  23. package/vendor/include/networkit/algebraic/SparseAccumulator.hpp +0 -111
  24. package/vendor/include/networkit/algebraic/Vector.hpp +0 -371
  25. package/vendor/include/networkit/algebraic/algorithms/AlgebraicBFS.hpp +0 -72
  26. package/vendor/include/networkit/algebraic/algorithms/AlgebraicBellmanFord.hpp +0 -88
  27. package/vendor/include/networkit/algebraic/algorithms/AlgebraicMatchingCoarsening.hpp +0 -96
  28. package/vendor/include/networkit/algebraic/algorithms/AlgebraicPageRank.hpp +0 -145
  29. package/vendor/include/networkit/algebraic/algorithms/AlgebraicSpanningEdgeCentrality.hpp +0 -122
  30. package/vendor/include/networkit/algebraic/algorithms/AlgebraicTriangleCounting.hpp +0 -76
  31. package/vendor/include/networkit/auxiliary/AlignedAllocator.hpp +0 -113
  32. package/vendor/include/networkit/auxiliary/ArrayTools.hpp +0 -85
  33. package/vendor/include/networkit/auxiliary/BloomFilter.hpp +0 -70
  34. package/vendor/include/networkit/auxiliary/BucketPQ.hpp +0 -142
  35. package/vendor/include/networkit/auxiliary/Enforce.hpp +0 -117
  36. package/vendor/include/networkit/auxiliary/FunctionTraits.hpp +0 -74
  37. package/vendor/include/networkit/auxiliary/HashUtils.hpp +0 -28
  38. package/vendor/include/networkit/auxiliary/IncrementalUniformRandomSelector.hpp +0 -52
  39. package/vendor/include/networkit/auxiliary/Log.hpp +0 -119
  40. package/vendor/include/networkit/auxiliary/MissingMath.hpp +0 -48
  41. package/vendor/include/networkit/auxiliary/Multiprecision.hpp +0 -17
  42. package/vendor/include/networkit/auxiliary/NumberParsing.hpp +0 -307
  43. package/vendor/include/networkit/auxiliary/NumericTools.hpp +0 -57
  44. package/vendor/include/networkit/auxiliary/Parallel.hpp +0 -56
  45. package/vendor/include/networkit/auxiliary/Parallelism.hpp +0 -33
  46. package/vendor/include/networkit/auxiliary/PrioQueue.hpp +0 -252
  47. package/vendor/include/networkit/auxiliary/Random.hpp +0 -122
  48. package/vendor/include/networkit/auxiliary/SetIntersector.hpp +0 -72
  49. package/vendor/include/networkit/auxiliary/SignalHandling.hpp +0 -39
  50. package/vendor/include/networkit/auxiliary/SortedList.hpp +0 -128
  51. package/vendor/include/networkit/auxiliary/SparseVector.hpp +0 -215
  52. package/vendor/include/networkit/auxiliary/SpinLock.hpp +0 -23
  53. package/vendor/include/networkit/auxiliary/StringBuilder.hpp +0 -322
  54. package/vendor/include/networkit/auxiliary/StringTools.hpp +0 -76
  55. package/vendor/include/networkit/auxiliary/TemplateUtils.hpp +0 -76
  56. package/vendor/include/networkit/auxiliary/Timer.hpp +0 -145
  57. package/vendor/include/networkit/auxiliary/VectorComparator.hpp +0 -32
  58. package/vendor/include/networkit/base/Algorithm.hpp +0 -41
  59. package/vendor/include/networkit/base/DynAlgorithm.hpp +0 -31
  60. package/vendor/include/networkit/centrality/ApproxBetweenness.hpp +0 -62
  61. package/vendor/include/networkit/centrality/ApproxCloseness.hpp +0 -136
  62. package/vendor/include/networkit/centrality/ApproxElectricalCloseness.hpp +0 -156
  63. package/vendor/include/networkit/centrality/ApproxGroupBetweenness.hpp +0 -124
  64. package/vendor/include/networkit/centrality/ApproxSpanningEdge.hpp +0 -84
  65. package/vendor/include/networkit/centrality/Betweenness.hpp +0 -47
  66. package/vendor/include/networkit/centrality/Centrality.hpp +0 -98
  67. package/vendor/include/networkit/centrality/Closeness.hpp +0 -107
  68. package/vendor/include/networkit/centrality/ComplexPaths.hpp +0 -113
  69. package/vendor/include/networkit/centrality/CoreDecomposition.hpp +0 -161
  70. package/vendor/include/networkit/centrality/DegreeCentrality.hpp +0 -55
  71. package/vendor/include/networkit/centrality/DynApproxBetweenness.hpp +0 -95
  72. package/vendor/include/networkit/centrality/DynBetweenness.hpp +0 -99
  73. package/vendor/include/networkit/centrality/DynBetweennessOneNode.hpp +0 -98
  74. package/vendor/include/networkit/centrality/DynKatzCentrality.hpp +0 -115
  75. package/vendor/include/networkit/centrality/DynTopHarmonicCloseness.hpp +0 -223
  76. package/vendor/include/networkit/centrality/EigenvectorCentrality.hpp +0 -41
  77. package/vendor/include/networkit/centrality/EstimateBetweenness.hpp +0 -51
  78. package/vendor/include/networkit/centrality/ForestCentrality.hpp +0 -112
  79. package/vendor/include/networkit/centrality/GedWalk.hpp +0 -225
  80. package/vendor/include/networkit/centrality/GroupCloseness.hpp +0 -115
  81. package/vendor/include/networkit/centrality/GroupClosenessGrowShrink.hpp +0 -78
  82. package/vendor/include/networkit/centrality/GroupClosenessLocalSearch.hpp +0 -77
  83. package/vendor/include/networkit/centrality/GroupClosenessLocalSwaps.hpp +0 -106
  84. package/vendor/include/networkit/centrality/GroupDegree.hpp +0 -155
  85. package/vendor/include/networkit/centrality/GroupHarmonicCloseness.hpp +0 -83
  86. package/vendor/include/networkit/centrality/HarmonicCloseness.hpp +0 -48
  87. package/vendor/include/networkit/centrality/KPathCentrality.hpp +0 -52
  88. package/vendor/include/networkit/centrality/KadabraBetweenness.hpp +0 -242
  89. package/vendor/include/networkit/centrality/KatzCentrality.hpp +0 -62
  90. package/vendor/include/networkit/centrality/LaplacianCentrality.hpp +0 -44
  91. package/vendor/include/networkit/centrality/LocalClusteringCoefficient.hpp +0 -60
  92. package/vendor/include/networkit/centrality/LocalPartitionCoverage.hpp +0 -43
  93. package/vendor/include/networkit/centrality/LocalSquareClusteringCoefficient.hpp +0 -42
  94. package/vendor/include/networkit/centrality/PageRank.hpp +0 -101
  95. package/vendor/include/networkit/centrality/PermanenceCentrality.hpp +0 -48
  96. package/vendor/include/networkit/centrality/Sfigality.hpp +0 -45
  97. package/vendor/include/networkit/centrality/SpanningEdgeCentrality.hpp +0 -86
  98. package/vendor/include/networkit/centrality/TopCloseness.hpp +0 -136
  99. package/vendor/include/networkit/centrality/TopHarmonicCloseness.hpp +0 -151
  100. package/vendor/include/networkit/clique/MaximalCliques.hpp +0 -83
  101. package/vendor/include/networkit/coarsening/ClusteringProjector.hpp +0 -59
  102. package/vendor/include/networkit/coarsening/CoarsenedGraphView.hpp +0 -156
  103. package/vendor/include/networkit/coarsening/GraphCoarsening.hpp +0 -57
  104. package/vendor/include/networkit/coarsening/MatchingCoarsening.hpp +0 -43
  105. package/vendor/include/networkit/coarsening/ParallelPartitionCoarsening.hpp +0 -33
  106. package/vendor/include/networkit/coarsening/ParallelPartitionCoarseningView.hpp +0 -62
  107. package/vendor/include/networkit/community/AdjustedRandMeasure.hpp +0 -31
  108. package/vendor/include/networkit/community/ClusteringGenerator.hpp +0 -75
  109. package/vendor/include/networkit/community/CommunityDetectionAlgorithm.hpp +0 -58
  110. package/vendor/include/networkit/community/Conductance.hpp +0 -32
  111. package/vendor/include/networkit/community/CoverF1Similarity.hpp +0 -53
  112. package/vendor/include/networkit/community/CoverHubDominance.hpp +0 -38
  113. package/vendor/include/networkit/community/Coverage.hpp +0 -25
  114. package/vendor/include/networkit/community/CutClustering.hpp +0 -62
  115. package/vendor/include/networkit/community/DissimilarityMeasure.hpp +0 -31
  116. package/vendor/include/networkit/community/DynamicNMIDistance.hpp +0 -44
  117. package/vendor/include/networkit/community/EdgeCut.hpp +0 -24
  118. package/vendor/include/networkit/community/GraphClusteringTools.hpp +0 -103
  119. package/vendor/include/networkit/community/GraphStructuralRandMeasure.hpp +0 -28
  120. package/vendor/include/networkit/community/HubDominance.hpp +0 -46
  121. package/vendor/include/networkit/community/IntrapartitionDensity.hpp +0 -44
  122. package/vendor/include/networkit/community/IsolatedInterpartitionConductance.hpp +0 -40
  123. package/vendor/include/networkit/community/IsolatedInterpartitionExpansion.hpp +0 -40
  124. package/vendor/include/networkit/community/JaccardMeasure.hpp +0 -25
  125. package/vendor/include/networkit/community/LFM.hpp +0 -49
  126. package/vendor/include/networkit/community/LPDegreeOrdered.hpp +0 -48
  127. package/vendor/include/networkit/community/LocalCommunityEvaluation.hpp +0 -100
  128. package/vendor/include/networkit/community/LocalCoverEvaluation.hpp +0 -31
  129. package/vendor/include/networkit/community/LocalPartitionEvaluation.hpp +0 -31
  130. package/vendor/include/networkit/community/LouvainMapEquation.hpp +0 -135
  131. package/vendor/include/networkit/community/Modularity.hpp +0 -54
  132. package/vendor/include/networkit/community/NMIDistance.hpp +0 -28
  133. package/vendor/include/networkit/community/NodeStructuralRandMeasure.hpp +0 -27
  134. package/vendor/include/networkit/community/OverlappingCommunityDetectionAlgorithm.hpp +0 -51
  135. package/vendor/include/networkit/community/OverlappingNMIDistance.hpp +0 -175
  136. package/vendor/include/networkit/community/PLM.hpp +0 -89
  137. package/vendor/include/networkit/community/PLP.hpp +0 -83
  138. package/vendor/include/networkit/community/ParallelAgglomerativeClusterer.hpp +0 -37
  139. package/vendor/include/networkit/community/ParallelLeiden.hpp +0 -96
  140. package/vendor/include/networkit/community/ParallelLeidenView.hpp +0 -138
  141. package/vendor/include/networkit/community/PartitionFragmentation.hpp +0 -30
  142. package/vendor/include/networkit/community/PartitionHubDominance.hpp +0 -37
  143. package/vendor/include/networkit/community/PartitionIntersection.hpp +0 -25
  144. package/vendor/include/networkit/community/QualityMeasure.hpp +0 -27
  145. package/vendor/include/networkit/community/SampledGraphStructuralRandMeasure.hpp +0 -40
  146. package/vendor/include/networkit/community/SampledNodeStructuralRandMeasure.hpp +0 -40
  147. package/vendor/include/networkit/community/StablePartitionNodes.hpp +0 -48
  148. package/vendor/include/networkit/components/BiconnectedComponents.hpp +0 -116
  149. package/vendor/include/networkit/components/ComponentDecomposition.hpp +0 -72
  150. package/vendor/include/networkit/components/ConnectedComponents.hpp +0 -55
  151. package/vendor/include/networkit/components/DynConnectedComponents.hpp +0 -71
  152. package/vendor/include/networkit/components/DynWeaklyConnectedComponents.hpp +0 -73
  153. package/vendor/include/networkit/components/ParallelConnectedComponents.hpp +0 -44
  154. package/vendor/include/networkit/components/RandomSpanningForest.hpp +0 -36
  155. package/vendor/include/networkit/components/StronglyConnectedComponents.hpp +0 -50
  156. package/vendor/include/networkit/components/WeaklyConnectedComponents.hpp +0 -59
  157. package/vendor/include/networkit/correlation/Assortativity.hpp +0 -64
  158. package/vendor/include/networkit/distance/APSP.hpp +0 -70
  159. package/vendor/include/networkit/distance/AStar.hpp +0 -68
  160. package/vendor/include/networkit/distance/AStarGeneral.hpp +0 -110
  161. package/vendor/include/networkit/distance/AdamicAdarDistance.hpp +0 -52
  162. package/vendor/include/networkit/distance/AffectedNodes.hpp +0 -130
  163. package/vendor/include/networkit/distance/AlgebraicDistance.hpp +0 -63
  164. package/vendor/include/networkit/distance/BFS.hpp +0 -43
  165. package/vendor/include/networkit/distance/BidirectionalBFS.hpp +0 -51
  166. package/vendor/include/networkit/distance/BidirectionalDijkstra.hpp +0 -69
  167. package/vendor/include/networkit/distance/CommuteTimeDistance.hpp +0 -89
  168. package/vendor/include/networkit/distance/Diameter.hpp +0 -97
  169. package/vendor/include/networkit/distance/Dijkstra.hpp +0 -50
  170. package/vendor/include/networkit/distance/DynAPSP.hpp +0 -67
  171. package/vendor/include/networkit/distance/DynBFS.hpp +0 -56
  172. package/vendor/include/networkit/distance/DynDijkstra.hpp +0 -57
  173. package/vendor/include/networkit/distance/DynPrunedLandmarkLabeling.hpp +0 -67
  174. package/vendor/include/networkit/distance/DynSSSP.hpp +0 -87
  175. package/vendor/include/networkit/distance/Eccentricity.hpp +0 -32
  176. package/vendor/include/networkit/distance/EffectiveDiameter.hpp +0 -47
  177. package/vendor/include/networkit/distance/EffectiveDiameterApproximation.hpp +0 -57
  178. package/vendor/include/networkit/distance/FloydWarshall.hpp +0 -93
  179. package/vendor/include/networkit/distance/GraphDistance.hpp +0 -49
  180. package/vendor/include/networkit/distance/HopPlotApproximation.hpp +0 -62
  181. package/vendor/include/networkit/distance/IncompleteDijkstra.hpp +0 -66
  182. package/vendor/include/networkit/distance/IncompleteSSSP.hpp +0 -41
  183. package/vendor/include/networkit/distance/JaccardDistance.hpp +0 -57
  184. package/vendor/include/networkit/distance/MultiTargetBFS.hpp +0 -32
  185. package/vendor/include/networkit/distance/MultiTargetDijkstra.hpp +0 -40
  186. package/vendor/include/networkit/distance/NeighborhoodFunction.hpp +0 -47
  187. package/vendor/include/networkit/distance/NeighborhoodFunctionApproximation.hpp +0 -56
  188. package/vendor/include/networkit/distance/NeighborhoodFunctionHeuristic.hpp +0 -56
  189. package/vendor/include/networkit/distance/NodeDistance.hpp +0 -54
  190. package/vendor/include/networkit/distance/PrunedLandmarkLabeling.hpp +0 -76
  191. package/vendor/include/networkit/distance/ReverseBFS.hpp +0 -46
  192. package/vendor/include/networkit/distance/SPSP.hpp +0 -143
  193. package/vendor/include/networkit/distance/SSSP.hpp +0 -216
  194. package/vendor/include/networkit/distance/STSP.hpp +0 -193
  195. package/vendor/include/networkit/distance/Volume.hpp +0 -66
  196. package/vendor/include/networkit/dynamics/DGSStreamParser.hpp +0 -40
  197. package/vendor/include/networkit/dynamics/DGSWriter.hpp +0 -30
  198. package/vendor/include/networkit/dynamics/GraphDifference.hpp +0 -110
  199. package/vendor/include/networkit/dynamics/GraphEvent.hpp +0 -55
  200. package/vendor/include/networkit/dynamics/GraphEventHandler.hpp +0 -39
  201. package/vendor/include/networkit/dynamics/GraphEventProxy.hpp +0 -55
  202. package/vendor/include/networkit/dynamics/GraphUpdater.hpp +0 -38
  203. package/vendor/include/networkit/edgescores/ChibaNishizekiQuadrangleEdgeScore.hpp +0 -26
  204. package/vendor/include/networkit/edgescores/ChibaNishizekiTriangleEdgeScore.hpp +0 -33
  205. package/vendor/include/networkit/edgescores/EdgeScore.hpp +0 -50
  206. package/vendor/include/networkit/edgescores/EdgeScoreAsWeight.hpp +0 -33
  207. package/vendor/include/networkit/edgescores/EdgeScoreBlender.hpp +0 -33
  208. package/vendor/include/networkit/edgescores/EdgeScoreLinearizer.hpp +0 -32
  209. package/vendor/include/networkit/edgescores/EdgeScoreNormalizer.hpp +0 -35
  210. package/vendor/include/networkit/edgescores/GeometricMeanScore.hpp +0 -29
  211. package/vendor/include/networkit/edgescores/PrefixJaccardScore.hpp +0 -23
  212. package/vendor/include/networkit/edgescores/TriangleEdgeScore.hpp +0 -39
  213. package/vendor/include/networkit/embedding/Node2Vec.hpp +0 -83
  214. package/vendor/include/networkit/flow/EdmondsKarp.hpp +0 -112
  215. package/vendor/include/networkit/generators/BarabasiAlbertGenerator.hpp +0 -87
  216. package/vendor/include/networkit/generators/ChungLuGenerator.hpp +0 -46
  217. package/vendor/include/networkit/generators/ChungLuGeneratorAlamEtAl.hpp +0 -63
  218. package/vendor/include/networkit/generators/ClusteredRandomGraphGenerator.hpp +0 -56
  219. package/vendor/include/networkit/generators/ConfigurationModel.hpp +0 -36
  220. package/vendor/include/networkit/generators/DorogovtsevMendesGenerator.hpp +0 -33
  221. package/vendor/include/networkit/generators/DynamicBarabasiAlbertGenerator.hpp +0 -33
  222. package/vendor/include/networkit/generators/DynamicDGSParser.hpp +0 -51
  223. package/vendor/include/networkit/generators/DynamicDorogovtsevMendesGenerator.hpp +0 -34
  224. package/vendor/include/networkit/generators/DynamicForestFireGenerator.hpp +0 -55
  225. package/vendor/include/networkit/generators/DynamicGraphGenerator.hpp +0 -40
  226. package/vendor/include/networkit/generators/DynamicGraphSource.hpp +0 -79
  227. package/vendor/include/networkit/generators/DynamicHyperbolicGenerator.hpp +0 -143
  228. package/vendor/include/networkit/generators/DynamicPathGenerator.hpp +0 -26
  229. package/vendor/include/networkit/generators/DynamicPubWebGenerator.hpp +0 -54
  230. package/vendor/include/networkit/generators/EdgeSwitchingMarkovChainGenerator.hpp +0 -65
  231. package/vendor/include/networkit/generators/ErdosRenyiEnumerator.hpp +0 -318
  232. package/vendor/include/networkit/generators/ErdosRenyiGenerator.hpp +0 -56
  233. package/vendor/include/networkit/generators/HavelHakimiGenerator.hpp +0 -48
  234. package/vendor/include/networkit/generators/HyperbolicGenerator.hpp +0 -236
  235. package/vendor/include/networkit/generators/LFRGenerator.hpp +0 -175
  236. package/vendor/include/networkit/generators/MocnikGenerator.hpp +0 -147
  237. package/vendor/include/networkit/generators/MocnikGeneratorBasic.hpp +0 -58
  238. package/vendor/include/networkit/generators/PowerlawDegreeSequence.hpp +0 -128
  239. package/vendor/include/networkit/generators/PubWebGenerator.hpp +0 -94
  240. package/vendor/include/networkit/generators/RegularRingLatticeGenerator.hpp +0 -37
  241. package/vendor/include/networkit/generators/RmatGenerator.hpp +0 -67
  242. package/vendor/include/networkit/generators/StaticDegreeSequenceGenerator.hpp +0 -42
  243. package/vendor/include/networkit/generators/StaticGraphGenerator.hpp +0 -30
  244. package/vendor/include/networkit/generators/StochasticBlockmodel.hpp +0 -41
  245. package/vendor/include/networkit/generators/WattsStrogatzGenerator.hpp +0 -43
  246. package/vendor/include/networkit/generators/quadtree/QuadNode.hpp +0 -857
  247. package/vendor/include/networkit/generators/quadtree/QuadNodeCartesianEuclid.hpp +0 -587
  248. package/vendor/include/networkit/generators/quadtree/QuadNodePolarEuclid.hpp +0 -726
  249. package/vendor/include/networkit/generators/quadtree/Quadtree.hpp +0 -232
  250. package/vendor/include/networkit/generators/quadtree/QuadtreeCartesianEuclid.hpp +0 -149
  251. package/vendor/include/networkit/generators/quadtree/QuadtreePolarEuclid.hpp +0 -143
  252. package/vendor/include/networkit/geometric/HyperbolicSpace.hpp +0 -248
  253. package/vendor/include/networkit/geometric/Point2DWithIndex.hpp +0 -145
  254. package/vendor/include/networkit/global/ClusteringCoefficient.hpp +0 -42
  255. package/vendor/include/networkit/global/GlobalClusteringCoefficient.hpp +0 -24
  256. package/vendor/include/networkit/graph/Attributes.hpp +0 -568
  257. package/vendor/include/networkit/graph/BFS.hpp +0 -111
  258. package/vendor/include/networkit/graph/DFS.hpp +0 -71
  259. package/vendor/include/networkit/graph/Dijkstra.hpp +0 -83
  260. package/vendor/include/networkit/graph/EdgeIterators.hpp +0 -171
  261. package/vendor/include/networkit/graph/Graph.hpp +0 -2083
  262. package/vendor/include/networkit/graph/GraphBuilder.hpp +0 -289
  263. package/vendor/include/networkit/graph/GraphR.hpp +0 -133
  264. package/vendor/include/networkit/graph/GraphTools.hpp +0 -589
  265. package/vendor/include/networkit/graph/GraphW.hpp +0 -1236
  266. package/vendor/include/networkit/graph/KruskalMSF.hpp +0 -50
  267. package/vendor/include/networkit/graph/NeighborIterators.hpp +0 -163
  268. package/vendor/include/networkit/graph/NodeIterators.hpp +0 -127
  269. package/vendor/include/networkit/graph/PrimMSF.hpp +0 -66
  270. package/vendor/include/networkit/graph/RandomMaximumSpanningForest.hpp +0 -133
  271. package/vendor/include/networkit/graph/SpanningForest.hpp +0 -41
  272. package/vendor/include/networkit/graph/TopologicalSort.hpp +0 -87
  273. package/vendor/include/networkit/graph/UnionMaximumSpanningForest.hpp +0 -126
  274. package/vendor/include/networkit/graph/test/GraphBuilderBenchmark.hpp +0 -68
  275. package/vendor/include/networkit/independentset/IndependentSetFinder.hpp +0 -44
  276. package/vendor/include/networkit/independentset/Luby.hpp +0 -27
  277. package/vendor/include/networkit/io/BinaryEdgeListPartitionReader.hpp +0 -45
  278. package/vendor/include/networkit/io/BinaryEdgeListPartitionWriter.hpp +0 -47
  279. package/vendor/include/networkit/io/BinaryPartitionReader.hpp +0 -41
  280. package/vendor/include/networkit/io/BinaryPartitionWriter.hpp +0 -44
  281. package/vendor/include/networkit/io/CoverReader.hpp +0 -27
  282. package/vendor/include/networkit/io/CoverWriter.hpp +0 -21
  283. package/vendor/include/networkit/io/DGSReader.hpp +0 -39
  284. package/vendor/include/networkit/io/DibapGraphReader.hpp +0 -43
  285. package/vendor/include/networkit/io/DotGraphWriter.hpp +0 -39
  286. package/vendor/include/networkit/io/DotPartitionWriter.hpp +0 -23
  287. package/vendor/include/networkit/io/DynamicGraphReader.hpp +0 -29
  288. package/vendor/include/networkit/io/EdgeListCoverReader.hpp +0 -35
  289. package/vendor/include/networkit/io/EdgeListPartitionReader.hpp +0 -43
  290. package/vendor/include/networkit/io/EdgeListReader.hpp +0 -61
  291. package/vendor/include/networkit/io/EdgeListWriter.hpp +0 -48
  292. package/vendor/include/networkit/io/GMLGraphReader.hpp +0 -33
  293. package/vendor/include/networkit/io/GMLGraphWriter.hpp +0 -33
  294. package/vendor/include/networkit/io/GraphIO.hpp +0 -52
  295. package/vendor/include/networkit/io/GraphReader.hpp +0 -40
  296. package/vendor/include/networkit/io/GraphToolBinaryReader.hpp +0 -71
  297. package/vendor/include/networkit/io/GraphToolBinaryWriter.hpp +0 -61
  298. package/vendor/include/networkit/io/GraphWriter.hpp +0 -27
  299. package/vendor/include/networkit/io/KONECTGraphReader.hpp +0 -44
  300. package/vendor/include/networkit/io/LineFileReader.hpp +0 -42
  301. package/vendor/include/networkit/io/METISGraphReader.hpp +0 -36
  302. package/vendor/include/networkit/io/METISGraphWriter.hpp +0 -29
  303. package/vendor/include/networkit/io/METISParser.hpp +0 -63
  304. package/vendor/include/networkit/io/MTXGraphReader.hpp +0 -31
  305. package/vendor/include/networkit/io/MTXParser.hpp +0 -87
  306. package/vendor/include/networkit/io/MatrixMarketReader.hpp +0 -33
  307. package/vendor/include/networkit/io/MatrixReader.hpp +0 -33
  308. package/vendor/include/networkit/io/MemoryMappedFile.hpp +0 -80
  309. package/vendor/include/networkit/io/NetworkitBinaryGraph.hpp +0 -144
  310. package/vendor/include/networkit/io/NetworkitBinaryReader.hpp +0 -50
  311. package/vendor/include/networkit/io/NetworkitBinaryWriter.hpp +0 -71
  312. package/vendor/include/networkit/io/PartitionReader.hpp +0 -34
  313. package/vendor/include/networkit/io/PartitionWriter.hpp +0 -31
  314. package/vendor/include/networkit/io/RBGraphReader.hpp +0 -37
  315. package/vendor/include/networkit/io/RBMatrixReader.hpp +0 -49
  316. package/vendor/include/networkit/io/RasterReader.hpp +0 -40
  317. package/vendor/include/networkit/io/SNAPEdgeListPartitionReader.hpp +0 -28
  318. package/vendor/include/networkit/io/SNAPGraphReader.hpp +0 -53
  319. package/vendor/include/networkit/io/SNAPGraphWriter.hpp +0 -53
  320. package/vendor/include/networkit/io/ThrillGraphBinaryReader.hpp +0 -44
  321. package/vendor/include/networkit/io/ThrillGraphBinaryWriter.hpp +0 -27
  322. package/vendor/include/networkit/layout/LayoutAlgorithm.hpp +0 -39
  323. package/vendor/include/networkit/linkprediction/AdamicAdarIndex.hpp +0 -37
  324. package/vendor/include/networkit/linkprediction/AdjustedRandIndex.hpp +0 -36
  325. package/vendor/include/networkit/linkprediction/AlgebraicDistanceIndex.hpp +0 -70
  326. package/vendor/include/networkit/linkprediction/CommonNeighborsIndex.hpp +0 -39
  327. package/vendor/include/networkit/linkprediction/EvaluationMetric.hpp +0 -135
  328. package/vendor/include/networkit/linkprediction/JaccardIndex.hpp +0 -44
  329. package/vendor/include/networkit/linkprediction/KatzIndex.hpp +0 -84
  330. package/vendor/include/networkit/linkprediction/LinkPredictor.hpp +0 -98
  331. package/vendor/include/networkit/linkprediction/LinkThresholder.hpp +0 -56
  332. package/vendor/include/networkit/linkprediction/MissingLinksFinder.hpp +0 -60
  333. package/vendor/include/networkit/linkprediction/NeighborhoodDistanceIndex.hpp +0 -42
  334. package/vendor/include/networkit/linkprediction/NeighborhoodUtility.hpp +0 -54
  335. package/vendor/include/networkit/linkprediction/NeighborsMeasureIndex.hpp +0 -48
  336. package/vendor/include/networkit/linkprediction/PrecisionRecallMetric.hpp +0 -40
  337. package/vendor/include/networkit/linkprediction/PredictionsSorter.hpp +0 -66
  338. package/vendor/include/networkit/linkprediction/PreferentialAttachmentIndex.hpp +0 -37
  339. package/vendor/include/networkit/linkprediction/ROCMetric.hpp +0 -39
  340. package/vendor/include/networkit/linkprediction/RandomLinkSampler.hpp +0 -47
  341. package/vendor/include/networkit/linkprediction/ResourceAllocationIndex.hpp +0 -38
  342. package/vendor/include/networkit/linkprediction/SameCommunityIndex.hpp +0 -50
  343. package/vendor/include/networkit/linkprediction/TotalNeighborsIndex.hpp +0 -39
  344. package/vendor/include/networkit/linkprediction/UDegreeIndex.hpp +0 -35
  345. package/vendor/include/networkit/linkprediction/VDegreeIndex.hpp +0 -35
  346. package/vendor/include/networkit/matching/BMatcher.hpp +0 -52
  347. package/vendor/include/networkit/matching/BMatching.hpp +0 -115
  348. package/vendor/include/networkit/matching/BSuitorMatcher.hpp +0 -170
  349. package/vendor/include/networkit/matching/DynamicBSuitorMatcher.hpp +0 -78
  350. package/vendor/include/networkit/matching/LocalMaxMatcher.hpp +0 -35
  351. package/vendor/include/networkit/matching/Matcher.hpp +0 -55
  352. package/vendor/include/networkit/matching/Matching.hpp +0 -111
  353. package/vendor/include/networkit/matching/PathGrowingMatcher.hpp +0 -46
  354. package/vendor/include/networkit/matching/SuitorMatcher.hpp +0 -62
  355. package/vendor/include/networkit/numerics/ConjugateGradient.hpp +0 -163
  356. package/vendor/include/networkit/numerics/GaussSeidelRelaxation.hpp +0 -99
  357. package/vendor/include/networkit/numerics/LAMG/LAMGSettings.hpp +0 -70
  358. package/vendor/include/networkit/numerics/LAMG/Lamg.hpp +0 -460
  359. package/vendor/include/networkit/numerics/LAMG/Level/EliminationStage.hpp +0 -47
  360. package/vendor/include/networkit/numerics/LAMG/Level/Level.hpp +0 -56
  361. package/vendor/include/networkit/numerics/LAMG/Level/LevelAggregation.hpp +0 -52
  362. package/vendor/include/networkit/numerics/LAMG/Level/LevelElimination.hpp +0 -133
  363. package/vendor/include/networkit/numerics/LAMG/Level/LevelFinest.hpp +0 -28
  364. package/vendor/include/networkit/numerics/LAMG/LevelHierarchy.hpp +0 -165
  365. package/vendor/include/networkit/numerics/LAMG/MultiLevelSetup.hpp +0 -1090
  366. package/vendor/include/networkit/numerics/LAMG/SolverLamg.hpp +0 -316
  367. package/vendor/include/networkit/numerics/LinearSolver.hpp +0 -151
  368. package/vendor/include/networkit/numerics/Preconditioner/DiagonalPreconditioner.hpp +0 -61
  369. package/vendor/include/networkit/numerics/Preconditioner/IdentityPreconditioner.hpp +0 -36
  370. package/vendor/include/networkit/numerics/Smoother.hpp +0 -37
  371. package/vendor/include/networkit/overlap/HashingOverlapper.hpp +0 -28
  372. package/vendor/include/networkit/overlap/Overlapper.hpp +0 -27
  373. package/vendor/include/networkit/planarity/LeftRightPlanarityCheck.hpp +0 -113
  374. package/vendor/include/networkit/randomization/Curveball.hpp +0 -49
  375. package/vendor/include/networkit/randomization/CurveballGlobalTradeGenerator.hpp +0 -39
  376. package/vendor/include/networkit/randomization/CurveballUniformTradeGenerator.hpp +0 -39
  377. package/vendor/include/networkit/randomization/DegreePreservingShuffle.hpp +0 -82
  378. package/vendor/include/networkit/randomization/EdgeSwitching.hpp +0 -157
  379. package/vendor/include/networkit/randomization/GlobalCurveball.hpp +0 -69
  380. package/vendor/include/networkit/randomization/GlobalTradeSequence.hpp +0 -303
  381. package/vendor/include/networkit/reachability/AllSimplePaths.hpp +0 -122
  382. package/vendor/include/networkit/reachability/ReachableNodes.hpp +0 -83
  383. package/vendor/include/networkit/scd/ApproximatePageRank.hpp +0 -51
  384. package/vendor/include/networkit/scd/CliqueDetect.hpp +0 -55
  385. package/vendor/include/networkit/scd/CombinedSCD.hpp +0 -51
  386. package/vendor/include/networkit/scd/GCE.hpp +0 -42
  387. package/vendor/include/networkit/scd/LFMLocal.hpp +0 -54
  388. package/vendor/include/networkit/scd/LocalT.hpp +0 -40
  389. package/vendor/include/networkit/scd/LocalTightnessExpansion.hpp +0 -46
  390. package/vendor/include/networkit/scd/PageRankNibble.hpp +0 -55
  391. package/vendor/include/networkit/scd/RandomBFS.hpp +0 -33
  392. package/vendor/include/networkit/scd/SCDGroundTruthComparison.hpp +0 -121
  393. package/vendor/include/networkit/scd/SelectiveCommunityDetector.hpp +0 -76
  394. package/vendor/include/networkit/scd/SetConductance.hpp +0 -47
  395. package/vendor/include/networkit/scd/TCE.hpp +0 -41
  396. package/vendor/include/networkit/scd/TwoPhaseL.hpp +0 -40
  397. package/vendor/include/networkit/scoring/EdgeScoring.hpp +0 -44
  398. package/vendor/include/networkit/scoring/ModularityScoring.hpp +0 -79
  399. package/vendor/include/networkit/simulation/EpidemicSimulationSEIR.hpp +0 -59
  400. package/vendor/include/networkit/sparsification/ChanceCorrectedTriangleScore.hpp +0 -28
  401. package/vendor/include/networkit/sparsification/ForestFireScore.hpp +0 -34
  402. package/vendor/include/networkit/sparsification/GlobalThresholdFilter.hpp +0 -40
  403. package/vendor/include/networkit/sparsification/LocalDegreeScore.hpp +0 -30
  404. package/vendor/include/networkit/sparsification/LocalFilterScore.hpp +0 -124
  405. package/vendor/include/networkit/sparsification/LocalSimilarityScore.hpp +0 -63
  406. package/vendor/include/networkit/sparsification/MultiscaleScore.hpp +0 -38
  407. package/vendor/include/networkit/sparsification/RandomEdgeScore.hpp +0 -33
  408. package/vendor/include/networkit/sparsification/RandomNodeEdgeScore.hpp +0 -29
  409. package/vendor/include/networkit/sparsification/SCANStructuralSimilarityScore.hpp +0 -23
  410. package/vendor/include/networkit/sparsification/SimmelianOverlapScore.hpp +0 -35
  411. package/vendor/include/networkit/sparsification/SimmelianScore.hpp +0 -92
  412. package/vendor/include/networkit/sparsification/Sparsifiers.hpp +0 -166
  413. package/vendor/include/networkit/structures/Cover.hpp +0 -248
  414. package/vendor/include/networkit/structures/LocalCommunity.hpp +0 -363
  415. package/vendor/include/networkit/structures/Partition.hpp +0 -335
  416. package/vendor/include/networkit/structures/UnionFind.hpp +0 -66
  417. package/vendor/include/networkit/viz/GraphLayoutAlgorithm.hpp +0 -157
  418. package/vendor/include/networkit/viz/MaxentStress.hpp +0 -346
  419. package/vendor/include/networkit/viz/Octree.hpp +0 -428
  420. package/vendor/include/networkit/viz/PivotMDS.hpp +0 -63
  421. package/vendor/include/networkit/viz/Point.hpp +0 -415
  422. package/vendor/include/networkit/viz/PostscriptWriter.hpp +0 -78
  423. package/vendor/include/tlx/algorithm/exclusive_scan.hpp +0 -56
  424. package/vendor/include/tlx/algorithm/is_sorted_cmp.hpp +0 -56
  425. package/vendor/include/tlx/algorithm/merge_advance.hpp +0 -177
  426. package/vendor/include/tlx/algorithm/merge_combine.hpp +0 -76
  427. package/vendor/include/tlx/algorithm/multisequence_partition.hpp +0 -346
  428. package/vendor/include/tlx/algorithm/multisequence_selection.hpp +0 -351
  429. package/vendor/include/tlx/algorithm/multiway_merge.hpp +0 -1385
  430. package/vendor/include/tlx/algorithm/multiway_merge_splitting.hpp +0 -257
  431. package/vendor/include/tlx/algorithm/parallel_multiway_merge.hpp +0 -408
  432. package/vendor/include/tlx/algorithm/random_bipartition_shuffle.hpp +0 -116
  433. package/vendor/include/tlx/algorithm.hpp +0 -36
  434. package/vendor/include/tlx/allocator_base.hpp +0 -100
  435. package/vendor/include/tlx/backtrace.hpp +0 -54
  436. package/vendor/include/tlx/cmdline_parser.hpp +0 -498
  437. package/vendor/include/tlx/container/btree.hpp +0 -3977
  438. package/vendor/include/tlx/container/btree_map.hpp +0 -634
  439. package/vendor/include/tlx/container/btree_multimap.hpp +0 -627
  440. package/vendor/include/tlx/container/btree_multiset.hpp +0 -612
  441. package/vendor/include/tlx/container/btree_set.hpp +0 -612
  442. package/vendor/include/tlx/container/d_ary_addressable_int_heap.hpp +0 -416
  443. package/vendor/include/tlx/container/d_ary_heap.hpp +0 -311
  444. package/vendor/include/tlx/container/loser_tree.hpp +0 -1009
  445. package/vendor/include/tlx/container/lru_cache.hpp +0 -319
  446. package/vendor/include/tlx/container/radix_heap.hpp +0 -735
  447. package/vendor/include/tlx/container/ring_buffer.hpp +0 -428
  448. package/vendor/include/tlx/container/simple_vector.hpp +0 -304
  449. package/vendor/include/tlx/container/splay_tree.hpp +0 -399
  450. package/vendor/include/tlx/container/string_view.hpp +0 -805
  451. package/vendor/include/tlx/container.hpp +0 -40
  452. package/vendor/include/tlx/counting_ptr.hpp +0 -522
  453. package/vendor/include/tlx/define/attribute_always_inline.hpp +0 -34
  454. package/vendor/include/tlx/define/attribute_fallthrough.hpp +0 -36
  455. package/vendor/include/tlx/define/attribute_format_printf.hpp +0 -34
  456. package/vendor/include/tlx/define/attribute_packed.hpp +0 -34
  457. package/vendor/include/tlx/define/attribute_warn_unused_result.hpp +0 -34
  458. package/vendor/include/tlx/define/constexpr.hpp +0 -31
  459. package/vendor/include/tlx/define/deprecated.hpp +0 -39
  460. package/vendor/include/tlx/define/endian.hpp +0 -49
  461. package/vendor/include/tlx/define/likely.hpp +0 -33
  462. package/vendor/include/tlx/define/visibility_hidden.hpp +0 -34
  463. package/vendor/include/tlx/define.hpp +0 -36
  464. package/vendor/include/tlx/delegate.hpp +0 -524
  465. package/vendor/include/tlx/die/core.hpp +0 -311
  466. package/vendor/include/tlx/die.hpp +0 -106
  467. package/vendor/include/tlx/digest/md5.hpp +0 -81
  468. package/vendor/include/tlx/digest/sha1.hpp +0 -81
  469. package/vendor/include/tlx/digest/sha256.hpp +0 -81
  470. package/vendor/include/tlx/digest/sha512.hpp +0 -81
  471. package/vendor/include/tlx/digest.hpp +0 -30
  472. package/vendor/include/tlx/logger/all.hpp +0 -33
  473. package/vendor/include/tlx/logger/array.hpp +0 -43
  474. package/vendor/include/tlx/logger/core.hpp +0 -287
  475. package/vendor/include/tlx/logger/deque.hpp +0 -42
  476. package/vendor/include/tlx/logger/map.hpp +0 -65
  477. package/vendor/include/tlx/logger/set.hpp +0 -60
  478. package/vendor/include/tlx/logger/tuple.hpp +0 -66
  479. package/vendor/include/tlx/logger/unordered_map.hpp +0 -68
  480. package/vendor/include/tlx/logger/unordered_set.hpp +0 -64
  481. package/vendor/include/tlx/logger/wrap_unprintable.hpp +0 -75
  482. package/vendor/include/tlx/logger.hpp +0 -44
  483. package/vendor/include/tlx/math/abs_diff.hpp +0 -35
  484. package/vendor/include/tlx/math/aggregate.hpp +0 -231
  485. package/vendor/include/tlx/math/aggregate_min_max.hpp +0 -116
  486. package/vendor/include/tlx/math/bswap.hpp +0 -148
  487. package/vendor/include/tlx/math/bswap_be.hpp +0 -79
  488. package/vendor/include/tlx/math/bswap_le.hpp +0 -79
  489. package/vendor/include/tlx/math/clz.hpp +0 -174
  490. package/vendor/include/tlx/math/ctz.hpp +0 -174
  491. package/vendor/include/tlx/math/div_ceil.hpp +0 -36
  492. package/vendor/include/tlx/math/ffs.hpp +0 -123
  493. package/vendor/include/tlx/math/integer_log2.hpp +0 -189
  494. package/vendor/include/tlx/math/is_power_of_two.hpp +0 -74
  495. package/vendor/include/tlx/math/polynomial_regression.hpp +0 -243
  496. package/vendor/include/tlx/math/popcount.hpp +0 -173
  497. package/vendor/include/tlx/math/power_to_the.hpp +0 -44
  498. package/vendor/include/tlx/math/rol.hpp +0 -112
  499. package/vendor/include/tlx/math/ror.hpp +0 -112
  500. package/vendor/include/tlx/math/round_to_power_of_two.hpp +0 -121
  501. package/vendor/include/tlx/math/round_up.hpp +0 -36
  502. package/vendor/include/tlx/math/sgn.hpp +0 -38
  503. package/vendor/include/tlx/math.hpp +0 -46
  504. package/vendor/include/tlx/meta/apply_tuple.hpp +0 -55
  505. package/vendor/include/tlx/meta/call_for_range.hpp +0 -78
  506. package/vendor/include/tlx/meta/call_foreach.hpp +0 -60
  507. package/vendor/include/tlx/meta/call_foreach_tuple.hpp +0 -60
  508. package/vendor/include/tlx/meta/call_foreach_tuple_with_index.hpp +0 -61
  509. package/vendor/include/tlx/meta/call_foreach_with_index.hpp +0 -64
  510. package/vendor/include/tlx/meta/enable_if.hpp +0 -37
  511. package/vendor/include/tlx/meta/fold_left.hpp +0 -63
  512. package/vendor/include/tlx/meta/fold_left_tuple.hpp +0 -60
  513. package/vendor/include/tlx/meta/fold_right.hpp +0 -63
  514. package/vendor/include/tlx/meta/fold_right_tuple.hpp +0 -60
  515. package/vendor/include/tlx/meta/function_chain.hpp +0 -197
  516. package/vendor/include/tlx/meta/function_stack.hpp +0 -189
  517. package/vendor/include/tlx/meta/has_member.hpp +0 -80
  518. package/vendor/include/tlx/meta/has_method.hpp +0 -117
  519. package/vendor/include/tlx/meta/index_sequence.hpp +0 -66
  520. package/vendor/include/tlx/meta/is_std_array.hpp +0 -40
  521. package/vendor/include/tlx/meta/is_std_pair.hpp +0 -39
  522. package/vendor/include/tlx/meta/is_std_tuple.hpp +0 -39
  523. package/vendor/include/tlx/meta/is_std_vector.hpp +0 -39
  524. package/vendor/include/tlx/meta/log2.hpp +0 -101
  525. package/vendor/include/tlx/meta/no_operation.hpp +0 -55
  526. package/vendor/include/tlx/meta/static_index.hpp +0 -42
  527. package/vendor/include/tlx/meta/vexpand.hpp +0 -34
  528. package/vendor/include/tlx/meta/vmap_for_range.hpp +0 -84
  529. package/vendor/include/tlx/meta/vmap_foreach.hpp +0 -63
  530. package/vendor/include/tlx/meta/vmap_foreach_tuple.hpp +0 -59
  531. package/vendor/include/tlx/meta/vmap_foreach_tuple_with_index.hpp +0 -62
  532. package/vendor/include/tlx/meta/vmap_foreach_with_index.hpp +0 -70
  533. package/vendor/include/tlx/meta.hpp +0 -55
  534. package/vendor/include/tlx/multi_timer.hpp +0 -148
  535. package/vendor/include/tlx/port/setenv.hpp +0 -31
  536. package/vendor/include/tlx/port.hpp +0 -27
  537. package/vendor/include/tlx/semaphore.hpp +0 -119
  538. package/vendor/include/tlx/simple_vector.hpp +0 -20
  539. package/vendor/include/tlx/siphash.hpp +0 -282
  540. package/vendor/include/tlx/sort/networks/best.hpp +0 -611
  541. package/vendor/include/tlx/sort/networks/bose_nelson.hpp +0 -412
  542. package/vendor/include/tlx/sort/networks/bose_nelson_parameter.hpp +0 -507
  543. package/vendor/include/tlx/sort/networks/cswap.hpp +0 -60
  544. package/vendor/include/tlx/sort/parallel_mergesort.hpp +0 -398
  545. package/vendor/include/tlx/sort/strings/insertion_sort.hpp +0 -232
  546. package/vendor/include/tlx/sort/strings/multikey_quicksort.hpp +0 -185
  547. package/vendor/include/tlx/sort/strings/parallel_sample_sort.hpp +0 -1647
  548. package/vendor/include/tlx/sort/strings/radix_sort.hpp +0 -934
  549. package/vendor/include/tlx/sort/strings/sample_sort_tools.hpp +0 -756
  550. package/vendor/include/tlx/sort/strings/string_ptr.hpp +0 -426
  551. package/vendor/include/tlx/sort/strings/string_set.hpp +0 -800
  552. package/vendor/include/tlx/sort/strings.hpp +0 -329
  553. package/vendor/include/tlx/sort/strings_parallel.hpp +0 -325
  554. package/vendor/include/tlx/sort.hpp +0 -29
  555. package/vendor/include/tlx/stack_allocator.hpp +0 -226
  556. package/vendor/include/tlx/string/appendline.hpp +0 -35
  557. package/vendor/include/tlx/string/base64.hpp +0 -87
  558. package/vendor/include/tlx/string/bitdump.hpp +0 -139
  559. package/vendor/include/tlx/string/compare_icase.hpp +0 -42
  560. package/vendor/include/tlx/string/contains.hpp +0 -36
  561. package/vendor/include/tlx/string/contains_word.hpp +0 -42
  562. package/vendor/include/tlx/string/ends_with.hpp +0 -79
  563. package/vendor/include/tlx/string/equal_icase.hpp +0 -42
  564. package/vendor/include/tlx/string/erase_all.hpp +0 -70
  565. package/vendor/include/tlx/string/escape_html.hpp +0 -34
  566. package/vendor/include/tlx/string/escape_uri.hpp +0 -34
  567. package/vendor/include/tlx/string/expand_environment_variables.hpp +0 -49
  568. package/vendor/include/tlx/string/extract_between.hpp +0 -40
  569. package/vendor/include/tlx/string/format_iec_units.hpp +0 -32
  570. package/vendor/include/tlx/string/format_si_iec_units.hpp +0 -19
  571. package/vendor/include/tlx/string/format_si_units.hpp +0 -32
  572. package/vendor/include/tlx/string/hash_djb2.hpp +0 -87
  573. package/vendor/include/tlx/string/hash_sdbm.hpp +0 -86
  574. package/vendor/include/tlx/string/hexdump.hpp +0 -154
  575. package/vendor/include/tlx/string/index_of.hpp +0 -56
  576. package/vendor/include/tlx/string/join.hpp +0 -65
  577. package/vendor/include/tlx/string/join_generic.hpp +0 -89
  578. package/vendor/include/tlx/string/join_quoted.hpp +0 -46
  579. package/vendor/include/tlx/string/less_icase.hpp +0 -64
  580. package/vendor/include/tlx/string/levenshtein.hpp +0 -193
  581. package/vendor/include/tlx/string/pad.hpp +0 -39
  582. package/vendor/include/tlx/string/parse_si_iec_units.hpp +0 -46
  583. package/vendor/include/tlx/string/parse_uri.hpp +0 -66
  584. package/vendor/include/tlx/string/parse_uri_form_data.hpp +0 -136
  585. package/vendor/include/tlx/string/replace.hpp +0 -141
  586. package/vendor/include/tlx/string/split.hpp +0 -170
  587. package/vendor/include/tlx/string/split_quoted.hpp +0 -49
  588. package/vendor/include/tlx/string/split_view.hpp +0 -218
  589. package/vendor/include/tlx/string/split_words.hpp +0 -53
  590. package/vendor/include/tlx/string/ssprintf.hpp +0 -45
  591. package/vendor/include/tlx/string/ssprintf_generic.hpp +0 -95
  592. package/vendor/include/tlx/string/starts_with.hpp +0 -44
  593. package/vendor/include/tlx/string/to_lower.hpp +0 -47
  594. package/vendor/include/tlx/string/to_upper.hpp +0 -47
  595. package/vendor/include/tlx/string/trim.hpp +0 -298
  596. package/vendor/include/tlx/string/union_words.hpp +0 -33
  597. package/vendor/include/tlx/string/word_wrap.hpp +0 -35
  598. package/vendor/include/tlx/string.hpp +0 -68
  599. package/vendor/include/tlx/thread_barrier_mutex.hpp +0 -109
  600. package/vendor/include/tlx/thread_barrier_spin.hpp +0 -127
  601. package/vendor/include/tlx/thread_pool.hpp +0 -151
  602. package/vendor/include/tlx/timestamp.hpp +0 -23
  603. package/vendor/include/tlx/unused.hpp +0 -28
  604. package/vendor/include/tlx/vector_free.hpp +0 -30
  605. package/vendor/include/tlx/version.hpp +0 -49
  606. package/vendor/include/ttmath/ttmath.h +0 -2881
  607. package/vendor/include/ttmath/ttmathbig.h +0 -6111
  608. package/vendor/include/ttmath/ttmathdec.h +0 -419
  609. package/vendor/include/ttmath/ttmathint.h +0 -1923
  610. package/vendor/include/ttmath/ttmathmisc.h +0 -250
  611. package/vendor/include/ttmath/ttmathobjects.h +0 -812
  612. package/vendor/include/ttmath/ttmathparser.h +0 -2791
  613. package/vendor/include/ttmath/ttmaththreads.h +0 -252
  614. package/vendor/include/ttmath/ttmathtypes.h +0 -707
  615. package/vendor/include/ttmath/ttmathuint.h +0 -4190
  616. package/vendor/include/ttmath/ttmathuint_noasm.h +0 -1038
  617. package/vendor/include/ttmath/ttmathuint_x86.h +0 -1620
  618. package/vendor/include/ttmath/ttmathuint_x86_64.h +0 -1177
  619. package/vendor/lib/cmake/tlx/tlx-config.cmake +0 -51
  620. package/vendor/lib/cmake/tlx/tlx-targets-release.cmake +0 -19
  621. package/vendor/lib/cmake/tlx/tlx-targets.cmake +0 -106
  622. package/vendor/lib/cmake/tlx/tlx-version.cmake +0 -11
  623. package/vendor/lib/libtlx.a +0 -0
  624. package/vendor/lib/pkgconfig/networkit.pc +0 -11
  625. package/vendor/lib/pkgconfig/tlx.pc +0 -11
@@ -1,1620 +0,0 @@
1
- /*
2
- * This file is a part of TTMath Bignum Library
3
- * and is distributed under the 3-Clause BSD Licence.
4
- * Author: Tomasz Sowa <t.sowa@ttmath.org>
5
- */
6
-
7
- /*
8
- * Copyright (c) 2006-2009, Tomasz Sowa
9
- * All rights reserved.
10
- *
11
- * Redistribution and use in source and binary forms, with or without
12
- * modification, are permitted provided that the following conditions are met:
13
- *
14
- * * Redistributions of source code must retain the above copyright notice,
15
- * this list of conditions and the following disclaimer.
16
- *
17
- * * Redistributions in binary form must reproduce the above copyright
18
- * notice, this list of conditions and the following disclaimer in the
19
- * documentation and/or other materials provided with the distribution.
20
- *
21
- * * Neither the name Tomasz Sowa nor the names of contributors to this
22
- * project may be used to endorse or promote products derived
23
- * from this software without specific prior written permission.
24
- *
25
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
29
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
35
- * THE POSSIBILITY OF SUCH DAMAGE.
36
- */
37
-
38
- #ifndef headerfilettmathuint_x86
39
- #define headerfilettmathuint_x86
40
-
41
-
42
- /*!
43
- \file ttmathuint_x86.h
44
- \brief template class UInt<uint> with assembler code for 32bit x86 processors
45
-
46
- this file is included at the end of ttmathuint.h
47
- */
48
-
49
-
50
- #ifndef TTMATH_NOASM
51
- #ifdef TTMATH_PLATFORM32
52
-
53
-
54
-
55
-
56
-
57
- /*!
58
- \brief a namespace for the TTMath library
59
- */
60
- namespace ttmath
61
- {
62
-
63
- /*!
64
- returning the string represents the currect type of the library
65
-
66
- we have following types:
67
- - asm_vc_32 - with asm code designed for Microsoft Visual C++ (32 bits)
68
- - asm_gcc_32 - with asm code designed for GCC (32 bits)
69
- - asm_vc_64 - with asm for VC (64 bit)
70
- - asm_gcc_64 - with asm for GCC (64 bit)
71
- - no_asm_32 - pure C++ version (32 bit) - without any asm code
72
- - no_asm_64 - pure C++ version (64 bit) - without any asm code
73
- */
74
- template<uint value_size>
75
- const char * UInt<value_size>::LibTypeStr()
76
- {
77
- #ifndef __GNUC__
78
- static const char info[] = "asm_vc_32";
79
- #endif
80
-
81
- #ifdef __GNUC__
82
- static const char info[] = "asm_gcc_32";
83
- #endif
84
-
85
- return info;
86
- }
87
-
88
-
89
- /*!
90
- returning the currect type of the library
91
- */
92
- template<uint value_size>
93
- LibTypeCode UInt<value_size>::LibType()
94
- {
95
- #ifndef __GNUC__
96
- LibTypeCode info = asm_vc_32;
97
- #endif
98
-
99
- #ifdef __GNUC__
100
- LibTypeCode info = asm_gcc_32;
101
- #endif
102
-
103
- return info;
104
- }
105
-
106
-
107
-
108
- /*!
109
- *
110
- * basic mathematic functions
111
- *
112
- */
113
-
114
-
115
- /*!
116
- adding ss2 to the this and adding carry if it's defined
117
- (this = this + ss2 + c)
118
-
119
- c must be zero or one (might be a bigger value than 1)
120
- function returns carry (1) (if it has been)
121
- */
122
- template<uint value_size>
123
- uint UInt<value_size>::Add(const UInt<value_size> & ss2, uint c)
124
- {
125
- uint b = value_size;
126
- uint * p1 = table;
127
- uint * p2 = const_cast<uint*>(ss2.table);
128
-
129
- // we don't have to use TTMATH_REFERENCE_ASSERT here
130
- // this algorithm doesn't require it
131
-
132
- #ifndef __GNUC__
133
-
134
- // this part might be compiled with for example visual c
135
-
136
- __asm
137
- {
138
- push eax
139
- push ebx
140
- push ecx
141
- push edx
142
- push esi
143
-
144
- mov ecx,[b]
145
-
146
- mov ebx,[p1]
147
- mov esi,[p2]
148
-
149
- xor edx,edx // edx=0
150
- mov eax,[c]
151
- neg eax // CF=1 if rax!=0 , CF=0 if rax==0
152
-
153
- ttmath_loop:
154
- mov eax,[esi+edx*4]
155
- adc [ebx+edx*4],eax
156
-
157
- inc edx
158
- dec ecx
159
- jnz ttmath_loop
160
-
161
- adc ecx, ecx
162
- mov [c], ecx
163
-
164
- pop esi
165
- pop edx
166
- pop ecx
167
- pop ebx
168
- pop eax
169
- }
170
-
171
-
172
-
173
- #endif
174
-
175
-
176
- #ifdef __GNUC__
177
- uint dummy, dummy2;
178
- // this part should be compiled with gcc
179
-
180
- __asm__ __volatile__(
181
-
182
- "xorl %%edx, %%edx \n"
183
- "negl %%eax \n" // CF=1 if rax!=0 , CF=0 if rax==0
184
-
185
- "1: \n"
186
- "movl (%%esi,%%edx,4), %%eax \n"
187
- "adcl %%eax, (%%ebx,%%edx,4) \n"
188
-
189
- "incl %%edx \n"
190
- "decl %%ecx \n"
191
- "jnz 1b \n"
192
-
193
- "adc %%ecx, %%ecx \n"
194
-
195
- : "=c" (c), "=a" (dummy), "=d" (dummy2)
196
- : "0" (b), "1" (c), "b" (p1), "S" (p2)
197
- : "cc", "memory" );
198
- #endif
199
-
200
- TTMATH_LOGC("UInt::Add", c)
201
-
202
- return c;
203
- }
204
-
205
-
206
-
207
- /*!
208
- adding one word (at a specific position)
209
- and returning a carry (if it has been)
210
-
211
- e.g.
212
-
213
- if we've got (value_size=3):
214
-
215
- table[0] = 10;
216
- table[1] = 30;
217
- table[2] = 5;
218
-
219
- and we call:
220
-
221
- AddInt(2,1)
222
-
223
- then it'll be:
224
-
225
- table[0] = 10;
226
- table[1] = 30 + 2;
227
- table[2] = 5;
228
-
229
- of course if there was a carry from table[2] it would be returned
230
- */
231
- template<uint value_size>
232
- uint UInt<value_size>::AddInt(uint value, uint index)
233
- {
234
- uint b = value_size;
235
- uint * p1 = table;
236
- uint c;
237
-
238
- TTMATH_ASSERT( index < value_size )
239
-
240
- #ifndef __GNUC__
241
-
242
- __asm
243
- {
244
- push eax
245
- push ebx
246
- push ecx
247
- push edx
248
-
249
- mov ecx, [b]
250
- sub ecx, [index]
251
-
252
- mov edx, [index]
253
- mov ebx, [p1]
254
-
255
- mov eax, [value]
256
-
257
- ttmath_loop:
258
- add [ebx+edx*4], eax
259
- jnc ttmath_end
260
-
261
- mov eax, 1
262
- inc edx
263
- dec ecx
264
- jnz ttmath_loop
265
-
266
- ttmath_end:
267
- setc al
268
- movzx edx, al
269
- mov [c], edx
270
-
271
- pop edx
272
- pop ecx
273
- pop ebx
274
- pop eax
275
- }
276
-
277
- #endif
278
-
279
-
280
- #ifdef __GNUC__
281
- uint dummy, dummy2;
282
-
283
- __asm__ __volatile__(
284
-
285
- "subl %%edx, %%ecx \n"
286
-
287
- "1: \n"
288
- "addl %%eax, (%%ebx,%%edx,4) \n"
289
- "jnc 2f \n"
290
-
291
- "movl $1, %%eax \n"
292
- "incl %%edx \n"
293
- "decl %%ecx \n"
294
- "jnz 1b \n"
295
-
296
- "2: \n"
297
- "setc %%al \n"
298
- "movzx %%al, %%edx \n"
299
-
300
- : "=d" (c), "=a" (dummy), "=c" (dummy2)
301
- : "0" (index), "1" (value), "2" (b), "b" (p1)
302
- : "cc", "memory" );
303
-
304
- #endif
305
-
306
- TTMATH_LOGC("UInt::AddInt", c)
307
-
308
- return c;
309
- }
310
-
311
-
312
-
313
-
314
- /*!
315
- adding only two unsigned words to the existing value
316
- and these words begin on the 'index' position
317
- (it's used in the multiplication algorithm 2)
318
-
319
- index should be equal or smaller than value_size-2 (index <= value_size-2)
320
- x1 - lower word, x2 - higher word
321
-
322
- for example if we've got value_size equal 4 and:
323
-
324
- table[0] = 3
325
- table[1] = 4
326
- table[2] = 5
327
- table[3] = 6
328
-
329
- then let
330
-
331
- x1 = 10
332
- x2 = 20
333
-
334
- and
335
-
336
- index = 1
337
-
338
- the result of this method will be:
339
-
340
- table[0] = 3
341
- table[1] = 4 + x1 = 14
342
- table[2] = 5 + x2 = 25
343
- table[3] = 6
344
-
345
- and no carry at the end of table[3]
346
-
347
- (of course if there was a carry in table[2](5+20) then
348
- this carry would be passed to the table[3] etc.)
349
- */
350
- template<uint value_size>
351
- uint UInt<value_size>::AddTwoInts(uint x2, uint x1, uint index)
352
- {
353
- uint b = value_size;
354
- uint * p1 = table;
355
- uint c;
356
-
357
- TTMATH_ASSERT( index < value_size - 1 )
358
-
359
- #ifndef __GNUC__
360
- __asm
361
- {
362
- push eax
363
- push ebx
364
- push ecx
365
- push edx
366
-
367
- mov ecx, [b]
368
- sub ecx, [index]
369
-
370
- mov ebx, [p1]
371
- mov edx, [index]
372
-
373
- mov eax, [x1]
374
- add [ebx+edx*4], eax
375
- inc edx
376
- dec ecx
377
-
378
- mov eax, [x2]
379
-
380
- ttmath_loop:
381
- adc [ebx+edx*4], eax
382
- jnc ttmath_end
383
-
384
- mov eax, 0
385
- inc edx
386
- dec ecx
387
- jnz ttmath_loop
388
-
389
- ttmath_end:
390
- setc al
391
- movzx edx, al
392
- mov [c], edx
393
-
394
- pop edx
395
- pop ecx
396
- pop ebx
397
- pop eax
398
-
399
- }
400
- #endif
401
-
402
-
403
- #ifdef __GNUC__
404
- uint dummy, dummy2;
405
-
406
- __asm__ __volatile__(
407
-
408
- "subl %%edx, %%ecx \n"
409
-
410
- "addl %%esi, (%%ebx,%%edx,4) \n"
411
- "incl %%edx \n"
412
- "decl %%ecx \n"
413
-
414
- "1: \n"
415
- "adcl %%eax, (%%ebx,%%edx,4) \n"
416
- "jnc 2f \n"
417
-
418
- "mov $0, %%eax \n"
419
- "incl %%edx \n"
420
- "decl %%ecx \n"
421
- "jnz 1b \n"
422
-
423
- "2: \n"
424
- "setc %%al \n"
425
- "movzx %%al, %%eax \n"
426
-
427
- : "=a" (c), "=c" (dummy), "=d" (dummy2)
428
- : "0" (x2), "1" (b), "2" (index), "b" (p1), "S" (x1)
429
- : "cc", "memory" );
430
-
431
- #endif
432
-
433
- TTMATH_LOGC("UInt::AddTwoInts", c)
434
-
435
- return c;
436
- }
437
-
438
-
439
-
440
- /*!
441
- this static method addes one vector to the other
442
- 'ss1' is larger in size or equal to 'ss2'
443
-
444
- ss1 points to the first (larger) vector
445
- ss2 points to the second vector
446
- ss1_size - size of the ss1 (and size of the result too)
447
- ss2_size - size of the ss2
448
- result - is the result vector (which has size the same as ss1: ss1_size)
449
-
450
- Example: ss1_size is 5, ss2_size is 3
451
- ss1: ss2: result (output):
452
- 5 1 5+1
453
- 4 3 4+3
454
- 2 7 2+7
455
- 6 6
456
- 9 9
457
- of course the carry is propagated and will be returned from the last item
458
- (this method is used by the Karatsuba multiplication algorithm)
459
- */
460
- template<uint value_size>
461
- uint UInt<value_size>::AddVector(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result)
462
- {
463
- TTMATH_ASSERT( ss1_size >= ss2_size )
464
-
465
- uint rest = ss1_size - ss2_size;
466
- uint c;
467
-
468
- #ifndef __GNUC__
469
-
470
- // this part might be compiled with for example visual c
471
- __asm
472
- {
473
- pushad
474
-
475
- mov ecx, [ss2_size]
476
- xor edx, edx // edx = 0, cf = 0
477
-
478
- mov esi, [ss1]
479
- mov ebx, [ss2]
480
- mov edi, [result]
481
-
482
- ttmath_loop:
483
- mov eax, [esi+edx*4]
484
- adc eax, [ebx+edx*4]
485
- mov [edi+edx*4], eax
486
-
487
- inc edx
488
- dec ecx
489
- jnz ttmath_loop
490
-
491
- adc ecx, ecx // ecx has the cf state
492
-
493
- mov ebx, [rest]
494
- or ebx, ebx
495
- jz ttmath_end
496
-
497
- xor ebx, ebx // ebx = 0
498
- neg ecx // setting cf from ecx
499
- mov ecx, [rest] // ecx is != 0
500
-
501
- ttmath_loop2:
502
- mov eax, [esi+edx*4]
503
- adc eax, ebx
504
- mov [edi+edx*4], eax
505
-
506
- inc edx
507
- dec ecx
508
- jnz ttmath_loop2
509
-
510
- adc ecx, ecx
511
-
512
- ttmath_end:
513
- mov [c], ecx
514
-
515
- popad
516
- }
517
-
518
- #endif
519
-
520
-
521
- #ifdef __GNUC__
522
-
523
- // this part should be compiled with gcc
524
- uint dummy1, dummy2, dummy3;
525
-
526
- __asm__ __volatile__(
527
- "push %%edx \n"
528
- "xor %%edx, %%edx \n" // edx = 0, cf = 0
529
- "1: \n"
530
- "mov (%%esi,%%edx,4), %%eax \n"
531
- "adc (%%ebx,%%edx,4), %%eax \n"
532
- "mov %%eax, (%%edi,%%edx,4) \n"
533
-
534
- "inc %%edx \n"
535
- "dec %%ecx \n"
536
- "jnz 1b \n"
537
-
538
- "adc %%ecx, %%ecx \n" // ecx has the cf state
539
- "pop %%eax \n" // eax = rest
540
-
541
- "or %%eax, %%eax \n"
542
- "jz 3f \n"
543
-
544
- "xor %%ebx, %%ebx \n" // ebx = 0
545
- "neg %%ecx \n" // setting cf from ecx
546
- "mov %%eax, %%ecx \n" // ecx=rest and is != 0
547
- "2: \n"
548
- "mov (%%esi, %%edx, 4), %%eax \n"
549
- "adc %%ebx, %%eax \n"
550
- "mov %%eax, (%%edi, %%edx, 4) \n"
551
-
552
- "inc %%edx \n"
553
- "dec %%ecx \n"
554
- "jnz 2b \n"
555
-
556
- "adc %%ecx, %%ecx \n"
557
- "3: \n"
558
-
559
- : "=a" (dummy1), "=b" (dummy2), "=c" (c), "=d" (dummy3)
560
- : "1" (ss2), "2" (ss2_size), "3" (rest), "S" (ss1), "D" (result)
561
- : "cc", "memory" );
562
-
563
- #endif
564
-
565
- TTMATH_VECTOR_LOGC("UInt::AddVector", c, result, ss1_size)
566
-
567
- return c;
568
- }
569
-
570
-
571
- /*!
572
- subtracting ss2 from the 'this' and subtracting
573
- carry if it has been defined
574
- (this = this - ss2 - c)
575
-
576
- c must be zero or one (might be a bigger value than 1)
577
- function returns carry (1) (if it has been)
578
- */
579
- template<uint value_size>
580
- uint UInt<value_size>::Sub(const UInt<value_size> & ss2, uint c)
581
- {
582
- uint b = value_size;
583
- uint * p1 = table;
584
- uint * p2 = const_cast<uint*>(ss2.table);
585
-
586
- // we don't have to use TTMATH_REFERENCE_ASSERT here
587
- // this algorithm doesn't require it
588
-
589
- #ifndef __GNUC__
590
-
591
- __asm
592
- {
593
- push eax
594
- push ebx
595
- push ecx
596
- push edx
597
- push esi
598
-
599
- mov ecx,[b]
600
-
601
- mov ebx,[p1]
602
- mov esi,[p2]
603
-
604
- xor edx,edx // edx=0
605
- mov eax,[c]
606
- neg eax // CF=1 if rax!=0 , CF=0 if rax==0
607
-
608
- ttmath_loop:
609
- mov eax,[esi+edx*4]
610
- sbb [ebx+edx*4],eax
611
-
612
- inc edx
613
- dec ecx
614
- jnz ttmath_loop
615
-
616
- adc ecx, ecx
617
- mov [c], ecx
618
-
619
- pop esi
620
- pop edx
621
- pop ecx
622
- pop ebx
623
- pop eax
624
- }
625
-
626
- #endif
627
-
628
-
629
- #ifdef __GNUC__
630
- uint dummy, dummy2;
631
-
632
- __asm__ __volatile__(
633
-
634
- "xorl %%edx, %%edx \n"
635
- "negl %%eax \n" // CF=1 if rax!=0 , CF=0 if rax==0
636
-
637
- "1: \n"
638
- "movl (%%esi,%%edx,4), %%eax \n"
639
- "sbbl %%eax, (%%ebx,%%edx,4) \n"
640
-
641
- "incl %%edx \n"
642
- "decl %%ecx \n"
643
- "jnz 1b \n"
644
-
645
- "adc %%ecx, %%ecx \n"
646
-
647
- : "=c" (c), "=a" (dummy), "=d" (dummy2)
648
- : "0" (b), "1" (c), "b" (p1), "S" (p2)
649
- : "cc", "memory" );
650
-
651
- #endif
652
-
653
- TTMATH_LOGC("UInt::Sub", c)
654
-
655
- return c;
656
- }
657
-
658
-
659
-
660
-
661
- /*!
662
- this method subtracts one word (at a specific position)
663
- and returns a carry (if it was)
664
-
665
- e.g.
666
-
667
- if we've got (value_size=3):
668
-
669
- table[0] = 10;
670
- table[1] = 30;
671
- table[2] = 5;
672
-
673
- and we call:
674
-
675
- SubInt(2,1)
676
-
677
- then it'll be:
678
-
679
- table[0] = 10;
680
- table[1] = 30 - 2;
681
- table[2] = 5;
682
-
683
- of course if there was a carry from table[2] it would be returned
684
- */
685
- template<uint value_size>
686
- uint UInt<value_size>::SubInt(uint value, uint index)
687
- {
688
- uint b = value_size;
689
- uint * p1 = table;
690
- uint c;
691
-
692
- TTMATH_ASSERT( index < value_size )
693
-
694
- #ifndef __GNUC__
695
-
696
- __asm
697
- {
698
- push eax
699
- push ebx
700
- push ecx
701
- push edx
702
-
703
- mov ecx, [b]
704
- sub ecx, [index]
705
-
706
- mov edx, [index]
707
- mov ebx, [p1]
708
-
709
- mov eax, [value]
710
-
711
- ttmath_loop:
712
- sub [ebx+edx*4], eax
713
- jnc ttmath_end
714
-
715
- mov eax, 1
716
- inc edx
717
- dec ecx
718
- jnz ttmath_loop
719
-
720
- ttmath_end:
721
- setc al
722
- movzx edx, al
723
- mov [c], edx
724
-
725
- pop edx
726
- pop ecx
727
- pop ebx
728
- pop eax
729
- }
730
-
731
- #endif
732
-
733
-
734
- #ifdef __GNUC__
735
- uint dummy, dummy2;
736
-
737
- __asm__ __volatile__(
738
-
739
- "subl %%edx, %%ecx \n"
740
-
741
- "1: \n"
742
- "subl %%eax, (%%ebx,%%edx,4) \n"
743
- "jnc 2f \n"
744
-
745
- "movl $1, %%eax \n"
746
- "incl %%edx \n"
747
- "decl %%ecx \n"
748
- "jnz 1b \n"
749
-
750
- "2: \n"
751
- "setc %%al \n"
752
- "movzx %%al, %%edx \n"
753
-
754
- : "=d" (c), "=a" (dummy), "=c" (dummy2)
755
- : "0" (index), "1" (value), "2" (b), "b" (p1)
756
- : "cc", "memory" );
757
-
758
- #endif
759
-
760
- TTMATH_LOGC("UInt::SubInt", c)
761
-
762
- return c;
763
- }
764
-
765
-
766
-
767
- /*!
768
- this static method subtractes one vector from the other
769
- 'ss1' is larger in size or equal to 'ss2'
770
-
771
- ss1 points to the first (larger) vector
772
- ss2 points to the second vector
773
- ss1_size - size of the ss1 (and size of the result too)
774
- ss2_size - size of the ss2
775
- result - is the result vector (which has size the same as ss1: ss1_size)
776
-
777
- Example: ss1_size is 5, ss2_size is 3
778
- ss1: ss2: result (output):
779
- 5 1 5-1
780
- 4 3 4-3
781
- 2 7 2-7
782
- 6 6-1 (the borrow from previous item)
783
- 9 9
784
- return (carry): 0
785
- of course the carry (borrow) is propagated and will be returned from the last item
786
- (this method is used by the Karatsuba multiplication algorithm)
787
- */
788
- template<uint value_size>
789
- uint UInt<value_size>::SubVector(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result)
790
- {
791
- TTMATH_ASSERT( ss1_size >= ss2_size )
792
-
793
- uint rest = ss1_size - ss2_size;
794
- uint c;
795
-
796
- #ifndef __GNUC__
797
-
798
- // this part might be compiled with for example visual c
799
-
800
- /*
801
- the asm code is nearly the same as in AddVector
802
- only two instructions 'adc' are changed to 'sbb'
803
- */
804
- __asm
805
- {
806
- pushad
807
-
808
- mov ecx, [ss2_size]
809
- xor edx, edx // edx = 0, cf = 0
810
-
811
- mov esi, [ss1]
812
- mov ebx, [ss2]
813
- mov edi, [result]
814
-
815
- ttmath_loop:
816
- mov eax, [esi+edx*4]
817
- sbb eax, [ebx+edx*4]
818
- mov [edi+edx*4], eax
819
-
820
- inc edx
821
- dec ecx
822
- jnz ttmath_loop
823
-
824
- adc ecx, ecx // ecx has the cf state
825
-
826
- mov ebx, [rest]
827
- or ebx, ebx
828
- jz ttmath_end
829
-
830
- xor ebx, ebx // ebx = 0
831
- neg ecx // setting cf from ecx
832
- mov ecx, [rest] // ecx is != 0
833
-
834
- ttmath_loop2:
835
- mov eax, [esi+edx*4]
836
- sbb eax, ebx
837
- mov [edi+edx*4], eax
838
-
839
- inc edx
840
- dec ecx
841
- jnz ttmath_loop2
842
-
843
- adc ecx, ecx
844
-
845
- ttmath_end:
846
- mov [c], ecx
847
-
848
- popad
849
- }
850
-
851
- #endif
852
-
853
-
854
- #ifdef __GNUC__
855
-
856
- // this part should be compiled with gcc
857
- uint dummy1, dummy2, dummy3;
858
-
859
- __asm__ __volatile__(
860
- "push %%edx \n"
861
- "xor %%edx, %%edx \n" // edx = 0, cf = 0
862
- "1: \n"
863
- "mov (%%esi,%%edx,4), %%eax \n"
864
- "sbb (%%ebx,%%edx,4), %%eax \n"
865
- "mov %%eax, (%%edi,%%edx,4) \n"
866
-
867
- "inc %%edx \n"
868
- "dec %%ecx \n"
869
- "jnz 1b \n"
870
-
871
- "adc %%ecx, %%ecx \n" // ecx has the cf state
872
- "pop %%eax \n" // eax = rest
873
-
874
- "or %%eax, %%eax \n"
875
- "jz 3f \n"
876
-
877
- "xor %%ebx, %%ebx \n" // ebx = 0
878
- "neg %%ecx \n" // setting cf from ecx
879
- "mov %%eax, %%ecx \n" // ecx=rest and is != 0
880
- "2: \n"
881
- "mov (%%esi, %%edx, 4), %%eax \n"
882
- "sbb %%ebx, %%eax \n"
883
- "mov %%eax, (%%edi, %%edx, 4) \n"
884
-
885
- "inc %%edx \n"
886
- "dec %%ecx \n"
887
- "jnz 2b \n"
888
-
889
- "adc %%ecx, %%ecx \n"
890
- "3: \n"
891
-
892
- : "=a" (dummy1), "=b" (dummy2), "=c" (c), "=d" (dummy3)
893
- : "1" (ss2), "2" (ss2_size), "3" (rest), "S" (ss1), "D" (result)
894
- : "cc", "memory" );
895
-
896
- #endif
897
-
898
- TTMATH_VECTOR_LOGC("UInt::SubVector", c, result, ss1_size)
899
-
900
- return c;
901
- }
902
-
903
-
904
-
905
- /*!
906
- this method moves all bits into the left hand side
907
- return value <- this <- c
908
-
909
- the lowest *bit* will be held the 'c' and
910
- the state of one additional bit (on the left hand side)
911
- will be returned
912
-
913
- for example:
914
- let this is 001010000
915
- after Rcl2_one(1) there'll be 010100001 and Rcl2_one returns 0
916
- */
917
- template<uint value_size>
918
- uint UInt<value_size>::Rcl2_one(uint c)
919
- {
920
- uint b = value_size;
921
- uint * p1 = table;
922
-
923
- #ifndef __GNUC__
924
- __asm
925
- {
926
- push ebx
927
- push ecx
928
- push edx
929
-
930
- mov ebx, [p1]
931
- xor edx, edx
932
- mov ecx, [c]
933
- neg ecx
934
- mov ecx, [b]
935
-
936
- ttmath_loop:
937
- rcl dword ptr [ebx+edx*4], 1
938
-
939
- inc edx
940
- dec ecx
941
- jnz ttmath_loop
942
-
943
- adc ecx, ecx
944
- mov [c], ecx
945
-
946
- pop edx
947
- pop ecx
948
- pop ebx
949
- }
950
- #endif
951
-
952
-
953
- #ifdef __GNUC__
954
- uint dummy, dummy2;
955
-
956
- __asm__ __volatile__(
957
-
958
- "xorl %%edx, %%edx \n" // edx=0
959
- "negl %%eax \n" // CF=1 if eax!=0 , CF=0 if eax==0
960
-
961
- "1: \n"
962
- "rcll $1, (%%ebx, %%edx, 4) \n"
963
-
964
- "incl %%edx \n"
965
- "decl %%ecx \n"
966
- "jnz 1b \n"
967
-
968
- "adcl %%ecx, %%ecx \n"
969
-
970
- : "=c" (c), "=a" (dummy), "=d" (dummy2)
971
- : "0" (b), "1" (c), "b" (p1)
972
- : "cc", "memory" );
973
-
974
- #endif
975
-
976
- TTMATH_LOGC("UInt::Rcl2_one", c)
977
-
978
- return c;
979
- }
980
-
981
-
982
-
983
- /*!
984
- this method moves all bits into the right hand side
985
- c -> this -> return value
986
-
987
- the highest *bit* will be held the 'c' and
988
- the state of one additional bit (on the right hand side)
989
- will be returned
990
-
991
- for example:
992
- let this is 000000010
993
- after Rcr2_one(1) there'll be 100000001 and Rcr2_one returns 0
994
- */
995
- template<uint value_size>
996
- uint UInt<value_size>::Rcr2_one(uint c)
997
- {
998
- uint b = value_size;
999
- uint * p1 = table;
1000
-
1001
- #ifndef __GNUC__
1002
- __asm
1003
- {
1004
- push ebx
1005
- push ecx
1006
-
1007
- mov ebx, [p1]
1008
- mov ecx, [c]
1009
- neg ecx
1010
- mov ecx, [b]
1011
-
1012
- ttmath_loop:
1013
- rcr dword ptr [ebx+ecx*4-4], 1
1014
-
1015
- dec ecx
1016
- jnz ttmath_loop
1017
-
1018
- adc ecx, ecx
1019
- mov [c], ecx
1020
-
1021
- pop ecx
1022
- pop ebx
1023
- }
1024
- #endif
1025
-
1026
-
1027
- #ifdef __GNUC__
1028
- uint dummy;
1029
-
1030
- __asm__ __volatile__(
1031
-
1032
- "negl %%eax \n" // CF=1 if eax!=0 , CF=0 if eax==0
1033
-
1034
- "1: \n"
1035
- "rcrl $1, -4(%%ebx, %%ecx, 4) \n"
1036
-
1037
- "decl %%ecx \n"
1038
- "jnz 1b \n"
1039
-
1040
- "adcl %%ecx, %%ecx \n"
1041
-
1042
- : "=c" (c), "=a" (dummy)
1043
- : "0" (b), "1" (c), "b" (p1)
1044
- : "cc", "memory" );
1045
-
1046
- #endif
1047
-
1048
- TTMATH_LOGC("UInt::Rcr2_one", c)
1049
-
1050
- return c;
1051
- }
1052
-
1053
-
1054
-
1055
- #ifdef _MSC_VER
1056
- #pragma warning (disable : 4731)
1057
- //warning C4731: frame pointer register 'ebp' modified by inline assembly code
1058
- #endif
1059
-
1060
-
1061
-
1062
- /*!
1063
- this method moves all bits into the left hand side
1064
- return value <- this <- c
1065
-
1066
- the lowest *bits* will be held the 'c' and
1067
- the state of one additional bit (on the left hand side)
1068
- will be returned
1069
-
1070
- for example:
1071
- let this is 001010000
1072
- after Rcl2(3, 1) there'll be 010000111 and Rcl2 returns 1
1073
- */
1074
- template<uint value_size>
1075
- uint UInt<value_size>::Rcl2(uint bits, uint c)
1076
- {
1077
- TTMATH_ASSERT( bits>0 && bits<TTMATH_BITS_PER_UINT )
1078
-
1079
- uint b = value_size;
1080
- uint * p1 = table;
1081
-
1082
- #ifndef __GNUC__
1083
- __asm
1084
- {
1085
- push eax
1086
- push ebx
1087
- push ecx
1088
- push edx
1089
- push esi
1090
- push edi
1091
- push ebp
1092
-
1093
- mov edi, [b]
1094
-
1095
- mov ecx, 32
1096
- sub ecx, [bits]
1097
- mov edx, -1
1098
- shr edx, cl
1099
-
1100
- mov ecx, [bits]
1101
- mov ebx, [p1]
1102
- mov eax, [c]
1103
-
1104
- mov ebp, edx // ebp = mask (modified ebp - don't read/write to variables)
1105
-
1106
- xor edx, edx // edx = 0
1107
- mov esi, edx
1108
- or eax, eax
1109
- cmovnz esi, ebp // if(c) esi=mask else esi=0
1110
-
1111
- ttmath_loop:
1112
- rol dword ptr [ebx+edx*4], cl
1113
-
1114
- mov eax, [ebx+edx*4]
1115
- and eax, ebp
1116
- xor [ebx+edx*4], eax // clearing bits
1117
- or [ebx+edx*4], esi // saving old value
1118
- mov esi, eax
1119
-
1120
- inc edx
1121
- dec edi
1122
- jnz ttmath_loop
1123
-
1124
- pop ebp // restoring ebp
1125
-
1126
- and eax, 1
1127
- mov [c], eax
1128
-
1129
- pop edi
1130
- pop esi
1131
- pop edx
1132
- pop ecx
1133
- pop ebx
1134
- pop eax
1135
- }
1136
- #endif
1137
-
1138
-
1139
- #ifdef __GNUC__
1140
- uint dummy, dummy2, dummy3;
1141
-
1142
- __asm__ __volatile__(
1143
-
1144
- "push %%ebp \n"
1145
-
1146
- "movl %%ecx, %%esi \n"
1147
- "movl $32, %%ecx \n"
1148
- "subl %%esi, %%ecx \n" // ecx = 32 - bits
1149
- "movl $-1, %%edx \n" // edx = -1 (all bits set to one)
1150
- "shrl %%cl, %%edx \n" // shifting (0 -> edx -> cf) (cl times)
1151
- "movl %%edx, %%ebp \n" // ebp = edx = mask
1152
- "movl %%esi, %%ecx \n"
1153
-
1154
- "xorl %%edx, %%edx \n"
1155
- "movl %%edx, %%esi \n"
1156
- "orl %%eax, %%eax \n"
1157
- "cmovnz %%ebp, %%esi \n" // if(c) esi=mask else esi=0
1158
-
1159
- "1: \n"
1160
- "roll %%cl, (%%ebx,%%edx,4) \n"
1161
-
1162
- "movl (%%ebx,%%edx,4), %%eax \n"
1163
- "andl %%ebp, %%eax \n"
1164
- "xorl %%eax, (%%ebx,%%edx,4) \n"
1165
- "orl %%esi, (%%ebx,%%edx,4) \n"
1166
- "movl %%eax, %%esi \n"
1167
-
1168
- "incl %%edx \n"
1169
- "decl %%edi \n"
1170
- "jnz 1b \n"
1171
-
1172
- "and $1, %%eax \n"
1173
-
1174
- "pop %%ebp \n"
1175
-
1176
- : "=a" (c), "=D" (dummy), "=S" (dummy2), "=d" (dummy3)
1177
- : "0" (c), "1" (b), "b" (p1), "c" (bits)
1178
- : "cc", "memory" );
1179
-
1180
- #endif
1181
-
1182
- TTMATH_LOGC("UInt::Rcl2", c)
1183
-
1184
- return c;
1185
- }
1186
-
1187
-
1188
-
1189
-
1190
- /*!
1191
- this method moves all bits into the right hand side
1192
- C -> this -> return value
1193
-
1194
- the highest *bits* will be held the 'c' and
1195
- the state of one additional bit (on the right hand side)
1196
- will be returned
1197
-
1198
- for example:
1199
- let this is 000000010
1200
- after Rcr2(2, 1) there'll be 110000000 and Rcr2 returns 1
1201
- */
1202
- template<uint value_size>
1203
- uint UInt<value_size>::Rcr2(uint bits, uint c)
1204
- {
1205
- TTMATH_ASSERT( bits>0 && bits<TTMATH_BITS_PER_UINT )
1206
-
1207
- uint b = value_size;
1208
- uint * p1 = table;
1209
-
1210
- #ifndef __GNUC__
1211
- __asm
1212
- {
1213
- push eax
1214
- push ebx
1215
- push ecx
1216
- push edx
1217
- push esi
1218
- push edi
1219
- push ebp
1220
-
1221
- mov edi, [b]
1222
-
1223
- mov ecx, 32
1224
- sub ecx, [bits]
1225
- mov edx, -1
1226
- shl edx, cl
1227
-
1228
- mov ecx, [bits]
1229
- mov ebx, [p1]
1230
- mov eax, [c]
1231
-
1232
- mov ebp, edx // ebp = mask (modified ebp - don't read/write to variables)
1233
-
1234
- xor edx, edx // edx = 0
1235
- mov esi, edx
1236
- add edx, edi
1237
- dec edx // edx is pointing at the end of the table (on last word)
1238
- or eax, eax
1239
- cmovnz esi, ebp // if(c) esi=mask else esi=0
1240
-
1241
- ttmath_loop:
1242
- ror dword ptr [ebx+edx*4], cl
1243
-
1244
- mov eax, [ebx+edx*4]
1245
- and eax, ebp
1246
- xor [ebx+edx*4], eax // clearing bits
1247
- or [ebx+edx*4], esi // saving old value
1248
- mov esi, eax
1249
-
1250
- dec edx
1251
- dec edi
1252
- jnz ttmath_loop
1253
-
1254
- pop ebp // restoring ebp
1255
-
1256
- rol eax, 1 // 31bit will be first
1257
- and eax, 1
1258
- mov [c], eax
1259
-
1260
- pop edi
1261
- pop esi
1262
- pop edx
1263
- pop ecx
1264
- pop ebx
1265
- pop eax
1266
- }
1267
- #endif
1268
-
1269
-
1270
- #ifdef __GNUC__
1271
- uint dummy, dummy2, dummy3;
1272
-
1273
- __asm__ __volatile__(
1274
-
1275
- "push %%ebp \n"
1276
-
1277
- "movl %%ecx, %%esi \n"
1278
- "movl $32, %%ecx \n"
1279
- "subl %%esi, %%ecx \n" // ecx = 32 - bits
1280
- "movl $-1, %%edx \n" // edx = -1 (all bits set to one)
1281
- "shll %%cl, %%edx \n" // shifting (cf <- edx <- 0) (cl times)
1282
- "movl %%edx, %%ebp \n" // ebp = edx = mask
1283
- "movl %%esi, %%ecx \n"
1284
-
1285
- "xorl %%edx, %%edx \n"
1286
- "movl %%edx, %%esi \n"
1287
- "addl %%edi, %%edx \n"
1288
- "decl %%edx \n" // edx is pointing at the end of the table (on last word)
1289
- "orl %%eax, %%eax \n"
1290
- "cmovnz %%ebp, %%esi \n" // if(c) esi=mask else esi=0
1291
-
1292
- "1: \n"
1293
- "rorl %%cl, (%%ebx,%%edx,4) \n"
1294
-
1295
- "movl (%%ebx,%%edx,4), %%eax \n"
1296
- "andl %%ebp, %%eax \n"
1297
- "xorl %%eax, (%%ebx,%%edx,4) \n"
1298
- "orl %%esi, (%%ebx,%%edx,4) \n"
1299
- "movl %%eax, %%esi \n"
1300
-
1301
- "decl %%edx \n"
1302
- "decl %%edi \n"
1303
- "jnz 1b \n"
1304
-
1305
- "roll $1, %%eax \n"
1306
- "andl $1, %%eax \n"
1307
-
1308
- "pop %%ebp \n"
1309
-
1310
- : "=a" (c), "=D" (dummy), "=S" (dummy2), "=d" (dummy3)
1311
- : "0" (c), "1" (b), "b" (p1), "c" (bits)
1312
- : "cc", "memory" );
1313
-
1314
- #endif
1315
-
1316
- TTMATH_LOGC("UInt::Rcr2", c)
1317
-
1318
- return c;
1319
- }
1320
-
1321
-
1322
- #ifdef _MSC_VER
1323
- #pragma warning (default : 4731)
1324
- #endif
1325
-
1326
-
1327
- /*
1328
- this method returns the number of the highest set bit in one 32-bit word
1329
- if the 'x' is zero this method returns '-1'
1330
- */
1331
- template<uint value_size>
1332
- sint UInt<value_size>::FindLeadingBitInWord(uint x)
1333
- {
1334
- sint result;
1335
-
1336
- #ifndef __GNUC__
1337
- __asm
1338
- {
1339
- push eax
1340
- push edx
1341
-
1342
- mov edx,-1
1343
- bsr eax,[x]
1344
- cmovz eax,edx
1345
- mov [result], eax
1346
-
1347
- pop edx
1348
- pop eax
1349
- }
1350
- #endif
1351
-
1352
-
1353
- #ifdef __GNUC__
1354
- uint dummy;
1355
-
1356
- __asm__ (
1357
-
1358
- "movl $-1, %1 \n"
1359
- "bsrl %2, %0 \n"
1360
- "cmovz %1, %0 \n"
1361
-
1362
- : "=r" (result), "=&r" (dummy)
1363
- : "r" (x)
1364
- : "cc" );
1365
-
1366
- #endif
1367
-
1368
- return result;
1369
- }
1370
-
1371
-
1372
-
1373
- /*
1374
- this method returns the number of the smallest set bit in one 32-bit word
1375
- if the 'x' is zero this method returns '-1'
1376
- */
1377
- template<uint value_size>
1378
- sint UInt<value_size>::FindLowestBitInWord(uint x)
1379
- {
1380
- sint result;
1381
-
1382
- #ifndef __GNUC__
1383
- __asm
1384
- {
1385
- push eax
1386
- push edx
1387
-
1388
- mov edx,-1
1389
- bsf eax,[x]
1390
- cmovz eax,edx
1391
- mov [result], eax
1392
-
1393
- pop edx
1394
- pop eax
1395
- }
1396
- #endif
1397
-
1398
-
1399
- #ifdef __GNUC__
1400
- uint dummy;
1401
-
1402
- __asm__ (
1403
-
1404
- "movl $-1, %1 \n"
1405
- "bsfl %2, %0 \n"
1406
- "cmovz %1, %0 \n"
1407
-
1408
- : "=r" (result), "=&r" (dummy)
1409
- : "r" (x)
1410
- : "cc" );
1411
-
1412
- #endif
1413
-
1414
- return result;
1415
- }
1416
-
1417
-
1418
-
1419
- /*!
1420
- this method sets a special bit in the 'value'
1421
- and returns the last state of the bit (zero or one)
1422
-
1423
- bit is from <0,31>
1424
- e.g.
1425
-
1426
- uint x = 100;
1427
- uint bit = SetBitInWord(x, 3);
1428
- now: x = 108 and bit = 0
1429
- */
1430
- template<uint value_size>
1431
- uint UInt<value_size>::SetBitInWord(uint & value, uint bit)
1432
- {
1433
- TTMATH_ASSERT( bit < TTMATH_BITS_PER_UINT )
1434
-
1435
- uint old_bit;
1436
- uint v = value;
1437
-
1438
- #ifndef __GNUC__
1439
- __asm
1440
- {
1441
- push ebx
1442
- push eax
1443
-
1444
- mov eax, [v]
1445
- mov ebx, [bit]
1446
- bts eax, ebx
1447
- mov [v], eax
1448
-
1449
- setc bl
1450
- movzx ebx, bl
1451
- mov [old_bit], ebx
1452
-
1453
- pop eax
1454
- pop ebx
1455
- }
1456
- #endif
1457
-
1458
-
1459
- #ifdef __GNUC__
1460
- __asm__ (
1461
-
1462
- "btsl %%ebx, %%eax \n"
1463
- "setc %%bl \n"
1464
- "movzx %%bl, %%ebx \n"
1465
-
1466
- : "=a" (v), "=b" (old_bit)
1467
- : "0" (v), "1" (bit)
1468
- : "cc" );
1469
-
1470
- #endif
1471
-
1472
- value = v;
1473
-
1474
- return old_bit;
1475
- }
1476
-
1477
-
1478
-
1479
-
1480
- /*!
1481
- multiplication: result_high:result_low = a * b
1482
- result_high - higher word of the result
1483
- result_low - lower word of the result
1484
-
1485
- this methos never returns a carry
1486
- this method is used in the second version of the multiplication algorithms
1487
- */
1488
- template<uint value_size>
1489
- void UInt<value_size>::MulTwoWords(uint a, uint b, uint * result_high, uint * result_low)
1490
- {
1491
- /*
1492
- we must use these temporary variables in order to inform the compilator
1493
- that value pointed with result1 and result2 has changed
1494
-
1495
- this has no effect in visual studio but it's useful when
1496
- using gcc and options like -Ox
1497
- */
1498
- uint result1_;
1499
- uint result2_;
1500
-
1501
- #ifndef __GNUC__
1502
-
1503
- __asm
1504
- {
1505
- push eax
1506
- push edx
1507
-
1508
- mov eax, [a]
1509
- mul dword ptr [b]
1510
-
1511
- mov [result2_], edx
1512
- mov [result1_], eax
1513
-
1514
- pop edx
1515
- pop eax
1516
- }
1517
-
1518
- #endif
1519
-
1520
-
1521
- #ifdef __GNUC__
1522
-
1523
- __asm__ (
1524
-
1525
- "mull %%edx \n"
1526
-
1527
- : "=a" (result1_), "=d" (result2_)
1528
- : "0" (a), "1" (b)
1529
- : "cc" );
1530
-
1531
- #endif
1532
-
1533
-
1534
- *result_low = result1_;
1535
- *result_high = result2_;
1536
- }
1537
-
1538
-
1539
-
1540
-
1541
-
1542
- /*!
1543
- *
1544
- * Division
1545
- *
1546
- *
1547
- */
1548
-
1549
-
1550
-
1551
-
1552
- /*!
1553
- this method calculates 64bits word a:b / 32bits c (a higher, b lower word)
1554
- r = a:b / c and rest - remainder
1555
-
1556
- *
1557
- * WARNING:
1558
- * if r (one word) is too small for the result or c is equal zero
1559
- * there'll be a hardware interruption (0)
1560
- * and probably the end of your program
1561
- *
1562
- */
1563
- template<uint value_size>
1564
- void UInt<value_size>::DivTwoWords(uint a, uint b, uint c, uint * r, uint * rest)
1565
- {
1566
- uint r_;
1567
- uint rest_;
1568
- /*
1569
- these variables have similar meaning like those in
1570
- the multiplication algorithm MulTwoWords
1571
- */
1572
-
1573
- TTMATH_ASSERT( c != 0 )
1574
-
1575
- #ifndef __GNUC__
1576
- __asm
1577
- {
1578
- push eax
1579
- push edx
1580
-
1581
- mov edx, [a]
1582
- mov eax, [b]
1583
- div dword ptr [c]
1584
-
1585
- mov [r_], eax
1586
- mov [rest_], edx
1587
-
1588
- pop edx
1589
- pop eax
1590
- }
1591
- #endif
1592
-
1593
-
1594
- #ifdef __GNUC__
1595
-
1596
- __asm__ (
1597
-
1598
- "divl %%ecx \n"
1599
-
1600
- : "=a" (r_), "=d" (rest_)
1601
- : "0" (b), "1" (a), "c" (c)
1602
- : "cc" );
1603
-
1604
- #endif
1605
-
1606
-
1607
- *r = r_;
1608
- *rest = rest_;
1609
-
1610
- }
1611
-
1612
-
1613
-
1614
- } //namespace
1615
-
1616
-
1617
-
1618
- #endif //ifdef TTMATH_PLATFORM32
1619
- #endif //ifndef TTMATH_NOASM
1620
- #endif