qilisdk 0.1.8__cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.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 (635) 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 +635 -0
  627. qilisdk-0.1.8.dist-info/WHEEL +6 -0
  628. qilisdk-0.1.8.dist-info/licenses/LICENCE +201 -0
  629. qilisdk.libs/libgomp-65f46eca.so.1.0.0 +0 -0
  630. qilisim_module.cpython-312-i386-linux-gnu.so +0 -0
  631. share/eigen3/cmake/Eigen3Config.cmake +37 -0
  632. share/eigen3/cmake/Eigen3ConfigVersion.cmake +65 -0
  633. share/eigen3/cmake/Eigen3Targets.cmake +106 -0
  634. share/eigen3/cmake/UseEigen3.cmake +6 -0
  635. share/pkgconfig/eigen3.pc +9 -0
@@ -0,0 +1,148 @@
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
+ from __future__ import annotations
15
+
16
+ import os
17
+ import secrets
18
+ from typing import TYPE_CHECKING
19
+
20
+ from loguru import logger
21
+ from qilisim_module import QiliSimCpp # ty:ignore[unresolved-import]
22
+
23
+ from qilisdk.backends.backend import Backend
24
+
25
+ if TYPE_CHECKING:
26
+ from qilisdk.core import QTensor
27
+ from qilisdk.functionals.sampling import Sampling
28
+ from qilisdk.functionals.sampling_result import SamplingResult
29
+ from qilisdk.functionals.time_evolution import TimeEvolution
30
+ from qilisdk.functionals.time_evolution_result import TimeEvolutionResult
31
+
32
+
33
+ class QiliSim(Backend):
34
+ """
35
+ Backend based that runs both digital-circuit sampling and analog
36
+ time-evolution experiments using a custom C++ simulator.
37
+ """
38
+
39
+ def __init__(
40
+ self,
41
+ evolution_method: str = "integrate",
42
+ arnoldi_dim: int = 10,
43
+ num_arnoldi_substeps: int = 1,
44
+ num_integrate_substeps: int = 2,
45
+ monte_carlo: bool = False,
46
+ num_monte_carlo_trajectories: int = 100,
47
+ max_cache_size: int = 1000,
48
+ num_threads: int = 0,
49
+ seed: int | None = None,
50
+ atol: float = 1e-12,
51
+ ) -> None:
52
+ """
53
+ Instantiate a new :class:`QiliSim` backend. This is a CPU-based simulator
54
+ implemented in C++, using pybind11 for bindings.
55
+
56
+ Args:
57
+ evolution_method (str): The solver method to use. Options are 'direct', 'arnoldi' and 'integrate'.
58
+ arnoldi_dim (int): The dimension of the Arnoldi subspace to use for the 'arnoldi' method.
59
+ num_arnoldi_substeps (int): The number of substeps to use when using the Arnoldi method.
60
+ num_integrate_substeps (int): The number of substeps to use when using the Integrate method.
61
+ monte_carlo (bool): Whether to use the Monte Carlo method for open systems.
62
+ num_monte_carlo_trajectories (int): The number of trajectories to use when using the Monte Carlo method.
63
+ max_cache_size (int): The maximum size of the internal cache for gate caching.
64
+ num_threads (int): The number of threads to use for parallel execution. If 0, uses all available cores.
65
+ seed (int | None): Seed for the random number generator. If None, a random seed is chosen.
66
+ atol (float): Absolute tolerance for numerical methods.
67
+
68
+ Raises:
69
+ ValueError: If any of the parameters are invalid.
70
+ """
71
+
72
+ # Sanity checks on params
73
+ # Note that these are also in the C++ code, so update there as well if changed here for consistency
74
+ if evolution_method not in {"direct", "arnoldi", "integrate"}:
75
+ raise ValueError(f"Unknown time evolution method: {evolution_method}")
76
+ if arnoldi_dim <= 0:
77
+ raise ValueError("arnoldi_dim must be a positive integer")
78
+ if num_arnoldi_substeps <= 0:
79
+ raise ValueError("num_arnoldi_substeps must be a positive integer")
80
+ if num_integrate_substeps <= 0:
81
+ raise ValueError("num_integrate_substeps must be a positive integer")
82
+ if num_monte_carlo_trajectories <= 0:
83
+ raise ValueError("num_monte_carlo_trajectories must be a positive integer")
84
+ if max_cache_size < 0:
85
+ raise ValueError("max_cache_size cannot be negative")
86
+ if atol <= 0:
87
+ raise ValueError("atol must be a positive float")
88
+
89
+ # Set number of threads if non-positive
90
+ if num_threads <= 0:
91
+ num_threads = os.cpu_count() or 1
92
+
93
+ # Set a random seed
94
+ if seed is None:
95
+ seed = secrets.randbelow(2**15)
96
+
97
+ # Initialize the backend and the class vars
98
+ super().__init__()
99
+ self.qili_sim = QiliSimCpp()
100
+ self._noise_model = None
101
+ self.solver_params = {
102
+ "evolution_method": evolution_method,
103
+ "arnoldi_dim": arnoldi_dim,
104
+ "num_arnoldi_substeps": num_arnoldi_substeps,
105
+ "num_integrate_substeps": num_integrate_substeps,
106
+ "monte_carlo": monte_carlo,
107
+ "num_monte_carlo_trajectories": num_monte_carlo_trajectories,
108
+ "max_cache_size": max_cache_size,
109
+ "num_threads": num_threads,
110
+ "seed": seed,
111
+ "atol": atol,
112
+ }
113
+
114
+ def _execute_sampling(self, functional: Sampling, initial_state: QTensor | None = None) -> SamplingResult:
115
+ """
116
+ Execute a quantum circuit and return the measurement results.
117
+
118
+ Args:
119
+ functional (Sampling): The Sampling function to execute.
120
+
121
+ Returns:
122
+ SamplingResult: A result object containing the measurement samples and computed probabilities.
123
+
124
+ """
125
+ logger.info("Executing Sampling with {} shots", functional.nshots)
126
+ result = self.qili_sim.execute_sampling(functional, self._noise_model, initial_state, self.solver_params)
127
+ logger.success("Sampling finished")
128
+ return result
129
+
130
+ def _execute_time_evolution(self, functional: TimeEvolution) -> TimeEvolutionResult:
131
+ """
132
+ Computes the time evolution under of an initial state under the given schedule.
133
+
134
+ Args:
135
+ functional (TimeEvolution): The TimeEvolution functional to execute.
136
+
137
+ Returns:
138
+ TimeEvolutionResult: The results of the evolution.
139
+ """
140
+
141
+ # Get the time steps
142
+ logger.info("Executing TimeEvolution (T={}, dt={})", functional.schedule.T, functional.schedule.dt)
143
+
144
+ # Execute the time evolution
145
+ result = self.qili_sim.execute_time_evolution(functional, self._noise_model, self.solver_params)
146
+
147
+ logger.success("TimeEvolution finished")
148
+ return result
@@ -0,0 +1,504 @@
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
+ from __future__ import annotations
15
+
16
+ from collections import Counter
17
+ from typing import TYPE_CHECKING, Callable, Type, TypeVar
18
+
19
+ import numpy as np
20
+ import qutip_qip.operations as QutipGates
21
+ from loguru import logger
22
+ from qutip import Qobj, basis, mesolve, qeye, tensor
23
+ from qutip_qip.circuit import CircuitSimulator, QubitCircuit
24
+ from qutip_qip.operations.gateclass import SingleQubitGate, is_qutip5
25
+
26
+ from qilisdk.analog.hamiltonian import Hamiltonian, PauliI, PauliOperator
27
+ from qilisdk.backends.backend import Backend
28
+ from qilisdk.core.qtensor import QTensor, tensor_prod
29
+ from qilisdk.digital import RX, RY, RZ, SWAP, U1, U2, U3, Circuit, H, I, M, S, T, X, Y, Z
30
+ from qilisdk.digital.circuit_transpiler_passes import DecomposeMultiControlledGatesPass
31
+ from qilisdk.digital.exceptions import UnsupportedGateError
32
+ from qilisdk.digital.gates import Adjoint, BasicGate, Controlled
33
+ from qilisdk.functionals.sampling_result import SamplingResult
34
+ from qilisdk.functionals.time_evolution_result import TimeEvolutionResult
35
+ from qilisdk.settings import get_settings
36
+
37
+ if TYPE_CHECKING:
38
+ from qilisdk.functionals.sampling import Sampling
39
+ from qilisdk.functionals.time_evolution import TimeEvolution
40
+
41
+
42
+ TBasicGate = TypeVar("TBasicGate", bound=BasicGate)
43
+ BasicGateHandlersMapping = dict[Type[TBasicGate], Callable[[QubitCircuit, TBasicGate, int], None]]
44
+
45
+ TPauliOperator = TypeVar("TPauliOperator", bound=PauliOperator)
46
+ PauliOperatorHandlersMapping = dict[Type[TPauliOperator], Callable[[TPauliOperator], Qobj]]
47
+
48
+
49
+ def _complex_dtype() -> np.dtype:
50
+ return get_settings().complex_precision.dtype
51
+
52
+
53
+ class QutipI(SingleQubitGate):
54
+ """
55
+ Single-qubit I gate.
56
+
57
+ Examples
58
+ --------
59
+ >>> from qutip_qip.operations import X
60
+ >>> I(0).get_compact_qobj() # doctest: +NORMALIZE_WHITESPACE
61
+ Quantum object: dims=[[2], [2]], shape=(2, 2), type='oper', dtype=Dense, isherm=True
62
+ Qobj data =
63
+ [[1. 0.]
64
+ [0. 1.]]
65
+ """
66
+
67
+ def __init__(self, targets, **kwargs) -> None: # noqa: ANN001, ANN003
68
+ super().__init__(targets=targets, **kwargs)
69
+ self.name = "I"
70
+ self.latex_str = r"I"
71
+
72
+ def get_compact_qobj(self): # noqa: ANN201, PLR6301
73
+ return qeye(2) if not is_qutip5 else qeye(2, dtype="dense")
74
+
75
+
76
+ class QutipBackend(Backend):
77
+ """
78
+ Backend that runs both digital-circuit sampling and analog
79
+ time-evolution experiments using the **QuTiP** simulation library.
80
+
81
+ The backend is CPU-only and has no hardware dependencies, which makes it
82
+ ideal for local development, CI pipelines, and educational notebooks.
83
+ """
84
+
85
+ def __init__(self, nsteps: int = 10_000) -> None:
86
+ """Instantiate a new :class:`QutipBackend`.
87
+ Args:
88
+ nsteps (int): The maximum number of internal steps for the ODE solver."""
89
+ self.nsteps = nsteps
90
+
91
+ super().__init__()
92
+ self._basic_gate_handlers: BasicGateHandlersMapping = {
93
+ I: QutipBackend._handle_I,
94
+ X: QutipBackend._handle_X,
95
+ Y: QutipBackend._handle_Y,
96
+ Z: QutipBackend._handle_Z,
97
+ H: QutipBackend._handle_H,
98
+ S: QutipBackend._handle_S,
99
+ T: QutipBackend._handle_T,
100
+ RX: QutipBackend._handle_RX,
101
+ RY: QutipBackend._handle_RY,
102
+ RZ: QutipBackend._handle_RZ,
103
+ U1: QutipBackend._handle_U1,
104
+ U2: QutipBackend._handle_U2,
105
+ U3: QutipBackend._handle_U3,
106
+ SWAP: QutipBackend._handle_SWAP,
107
+ }
108
+ logger.success("QutipBackend initialised")
109
+
110
+ def _execute_sampling(self, functional: Sampling) -> SamplingResult:
111
+ """
112
+ Execute a quantum circuit and return the measurement results.
113
+
114
+ This method applies the selected simulation method, translates the circuit's gates into
115
+ CUDA operations via their respective handlers, runs the simulation, and returns the result
116
+ as a QutipDigitalResult.
117
+
118
+ Args:
119
+ functional (Sampling): The Sampling function to execute.
120
+
121
+ Returns:
122
+ DigitalResult: A result object containing the measurement samples and computed probabilities.
123
+
124
+ """
125
+ logger.info("Executing Sampling (shots={})", functional.nshots)
126
+
127
+ init_state = tensor(*[basis(2, 0) for _ in range(functional.circuit.nqubits)])
128
+
129
+ measurements_set = set()
130
+ for m in functional.circuit.gates:
131
+ if isinstance(m, M):
132
+ measurements_set.update(list(m.target_qubits))
133
+ measurements = sorted(measurements_set)
134
+
135
+ transpiled_circuit = DecomposeMultiControlledGatesPass().run(functional.circuit)
136
+ qutip_circuit = self._get_qutip_circuit(transpiled_circuit)
137
+ sim = CircuitSimulator(qutip_circuit)
138
+
139
+ res = sim.run_statistics(init_state) # runs the full circuit for one shot
140
+ _bits = res.cbits # classical measurement bits
141
+ bits = []
142
+ probs = res.probabilities
143
+
144
+ if sum(probs) != 1:
145
+ probs /= sum(probs)
146
+
147
+ if len(measurements) > 0:
148
+ for b in _bits:
149
+ aux = []
150
+ for i in measurements:
151
+ aux.append(b[i])
152
+ bits.append(aux)
153
+ else:
154
+ bits = _bits
155
+
156
+ bits_list = ["".join(map(str, cb)) for cb in bits]
157
+
158
+ rng = np.random.default_rng(42)
159
+ samples = rng.choice(bits_list, size=functional.nshots, p=probs)
160
+ samples_py = map(str, samples)
161
+
162
+ counts = Counter(samples_py)
163
+
164
+ logger.success("Sampling finished; {} distinct bitstrings", len(counts))
165
+ return SamplingResult(nshots=functional.nshots, samples=dict(counts))
166
+
167
+ @staticmethod
168
+ def _to_qubip_observables(obs: Hamiltonian | PauliOperator, nqubits: int) -> Qobj:
169
+ """Convert a QiliSDK observable to a QuTiP Qobj.
170
+
171
+ Args:
172
+ obs (Hamiltonian | PauliOperator): The observable to convert.
173
+ nqubits (int): The total number of qubits in the system.
174
+
175
+ Returns:
176
+ Qobj: The corresponding QuTiP Qobj representation of the observable.
177
+
178
+ Raises:
179
+ ValueError: If the observable type is unsupported.
180
+ """
181
+ aux_obs = None
182
+ identity = QTensor(PauliI(0).matrix)
183
+ if isinstance(obs, PauliOperator):
184
+ for i in range(nqubits):
185
+ if aux_obs is None:
186
+ aux_obs = identity if i != obs.qubit else QTensor(obs.matrix)
187
+ else:
188
+ aux_obs = (
189
+ tensor_prod([aux_obs, identity])
190
+ if i != obs.qubit
191
+ else tensor_prod([aux_obs, QTensor(obs.matrix)])
192
+ )
193
+ elif isinstance(obs, Hamiltonian):
194
+ aux_obs = QTensor(obs.to_matrix())
195
+ if obs.nqubits < nqubits:
196
+ for _ in range(nqubits - obs.nqubits):
197
+ aux_obs = tensor_prod([aux_obs, identity])
198
+ elif isinstance(obs, QTensor):
199
+ aux_obs = obs
200
+ if aux_obs is not None:
201
+ return Qobj(aux_obs.dense(), dims=[[2 for _ in range(nqubits)] for _ in range(2)])
202
+ logger.error("Unsupported observable type {}", obs.__class__.__name__)
203
+ raise ValueError(f"unsupported observable type of {obs.__class__}")
204
+
205
+ def _execute_time_evolution(self, functional: TimeEvolution) -> TimeEvolutionResult:
206
+ """computes the time evolution under of an initial state under the given schedule.
207
+
208
+ Args:
209
+ functional (TimeEvolution): The TimeEvolution functional to execute.
210
+
211
+ Returns:
212
+ TimeEvolutionResult: The results of the evolution.
213
+
214
+ Raises:
215
+ ValueError: if the initial state provided is invalid.
216
+ """
217
+
218
+ logger.info("Executing TimeEvolution (T={}, dt={})", functional.schedule.T, functional.schedule.dt)
219
+ steps = functional.schedule.tlist
220
+
221
+ qutip_hamiltonians = []
222
+ for hamiltonian in functional.schedule.hamiltonians.values():
223
+ qutip_hamiltonians.append(
224
+ Qobj(
225
+ hamiltonian.to_qtensor(total_nqubits=functional.schedule.nqubits).dense(),
226
+ dims=[[2 for _ in range(functional.schedule.nqubits)] for _ in range(2)],
227
+ )
228
+ )
229
+
230
+ h_t = [
231
+ [
232
+ qutip_hamiltonians[i],
233
+ np.array(
234
+ [functional.schedule.coefficients[h][t] for t in steps],
235
+ dtype=_complex_dtype(),
236
+ ),
237
+ ]
238
+ for i, h in enumerate(functional.schedule.hamiltonians)
239
+ ]
240
+ state_dim = []
241
+ if functional.initial_state.is_density_matrix():
242
+ state_dim = [[2 for _ in range(functional.initial_state.nqubits)] for _ in range(2)]
243
+ elif functional.initial_state.is_bra():
244
+ state_dim = [[1], [2 for _ in range(functional.initial_state.nqubits)]]
245
+ elif functional.initial_state.is_ket():
246
+ state_dim = [[2 for _ in range(functional.initial_state.nqubits)], [1]]
247
+ else:
248
+ logger.error("Invalid initial state provided")
249
+ raise ValueError("invalid initial state provided.")
250
+
251
+ qutip_init_state = Qobj(functional.initial_state.dense(), dims=state_dim)
252
+
253
+ qutip_obs: list[Qobj] = []
254
+ for obs in functional.observables:
255
+ qutip_obs.append(self._to_qubip_observables(obs, functional.schedule.nqubits))
256
+
257
+ results = mesolve(
258
+ H=h_t,
259
+ e_ops=qutip_obs,
260
+ rho0=qutip_init_state,
261
+ tlist=steps,
262
+ options={
263
+ "store_states": functional.store_intermediate_results,
264
+ "store_final_state": True,
265
+ "nsteps": self.nsteps,
266
+ },
267
+ )
268
+
269
+ logger.success("TimeEvolution finished")
270
+ return TimeEvolutionResult(
271
+ final_expected_values=np.array(
272
+ [results.expect[i][-1] for i in range(len(qutip_obs))], # ty:ignore[not-subscriptable]
273
+ dtype=_complex_dtype(),
274
+ ),
275
+ expected_values=(
276
+ np.array(
277
+ [
278
+ [results.expect[val][i] for val in range(len(results.expect))] # ty:ignore[not-subscriptable]
279
+ for i in range(len(results.expect[0])) # ty:ignore[invalid-argument-type]
280
+ ],
281
+ dtype=_complex_dtype(),
282
+ )
283
+ if len(results.expect) > 0 and functional.store_intermediate_results
284
+ else None
285
+ ),
286
+ final_state=(QTensor(results.final_state.full()) if results.final_state is not None else None),
287
+ intermediate_states=(
288
+ [QTensor(state.full()) for state in results.states]
289
+ if len(results.states) > 1 and functional.store_intermediate_results
290
+ else None
291
+ ),
292
+ )
293
+
294
+ def _get_qutip_circuit(self, circuit: Circuit) -> QubitCircuit:
295
+ """_summary_
296
+
297
+ Args:
298
+ circuit (Circuit): the qiliSDK circuit to be translated to qutip.
299
+
300
+ Raises:
301
+ UnsupportedGateError: If the circuit contains a gate for which no handler is registered.
302
+
303
+ Returns:
304
+ QubitCircuit: the translated qutip circuit.
305
+ """
306
+ qutip_circuit = QubitCircuit(
307
+ circuit.nqubits, num_cbits=circuit.nqubits, input_states=[0 for _ in range(circuit.nqubits)]
308
+ )
309
+
310
+ for gate in circuit.gates:
311
+ if isinstance(gate, Controlled):
312
+ self._handle_controlled(qutip_circuit, gate)
313
+ elif isinstance(gate, Adjoint):
314
+ self._handle_adjoint(qutip_circuit, gate)
315
+ elif isinstance(gate, M):
316
+ self._handle_M(qutip_circuit, gate)
317
+ else:
318
+ handler = self._basic_gate_handlers.get(type(gate), None)
319
+ if handler is None:
320
+ logger.error("Unsupported gate {}", type(gate).__name__)
321
+ raise UnsupportedGateError(f"Unsupported gate {type(gate).__name__}")
322
+ qubits = gate.target_qubits
323
+ handler(qutip_circuit, gate, *qubits)
324
+
325
+ no_measurement = True
326
+
327
+ for g in circuit.gates:
328
+ if isinstance(g, M):
329
+ no_measurement = False
330
+
331
+ if no_measurement:
332
+ for i in range(circuit.nqubits):
333
+ qutip_circuit.add_measurement(f"M{i}", targets=i, classical_store=i)
334
+ return qutip_circuit
335
+
336
+ def _handle_controlled(self, circuit: QubitCircuit, gate: Controlled) -> None: # noqa: PLR6301
337
+ """
338
+ Handle a controlled gate operation by registering a custom QuTiP gate.
339
+
340
+ For non-native controlled gates we construct the block-matrix explicitly, mirroring
341
+ the approach recommended in the QuTiP QIP documentation for custom controlled rotations.
342
+
343
+ """
344
+
345
+ if gate.name == "CNOT":
346
+ circuit.add_gate("CNOT", targets=[*gate.target_qubits], controls=[*gate.control_qubits])
347
+ else:
348
+ base_matrix = gate.basic_gate.matrix
349
+ dim_target = base_matrix.shape[0]
350
+ dim_total = 2 * dim_target
351
+ dims = [[2] + [2] * len(gate.target_qubits), [2] + [2] * len(gate.target_qubits)]
352
+
353
+ def qutip_controlled_gate() -> Qobj:
354
+ mat = np.zeros((dim_total, dim_total), dtype=np.complex128)
355
+ mat[:dim_target, :dim_target] = np.eye(dim_target, dtype=np.complex128)
356
+ mat[dim_target:, dim_target:] = base_matrix
357
+ return Qobj(mat, dims=dims)
358
+
359
+ matrix_digest = base_matrix.tobytes().hex()[:16]
360
+ gate_name = f"{gate.name}_{matrix_digest}"
361
+ if gate_name not in circuit.user_gates:
362
+ circuit.user_gates[gate_name] = qutip_controlled_gate
363
+ circuit.add_gate(gate_name, targets=[*gate.control_qubits, *gate.target_qubits])
364
+
365
+ def _handle_adjoint(self, circuit: QubitCircuit, gate: Adjoint) -> None: # noqa: PLR6301
366
+ """
367
+ Handle an adjoint (inverse) gate operation.
368
+
369
+ This method creates a temporary kernel for the basic gate wrapped by the adjoint,
370
+ applies the corresponding handler, and then integrates it into the main kernel as an adjoint operation.
371
+ """
372
+
373
+ def qutip_adjoined_gate() -> Qobj:
374
+ return Qobj(gate.matrix)
375
+
376
+ gate_name = "Adjoint_" + gate.name
377
+ if gate_name not in circuit.user_gates:
378
+ circuit.user_gates[gate_name] = qutip_adjoined_gate
379
+ circuit.add_gate(gate_name, targets=[*gate.target_qubits])
380
+
381
+ @staticmethod
382
+ def _handle_M(qutip_circuit: QubitCircuit, gate: M) -> None:
383
+ """
384
+ Handle a measurement gate.
385
+
386
+ Depending on whether the measurement targets all qubits or a subset,
387
+ this method applies measurement operations accordingly.
388
+ """
389
+ for i in gate.target_qubits:
390
+ qutip_circuit.add_measurement(f"M{i}", targets=[i], classical_store=i)
391
+
392
+ @staticmethod
393
+ def _handle_I(circuit: QubitCircuit, gate: I, qubit: int) -> None:
394
+ """Handle an X gate operation."""
395
+ circuit.add_gate(QutipI(targets=qubit))
396
+
397
+ @staticmethod
398
+ def _handle_X(circuit: QubitCircuit, gate: X, qubit: int) -> None:
399
+ """Handle an X gate operation."""
400
+ circuit.add_gate(QutipGates.X(targets=qubit))
401
+
402
+ @staticmethod
403
+ def _handle_Y(circuit: QubitCircuit, gate: Y, qubit: int) -> None:
404
+ """Handle an Y gate operation."""
405
+ circuit.add_gate(QutipGates.Y(targets=qubit))
406
+
407
+ @staticmethod
408
+ def _handle_Z(circuit: QubitCircuit, gate: Z, qubit: int) -> None:
409
+ """Handle an Z gate operation."""
410
+ circuit.add_gate(QutipGates.Z(targets=qubit))
411
+
412
+ @staticmethod
413
+ def _handle_H(circuit: QubitCircuit, gate: H, qubit: int) -> None:
414
+ """Handle an H gate operation."""
415
+ circuit.add_gate(QutipGates.H(targets=qubit))
416
+
417
+ @staticmethod
418
+ def _handle_S(circuit: QubitCircuit, gate: S, qubit: int) -> None:
419
+ """Handle an S gate operation."""
420
+ circuit.add_gate(QutipGates.S(targets=qubit))
421
+
422
+ @staticmethod
423
+ def _handle_T(circuit: QubitCircuit, gate: T, qubit: int) -> None:
424
+ """Handle an T gate operation."""
425
+ circuit.add_gate(QutipGates.T(targets=qubit))
426
+
427
+ @staticmethod
428
+ def _handle_RX(circuit: QubitCircuit, gate: RX, qubit: int) -> None:
429
+ """Handle an RX gate operation."""
430
+ circuit.add_gate(QutipGates.RX(targets=[qubit], arg_value=gate.get_parameter_values()[0]))
431
+
432
+ @staticmethod
433
+ def _handle_RY(circuit: QubitCircuit, gate: RY, qubit: int) -> None:
434
+ """Handle an RY gate operation."""
435
+ circuit.add_gate(QutipGates.RY(targets=[qubit], arg_value=gate.get_parameter_values()[0]))
436
+
437
+ @staticmethod
438
+ def _handle_RZ(circuit: QubitCircuit, gate: RZ, qubit: int) -> None:
439
+ """Handle an RZ gate operation."""
440
+ circuit.add_gate(QutipGates.RZ(targets=[qubit], arg_value=gate.get_parameter_values()[0]))
441
+
442
+ @staticmethod
443
+ def _qutip_U1(phi: float) -> Qobj:
444
+ mat = np.array([[1, 0], [0, np.exp(1j * phi)]], dtype=_complex_dtype())
445
+ return Qobj(mat, dims=[[2], [2]])
446
+
447
+ @staticmethod
448
+ def _handle_U1(circuit: QubitCircuit, gate: U1, qubit: int) -> None:
449
+ """Handle an U1 gate operation."""
450
+ u1_label = "U1"
451
+
452
+ if u1_label not in circuit.user_gates:
453
+ circuit.user_gates[u1_label] = QutipBackend._qutip_U1
454
+ circuit.add_gate(u1_label, targets=qubit, arg_value=gate.phi)
455
+
456
+ @staticmethod
457
+ def _qutip_U2(angles: list[float]) -> Qobj:
458
+ phi = angles[0]
459
+ gamma = angles[1]
460
+ mat = (1 / np.sqrt(2)) * np.array(
461
+ [
462
+ [1, -np.exp(1j * gamma)],
463
+ [np.exp(1j * phi), np.exp(1j * (phi + gamma))],
464
+ ],
465
+ dtype=_complex_dtype(),
466
+ )
467
+ return Qobj(mat, dims=[[2], [2]])
468
+
469
+ @staticmethod
470
+ def _handle_U2(circuit: QubitCircuit, gate: U2, qubit: int) -> None:
471
+ """Handle an U2 gate operation."""
472
+ u2_label = "U2"
473
+
474
+ if u2_label not in circuit.user_gates:
475
+ circuit.user_gates[u2_label] = QutipBackend._qutip_U2
476
+ circuit.add_gate(u2_label, targets=qubit, arg_value=[gate.phi, gate.gamma])
477
+
478
+ @staticmethod
479
+ def _qutip_U3(angles: list[float]) -> Qobj:
480
+ phi = angles[0]
481
+ gamma = angles[1]
482
+ theta = angles[2]
483
+ mat = np.array(
484
+ [
485
+ [np.cos(theta / 2), -np.exp(1j * gamma) * np.sin(theta / 2)],
486
+ [np.exp(1j * phi) * np.sin(theta / 2), np.exp(1j * (phi + gamma)) * np.cos(theta / 2)],
487
+ ],
488
+ dtype=_complex_dtype(),
489
+ )
490
+ return Qobj(mat, dims=[[2], [2]])
491
+
492
+ @staticmethod
493
+ def _handle_U3(circuit: QubitCircuit, gate: U3, qubit: int) -> None:
494
+ """Handle an U3 gate operation."""
495
+ u3_label = "U3"
496
+
497
+ if u3_label not in circuit.user_gates:
498
+ circuit.user_gates[u3_label] = QutipBackend._qutip_U3
499
+ circuit.add_gate(u3_label, targets=qubit, arg_value=[gate.phi, gate.gamma, gate.theta])
500
+
501
+ @staticmethod
502
+ def _handle_SWAP(circuit: QubitCircuit, gate: SWAP, qubit_0: int, qubit_1: int) -> None:
503
+ """Handle a SWAP gate operation."""
504
+ circuit.add_gate(QutipGates.SWAP(targets=[qubit_0, qubit_1]))