qilisdk 0.1.8__cp312-cp312-macosx_10_9_x86_64.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 (634) 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 +634 -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.cpython-312-darwin.so +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
  634. share/pkgconfig/eigen3.pc +9 -0
@@ -0,0 +1,752 @@
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 enum import Enum
17
+ from typing import TYPE_CHECKING, Callable, Type, TypeVar
18
+
19
+ import cudaq
20
+ import numpy as np
21
+ from cudaq import ElementaryOperator, OperatorSum, ScalarOperator, SpinOperatorTerm, State, evolve, operators, spin
22
+ from cudaq import Schedule as CudaSchedule
23
+ from loguru import logger
24
+
25
+ from qilisdk.analog.hamiltonian import Hamiltonian, PauliI, PauliOperator, PauliX, PauliY, PauliZ
26
+ from qilisdk.backends.backend import Backend
27
+ from qilisdk.core.qtensor import QTensor
28
+ from qilisdk.digital.circuit_transpiler_passes import DecomposeMultiControlledGatesPass
29
+ from qilisdk.digital.exceptions import UnsupportedGateError
30
+ from qilisdk.digital.gates import (
31
+ RX,
32
+ RY,
33
+ RZ,
34
+ SWAP,
35
+ U1,
36
+ U2,
37
+ U3,
38
+ Adjoint,
39
+ BasicGate,
40
+ Controlled,
41
+ Gate,
42
+ H,
43
+ I,
44
+ M,
45
+ S,
46
+ T,
47
+ X,
48
+ Y,
49
+ Z,
50
+ )
51
+ from qilisdk.functionals.sampling_result import SamplingResult
52
+ from qilisdk.functionals.time_evolution_result import TimeEvolutionResult
53
+ from qilisdk.noise import (
54
+ BitFlip,
55
+ Depolarizing,
56
+ LindbladGenerator,
57
+ Noise,
58
+ NoiseConfig,
59
+ PhaseFlip,
60
+ ReadoutAssignment,
61
+ SupportsStaticKraus,
62
+ SupportsStaticLindblad,
63
+ SupportsTimeDerivedKraus,
64
+ SupportsTimeDerivedLindblad,
65
+ )
66
+ from qilisdk.settings import Precision, get_settings
67
+
68
+ if TYPE_CHECKING:
69
+ from qilisdk.analog.schedule import Schedule
70
+ from qilisdk.digital.circuit import Circuit
71
+ from qilisdk.functionals.sampling import Sampling
72
+ from qilisdk.functionals.time_evolution import TimeEvolution
73
+ from qilisdk.noise import NoiseModel
74
+
75
+
76
+ def _complex_dtype() -> np.dtype:
77
+ return get_settings().complex_precision.dtype
78
+
79
+
80
+ TBasicGate = TypeVar("TBasicGate", bound=BasicGate)
81
+ BasicGateHandlersMapping = dict[Type[TBasicGate], Callable[[cudaq.Kernel, TBasicGate, cudaq.QuakeValue], None]]
82
+
83
+ TPauliOperator = TypeVar("TPauliOperator", bound=PauliOperator)
84
+ PauliOperatorHandlersMapping = dict[Type[TPauliOperator], Callable[[TPauliOperator], ElementaryOperator]]
85
+
86
+
87
+ def _to_cuda_noise(noise: Noise, gate_duration: float) -> cudaq.KrausChannel | None:
88
+ if isinstance(noise, BitFlip):
89
+ return cudaq.BitFlipChannel(noise.probability)
90
+ if isinstance(noise, PhaseFlip):
91
+ return cudaq.PhaseFlipChannel(noise.probability)
92
+ if isinstance(noise, Depolarizing):
93
+ return cudaq.DepolarizationChannel(noise.probability)
94
+ if isinstance(noise, SupportsTimeDerivedKraus):
95
+ kraus_channel = noise.as_kraus_from_duration(duration=gate_duration)
96
+ kraus_operators_np = [np.array(operator.dense(), dtype=np.complex128) for operator in kraus_channel.operators]
97
+ return cudaq.KrausChannel(kraus_operators_np)
98
+ if isinstance(noise, SupportsStaticKraus):
99
+ kraus_channel = noise.as_kraus()
100
+ kraus_operators_np = [np.array(operator.dense(), dtype=np.complex128) for operator in kraus_channel.operators]
101
+ return cudaq.KrausChannel(kraus_operators_np)
102
+ return None
103
+
104
+
105
+ class CudaSamplingMethod(str, Enum):
106
+ """
107
+ Enumeration of available simulation methods for the CUDA backend.
108
+ """
109
+
110
+ STATE_VECTOR = "state_vector"
111
+ TENSOR_NETWORK = "tensor_network"
112
+ MATRIX_PRODUCT_STATE = "matrix_product_state"
113
+
114
+
115
+ class CudaBackend(Backend):
116
+ """
117
+ Backend implementation using CUDA-based simulation.
118
+
119
+ This backend translates a quantum circuit into a CUDA-compatible kernel and executes it
120
+ using the cudaq library. It supports different simulation methods including state vector,
121
+ tensor network, and matrix product state simulations. Gate operations in the circuit are
122
+ mapped to CUDA operations via dedicated handler functions.
123
+ """
124
+
125
+ def __init__(
126
+ self,
127
+ sampling_method: CudaSamplingMethod = CudaSamplingMethod.STATE_VECTOR,
128
+ noise_model: NoiseModel | None = None,
129
+ ) -> None:
130
+ """
131
+ Initialize the CudaBackend.
132
+
133
+ Args:
134
+ sampling_method (CudaSamplingMethod, optional): The simulation method to use for sampling circuits.
135
+ Options include STATE_VECTOR, TENSOR_NETWORK, or MATRIX_PRODUCT_STATE.
136
+ Defaults to STATE_VECTOR.
137
+ """
138
+ super().__init__()
139
+ cudaq.register_operation("i", np.array([1, 0, 0, 1], dtype=_complex_dtype()))
140
+ self._basic_gate_handlers: BasicGateHandlersMapping = {
141
+ I: CudaBackend._handle_I,
142
+ X: CudaBackend._handle_X,
143
+ Y: CudaBackend._handle_Y,
144
+ Z: CudaBackend._handle_Z,
145
+ H: CudaBackend._handle_H,
146
+ S: CudaBackend._handle_S,
147
+ T: CudaBackend._handle_T,
148
+ RX: CudaBackend._handle_RX,
149
+ RY: CudaBackend._handle_RY,
150
+ RZ: CudaBackend._handle_RZ,
151
+ U1: CudaBackend._handle_U1,
152
+ U2: CudaBackend._handle_U2,
153
+ U3: CudaBackend._handle_U3,
154
+ SWAP: CudaBackend._handle_SWAP,
155
+ }
156
+ self._pauli_operator_handlers: PauliOperatorHandlersMapping = {
157
+ PauliX: CudaBackend._handle_PauliX,
158
+ PauliY: CudaBackend._handle_PauliY,
159
+ PauliZ: CudaBackend._handle_PauliZ,
160
+ PauliI: CudaBackend._handle_PauliI,
161
+ }
162
+ self._sampling_method = sampling_method
163
+ self._noise_model = noise_model
164
+ logger.success("CudaBackend initialised (sampling_method={})", sampling_method.value)
165
+
166
+ @property
167
+ def sampling_method(self) -> CudaSamplingMethod:
168
+ """
169
+ Get the simulation method currently configured for the backend.
170
+
171
+ Returns:
172
+ SimulationMethod: The simulation method to be used for circuit execution.
173
+ """
174
+ return self._sampling_method
175
+
176
+ def _apply_digital_simulation_method(self) -> None:
177
+ """
178
+ Configure the cudaq simulation target based on the selected simulation method.
179
+
180
+ For the STATE_VECTOR method, it checks for GPU availability and selects an appropriate target.
181
+ For TENSOR_NETWORK and MATRIX_PRODUCT_STATE methods, it explicitly sets the target to use tensor network-based simulations.
182
+ """
183
+ logger.info("Applying sampling simulation method {}", self.sampling_method.value)
184
+ if self.sampling_method == CudaSamplingMethod.STATE_VECTOR:
185
+ if cudaq.num_available_gpus() == 0:
186
+ cudaq.set_target("qpp-cpu")
187
+ logger.debug("No GPU detected, using cudaq's 'qpp-cpu' backend")
188
+ else:
189
+ float_precision = "fp32" if get_settings().complex_precision == Precision.COMPLEX_64 else "fp64"
190
+ cudaq.set_target("nvidia", option=float_precision)
191
+ logger.debug("GPU detected, using cudaq's 'nvidia' backend")
192
+ elif self.sampling_method == CudaSamplingMethod.TENSOR_NETWORK:
193
+ cudaq.set_target("tensornet")
194
+ logger.debug("Using cudaq's 'tensornet' backend")
195
+ else:
196
+ cudaq.set_target("tensornet-mps")
197
+ logger.debug("Using cudaq's 'tensornet-mps' backend")
198
+
199
+ @staticmethod
200
+ def _handle_readout_errors(cudaq_result: dict[str, int], noise_model: NoiseModel, nqubits: int) -> dict[str, int]:
201
+ # Determine which qubits have readout assignment errors
202
+ readout_error_per_qubits = [(0.0, 0.0) for _ in range(nqubits)]
203
+ has_readout_error = False
204
+ for noise in noise_model.global_noise:
205
+ if isinstance(noise, ReadoutAssignment):
206
+ for qubit in range(nqubits):
207
+ readout_error_per_qubits[qubit] = (noise.p01, noise.p10)
208
+ has_readout_error = True
209
+ for qubit, noises in noise_model.per_qubit_noise.items():
210
+ for noise in noises:
211
+ if isinstance(noise, ReadoutAssignment):
212
+ readout_error_per_qubits[qubit] = (noise.p01, noise.p10)
213
+ has_readout_error = True
214
+
215
+ if not has_readout_error:
216
+ return cudaq_result
217
+
218
+ # numpy generator
219
+ gen = np.random.default_rng(42)
220
+
221
+ # First split into individual shots
222
+ shots = []
223
+ for bitstring, count in cudaq_result.items():
224
+ shots.extend([bitstring] * count)
225
+
226
+ # Convert each shot according to the readout error probabilities
227
+ adjusted_counts: dict[str, int] = {}
228
+ for shot in shots:
229
+ adjusted_shot = list(shot)
230
+ for qubit_index in range(nqubits):
231
+ p01, p10 = readout_error_per_qubits[qubit_index]
232
+ if shot[nqubits - 1 - qubit_index] == "0" and gen.random() < p01:
233
+ adjusted_shot[nqubits - 1 - qubit_index] = "1"
234
+ elif gen.random() < p10:
235
+ adjusted_shot[nqubits - 1 - qubit_index] = "0"
236
+ adjusted_bitstring = "".join(adjusted_shot)
237
+ adjusted_counts[adjusted_bitstring] = adjusted_counts.get(adjusted_bitstring, 0) + 1
238
+
239
+ # Set the new results
240
+ cudaq_result = adjusted_counts
241
+
242
+ return cudaq_result
243
+
244
+ @staticmethod
245
+ def _add_global_noise(
246
+ noise: Noise,
247
+ cuda_noise_model: cudaq.NoiseModel,
248
+ all_cuda_gate_names: dict[Type[BasicGate] | Type[Gate], str],
249
+ nqubits: int,
250
+ noise_config: NoiseConfig,
251
+ ) -> None:
252
+ for gate, gate_name in all_cuda_gate_names.items():
253
+ if cuda_noise := _to_cuda_noise(noise, noise_config.get_gate_time(gate)):
254
+ # If it's a full size kraus channel, special treatment
255
+ if isinstance(noise, SupportsStaticKraus) and noise.as_kraus().operators:
256
+ dim = noise.as_kraus().operators[0].dense().shape[0]
257
+ if dim == 2**nqubits:
258
+ cuda_noise_model.add_channel(gate_name, list(range(nqubits)), cuda_noise)
259
+ continue
260
+
261
+ # Otherwise, add normally
262
+ cuda_noise_model.add_all_qubit_channel(gate_name, cuda_noise)
263
+
264
+ @staticmethod
265
+ def _add_per_gate_noise(
266
+ gate_type: Type[BasicGate] | Type[Gate],
267
+ noises: list[Noise],
268
+ cuda_noise_model: cudaq.NoiseModel,
269
+ all_cuda_gate_names: dict[Type[BasicGate] | Type[Gate], str],
270
+ noise_config: NoiseConfig,
271
+ ) -> None:
272
+ for gate, gate_name in all_cuda_gate_names.items():
273
+ if gate_name == gate_type.__name__.lower():
274
+ for noise in noises:
275
+ if cuda_noise := _to_cuda_noise(noise, noise_config.get_gate_time(gate)):
276
+ cuda_noise_model.add_all_qubit_channel(gate_name, cuda_noise)
277
+
278
+ @staticmethod
279
+ def _add_per_qubit_noise(
280
+ qubit: int,
281
+ noises: list[Noise],
282
+ cuda_noise_model: cudaq.NoiseModel,
283
+ all_cuda_gate_names: dict[Type[BasicGate] | Type[Gate], str],
284
+ noise_config: NoiseConfig,
285
+ ) -> None:
286
+ for noise in noises:
287
+ for gate, gate_name in all_cuda_gate_names.items():
288
+ if cuda_noise := _to_cuda_noise(noise, noise_config.get_gate_time(gate)):
289
+ cuda_noise_model.add_channel(gate_name, [qubit], cuda_noise)
290
+
291
+ @staticmethod
292
+ def _add_per_gate_per_qubit_noise(
293
+ gate_type: Type[BasicGate] | Type[Gate],
294
+ qubit: int,
295
+ noises: list[Noise],
296
+ cuda_noise_model: cudaq.NoiseModel,
297
+ all_cuda_gate_names: dict[Type[BasicGate] | Type[Gate], str],
298
+ noise_config: NoiseConfig,
299
+ ) -> None:
300
+ for gate, gate_name in all_cuda_gate_names.items():
301
+ if gate_name == gate_type.__name__.lower():
302
+ for noise in noises:
303
+ if cuda_noise := _to_cuda_noise(noise, noise_config.get_gate_time(gate)):
304
+ cuda_noise_model.add_channel(gate_name, [qubit], cuda_noise)
305
+
306
+ def _noise_model_to_cudaq(self, noise_model: NoiseModel, nqubits: int) -> cudaq.NoiseModel:
307
+ all_cuda_gate_names = {
308
+ gate: gate.__name__.lower()
309
+ for gate in self._basic_gate_handlers
310
+ if gate.__name__.lower() not in {"u1", "u2", "swap"}
311
+ }
312
+ cuda_noise_model = cudaq.NoiseModel()
313
+
314
+ # Global noise
315
+ for noise in noise_model.global_noise:
316
+ self._add_global_noise(noise, cuda_noise_model, all_cuda_gate_names, nqubits, noise_model.noise_config)
317
+
318
+ # Per gate noise
319
+ for gate_type, noises in noise_model.per_gate_noise.items():
320
+ self._add_per_gate_noise(gate_type, noises, cuda_noise_model, all_cuda_gate_names, noise_model.noise_config)
321
+
322
+ # Per qubit noise
323
+ for qubit, noises in noise_model.per_qubit_noise.items():
324
+ self._add_per_qubit_noise(qubit, noises, cuda_noise_model, all_cuda_gate_names, noise_model.noise_config)
325
+
326
+ # Per gate per qubit noise
327
+ for (gate_type, qubit), noises in noise_model.per_gate_per_qubit_noise.items():
328
+ self._add_per_gate_per_qubit_noise(
329
+ gate_type, qubit, noises, cuda_noise_model, all_cuda_gate_names, noise_model.noise_config
330
+ )
331
+
332
+ return cuda_noise_model
333
+
334
+ @staticmethod
335
+ def _handle_gate_parameter_perturbations(circuit: Circuit, noise_model: NoiseModel) -> None:
336
+ circuit_parameters = circuit.get_parameters()
337
+ for parameter, perturbations in noise_model.global_perturbations.items():
338
+ parameter_name = parameter.label if not isinstance(parameter, str) else parameter
339
+ if parameter_name in circuit_parameters:
340
+ for perturbation in perturbations:
341
+ circuit.set_parameters({parameter_name: perturbation.perturb(circuit_parameters[parameter_name])})
342
+ for (gate_type, parameter), perturbations in noise_model.per_gate_perturbations.items():
343
+ for gate in circuit.gates:
344
+ true_name_to_gate_param_name = {param: param_name for param_name, param in gate.parameters.items()}
345
+ if isinstance(gate, gate_type) and parameter in true_name_to_gate_param_name:
346
+ gate_parameters = gate.get_parameters()
347
+ gate_param_name = true_name_to_gate_param_name[parameter]
348
+ for perturbation in perturbations:
349
+ gate.set_parameters({gate_param_name: perturbation.perturb(gate_parameters[gate_param_name])})
350
+
351
+ def _execute_sampling(self, functional: Sampling) -> SamplingResult:
352
+ logger.info("Executing Sampling (shots={})", functional.nshots)
353
+ self._apply_digital_simulation_method()
354
+ kernel = cudaq.make_kernel()
355
+ qubits = kernel.qalloc(functional.circuit.nqubits)
356
+
357
+ # Apply parameter perturbations
358
+ if self._noise_model:
359
+ self._handle_gate_parameter_perturbations(functional.circuit, self._noise_model)
360
+
361
+ # Transpile the circuit into CUDAQ format
362
+ transpiled_circuit = DecomposeMultiControlledGatesPass().run(functional.circuit)
363
+ for gate in transpiled_circuit.gates:
364
+ if isinstance(gate, Controlled):
365
+ self._handle_controlled(kernel, gate, qubits[gate.control_qubits[0]], qubits[gate.target_qubits[0]])
366
+ elif isinstance(gate, Adjoint):
367
+ self._handle_adjoint(kernel, gate, qubits[gate.target_qubits[0]])
368
+ elif isinstance(gate, M):
369
+ self._handle_M(kernel, gate, transpiled_circuit, qubits)
370
+ else:
371
+ handler = self._basic_gate_handlers.get(type(gate), None)
372
+ if handler is None:
373
+ raise UnsupportedGateError(f"Unsupported gate {type(gate).__name__}")
374
+ handler(kernel, gate, *(qubits[gate.target_qubits[i]] for i in range(len(gate.target_qubits))))
375
+
376
+ if self._noise_model:
377
+ cuda_noise_model = self._noise_model_to_cudaq(self._noise_model, functional.circuit.nqubits)
378
+ cudaq_result = cudaq.sample(kernel, shots_count=functional.nshots, noise_model=cuda_noise_model)
379
+ cudaq_result = self._handle_readout_errors(cudaq_result, self._noise_model, functional.circuit.nqubits)
380
+ else:
381
+ cudaq_result = cudaq.sample(kernel, shots_count=functional.nshots)
382
+
383
+ logger.success("Sampling finished; {} distinct bitstrings", len(cudaq_result))
384
+ return SamplingResult(nshots=functional.nshots, samples=dict(cudaq_result.items()))
385
+
386
+ @staticmethod
387
+ def _handle_schedule_parameter_perturbations(schedule: Schedule, noise_model: NoiseModel) -> None:
388
+ if noise_model.global_perturbations:
389
+ schedule_parameters = schedule.get_parameters()
390
+ for parameter, perturbations in noise_model.global_perturbations.items():
391
+ parameter_name = parameter.label if not isinstance(parameter, str) else parameter
392
+ if parameter_name in schedule_parameters:
393
+ for perturbation in perturbations:
394
+ schedule.set_parameters(
395
+ {parameter_name: perturbation.perturb(schedule_parameters[parameter_name])}
396
+ )
397
+
398
+ def _add_global_noise_dynamics(
399
+ self,
400
+ ops_numpy: list,
401
+ jump_operators: list[OperatorSum],
402
+ hamiltonian_deltas: list[OperatorSum],
403
+ lindblad_generator: LindbladGenerator,
404
+ nqubits: int,
405
+ ) -> None:
406
+ for i, operator in enumerate(lindblad_generator.jump_operators_with_rates):
407
+ op_id = f"jump_op_{i}"
408
+ ops_numpy.append(np.array(operator.dense(), dtype=np.complex128))
409
+ operators.define(
410
+ id=op_id,
411
+ expected_dimensions=[2 for _ in range(nqubits)],
412
+ create=lambda op_np=ops_numpy[-1]: op_np,
413
+ override=True,
414
+ )
415
+ dim = ops_numpy[-1].shape[0]
416
+ if dim == 2**nqubits:
417
+ jump_operators.append(operators.instantiate(op_id, degrees=list(range(nqubits))))
418
+ else:
419
+ for qubit in range(nqubits):
420
+ jump_operators.append(operators.instantiate(op_id, degrees=qubit))
421
+ if lindblad_generator.hamiltonian is not None:
422
+ hamiltonian_deltas.append(self._hamiltonian_to_cuda(lindblad_generator.hamiltonian))
423
+
424
+ def _add_per_qubit_noise_dynamics(
425
+ self,
426
+ ops_numpy: list,
427
+ jump_operators: list[OperatorSum],
428
+ hamiltonian_deltas: list[OperatorSum],
429
+ lindblad_generator: LindbladGenerator,
430
+ qubit: int,
431
+ ) -> None:
432
+ for i, operator in enumerate(lindblad_generator.jump_operators_with_rates):
433
+ op_id = f"jump_op_q{qubit}_{i}"
434
+ ops_numpy.append(np.array(operator.dense(), dtype=np.complex128))
435
+ operators.define(
436
+ id=op_id,
437
+ expected_dimensions=[ops_numpy[-1].shape[0]],
438
+ create=lambda op_np=ops_numpy[-1]: op_np,
439
+ override=True,
440
+ )
441
+ jump_operators.append(operators.instantiate(op_id, degrees=qubit))
442
+ if lindblad_generator.hamiltonian is not None:
443
+ hamiltonian_deltas.append(self._hamiltonian_to_cuda(lindblad_generator.hamiltonian))
444
+
445
+ def _noise_model_to_cudaq_dynamics(
446
+ self, noise_model: NoiseModel, nqubits: int, dt: float
447
+ ) -> tuple[list[OperatorSum], list]:
448
+ ops_numpy: list[np.ndarray] = []
449
+ jump_operators: list[OperatorSum] = []
450
+ hamiltonian_deltas: list[OperatorSum] = []
451
+
452
+ # Global noise
453
+ for noise in noise_model.global_noise:
454
+ if isinstance(noise, SupportsStaticLindblad):
455
+ lindblad_generator = noise.as_lindblad()
456
+ self._add_global_noise_dynamics(
457
+ ops_numpy, jump_operators, hamiltonian_deltas, lindblad_generator, nqubits
458
+ )
459
+ elif isinstance(noise, SupportsTimeDerivedLindblad):
460
+ lindblad_generator = noise.as_lindblad_from_duration(duration=dt)
461
+ self._add_global_noise_dynamics(
462
+ ops_numpy, jump_operators, hamiltonian_deltas, lindblad_generator, nqubits
463
+ )
464
+
465
+ # Per qubit noise
466
+ for qubit, noises in noise_model.per_qubit_noise.items():
467
+ for noise in noises:
468
+ if isinstance(noise, SupportsStaticLindblad):
469
+ lindblad_generator = noise.as_lindblad()
470
+ self._add_per_qubit_noise_dynamics(
471
+ ops_numpy, jump_operators, hamiltonian_deltas, lindblad_generator, qubit
472
+ )
473
+ elif isinstance(noise, SupportsTimeDerivedLindblad):
474
+ lindblad_generator = noise.as_lindblad_from_duration(duration=dt)
475
+ self._add_per_qubit_noise_dynamics(
476
+ ops_numpy, jump_operators, hamiltonian_deltas, lindblad_generator, qubit
477
+ )
478
+
479
+ # Remove any constant terms from the deltas
480
+ hamiltonian_deltas = [CudaBackend._remove_constant_terms(delta) for delta in hamiltonian_deltas]
481
+
482
+ return jump_operators, hamiltonian_deltas
483
+
484
+ @staticmethod
485
+ def _remove_constant_terms(operator_sum: OperatorSum) -> OperatorSum:
486
+ new_operator_sum = None
487
+ for term in operator_sum:
488
+ if isinstance(term, SpinOperatorTerm) and not term.is_identity():
489
+ if new_operator_sum is None:
490
+ new_operator_sum = term
491
+ else:
492
+ new_operator_sum += term
493
+ if new_operator_sum is None:
494
+ new_operator_sum = ScalarOperator(0.0)
495
+ return new_operator_sum
496
+
497
+ def _execute_time_evolution(self, functional: TimeEvolution) -> TimeEvolutionResult:
498
+ logger.info("Executing TimeEvolution (T={}, dt={})", functional.schedule.T, functional.schedule.dt)
499
+ cudaq.set_target("dynamics")
500
+
501
+ # Apply parameter perturbations
502
+ if self._noise_model and self._noise_model.global_perturbations:
503
+ self._handle_schedule_parameter_perturbations(functional.schedule, self._noise_model)
504
+
505
+ steps = functional.schedule.tlist
506
+
507
+ cuda_schedule = CudaSchedule(steps, ["t"])
508
+
509
+ def get_schedule(key: str) -> Callable[[complex], float]:
510
+ return lambda t: (functional.schedule.coefficients[key][t.real])
511
+
512
+ cuda_hamiltonian = sum(
513
+ ScalarOperator(get_schedule(key)) * self._hamiltonian_to_cuda(ham)
514
+ for key, ham in functional.schedule.hamiltonians.items()
515
+ )
516
+
517
+ logger.trace("Hamiltonian compiled for evolution")
518
+
519
+ cuda_observables = []
520
+ for observable in functional.observables:
521
+ if isinstance(observable, PauliOperator):
522
+ cuda_observables.append(self._pauli_operator_handlers[type(observable)](observable))
523
+ elif isinstance(observable, Hamiltonian):
524
+ cuda_observables.append(self._hamiltonian_to_cuda(observable))
525
+ else:
526
+ logger.error("Unsupported observable type {}", observable.__class__.__name__)
527
+ raise ValueError(f"unsupported observable type of {observable.__class__}")
528
+ logger.trace("Observables compiled for evolution")
529
+
530
+ # Add noise
531
+ jump_operators: list[OperatorSum] = []
532
+ hamiltonian_deltas: list[OperatorSum] = []
533
+ if self._noise_model:
534
+ jump_operators, hamiltonian_deltas = self._noise_model_to_cudaq_dynamics(
535
+ self._noise_model, functional.schedule.nqubits, functional.schedule.dt
536
+ )
537
+
538
+ # Remove any constant terms from the Hamiltonian, also add the deltas
539
+ cuda_hamiltonian = self._remove_constant_terms(cuda_hamiltonian)
540
+ for delta in hamiltonian_deltas:
541
+ cuda_hamiltonian += delta
542
+
543
+ evolution_result = evolve(
544
+ hamiltonian=cuda_hamiltonian,
545
+ dimensions=dict.fromkeys(range(functional.schedule.nqubits), 2),
546
+ schedule=cuda_schedule,
547
+ initial_state=State.from_data(np.array(functional.initial_state.unit().dense(), dtype=np.complex128)),
548
+ observables=cuda_observables,
549
+ collapse_operators=jump_operators,
550
+ store_intermediate_results=functional.store_intermediate_results,
551
+ )
552
+
553
+ logger.success("TimeEvolution finished")
554
+
555
+ final_expected_values = np.array(
556
+ [exp_val.expectation() for exp_val in evolution_result.final_expectation_values()], # ty:ignore[possibly-missing-attribute]
557
+ dtype=_complex_dtype(),
558
+ )
559
+ expected_values = (
560
+ np.array(
561
+ [[val.expectation() for val in exp_vals] for exp_vals in evolution_result.expectation_values()], # ty:ignore[possibly-missing-attribute]
562
+ dtype=_complex_dtype(),
563
+ )
564
+ if evolution_result.expectation_values() is not None and functional.store_intermediate_results # ty:ignore[possibly-missing-attribute]
565
+ else None
566
+ )
567
+ final_state = (
568
+ QTensor(np.array(evolution_result.final_state(), dtype=_complex_dtype()).reshape(-1, 1)) # ty:ignore[possibly-missing-attribute]
569
+ if evolution_result.final_state() is not None # ty:ignore[possibly-missing-attribute]
570
+ else None
571
+ )
572
+ intermediate_states = (
573
+ [
574
+ QTensor(np.array(state, dtype=_complex_dtype()).reshape(-1, 1))
575
+ for state in evolution_result.intermediate_states() # ty:ignore[possibly-missing-attribute]
576
+ ]
577
+ if evolution_result.intermediate_states() is not None and functional.store_intermediate_results # ty:ignore[possibly-missing-attribute]
578
+ else None
579
+ )
580
+
581
+ return TimeEvolutionResult(
582
+ final_expected_values=final_expected_values,
583
+ expected_values=expected_values,
584
+ final_state=final_state,
585
+ intermediate_states=intermediate_states,
586
+ )
587
+
588
+ def _handle_controlled(
589
+ self, kernel: cudaq.Kernel, gate: Controlled, control_qubit: cudaq.QuakeValue, target_qubit: cudaq.QuakeValue
590
+ ) -> None:
591
+ """
592
+ Handle a controlled gate operation.
593
+
594
+ This method processes a controlled gate by creating a temporary kernel for the basic gate,
595
+ applying its handler, and then integrating it into the main kernel as a controlled operation.
596
+
597
+ Args:
598
+ kernel (cudaq.Kernel): The main CUDA kernel being constructed.
599
+ gate (Controlled): The controlled gate to be handled.
600
+ control_qubit (cudaq.QuakeValue): The control qubit for the gate.
601
+ target_qubit (cudaq.QuakeValue): The target qubit for the gate.
602
+
603
+ Raises:
604
+ UnsupportedGateError: If the number of control qubits is not equal to one or if the basic gate is unsupported.
605
+ """
606
+ if len(gate.control_qubits) != 1:
607
+ logger.error("Controlled gate with {} control qubits not supported", len(gate.control_qubits))
608
+ raise UnsupportedGateError
609
+ target_kernel, qubit = cudaq.make_kernel(cudaq.qubit)
610
+ handler = self._basic_gate_handlers.get(type(gate.basic_gate), None)
611
+ if handler is None:
612
+ logger.error("Unsupported gate inside Controlled: {}", type(gate.basic_gate).__name__)
613
+ raise UnsupportedGateError
614
+ handler(target_kernel, gate.basic_gate, qubit)
615
+ kernel.control(target_kernel, control_qubit, target_qubit)
616
+
617
+ def _handle_adjoint(self, kernel: cudaq.Kernel, gate: Adjoint, target_qubit: cudaq.QuakeValue) -> None:
618
+ """
619
+ Handle an adjoint (inverse) gate operation.
620
+
621
+ This method creates a temporary kernel for the basic gate wrapped by the adjoint,
622
+ applies the corresponding handler, and then integrates it into the main kernel as an adjoint operation.
623
+
624
+ Args:
625
+ kernel (cudaq.Kernel): The main CUDA kernel being constructed.
626
+ gate (Adjoint): The adjoint gate to be handled.
627
+ target_qubit (cudaq.QuakeValue): The target qubit for the gate.
628
+
629
+ Raises:
630
+ UnsupportedGateError: If the basic gate inside the adjoint is unsupported.
631
+ """
632
+ target_kernel, qubit = cudaq.make_kernel(cudaq.qubit)
633
+ handler = self._basic_gate_handlers.get(type(gate.basic_gate), None)
634
+ if handler is None:
635
+ logger.error("Unsupported gate inside Adjoint: {}", type(gate.basic_gate).__name__)
636
+ raise UnsupportedGateError
637
+ handler(target_kernel, gate.basic_gate, qubit)
638
+ kernel.adjoint(target_kernel, target_qubit)
639
+
640
+ @staticmethod
641
+ def _handle_M(kernel: cudaq.Kernel, gate: M, circuit: Circuit, qubits: cudaq.QuakeValue) -> None:
642
+ """
643
+ Handle a measurement gate.
644
+
645
+ Depending on whether the measurement targets all qubits or a subset,
646
+ this method applies measurement operations accordingly.
647
+
648
+ Args:
649
+ kernel (cudaq.Kernel): The CUDA kernel being constructed.
650
+ gate (M): The measurement gate.
651
+ circuit (Circuit): The circuit containing the measurement gate.
652
+ qubits (cudaq.QuakeValue): The allocated qubits for the circuit.
653
+ """
654
+ if gate.nqubits == circuit.nqubits:
655
+ kernel.mz(qubits)
656
+ else:
657
+ for idx in gate.target_qubits:
658
+ kernel.mz(qubits[idx])
659
+
660
+ @staticmethod
661
+ def _handle_I(kernel: cudaq.Kernel, gate: I, qubit: cudaq.QuakeValue) -> None:
662
+ """Handle an X gate operation."""
663
+ kernel.i(qubit)
664
+
665
+ @staticmethod
666
+ def _handle_X(kernel: cudaq.Kernel, gate: X, qubit: cudaq.QuakeValue) -> None:
667
+ """Handle an X gate operation."""
668
+ kernel.x(qubit)
669
+
670
+ @staticmethod
671
+ def _handle_Y(kernel: cudaq.Kernel, gate: Y, qubit: cudaq.QuakeValue) -> None:
672
+ """Handle an Y gate operation."""
673
+ kernel.y(qubit)
674
+
675
+ @staticmethod
676
+ def _handle_Z(kernel: cudaq.Kernel, gate: Z, qubit: cudaq.QuakeValue) -> None:
677
+ """Handle an Z gate operation."""
678
+ kernel.z(qubit)
679
+
680
+ @staticmethod
681
+ def _handle_H(kernel: cudaq.Kernel, gate: H, qubit: cudaq.QuakeValue) -> None:
682
+ """Handle an H gate operation."""
683
+ kernel.h(qubit)
684
+
685
+ @staticmethod
686
+ def _handle_S(kernel: cudaq.Kernel, gate: S, qubit: cudaq.QuakeValue) -> None:
687
+ """Handle an S gate operation."""
688
+ kernel.s(qubit)
689
+
690
+ @staticmethod
691
+ def _handle_T(kernel: cudaq.Kernel, gate: T, qubit: cudaq.QuakeValue) -> None:
692
+ """Handle an T gate operation."""
693
+ kernel.t(qubit)
694
+
695
+ @staticmethod
696
+ def _handle_RX(kernel: cudaq.Kernel, gate: RX, qubit: cudaq.QuakeValue) -> None:
697
+ """Handle an RX gate operation."""
698
+ kernel.rx(*[float(param) for param in gate.get_parameter_values()], qubit)
699
+
700
+ @staticmethod
701
+ def _handle_RY(kernel: cudaq.Kernel, gate: RY, qubit: cudaq.QuakeValue) -> None:
702
+ """Handle an RY gate operation."""
703
+ kernel.ry(*[float(param) for param in gate.get_parameter_values()], qubit)
704
+
705
+ @staticmethod
706
+ def _handle_RZ(kernel: cudaq.Kernel, gate: RZ, qubit: cudaq.QuakeValue) -> None:
707
+ """Handle an RZ gate operation."""
708
+ kernel.rz(*[float(param) for param in gate.get_parameter_values()], qubit)
709
+
710
+ @staticmethod
711
+ def _handle_U1(kernel: cudaq.Kernel, gate: U1, qubit: cudaq.QuakeValue) -> None:
712
+ """Handle an U1 gate operation."""
713
+ kernel.u3(theta=0.0, phi=float(gate.phi), delta=0.0, target=qubit)
714
+
715
+ @staticmethod
716
+ def _handle_U2(kernel: cudaq.Kernel, gate: U2, qubit: cudaq.QuakeValue) -> None:
717
+ """Handle an U2 gate operation."""
718
+ kernel.u3(theta=np.pi / 2, phi=float(gate.phi), delta=float(gate.gamma), target=qubit)
719
+
720
+ @staticmethod
721
+ def _handle_U3(kernel: cudaq.Kernel, gate: U3, qubit: cudaq.QuakeValue) -> None:
722
+ """Handle an U3 gate operation."""
723
+ kernel.u3(theta=float(gate.theta), phi=float(gate.phi), delta=float(gate.gamma), target=qubit)
724
+
725
+ @staticmethod
726
+ def _handle_SWAP(kernel: cudaq.Kernel, gate: SWAP, qubit_0: cudaq.QuakeValue, qubit_1: cudaq.QuakeValue) -> None:
727
+ kernel.swap(qubit_0, qubit_1)
728
+
729
+ def _hamiltonian_to_cuda(self, hamiltonian: Hamiltonian) -> OperatorSum:
730
+ out = None
731
+ for offset, terms in hamiltonian:
732
+ if out is None:
733
+ out = offset * np.prod([self._pauli_operator_handlers[type(pauli)](pauli) for pauli in terms])
734
+ else:
735
+ out += offset * np.prod([self._pauli_operator_handlers[type(pauli)](pauli) for pauli in terms])
736
+ return out
737
+
738
+ @staticmethod
739
+ def _handle_PauliX(operator: PauliX) -> ElementaryOperator:
740
+ return spin.x(target=operator.qubit) # ty:ignore[unresolved-attribute]
741
+
742
+ @staticmethod
743
+ def _handle_PauliY(operator: PauliY) -> ElementaryOperator:
744
+ return spin.y(target=operator.qubit) # ty:ignore[unresolved-attribute]
745
+
746
+ @staticmethod
747
+ def _handle_PauliZ(operator: PauliZ) -> ElementaryOperator:
748
+ return spin.z(target=operator.qubit) # ty:ignore[unresolved-attribute]
749
+
750
+ @staticmethod
751
+ def _handle_PauliI(operator: PauliI) -> ElementaryOperator:
752
+ return spin.i(target=operator.qubit) # ty:ignore[unresolved-attribute]