qilisdk 0.1.8__cp313-cp313-win_amd64.whl

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 (633) hide show
  1. include/eigen3/Eigen/Cholesky +45 -0
  2. include/eigen3/Eigen/CholmodSupport +48 -0
  3. include/eigen3/Eigen/Core +384 -0
  4. include/eigen3/Eigen/Dense +7 -0
  5. include/eigen3/Eigen/Eigen +2 -0
  6. include/eigen3/Eigen/Eigenvalues +60 -0
  7. include/eigen3/Eigen/Geometry +59 -0
  8. include/eigen3/Eigen/Householder +29 -0
  9. include/eigen3/Eigen/IterativeLinearSolvers +48 -0
  10. include/eigen3/Eigen/Jacobi +32 -0
  11. include/eigen3/Eigen/KLUSupport +41 -0
  12. include/eigen3/Eigen/LU +47 -0
  13. include/eigen3/Eigen/MetisSupport +35 -0
  14. include/eigen3/Eigen/OrderingMethods +70 -0
  15. include/eigen3/Eigen/PaStiXSupport +49 -0
  16. include/eigen3/Eigen/PardisoSupport +35 -0
  17. include/eigen3/Eigen/QR +50 -0
  18. include/eigen3/Eigen/QtAlignedMalloc +39 -0
  19. include/eigen3/Eigen/SPQRSupport +34 -0
  20. include/eigen3/Eigen/SVD +50 -0
  21. include/eigen3/Eigen/Sparse +34 -0
  22. include/eigen3/Eigen/SparseCholesky +37 -0
  23. include/eigen3/Eigen/SparseCore +69 -0
  24. include/eigen3/Eigen/SparseLU +50 -0
  25. include/eigen3/Eigen/SparseQR +36 -0
  26. include/eigen3/Eigen/StdDeque +27 -0
  27. include/eigen3/Eigen/StdList +26 -0
  28. include/eigen3/Eigen/StdVector +27 -0
  29. include/eigen3/Eigen/SuperLUSupport +64 -0
  30. include/eigen3/Eigen/UmfPackSupport +40 -0
  31. include/eigen3/Eigen/src/Cholesky/LDLT.h +688 -0
  32. include/eigen3/Eigen/src/Cholesky/LLT.h +558 -0
  33. include/eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  34. include/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
  35. include/eigen3/Eigen/src/Core/ArithmeticSequence.h +413 -0
  36. include/eigen3/Eigen/src/Core/Array.h +417 -0
  37. include/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
  38. include/eigen3/Eigen/src/Core/ArrayWrapper.h +209 -0
  39. include/eigen3/Eigen/src/Core/Assign.h +90 -0
  40. include/eigen3/Eigen/src/Core/AssignEvaluator.h +1010 -0
  41. include/eigen3/Eigen/src/Core/Assign_MKL.h +178 -0
  42. include/eigen3/Eigen/src/Core/BandMatrix.h +353 -0
  43. include/eigen3/Eigen/src/Core/Block.h +448 -0
  44. include/eigen3/Eigen/src/Core/BooleanRedux.h +162 -0
  45. include/eigen3/Eigen/src/Core/CommaInitializer.h +164 -0
  46. include/eigen3/Eigen/src/Core/ConditionEstimator.h +175 -0
  47. include/eigen3/Eigen/src/Core/CoreEvaluators.h +1741 -0
  48. include/eigen3/Eigen/src/Core/CoreIterators.h +132 -0
  49. include/eigen3/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  50. include/eigen3/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  51. include/eigen3/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  52. include/eigen3/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  53. include/eigen3/Eigen/src/Core/CwiseUnaryView.h +132 -0
  54. include/eigen3/Eigen/src/Core/DenseBase.h +701 -0
  55. include/eigen3/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  56. include/eigen3/Eigen/src/Core/DenseStorage.h +652 -0
  57. include/eigen3/Eigen/src/Core/Diagonal.h +258 -0
  58. include/eigen3/Eigen/src/Core/DiagonalMatrix.h +391 -0
  59. include/eigen3/Eigen/src/Core/DiagonalProduct.h +28 -0
  60. include/eigen3/Eigen/src/Core/Dot.h +318 -0
  61. include/eigen3/Eigen/src/Core/EigenBase.h +160 -0
  62. include/eigen3/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  63. include/eigen3/Eigen/src/Core/Fuzzy.h +155 -0
  64. include/eigen3/Eigen/src/Core/GeneralProduct.h +465 -0
  65. include/eigen3/Eigen/src/Core/GenericPacketMath.h +1040 -0
  66. include/eigen3/Eigen/src/Core/GlobalFunctions.h +194 -0
  67. include/eigen3/Eigen/src/Core/IO.h +258 -0
  68. include/eigen3/Eigen/src/Core/IndexedView.h +237 -0
  69. include/eigen3/Eigen/src/Core/Inverse.h +117 -0
  70. include/eigen3/Eigen/src/Core/Map.h +171 -0
  71. include/eigen3/Eigen/src/Core/MapBase.h +310 -0
  72. include/eigen3/Eigen/src/Core/MathFunctions.h +2057 -0
  73. include/eigen3/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  74. include/eigen3/Eigen/src/Core/Matrix.h +565 -0
  75. include/eigen3/Eigen/src/Core/MatrixBase.h +547 -0
  76. include/eigen3/Eigen/src/Core/NestByValue.h +85 -0
  77. include/eigen3/Eigen/src/Core/NoAlias.h +109 -0
  78. include/eigen3/Eigen/src/Core/NumTraits.h +335 -0
  79. include/eigen3/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  80. include/eigen3/Eigen/src/Core/PermutationMatrix.h +605 -0
  81. include/eigen3/Eigen/src/Core/PlainObjectBase.h +1128 -0
  82. include/eigen3/Eigen/src/Core/Product.h +191 -0
  83. include/eigen3/Eigen/src/Core/ProductEvaluators.h +1179 -0
  84. include/eigen3/Eigen/src/Core/Random.h +218 -0
  85. include/eigen3/Eigen/src/Core/Redux.h +515 -0
  86. include/eigen3/Eigen/src/Core/Ref.h +381 -0
  87. include/eigen3/Eigen/src/Core/Replicate.h +142 -0
  88. include/eigen3/Eigen/src/Core/Reshaped.h +454 -0
  89. include/eigen3/Eigen/src/Core/ReturnByValue.h +119 -0
  90. include/eigen3/Eigen/src/Core/Reverse.h +217 -0
  91. include/eigen3/Eigen/src/Core/Select.h +164 -0
  92. include/eigen3/Eigen/src/Core/SelfAdjointView.h +365 -0
  93. include/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  94. include/eigen3/Eigen/src/Core/Solve.h +188 -0
  95. include/eigen3/Eigen/src/Core/SolveTriangular.h +235 -0
  96. include/eigen3/Eigen/src/Core/SolverBase.h +168 -0
  97. include/eigen3/Eigen/src/Core/StableNorm.h +251 -0
  98. include/eigen3/Eigen/src/Core/StlIterators.h +463 -0
  99. include/eigen3/Eigen/src/Core/Stride.h +116 -0
  100. include/eigen3/Eigen/src/Core/Swap.h +68 -0
  101. include/eigen3/Eigen/src/Core/Transpose.h +464 -0
  102. include/eigen3/Eigen/src/Core/Transpositions.h +386 -0
  103. include/eigen3/Eigen/src/Core/TriangularMatrix.h +1001 -0
  104. include/eigen3/Eigen/src/Core/VectorBlock.h +96 -0
  105. include/eigen3/Eigen/src/Core/VectorwiseOp.h +784 -0
  106. include/eigen3/Eigen/src/Core/Visitor.h +381 -0
  107. include/eigen3/Eigen/src/Core/arch/AVX/Complex.h +372 -0
  108. include/eigen3/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  109. include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
  110. include/eigen3/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  111. include/eigen3/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  112. include/eigen3/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
  113. include/eigen3/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
  114. include/eigen3/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  115. include/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
  116. include/eigen3/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
  117. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  118. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  119. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  120. include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
  121. include/eigen3/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
  122. include/eigen3/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  123. include/eigen3/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  124. include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  125. include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  126. include/eigen3/Eigen/src/Core/arch/Default/Half.h +942 -0
  127. include/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
  128. include/eigen3/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  129. include/eigen3/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  130. include/eigen3/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  131. include/eigen3/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  132. include/eigen3/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  133. include/eigen3/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  134. include/eigen3/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  135. include/eigen3/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  136. include/eigen3/Eigen/src/Core/arch/NEON/Complex.h +584 -0
  137. include/eigen3/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  138. include/eigen3/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  139. include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
  140. include/eigen3/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  141. include/eigen3/Eigen/src/Core/arch/SSE/Complex.h +351 -0
  142. include/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  143. include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  144. include/eigen3/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  145. include/eigen3/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  146. include/eigen3/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  147. include/eigen3/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  148. include/eigen3/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  149. include/eigen3/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  150. include/eigen3/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  151. include/eigen3/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  152. include/eigen3/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  153. include/eigen3/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
  154. include/eigen3/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  155. include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  156. include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  157. include/eigen3/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  158. include/eigen3/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  159. include/eigen3/Eigen/src/Core/functors/StlFunctors.h +166 -0
  160. include/eigen3/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  161. include/eigen3/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  162. include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  163. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  164. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
  165. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  166. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  167. include/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
  168. include/eigen3/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  169. include/eigen3/Eigen/src/Core/products/Parallelizer.h +180 -0
  170. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  171. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  172. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  173. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  174. include/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  175. include/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  176. include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  177. include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  178. include/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  179. include/eigen3/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  180. include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  181. include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  182. include/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  183. include/eigen3/Eigen/src/Core/util/BlasUtil.h +583 -0
  184. include/eigen3/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  185. include/eigen3/Eigen/src/Core/util/Constants.h +563 -0
  186. include/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
  187. include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  188. include/eigen3/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  189. include/eigen3/Eigen/src/Core/util/IntegralConstant.h +272 -0
  190. include/eigen3/Eigen/src/Core/util/MKL_support.h +137 -0
  191. include/eigen3/Eigen/src/Core/util/Macros.h +1464 -0
  192. include/eigen3/Eigen/src/Core/util/Memory.h +1163 -0
  193. include/eigen3/Eigen/src/Core/util/Meta.h +812 -0
  194. include/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
  195. include/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  196. include/eigen3/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  197. include/eigen3/Eigen/src/Core/util/StaticAssert.h +221 -0
  198. include/eigen3/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  199. include/eigen3/Eigen/src/Core/util/XprHelper.h +856 -0
  200. include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
  201. include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  202. include/eigen3/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  203. include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  204. include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
  205. include/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  206. include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  207. include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  208. include/eigen3/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  209. include/eigen3/Eigen/src/Eigenvalues/RealSchur.h +558 -0
  210. include/eigen3/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  211. include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  212. include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  213. include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
  214. include/eigen3/Eigen/src/Geometry/AlignedBox.h +486 -0
  215. include/eigen3/Eigen/src/Geometry/AngleAxis.h +247 -0
  216. include/eigen3/Eigen/src/Geometry/EulerAngles.h +114 -0
  217. include/eigen3/Eigen/src/Geometry/Homogeneous.h +501 -0
  218. include/eigen3/Eigen/src/Geometry/Hyperplane.h +282 -0
  219. include/eigen3/Eigen/src/Geometry/OrthoMethods.h +235 -0
  220. include/eigen3/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  221. include/eigen3/Eigen/src/Geometry/Quaternion.h +870 -0
  222. include/eigen3/Eigen/src/Geometry/Rotation2D.h +199 -0
  223. include/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
  224. include/eigen3/Eigen/src/Geometry/Scaling.h +188 -0
  225. include/eigen3/Eigen/src/Geometry/Transform.h +1563 -0
  226. include/eigen3/Eigen/src/Geometry/Translation.h +202 -0
  227. include/eigen3/Eigen/src/Geometry/Umeyama.h +166 -0
  228. include/eigen3/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  229. include/eigen3/Eigen/src/Householder/BlockHouseholder.h +110 -0
  230. include/eigen3/Eigen/src/Householder/Householder.h +176 -0
  231. include/eigen3/Eigen/src/Householder/HouseholderSequence.h +545 -0
  232. include/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
  233. include/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
  234. include/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
  235. include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
  236. include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
  237. include/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
  238. include/eigen3/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
  239. include/eigen3/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
  240. include/eigen3/Eigen/src/Jacobi/Jacobi.h +483 -0
  241. include/eigen3/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  242. include/eigen3/Eigen/src/LU/Determinant.h +117 -0
  243. include/eigen3/Eigen/src/LU/FullPivLU.h +877 -0
  244. include/eigen3/Eigen/src/LU/InverseImpl.h +432 -0
  245. include/eigen3/Eigen/src/LU/PartialPivLU.h +624 -0
  246. include/eigen3/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  247. include/eigen3/Eigen/src/LU/arch/InverseSize4.h +351 -0
  248. include/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  249. include/eigen3/Eigen/src/OrderingMethods/Amd.h +435 -0
  250. include/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
  251. include/eigen3/Eigen/src/OrderingMethods/Ordering.h +153 -0
  252. include/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
  253. include/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
  254. include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  255. include/eigen3/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  256. include/eigen3/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  257. include/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  258. include/eigen3/Eigen/src/QR/HouseholderQR.h +434 -0
  259. include/eigen3/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  260. include/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
  261. include/eigen3/Eigen/src/SVD/BDCSVD.h +1366 -0
  262. include/eigen3/Eigen/src/SVD/JacobiSVD.h +812 -0
  263. include/eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  264. include/eigen3/Eigen/src/SVD/SVDBase.h +376 -0
  265. include/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
  266. include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
  267. include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
  268. include/eigen3/Eigen/src/SparseCore/AmbiVector.h +378 -0
  269. include/eigen3/Eigen/src/SparseCore/CompressedStorage.h +274 -0
  270. include/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
  271. include/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
  272. include/eigen3/Eigen/src/SparseCore/SparseAssign.h +270 -0
  273. include/eigen3/Eigen/src/SparseCore/SparseBlock.h +571 -0
  274. include/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  275. include/eigen3/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
  276. include/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
  277. include/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
  278. include/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
  279. include/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
  280. include/eigen3/Eigen/src/SparseCore/SparseDot.h +98 -0
  281. include/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
  282. include/eigen3/Eigen/src/SparseCore/SparseMap.h +305 -0
  283. include/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
  284. include/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
  285. include/eigen3/Eigen/src/SparseCore/SparsePermutation.h +178 -0
  286. include/eigen3/Eigen/src/SparseCore/SparseProduct.h +181 -0
  287. include/eigen3/Eigen/src/SparseCore/SparseRedux.h +49 -0
  288. include/eigen3/Eigen/src/SparseCore/SparseRef.h +397 -0
  289. include/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
  290. include/eigen3/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
  291. include/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
  292. include/eigen3/Eigen/src/SparseCore/SparseTranspose.h +92 -0
  293. include/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
  294. include/eigen3/Eigen/src/SparseCore/SparseUtil.h +186 -0
  295. include/eigen3/Eigen/src/SparseCore/SparseVector.h +478 -0
  296. include/eigen3/Eigen/src/SparseCore/SparseView.h +254 -0
  297. include/eigen3/Eigen/src/SparseCore/TriangularSolver.h +315 -0
  298. include/eigen3/Eigen/src/SparseLU/SparseLU.h +923 -0
  299. include/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  300. include/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
  301. include/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
  302. include/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
  303. include/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  304. include/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
  305. include/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
  306. include/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
  307. include/eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
  308. include/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
  309. include/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
  310. include/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
  311. include/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  312. include/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  313. include/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
  314. include/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  315. include/eigen3/Eigen/src/SparseQR/SparseQR.h +758 -0
  316. include/eigen3/Eigen/src/StlSupport/StdDeque.h +116 -0
  317. include/eigen3/Eigen/src/StlSupport/StdList.h +106 -0
  318. include/eigen3/Eigen/src/StlSupport/StdVector.h +131 -0
  319. include/eigen3/Eigen/src/StlSupport/details.h +84 -0
  320. include/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
  321. include/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
  322. include/eigen3/Eigen/src/misc/Image.h +82 -0
  323. include/eigen3/Eigen/src/misc/Kernel.h +79 -0
  324. include/eigen3/Eigen/src/misc/RealSvd2x2.h +55 -0
  325. include/eigen3/Eigen/src/misc/blas.h +440 -0
  326. include/eigen3/Eigen/src/misc/lapack.h +152 -0
  327. include/eigen3/Eigen/src/misc/lapacke.h +16292 -0
  328. include/eigen3/Eigen/src/misc/lapacke_mangling.h +17 -0
  329. include/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
  330. include/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  331. include/eigen3/Eigen/src/plugins/BlockMethods.h +1442 -0
  332. include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  333. include/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  334. include/eigen3/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  335. include/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
  336. include/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  337. include/eigen3/Eigen/src/plugins/ReshapedMethods.h +149 -0
  338. include/eigen3/signature_of_eigen3_matrix_library +1 -0
  339. include/eigen3/unsupported/Eigen/AdolcForward +159 -0
  340. include/eigen3/unsupported/Eigen/AlignedVector3 +234 -0
  341. include/eigen3/unsupported/Eigen/ArpackSupport +30 -0
  342. include/eigen3/unsupported/Eigen/AutoDiff +46 -0
  343. include/eigen3/unsupported/Eigen/BVH +95 -0
  344. include/eigen3/unsupported/Eigen/CXX11/Tensor +137 -0
  345. include/eigen3/unsupported/Eigen/CXX11/TensorSymmetry +42 -0
  346. include/eigen3/unsupported/Eigen/CXX11/ThreadPool +74 -0
  347. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +554 -0
  348. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +329 -0
  349. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +247 -0
  350. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +1176 -0
  351. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +1559 -0
  352. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +1093 -0
  353. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +518 -0
  354. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +377 -0
  355. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +1023 -0
  356. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +73 -0
  357. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +6 -0
  358. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +1413 -0
  359. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +575 -0
  360. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +1650 -0
  361. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +1679 -0
  362. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +456 -0
  363. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +1132 -0
  364. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +544 -0
  365. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +214 -0
  366. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +347 -0
  367. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +137 -0
  368. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +6 -0
  369. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +104 -0
  370. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +389 -0
  371. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +1048 -0
  372. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +409 -0
  373. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +236 -0
  374. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +490 -0
  375. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +236 -0
  376. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +983 -0
  377. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +703 -0
  378. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +388 -0
  379. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +669 -0
  380. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +379 -0
  381. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +237 -0
  382. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +191 -0
  383. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +488 -0
  384. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +302 -0
  385. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +33 -0
  386. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +99 -0
  387. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +44 -0
  388. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +79 -0
  389. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +603 -0
  390. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +738 -0
  391. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +247 -0
  392. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +82 -0
  393. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +263 -0
  394. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +216 -0
  395. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +98 -0
  396. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +327 -0
  397. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +311 -0
  398. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +1102 -0
  399. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +708 -0
  400. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +291 -0
  401. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +322 -0
  402. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +998 -0
  403. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +6 -0
  404. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +966 -0
  405. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +582 -0
  406. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +454 -0
  407. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +465 -0
  408. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +528 -0
  409. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +513 -0
  410. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +471 -0
  411. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +161 -0
  412. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +346 -0
  413. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +303 -0
  414. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +264 -0
  415. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +249 -0
  416. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +629 -0
  417. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +293 -0
  418. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +236 -0
  419. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +338 -0
  420. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +669 -0
  421. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +67 -0
  422. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +249 -0
  423. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +486 -0
  424. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +236 -0
  425. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +23 -0
  426. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +40 -0
  427. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +301 -0
  428. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +48 -0
  429. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +20 -0
  430. include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +537 -0
  431. include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +88 -0
  432. include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateArray.h +261 -0
  433. include/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +158 -0
  434. include/eigen3/unsupported/Eigen/EulerAngles +43 -0
  435. include/eigen3/unsupported/Eigen/FFT +419 -0
  436. include/eigen3/unsupported/Eigen/IterativeSolvers +51 -0
  437. include/eigen3/unsupported/Eigen/KroneckerProduct +36 -0
  438. include/eigen3/unsupported/Eigen/LevenbergMarquardt +49 -0
  439. include/eigen3/unsupported/Eigen/MPRealSupport +213 -0
  440. include/eigen3/unsupported/Eigen/MatrixFunctions +504 -0
  441. include/eigen3/unsupported/Eigen/MoreVectorization +24 -0
  442. include/eigen3/unsupported/Eigen/NonLinearOptimization +140 -0
  443. include/eigen3/unsupported/Eigen/NumericalDiff +56 -0
  444. include/eigen3/unsupported/Eigen/OpenGLSupport +322 -0
  445. include/eigen3/unsupported/Eigen/Polynomials +137 -0
  446. include/eigen3/unsupported/Eigen/Skyline +39 -0
  447. include/eigen3/unsupported/Eigen/SparseExtra +54 -0
  448. include/eigen3/unsupported/Eigen/SpecialFunctions +103 -0
  449. include/eigen3/unsupported/Eigen/Splines +35 -0
  450. include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +108 -0
  451. include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +730 -0
  452. include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +220 -0
  453. include/eigen3/unsupported/Eigen/src/BVH/BVAlgorithms.h +293 -0
  454. include/eigen3/unsupported/Eigen/src/BVH/KdBVH.h +223 -0
  455. include/eigen3/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +790 -0
  456. include/eigen3/unsupported/Eigen/src/EulerAngles/EulerAngles.h +355 -0
  457. include/eigen3/unsupported/Eigen/src/EulerAngles/EulerSystem.h +305 -0
  458. include/eigen3/unsupported/Eigen/src/FFT/ei_fftw_impl.h +261 -0
  459. include/eigen3/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +449 -0
  460. include/eigen3/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +187 -0
  461. include/eigen3/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +511 -0
  462. include/eigen3/unsupported/Eigen/src/IterativeSolvers/GMRES.h +335 -0
  463. include/eigen3/unsupported/Eigen/src/IterativeSolvers/IDRS.h +436 -0
  464. include/eigen3/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +90 -0
  465. include/eigen3/unsupported/Eigen/src/IterativeSolvers/IterationController.h +154 -0
  466. include/eigen3/unsupported/Eigen/src/IterativeSolvers/MINRES.h +267 -0
  467. include/eigen3/unsupported/Eigen/src/IterativeSolvers/Scaling.h +193 -0
  468. include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +305 -0
  469. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +84 -0
  470. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +202 -0
  471. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +160 -0
  472. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +188 -0
  473. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +396 -0
  474. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +441 -0
  475. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +569 -0
  476. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +373 -0
  477. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +705 -0
  478. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +368 -0
  479. include/eigen3/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +117 -0
  480. include/eigen3/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +95 -0
  481. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +601 -0
  482. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +657 -0
  483. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/chkder.h +66 -0
  484. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/covar.h +70 -0
  485. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +107 -0
  486. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +79 -0
  487. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +298 -0
  488. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +91 -0
  489. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +30 -0
  490. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +99 -0
  491. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +49 -0
  492. include/eigen3/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +130 -0
  493. include/eigen3/unsupported/Eigen/src/Polynomials/Companion.h +280 -0
  494. include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +428 -0
  495. include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +143 -0
  496. include/eigen3/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +352 -0
  497. include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrix.h +862 -0
  498. include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +212 -0
  499. include/eigen3/unsupported/Eigen/src/Skyline/SkylineProduct.h +295 -0
  500. include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h +259 -0
  501. include/eigen3/unsupported/Eigen/src/Skyline/SkylineUtil.h +89 -0
  502. include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +122 -0
  503. include/eigen3/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +1079 -0
  504. include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +404 -0
  505. include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h +282 -0
  506. include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +247 -0
  507. include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h +349 -0
  508. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +286 -0
  509. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +68 -0
  510. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +357 -0
  511. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +66 -0
  512. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +1959 -0
  513. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +118 -0
  514. include/eigen3/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +67 -0
  515. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +167 -0
  516. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +58 -0
  517. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +330 -0
  518. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +58 -0
  519. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +2045 -0
  520. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +79 -0
  521. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +46 -0
  522. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +16 -0
  523. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +46 -0
  524. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +16 -0
  525. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +369 -0
  526. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +54 -0
  527. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +34 -0
  528. include/eigen3/unsupported/Eigen/src/Splines/Spline.h +507 -0
  529. include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h +431 -0
  530. include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h +93 -0
  531. qilisdk/__init__.py +26 -0
  532. qilisdk/__init__.pyi +16 -0
  533. qilisdk/_logging.py +135 -0
  534. qilisdk/_optionals.py +137 -0
  535. qilisdk/analog/__init__.py +18 -0
  536. qilisdk/analog/exceptions.py +17 -0
  537. qilisdk/analog/hamiltonian.py +1068 -0
  538. qilisdk/analog/schedule.py +483 -0
  539. qilisdk/backends/__init__.py +46 -0
  540. qilisdk/backends/__init__.pyi +18 -0
  541. qilisdk/backends/backend.py +132 -0
  542. qilisdk/backends/cuda_backend.py +752 -0
  543. qilisdk/backends/qilisim.py +148 -0
  544. qilisdk/backends/qutip_backend.py +504 -0
  545. qilisdk/core/__init__.py +70 -0
  546. qilisdk/core/exceptions.py +29 -0
  547. qilisdk/core/interpolator.py +640 -0
  548. qilisdk/core/model.py +1012 -0
  549. qilisdk/core/parameterizable.py +133 -0
  550. qilisdk/core/qtensor.py +684 -0
  551. qilisdk/core/result.py +18 -0
  552. qilisdk/core/types.py +49 -0
  553. qilisdk/core/variables.py +2035 -0
  554. qilisdk/cost_functions/__init__.py +18 -0
  555. qilisdk/cost_functions/cost_function.py +77 -0
  556. qilisdk/cost_functions/model_cost_function.py +152 -0
  557. qilisdk/cost_functions/observable_cost_function.py +112 -0
  558. qilisdk/digital/__init__.py +67 -0
  559. qilisdk/digital/ansatz.py +382 -0
  560. qilisdk/digital/circuit.py +371 -0
  561. qilisdk/digital/circuit_transpiler.py +46 -0
  562. qilisdk/digital/circuit_transpiler_passes/__init__.py +18 -0
  563. qilisdk/digital/circuit_transpiler_passes/circuit_transpiler_pass.py +36 -0
  564. qilisdk/digital/circuit_transpiler_passes/decompose_multi_controlled_gates_pass.py +220 -0
  565. qilisdk/digital/circuit_transpiler_passes/numeric_helpers.py +82 -0
  566. qilisdk/digital/exceptions.py +37 -0
  567. qilisdk/digital/gates.py +1308 -0
  568. qilisdk/experiments/__init__.py +36 -0
  569. qilisdk/experiments/experiment_functional.py +212 -0
  570. qilisdk/experiments/experiment_result.py +247 -0
  571. qilisdk/functionals/__init__.py +29 -0
  572. qilisdk/functionals/functional.py +39 -0
  573. qilisdk/functionals/functional_result.py +18 -0
  574. qilisdk/functionals/sampling.py +89 -0
  575. qilisdk/functionals/sampling_result.py +92 -0
  576. qilisdk/functionals/time_evolution.py +111 -0
  577. qilisdk/functionals/time_evolution_result.py +91 -0
  578. qilisdk/functionals/variational_program.py +138 -0
  579. qilisdk/functionals/variational_program_result.py +69 -0
  580. qilisdk/logging_config.yaml +16 -0
  581. qilisdk/noise/__init__.py +56 -0
  582. qilisdk/noise/amplitude_damping.py +71 -0
  583. qilisdk/noise/bit_flip.py +45 -0
  584. qilisdk/noise/dephasing.py +69 -0
  585. qilisdk/noise/depolarizing.py +44 -0
  586. qilisdk/noise/gaussian_perturbation.py +69 -0
  587. qilisdk/noise/noise.py +20 -0
  588. qilisdk/noise/noise_abc.py +31 -0
  589. qilisdk/noise/noise_config.py +77 -0
  590. qilisdk/noise/noise_model.py +259 -0
  591. qilisdk/noise/offset_perturbation.py +39 -0
  592. qilisdk/noise/parameter_perturbation.py +45 -0
  593. qilisdk/noise/pauli_channel.py +115 -0
  594. qilisdk/noise/phase_flip.py +45 -0
  595. qilisdk/noise/protocols.py +107 -0
  596. qilisdk/noise/readout_assignment.py +60 -0
  597. qilisdk/noise/representations.py +149 -0
  598. qilisdk/noise/utils.py +90 -0
  599. qilisdk/optimizers/__init__.py +17 -0
  600. qilisdk/optimizers/optimizer.py +39 -0
  601. qilisdk/optimizers/optimizer_result.py +101 -0
  602. qilisdk/optimizers/scipy_optimizer.py +118 -0
  603. qilisdk/py.typed +0 -0
  604. qilisdk/settings.py +103 -0
  605. qilisdk/speqtrum/__init__.py +41 -0
  606. qilisdk/speqtrum/__init__.pyi +18 -0
  607. qilisdk/speqtrum/keyring.py +58 -0
  608. qilisdk/speqtrum/speqtrum.py +817 -0
  609. qilisdk/speqtrum/speqtrum_models.py +560 -0
  610. qilisdk/utils/__init__.py +13 -0
  611. qilisdk/utils/openfermion/__init__.py +38 -0
  612. qilisdk/utils/openfermion/__init__.pyi +17 -0
  613. qilisdk/utils/openfermion/openfermion.py +45 -0
  614. qilisdk/utils/openqasm2.py +215 -0
  615. qilisdk/utils/serialization.py +128 -0
  616. qilisdk/utils/trotterization/__init__.py +18 -0
  617. qilisdk/utils/trotterization/trotterization.py +127 -0
  618. qilisdk/utils/visualization/PlusJakartaSans-SemiBold.ttf +0 -0
  619. qilisdk/utils/visualization/__init__.py +24 -0
  620. qilisdk/utils/visualization/circuit_renderers.py +781 -0
  621. qilisdk/utils/visualization/schedule_renderers.py +175 -0
  622. qilisdk/utils/visualization/style.py +154 -0
  623. qilisdk/utils/visualization/themes.py +76 -0
  624. qilisdk/yaml.py +260 -0
  625. qilisdk-0.1.8.dist-info/METADATA +657 -0
  626. qilisdk-0.1.8.dist-info/RECORD +633 -0
  627. qilisdk-0.1.8.dist-info/WHEEL +5 -0
  628. qilisdk-0.1.8.dist-info/licenses/LICENCE +201 -0
  629. qilisim_module.cp313-win_amd64.pyd +0 -0
  630. share/eigen3/cmake/Eigen3Config.cmake +37 -0
  631. share/eigen3/cmake/Eigen3ConfigVersion.cmake +65 -0
  632. share/eigen3/cmake/Eigen3Targets.cmake +106 -0
  633. share/eigen3/cmake/UseEigen3.cmake +6 -0
@@ -0,0 +1,781 @@
1
+ # Copyright 2025 Qilimanjaro Quantum Tech
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from __future__ import annotations
16
+
17
+ from fractions import Fraction
18
+ from typing import TYPE_CHECKING, Final, Iterable
19
+
20
+ import matplotlib.pyplot as plt
21
+ import numpy as np
22
+ from matplotlib.figure import Figure
23
+ from matplotlib.patches import Arc, Circle, FancyArrow, FancyBboxPatch
24
+
25
+ from qilisdk.digital.gates import Controlled, Gate, M, X
26
+ from qilisdk.utils.visualization.style import CircuitStyle
27
+
28
+ if TYPE_CHECKING:
29
+ from matplotlib.axes import Axes
30
+
31
+ from qilisdk.digital import Circuit
32
+
33
+ ###############################################################################
34
+ # Matplotlib implementation
35
+ ###############################################################################
36
+
37
+
38
+ class MatplotlibCircuitRenderer:
39
+ """Render a :class:`~qilisdk.digital.Circuit` using *matplotlib*."""
40
+
41
+ # Z-order groups -------------------------------------------------------
42
+ _Z: Final = {
43
+ "wire": 1,
44
+ "wire_label": 1,
45
+ "gate": 3,
46
+ "node": 3,
47
+ "bridge": 2,
48
+ "connector": 4,
49
+ "gate_label": 4,
50
+ }
51
+
52
+ # ------------------------------------------------------------------
53
+ # Construction
54
+ # ------------------------------------------------------------------
55
+
56
+ def __init__(self, circuit: Circuit, ax: Axes | None = None, *, style: CircuitStyle = CircuitStyle()) -> None:
57
+ self.circuit = circuit
58
+ self.style = style
59
+ self._ax = ax or self._make_axes(style.dpi)
60
+ self._end_measure_qubits: set[int] = set()
61
+ self._wires = circuit.nqubits
62
+ # *layer_widths[w][l]* - width (inches) of layer *l* on wire *w*
63
+ self._layer_widths: dict[int, list[float]] = {w: [] for w in range(circuit.nqubits)}
64
+
65
+ @property
66
+ def axes(self) -> Axes:
67
+ return self._ax
68
+
69
+ def plot(self) -> None:
70
+ """
71
+ Render the circuit on the current axes and show the figure.
72
+
73
+ Traverses the circuit gates once, placing and drawing each element,
74
+ deferring final-column measurements as needed, draws wires and finalizes
75
+ the figure.
76
+ """
77
+ self._generate_layer_gate_mapping()
78
+ self._draw_wire_labels()
79
+
80
+ # ------------------------------------------------------------------
81
+ # 1. compute last-gate index for each qubit ------------------------
82
+ # ------------------------------------------------------------------
83
+ # done elswere
84
+
85
+ # ------------------------------------------------------------------
86
+ # 2. iterate through gates, drawing or deferring measurements -----
87
+ # ------------------------------------------------------------------
88
+ deferred_qubits: set[int] = set()
89
+ self._max_layer_width: list[float] = [self.style.start_pad]
90
+ for layer in self._layer_gate_mapping:
91
+ for _, gate in self._layer_gate_mapping[layer].items():
92
+ if isinstance(gate, M):
93
+ inline_qubits: list[int] = []
94
+ for q in gate.target_qubits:
95
+ if self.last_idx.get(q) == layer:
96
+ deferred_qubits.add(q)
97
+ self._end_measure_qubits.add(q)
98
+ else:
99
+ inline_qubits.append(q)
100
+ if inline_qubits:
101
+ self._draw_inline_measure(inline_qubits, layer=layer)
102
+ continue
103
+
104
+ if isinstance(gate, Controlled):
105
+ self._draw_controlled_gate(gate, layer=layer)
106
+ continue
107
+
108
+ if gate.name == "SWAP":
109
+ self._draw_swap_gate(list(gate.target_qubits or []), layer=layer)
110
+ continue
111
+
112
+ # Targets-only (single or multi-qubit) box
113
+ self._draw_targets_gate(
114
+ label=self._gate_label(gate), targets=list(gate.target_qubits or []), layer=layer
115
+ )
116
+ maxi = max(
117
+ [
118
+ 0.0,
119
+ *(
120
+ self._layer_widths[wire][layer]
121
+ for wire in range(self._wires)
122
+ if len(self._layer_widths[wire]) - 1 >= layer
123
+ ),
124
+ ]
125
+ )
126
+ self._max_layer_width.append(maxi)
127
+
128
+ # ------------------------------------------------------------------
129
+ # 3. draw any deferred (final-column) measurements -----------------
130
+ # ------------------------------------------------------------------
131
+ if deferred_qubits:
132
+ self._draw_concurrent_measures(sorted(deferred_qubits))
133
+
134
+ # ------------------------------------------------------------------
135
+ # final touches -----------------------------------------------------
136
+ # ------------------------------------------------------------------
137
+ self._draw_wires()
138
+ self._finalise_figure()
139
+ # plt.tight_layout()
140
+ plt.show()
141
+
142
+ def save(self, filename: str) -> None: # thin wrapper
143
+ """Save current figure to disk.
144
+
145
+ Args:
146
+ filename: Path to save the figure (e.g., 'circuit.png').
147
+ """
148
+ if isinstance(self.axes.figure, Figure):
149
+ self.axes.figure.savefig(filename, bbox_inches="tight")
150
+
151
+ # ------------------------------------------------------------------
152
+ # Low-level drawing helpers (private)
153
+ # ------------------------------------------------------------------
154
+ def _generate_layer_gate_mapping(self) -> None:
155
+ self._layer_gate_mapping: dict[int, dict[int, Gate]] = {}
156
+ gate_mapping: dict[int, list[Gate]] = {}
157
+ for qubit in range(self.circuit.nqubits):
158
+ gate_mapping[qubit] = []
159
+ for gate in self.circuit.gates:
160
+ qubits = gate.qubits
161
+ if len(qubits) == 1:
162
+ gate_mapping[qubits[0]].append(gate)
163
+ elif len(qubits) > 1:
164
+ if self.style.layout == "compact":
165
+ con_qubits = qubits
166
+ elif self.style.layout == "normal":
167
+ con_qubits = tuple(range(min(qubits), max(qubits) + 1))
168
+ for qubit in con_qubits:
169
+ gate_mapping[qubit].append(gate)
170
+
171
+ layer: int = 0
172
+ waiting_list: dict[int, Gate] = {}
173
+ completed = [False] * self.circuit.nqubits
174
+ for q, l in gate_mapping.items():
175
+ completed[q] = not bool(l)
176
+ ignore_q: list[int] = []
177
+ self.last_idx: dict[int, int] = {}
178
+ while not all(completed):
179
+ if layer not in self._layer_gate_mapping:
180
+ self._layer_gate_mapping[layer] = {}
181
+ for q in range(self.circuit.nqubits):
182
+ if q in ignore_q:
183
+ ignore_q.remove(q)
184
+ continue
185
+ if len(gate_mapping[q]) == 0 and not completed[q]:
186
+ completed[q] = True
187
+ self.last_idx[q] = layer - 1
188
+ if q in waiting_list or completed[q]:
189
+ continue
190
+ gate = gate_mapping[q][0]
191
+ if gate.nqubits == 1:
192
+ self._layer_gate_mapping[layer][q] = gate
193
+ gate_mapping[q].pop(0)
194
+ if gate.nqubits > 1:
195
+ waiting_list[q] = gate
196
+ qubits = gate.qubits
197
+ if self.style.layout == "compact":
198
+ con_qubits = qubits
199
+ elif self.style.layout == "normal":
200
+ con_qubits = tuple(range(min(qubits), max(qubits) + 1))
201
+ if all(key in waiting_list for key in con_qubits) and all(
202
+ waiting_list[qr] == gate for qr in con_qubits
203
+ ):
204
+ self._layer_gate_mapping[layer][q] = gate
205
+ for c_qubit in con_qubits:
206
+ gate_mapping[c_qubit].pop(0)
207
+ del waiting_list[c_qubit]
208
+
209
+ if self.style.layout == "compact":
210
+ for m_qubit in range(min(qubits), q):
211
+ if m_qubit not in qubits and m_qubit in self._layer_gate_mapping[layer]:
212
+ ignore_q.append(m_qubit)
213
+ if layer + 1 not in self._layer_gate_mapping:
214
+ self._layer_gate_mapping[layer + 1] = {}
215
+ self._layer_gate_mapping[layer + 1][m_qubit] = self._layer_gate_mapping[layer][
216
+ m_qubit
217
+ ]
218
+ del self._layer_gate_mapping[layer][m_qubit]
219
+ ignore_q += [*range(q + 1, max(qubits) + 1)]
220
+ if len(gate_mapping[q]) == 0 and not completed[q]:
221
+ completed[q] = True
222
+ self.last_idx[q] = layer
223
+ layer += 1
224
+
225
+ def _xpos(self, layer: int) -> float:
226
+ """
227
+ Compute the left x of a given layer.
228
+
229
+ With align_layer=True, this ignores *wires* and aligns across all wires.
230
+
231
+ Args:
232
+ layer: Column index (0 = the initial label pad entry).
233
+
234
+ Returns:
235
+ The x-coordinate (inches) of the left edge of this column.
236
+ """
237
+ return sum(self._max_layer_width[: layer + 1])
238
+
239
+ def _reserve(self, width: float, wires: Iterable[int], layer: int) -> None:
240
+ """
241
+ Reserve width in a column for a set of wires.
242
+
243
+ Args:
244
+ width: Box width (inches), *excluding* left/right gate margins.
245
+ wires: Wires to update.
246
+ layer: Column index to reserve.
247
+ """
248
+ full_width = width + self.style.gate_margin * 2
249
+ for w in wires:
250
+ layers = self._layer_widths[w]
251
+ if len(layers) > layer:
252
+ layers[layer] = max(layers[layer], full_width)
253
+ else:
254
+ for _ in range(len(layers), layer):
255
+ layers.append(0.0)
256
+ layers.append(full_width)
257
+
258
+ def _place(self, wires: Iterable[int], layer: int, *, min_width: float = 0.0) -> float:
259
+ """
260
+ Choose a column and compute its left x for a set of wires.
261
+
262
+ This does *not* draw anything; it optionally reserves a minimal width
263
+ for the selected column to create the column on those wires.
264
+
265
+ Args:
266
+ wires: Wires that must participate in this column.
267
+ min_width: Optional minimal content width to reserve (inches).
268
+
269
+ Returns:
270
+ A tuple ``(x, layer, wires_sorted)``:
271
+ - x: Left x of the column (including left margin).
272
+ - layer: Column index.
273
+ - wires_sorted: Sorted unique wires used for placement.
274
+ """
275
+ wires = [*range(min(wires), max(wires) + 1)]
276
+ x = self._xpos(layer) + self.style.gate_margin
277
+ if min_width:
278
+ self._reserve(min_width, wires, layer)
279
+ return x
280
+
281
+ def _text_width(self, text: str) -> float:
282
+ """
283
+ Measure rendered text width in inches for current DPI/style.
284
+
285
+ Args:
286
+ text: Text to measure (mathtext is supported).
287
+
288
+ Returns:
289
+ The rendered width in inches.
290
+ """
291
+
292
+ t = plt.Text(
293
+ 0,
294
+ 0,
295
+ text,
296
+ fontproperties=self.style.font,
297
+ )
298
+ self.axes.add_artist(t)
299
+ renderer = self.axes.figure.canvas.get_renderer() # ty:ignore[unresolved-attribute]
300
+ width = t.get_window_extent(renderer=renderer).width / self.style.dpi
301
+ t.remove()
302
+ return width
303
+
304
+ # Basic primitives ----------------------------------------------------
305
+
306
+ def _draw_targets_gate(
307
+ self,
308
+ *,
309
+ label: str,
310
+ targets: list[int] | None,
311
+ x: float | None = None,
312
+ layer: int | None = None,
313
+ color: str | None = None,
314
+ ) -> tuple[float, int, float]:
315
+ """
316
+ Draw a box gate that touches only *targets* (no controls).
317
+
318
+ If ``x``/``layer`` are not provided, the earliest column that all
319
+ targets can share is used.
320
+
321
+ Args:
322
+ label: Text label to show inside the box.
323
+ targets: Target qubit indices. If None, defaults to all wires.
324
+ x: Optional left x of the column (from a prior `_place`).
325
+ layer: Optional column index (from a prior `_place`).
326
+ color: Optional box fill/edge color.
327
+
328
+ Returns:
329
+ A tuple ``(x, layer, width)`` where:
330
+ - x: Left x used for this column.
331
+ - layer: Column index used.
332
+ - width: Content width (inches) of the box.
333
+ """
334
+ targets = list(targets or range(self._wires))
335
+ t_sorted = sorted(targets)
336
+ a, b = t_sorted[0], t_sorted[-1]
337
+
338
+ # Decide layer/x if not given (no-controls: only target wires matter)
339
+ if layer is None or x is None:
340
+ layer = max(len(self._layer_widths[w]) for w in t_sorted)
341
+ x = self._xpos(layer) + self.style.gate_margin
342
+
343
+ # Measure and reserve the full width at the given x/layer
344
+ width = max(self._text_width(label) + self.style.gate_pad * 2, self.style.min_gate_w)
345
+ self._reserve(width, t_sorted, layer)
346
+
347
+ # Geometry
348
+ y_a = self._ypos(a, n_qubits=self._wires, sep=self.style.wire_sep)
349
+ y_b = self._ypos(b, n_qubits=self._wires, sep=self.style.wire_sep)
350
+ y_bottom = min(y_a, y_b) - self.style.min_gate_h / 2
351
+ height = abs(y_b - y_a) + self.style.min_gate_h
352
+ y_center = (y_a + y_b) / 2.0
353
+
354
+ gate_color = color or self.style.theme.primary
355
+
356
+ # Box
357
+ self.axes.add_patch(
358
+ FancyBboxPatch(
359
+ (x, y_bottom),
360
+ width,
361
+ height,
362
+ boxstyle=self.style.bulge,
363
+ mutation_scale=0.3,
364
+ facecolor=gate_color,
365
+ edgecolor=gate_color,
366
+ zorder=self._Z["gate"],
367
+ )
368
+ )
369
+ # Label
370
+ self.axes.text(
371
+ x + width / 2,
372
+ y_center,
373
+ label,
374
+ ha="center",
375
+ va="center",
376
+ color=self.style.theme.on_primary,
377
+ fontproperties=self.style.font,
378
+ zorder=self._Z["gate_label"],
379
+ )
380
+
381
+ # Visual connectors for multi-targets
382
+ if len(t_sorted) > 1:
383
+ for t in t_sorted:
384
+ y_t = self._ypos(t, n_qubits=self._wires, sep=self.style.wire_sep)
385
+ self.axes.add_patch(
386
+ Circle(
387
+ (x + self.style.connector_r, y_t),
388
+ self.style.connector_r,
389
+ color=self.style.theme.background,
390
+ zorder=self._Z["connector"],
391
+ )
392
+ )
393
+ self.axes.add_patch(
394
+ Circle(
395
+ (x + width - self.style.connector_r, y_t),
396
+ self.style.connector_r,
397
+ color=self.style.theme.background,
398
+ zorder=self._Z["connector"],
399
+ )
400
+ )
401
+
402
+ return x, layer, width
403
+
404
+ def _draw_control_dot(self, wire: int, x: float) -> None:
405
+ """
406
+ Draw a filled control dot at the given wire/x.
407
+
408
+ Args:
409
+ wire: Qubit index.
410
+ x: Column anchor x coordinate.
411
+ """
412
+ y = self._ypos(wire, n_qubits=self._wires, sep=self.style.wire_sep)
413
+ self.axes.add_patch(Circle((x, y), self.style.control_r, color=self.style.theme.accent, zorder=self._Z["node"]))
414
+
415
+ def _draw_plus_sign(self, wire: int, x: float) -> None:
416
+ """
417
+ Draw a target ⊕ marker at the given wire/x.
418
+
419
+ Args:
420
+ wire: Qubit index.
421
+ x: Column anchor x coordinate.
422
+ """
423
+ y = self._ypos(wire, n_qubits=self._wires, sep=self.style.wire_sep)
424
+ self.axes.add_patch(Circle((x, y), self.style.target_r, color=self.style.theme.accent, zorder=self._Z["node"]))
425
+ self.axes.add_line(
426
+ plt.Line2D(
427
+ (x, x),
428
+ (y - self.style.target_r / 2, y + self.style.target_r / 2),
429
+ lw=1.5,
430
+ color=self.style.theme.background,
431
+ zorder=self._Z["gate_label"],
432
+ )
433
+ )
434
+ self.axes.add_line(
435
+ plt.Line2D(
436
+ (x - self.style.target_r / 2, x + self.style.target_r / 2),
437
+ (y, y),
438
+ lw=1.5,
439
+ color=self.style.theme.background,
440
+ zorder=self._Z["gate_label"],
441
+ )
442
+ )
443
+
444
+ def _draw_bridge(self, wire_a: int, wire_b: int, x: float) -> None:
445
+ """
446
+ Draw a vertical bridge line between two wires at x.
447
+
448
+ Args:
449
+ wire_a: First wire.
450
+ wire_b: Second wire.
451
+ x: Column x coordinate where the bridge is drawn.
452
+ """
453
+ y1, y2 = (
454
+ self._ypos(wire_a, n_qubits=self._wires, sep=self.style.wire_sep),
455
+ self._ypos(wire_b, n_qubits=self._wires, sep=self.style.wire_sep),
456
+ )
457
+ self.axes.add_line(plt.Line2D([x, x], [y1, y2], color=self.style.theme.accent, zorder=self._Z["bridge"]))
458
+
459
+ def _draw_swap_mark(self, wire: int, x: float) -> None:
460
+ """
461
+ Draw one X of a SWAP marker on a given wire at x.
462
+
463
+ Args:
464
+ wire: Qubit index.
465
+ x: Column anchor x coordinate.
466
+ """
467
+ y = self._ypos(wire, n_qubits=self._wires, sep=self.style.wire_sep)
468
+ offset = self.style.min_gate_w / 3
469
+ color = self.style.theme.accent
470
+ for xs, ys in (
471
+ ([x + offset, x - offset], [y + self.style.min_gate_h / 4, y - self.style.min_gate_h / 4]),
472
+ ([x - offset, x + offset], [y + self.style.min_gate_h / 4, y - self.style.min_gate_h / 4]),
473
+ ):
474
+ self.axes.add_line(plt.Line2D(xs, ys, color=color, linewidth=2, zorder=self._Z["gate"]))
475
+
476
+ def _draw_swap_gate(
477
+ self,
478
+ targets: list[int],
479
+ layer: int,
480
+ *,
481
+ x: float | None = None,
482
+ ) -> float:
483
+ """
484
+ Draw a SWAP between two target wires.
485
+
486
+ Args:
487
+ targets: Exactly two wires to swap.
488
+ x: Optional left x (from `_place`).
489
+ layer: Optional column index (from `_place`).
490
+
491
+ Returns:
492
+ The anchor x within the column where the swap glyph is centered.
493
+ """
494
+ t_sorted = sorted(targets)
495
+
496
+ if x is None:
497
+ x = self._place(t_sorted, layer, min_width=self.style.target_r * 2)
498
+ else:
499
+ self._reserve(self.style.target_r * 2, t_sorted, layer)
500
+
501
+ x_anchor = x + self.style.gate_pad
502
+
503
+ for t in t_sorted:
504
+ self._draw_swap_mark(t, x_anchor)
505
+ # vertical bridge between the two targets
506
+ self._draw_bridge(t_sorted[0], t_sorted[1], x_anchor)
507
+ return x_anchor
508
+
509
+ def _draw_controlled_gate(self, gate: Controlled, layer: int) -> None:
510
+ """
511
+ Draw a controlled gate (controls + targets).
512
+
513
+ Handles:
514
+ - MCX family as control dots + ⊕ (no box),
515
+ - Controlled-SWAP by reusing swap glyphs,
516
+ - Generic controlled gates as a box over targets with control stems.
517
+
518
+ Args:
519
+ gate: Controlled gate instance.
520
+ """
521
+ targets = list(gate.target_qubits or range(self._wires))
522
+ controls = list(gate.control_qubits or [])
523
+ all_wires = sorted(set(targets + controls))
524
+
525
+ # Place a column shared by all involved wires; reserve minimal node width
526
+ x = self._place(all_wires, layer, min_width=self.style.target_r * 2)
527
+
528
+ # Controlled-X family (CNOT / multi-controlled X): target glyph, not a box
529
+ if gate.is_modified_from(X):
530
+ x_anchor = x + self.style.gate_pad
531
+ for c in controls:
532
+ self._draw_control_dot(c, x_anchor)
533
+ self._draw_bridge(c, targets[0], x_anchor)
534
+ self._draw_plus_sign(targets[0], x_anchor)
535
+ return
536
+
537
+ # Controlled SWAP (Fredkin): reuse the SWAP primitive, then add controls
538
+ if getattr(gate.basic_gate, "name", "") == "SWAP":
539
+ x_anchor = self._draw_swap_gate(targets, x=x, layer=layer)
540
+ for c in controls:
541
+ self._draw_control_dot(c, x_anchor)
542
+ self._draw_bridge(c, targets[0], x_anchor)
543
+ return
544
+
545
+ # Generic controlled gate: draw the target box at this same column,
546
+ # then widen control wires for that layer and add stems to the center.
547
+ label = self._gate_label(gate.basic_gate)
548
+ gate_color = self.style.theme.accent
549
+ x_box, layer_box, width = self._draw_targets_gate(
550
+ label=label, targets=targets, x=x, layer=layer, color=gate_color
551
+ )
552
+
553
+ # Ensure control wires also reserve the same width for this layer
554
+ extra_controls = [c for c in controls if c not in targets]
555
+ if extra_controls:
556
+ self._reserve(width, extra_controls, layer_box)
557
+
558
+ x_center = x_box + width / 2.0
559
+ for c in controls:
560
+ self._draw_control_dot(c, x_center)
561
+ self._draw_bridge(c, targets[0], x_center)
562
+
563
+ # Measurements --------------------------------------------------------
564
+
565
+ def _draw_inline_measure(self, qubits: list[int], layer: int) -> None:
566
+ """
567
+ Draw measurement boxes interleaved with gates (same column).
568
+
569
+ Args:
570
+ qubits: Wires to measure in this column.
571
+ """
572
+ x = self._xpos(layer) + self.style.gate_margin
573
+ self._reserve(self.style.min_gate_w, qubits, layer)
574
+ for q in qubits:
575
+ self._draw_measure_symbol(q, x)
576
+
577
+ def _draw_concurrent_measures(self, qubits: list[int]) -> None:
578
+ """
579
+ Draw a final column of measurements (one shared column).
580
+
581
+ Args:
582
+ qubits: Wires to measure concurrently.
583
+ """
584
+ layer = max(len(v) for v in self._layer_widths.values())
585
+ x = self._xpos(layer) + self.style.gate_margin
586
+ self._max_layer_width.append(self.style.min_gate_w)
587
+ for q in qubits:
588
+ self._draw_measure_symbol(q, x)
589
+
590
+ def _draw_measure_symbol(self, wire: int, x: float) -> None:
591
+ """
592
+ Draw a measurement glyph at the given wire/x.
593
+
594
+ Args:
595
+ wire: Qubit index.
596
+ x: Shared left x for this measurement column.
597
+ """
598
+ y = self._ypos(wire, n_qubits=self._wires, sep=self.style.wire_sep)
599
+ self.axes.add_patch(
600
+ FancyBboxPatch(
601
+ (x, y - self.style.min_gate_h / 2),
602
+ self.style.min_gate_w,
603
+ self.style.min_gate_h,
604
+ boxstyle=self.style.bulge,
605
+ mutation_scale=0.3,
606
+ facecolor=self.style.theme.background,
607
+ edgecolor=self.style.theme.on_background,
608
+ linewidth=1.25,
609
+ zorder=self._Z["gate"],
610
+ )
611
+ )
612
+ self.axes.add_patch(
613
+ Arc(
614
+ (x + self.style.min_gate_w / 2, y - self.style.min_gate_h / 2),
615
+ self.style.min_gate_w * 1.5,
616
+ self.style.min_gate_h,
617
+ theta1=0,
618
+ theta2=180,
619
+ linewidth=1.25,
620
+ color=self.style.theme.on_background,
621
+ zorder=self._Z["gate_label"],
622
+ )
623
+ )
624
+ self.axes.add_patch(
625
+ FancyArrow(
626
+ x + self.style.min_gate_w / 2,
627
+ y - self.style.min_gate_h / 2,
628
+ dx=self.style.min_gate_w * 0.7,
629
+ dy=self.style.min_gate_h * 0.7,
630
+ length_includes_head=True,
631
+ width=0,
632
+ color=self.style.theme.on_background,
633
+ linewidth=1.25,
634
+ zorder=self._Z["gate_label"],
635
+ )
636
+ )
637
+
638
+ # Final decoration ----------------------------------------------------
639
+
640
+ def _draw_wires(self) -> None:
641
+ """
642
+ Draw horizontal wires up to the last occupied x (plus tail).
643
+
644
+ For wires whose last operation is a measurement, the wire stops at the
645
+ measurement edge with no right-hand tail.
646
+ """
647
+ # how far the drawing for this wire actually goes
648
+ x_end = sum(self._max_layer_width)
649
+ for q in range(self._wires):
650
+ y = self._ypos(q, n_qubits=self._wires, sep=self.style.wire_sep)
651
+ # keep the tail only for wires that KEEP going after their last gate
652
+ self.axes.add_line(
653
+ plt.Line2D([0, x_end], [y, y], lw=1, color=self.style.theme.surface_muted, zorder=self._Z["wire"])
654
+ )
655
+
656
+ def _draw_wire_labels(self) -> None:
657
+ """Draw wire labels to the left of the drawing."""
658
+ labels = self.style.wire_label or [rf"$q_{{{i}}}$" for i in range(self._wires)]
659
+ widths = [self._text_width(lbl) for lbl in labels]
660
+ self._max_label_width = max(widths)
661
+
662
+ for i, label in enumerate(labels):
663
+ y = self._ypos(i, n_qubits=self._wires, sep=self.style.wire_sep)
664
+ self.axes.text(
665
+ -self.style.label_pad,
666
+ y,
667
+ label,
668
+ ha="right",
669
+ va="center",
670
+ fontproperties=self.style.font,
671
+ color=self.style.theme.on_background,
672
+ zorder=self._Z["wire_label"],
673
+ )
674
+
675
+ def _finalise_figure(self) -> None:
676
+ """Finalize axes limits, aspect, background, and title."""
677
+ fig = self.axes.figure
678
+ fig.set_facecolor(self.style.theme.background)
679
+
680
+ total_length = sum(self._max_layer_width)
681
+ x_end = self.style.padding + total_length
682
+
683
+ y_end = self.style.padding + (self._wires - 1) * self.style.wire_sep
684
+
685
+ self.axes.set_xlim(
686
+ -self.style.padding - self._max_label_width - self.style.label_pad,
687
+ x_end,
688
+ )
689
+ self.axes.set_ylim(-self.style.padding, y_end)
690
+
691
+ if self.style.title:
692
+ self.axes.set_title(
693
+ self.style.title,
694
+ pad=10,
695
+ color=self.style.theme.surface_muted,
696
+ fontdict={"fontsize": self.style.fontsize},
697
+ )
698
+
699
+ # In IPython keep figure square so equal aspect ratio does not shrink
700
+ try:
701
+ get_ipython() # type: ignore
702
+ size = max(self.axes.get_xlim()[1] - self.axes.get_xlim()[0], y_end + self.style.padding)
703
+ fig.set_size_inches(size, size, forward=True) # ty:ignore[possibly-missing-attribute]
704
+ except NameError:
705
+ fig.set_size_inches( # ty:ignore[possibly-missing-attribute]
706
+ self.axes.get_xlim()[1] - self.axes.get_xlim()[0], y_end + self.style.padding, forward=True
707
+ )
708
+
709
+ self.axes.set_aspect("equal", adjustable="box")
710
+ self.axes.axis("off")
711
+
712
+ # ------------------------------------------------------------------
713
+ # Helpers - human-readable gate labels & π-fractions
714
+ # ------------------------------------------------------------------
715
+
716
+ @staticmethod
717
+ def _ypos(index: int, *, n_qubits: int, sep: float) -> float:
718
+ return (n_qubits - 1 - index) * sep
719
+
720
+ @staticmethod
721
+ def _pi_fraction(value: float, /, tol: float = 1e-2) -> str:
722
+ """
723
+ Format a float as a π-fraction (mathtext) when close to a rational.
724
+
725
+ Args:
726
+ value: Angle value (radians).
727
+ tol: Tolerance for accepting the rational approximation.
728
+
729
+ Returns:
730
+ Mathtext string like ``"\\pi/5"`` or fallback decimal.
731
+ """
732
+ coeff = value / np.pi
733
+ frac = Fraction(coeff).limit_denominator(32)
734
+ n, d = frac.numerator, frac.denominator
735
+ if abs(frac - coeff) < tol:
736
+ if n == 0:
737
+ return "0"
738
+ if d == 1:
739
+ return r"\pi" if n == 1 else rf"{n}\pi"
740
+ return rf"\pi/{d}" if n == 1 else rf"{n}\pi/{d}"
741
+ return f"{value:.2f}"
742
+
743
+ @staticmethod
744
+ def _with_superscript_dagger(label: str) -> str:
745
+ # Convert trailing dagger to math superscript, e.g. "RX†" -> r"$\mathrm{RX}^{\dagger}$"
746
+ if label.endswith("†"):
747
+ base = label[:-1]
748
+ return rf"$\mathrm{{{base}}}^{{\dagger}}$"
749
+ return label
750
+
751
+ @staticmethod
752
+ def _gate_label(gate: Gate) -> str:
753
+ """Build a display label for a (possibly parameterized) gate.
754
+
755
+ Args:
756
+ gate: Gate object.
757
+
758
+ Returns:
759
+ Label text. Parameterized gates get ``name ( $args$ )``.
760
+ """
761
+ name = MatplotlibCircuitRenderer._with_superscript_dagger(gate.name)
762
+ if gate.is_parameterized and gate.get_parameter_values():
763
+ parameters = ", ".join(
764
+ MatplotlibCircuitRenderer._pi_fraction(value) for value in gate.get_parameter_values()
765
+ )
766
+ return rf"{name} (${parameters}$)"
767
+ return name
768
+
769
+ @staticmethod
770
+ def _make_axes(dpi: int) -> Axes:
771
+ """
772
+ Create a new figure and axes with the given DPI.
773
+
774
+ Args:
775
+ dpi (int): The DPI of the figure
776
+
777
+ Returns:
778
+ A newly created Matplotlib Axes.
779
+ """
780
+ _, ax = plt.subplots(dpi=dpi, constrained_layout=True)
781
+ return ax