lorann 0.4.4__tar.gz
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.
- lorann-0.4.4/LICENSE +21 -0
- lorann-0.4.4/MANIFEST.in +5 -0
- lorann-0.4.4/PKG-INFO +168 -0
- lorann-0.4.4/README.md +131 -0
- lorann-0.4.4/lorann/Eigen/AccelerateSupport +52 -0
- lorann-0.4.4/lorann/Eigen/Cholesky +43 -0
- lorann-0.4.4/lorann/Eigen/CholmodSupport +48 -0
- lorann-0.4.4/lorann/Eigen/Core +446 -0
- lorann-0.4.4/lorann/Eigen/Dense +7 -0
- lorann-0.4.4/lorann/Eigen/Eigen +2 -0
- lorann-0.4.4/lorann/Eigen/Eigenvalues +63 -0
- lorann-0.4.4/lorann/Eigen/Geometry +59 -0
- lorann-0.4.4/lorann/Eigen/Householder +31 -0
- lorann-0.4.4/lorann/Eigen/IterativeLinearSolvers +52 -0
- lorann-0.4.4/lorann/Eigen/Jacobi +33 -0
- lorann-0.4.4/lorann/Eigen/KLUSupport +43 -0
- lorann-0.4.4/lorann/Eigen/LU +46 -0
- lorann-0.4.4/lorann/Eigen/MetisSupport +35 -0
- lorann-0.4.4/lorann/Eigen/OrderingMethods +73 -0
- lorann-0.4.4/lorann/Eigen/PaStiXSupport +51 -0
- lorann-0.4.4/lorann/Eigen/PardisoSupport +38 -0
- lorann-0.4.4/lorann/Eigen/QR +48 -0
- lorann-0.4.4/lorann/Eigen/QtAlignedMalloc +32 -0
- lorann-0.4.4/lorann/Eigen/SPQRSupport +41 -0
- lorann-0.4.4/lorann/Eigen/SVD +56 -0
- lorann-0.4.4/lorann/Eigen/Sparse +33 -0
- lorann-0.4.4/lorann/Eigen/SparseCholesky +40 -0
- lorann-0.4.4/lorann/Eigen/SparseCore +70 -0
- lorann-0.4.4/lorann/Eigen/SparseLU +50 -0
- lorann-0.4.4/lorann/Eigen/SparseQR +38 -0
- lorann-0.4.4/lorann/Eigen/StdDeque +30 -0
- lorann-0.4.4/lorann/Eigen/StdList +29 -0
- lorann-0.4.4/lorann/Eigen/StdVector +30 -0
- lorann-0.4.4/lorann/Eigen/SuperLUSupport +70 -0
- lorann-0.4.4/lorann/Eigen/ThreadPool +80 -0
- lorann-0.4.4/lorann/Eigen/UmfPackSupport +42 -0
- lorann-0.4.4/lorann/Eigen/Version +14 -0
- lorann-0.4.4/lorann/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- lorann-0.4.4/lorann/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/Cholesky/LDLT.h +649 -0
- lorann-0.4.4/lorann/Eigen/src/Cholesky/LLT.h +514 -0
- lorann-0.4.4/lorann/Eigen/src/Cholesky/LLT_LAPACKE.h +124 -0
- lorann-0.4.4/lorann/Eigen/src/CholmodSupport/CholmodSupport.h +738 -0
- lorann-0.4.4/lorann/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/Core/ArithmeticSequence.h +239 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Array.h +376 -0
- lorann-0.4.4/lorann/Eigen/src/Core/ArrayBase.h +213 -0
- lorann-0.4.4/lorann/Eigen/src/Core/ArrayWrapper.h +165 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Assign.h +80 -0
- lorann-0.4.4/lorann/Eigen/src/Core/AssignEvaluator.h +1057 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Assign_MKL.h +183 -0
- lorann-0.4.4/lorann/Eigen/src/Core/BandMatrix.h +338 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Block.h +429 -0
- lorann-0.4.4/lorann/Eigen/src/Core/CommaInitializer.h +149 -0
- lorann-0.4.4/lorann/Eigen/src/Core/ConditionEstimator.h +173 -0
- lorann-0.4.4/lorann/Eigen/src/Core/CoreEvaluators.h +2018 -0
- lorann-0.4.4/lorann/Eigen/src/Core/CoreIterators.h +141 -0
- lorann-0.4.4/lorann/Eigen/src/Core/CwiseBinaryOp.h +166 -0
- lorann-0.4.4/lorann/Eigen/src/Core/CwiseNullaryOp.h +975 -0
- lorann-0.4.4/lorann/Eigen/src/Core/CwiseTernaryOp.h +171 -0
- lorann-0.4.4/lorann/Eigen/src/Core/CwiseUnaryOp.h +91 -0
- lorann-0.4.4/lorann/Eigen/src/Core/CwiseUnaryView.h +167 -0
- lorann-0.4.4/lorann/Eigen/src/Core/DenseBase.h +673 -0
- lorann-0.4.4/lorann/Eigen/src/Core/DenseCoeffsBase.h +568 -0
- lorann-0.4.4/lorann/Eigen/src/Core/DenseStorage.h +578 -0
- lorann-0.4.4/lorann/Eigen/src/Core/DeviceWrapper.h +153 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Diagonal.h +219 -0
- lorann-0.4.4/lorann/Eigen/src/Core/DiagonalMatrix.h +420 -0
- lorann-0.4.4/lorann/Eigen/src/Core/DiagonalProduct.h +30 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Dot.h +268 -0
- lorann-0.4.4/lorann/Eigen/src/Core/EigenBase.h +149 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Fill.h +140 -0
- lorann-0.4.4/lorann/Eigen/src/Core/FindCoeff.h +464 -0
- lorann-0.4.4/lorann/Eigen/src/Core/ForceAlignedAccess.h +127 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Fuzzy.h +132 -0
- lorann-0.4.4/lorann/Eigen/src/Core/GeneralProduct.h +519 -0
- lorann-0.4.4/lorann/Eigen/src/Core/GenericPacketMath.h +1702 -0
- lorann-0.4.4/lorann/Eigen/src/Core/GlobalFunctions.h +230 -0
- lorann-0.4.4/lorann/Eigen/src/Core/IO.h +233 -0
- lorann-0.4.4/lorann/Eigen/src/Core/IndexedView.h +321 -0
- lorann-0.4.4/lorann/Eigen/src/Core/InnerProduct.h +254 -0
- lorann-0.4.4/lorann/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Inverse.h +108 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Map.h +153 -0
- lorann-0.4.4/lorann/Eigen/src/Core/MapBase.h +283 -0
- lorann-0.4.4/lorann/Eigen/src/Core/MathFunctions.h +2105 -0
- lorann-0.4.4/lorann/Eigen/src/Core/MathFunctionsImpl.h +263 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Matrix.h +534 -0
- lorann-0.4.4/lorann/Eigen/src/Core/MatrixBase.h +545 -0
- lorann-0.4.4/lorann/Eigen/src/Core/NestByValue.h +91 -0
- lorann-0.4.4/lorann/Eigen/src/Core/NoAlias.h +102 -0
- lorann-0.4.4/lorann/Eigen/src/Core/NumTraits.h +335 -0
- lorann-0.4.4/lorann/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- lorann-0.4.4/lorann/Eigen/src/Core/PermutationMatrix.h +552 -0
- lorann-0.4.4/lorann/Eigen/src/Core/PlainObjectBase.h +1014 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Product.h +307 -0
- lorann-0.4.4/lorann/Eigen/src/Core/ProductEvaluators.h +1287 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Random.h +207 -0
- lorann-0.4.4/lorann/Eigen/src/Core/RandomImpl.h +262 -0
- lorann-0.4.4/lorann/Eigen/src/Core/RealView.h +250 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Redux.h +535 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Ref.h +383 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Replicate.h +130 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Reshaped.h +398 -0
- lorann-0.4.4/lorann/Eigen/src/Core/ReturnByValue.h +111 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Reverse.h +202 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Select.h +92 -0
- lorann-0.4.4/lorann/Eigen/src/Core/SelfAdjointView.h +329 -0
- lorann-0.4.4/lorann/Eigen/src/Core/SelfCwiseBinaryOp.h +50 -0
- lorann-0.4.4/lorann/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Solve.h +174 -0
- lorann-0.4.4/lorann/Eigen/src/Core/SolveTriangular.h +237 -0
- lorann-0.4.4/lorann/Eigen/src/Core/SolverBase.h +167 -0
- lorann-0.4.4/lorann/Eigen/src/Core/StableNorm.h +217 -0
- lorann-0.4.4/lorann/Eigen/src/Core/StlIterators.h +619 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Stride.h +114 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Swap.h +99 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Transpose.h +427 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Transpositions.h +323 -0
- lorann-0.4.4/lorann/Eigen/src/Core/TriangularMatrix.h +900 -0
- lorann-0.4.4/lorann/Eigen/src/Core/VectorBlock.h +83 -0
- lorann-0.4.4/lorann/Eigen/src/Core/VectorwiseOp.h +733 -0
- lorann-0.4.4/lorann/Eigen/src/Core/Visitor.h +537 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX/Complex.h +565 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX/MathFunctions.h +130 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX/PacketMath.h +3081 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX/TypeCasting.h +308 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX512/MathFunctions.h +141 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX512/PacketMath.h +3146 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AltiVec/Complex.h +653 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AltiVec/MathFunctions.h +81 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AltiVec/PacketMath.h +3729 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/Default/ConjHelper.h +128 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/Default/Half.h +1091 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/Default/Settings.h +47 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/MSA/Complex.h +620 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/NEON/Complex.h +732 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/NEON/MathFunctions.h +68 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/NEON/PacketMath.h +6130 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/SSE/Complex.h +503 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/SSE/MathFunctions.h +88 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/SSE/PacketMath.h +2384 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/SSE/TypeCasting.h +230 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/ZVector/Complex.h +570 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/ZVector/MathFunctions.h +244 -0
- lorann-0.4.4/lorann/Eigen/src/Core/arch/ZVector/PacketMath.h +1413 -0
- lorann-0.4.4/lorann/Eigen/src/Core/functors/AssignmentFunctors.h +174 -0
- lorann-0.4.4/lorann/Eigen/src/Core/functors/BinaryFunctors.h +747 -0
- lorann-0.4.4/lorann/Eigen/src/Core/functors/NullaryFunctors.h +274 -0
- lorann-0.4.4/lorann/Eigen/src/Core/functors/StlFunctors.h +149 -0
- lorann-0.4.4/lorann/Eigen/src/Core/functors/TernaryFunctors.h +52 -0
- lorann-0.4.4/lorann/Eigen/src/Core/functors/UnaryFunctors.h +1420 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/GeneralBlockPanelKernel.h +3153 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/GeneralMatrixMatrix.h +459 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +330 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +148 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +205 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/GeneralMatrixVector.h +473 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +139 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/Parallelizer.h +282 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +483 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +277 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/SelfadjointMatrixVector.h +253 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +115 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/SelfadjointRank2Update.h +95 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/TriangularMatrixMatrix.h +397 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +325 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/TriangularMatrixVector.h +347 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +275 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/TriangularSolverMatrix.h +388 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +166 -0
- lorann-0.4.4/lorann/Eigen/src/Core/products/TriangularSolverVector.h +122 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/Assert.h +158 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/BlasUtil.h +622 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/Constants.h +598 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/DisableStupidWarnings.h +146 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/EmulateArray.h +270 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/ForwardDeclarations.h +524 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/IntegralConstant.h +279 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/MKL_support.h +139 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/Macros.h +1326 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/Memory.h +1361 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/Meta.h +760 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/MoreMeta.h +638 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/ReenableStupidWarnings.h +44 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/Serializer.h +209 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/StaticAssert.h +105 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- lorann-0.4.4/lorann/Eigen/src/Core/util/XprHelper.h +1093 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/ComplexEigenSolver.h +315 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/ComplexSchur.h +442 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +95 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/EigenSolver.h +579 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +402 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +212 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/HessenbergDecomposition.h +356 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +142 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/RealQZ.h +587 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/RealSchur.h +519 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +83 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +850 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +90 -0
- lorann-0.4.4/lorann/Eigen/src/Eigenvalues/Tridiagonalization.h +529 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/AlignedBox.h +485 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/AngleAxis.h +245 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/EulerAngles.h +203 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/Homogeneous.h +453 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/Hyperplane.h +273 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/OrthoMethods.h +257 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/ParametrizedLine.h +232 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/Quaternion.h +930 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/Rotation2D.h +201 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/RotationBase.h +209 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/Scaling.h +195 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/Transform.h +1485 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/Translation.h +204 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/Umeyama.h +161 -0
- lorann-0.4.4/lorann/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- lorann-0.4.4/lorann/Eigen/src/Householder/BlockHouseholder.h +115 -0
- lorann-0.4.4/lorann/Eigen/src/Householder/Householder.h +155 -0
- lorann-0.4.4/lorann/Eigen/src/Householder/HouseholderSequence.h +504 -0
- lorann-0.4.4/lorann/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +213 -0
- lorann-0.4.4/lorann/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +217 -0
- lorann-0.4.4/lorann/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +217 -0
- lorann-0.4.4/lorann/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +402 -0
- lorann-0.4.4/lorann/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +449 -0
- lorann-0.4.4/lorann/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +395 -0
- lorann-0.4.4/lorann/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +193 -0
- lorann-0.4.4/lorann/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +111 -0
- lorann-0.4.4/lorann/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/Jacobi/Jacobi.h +427 -0
- lorann-0.4.4/lorann/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- lorann-0.4.4/lorann/Eigen/src/LU/Determinant.h +98 -0
- lorann-0.4.4/lorann/Eigen/src/LU/FullPivLU.h +826 -0
- lorann-0.4.4/lorann/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/LU/InverseImpl.h +353 -0
- lorann-0.4.4/lorann/Eigen/src/LU/PartialPivLU.h +586 -0
- lorann-0.4.4/lorann/Eigen/src/LU/PartialPivLU_LAPACKE.h +97 -0
- lorann-0.4.4/lorann/Eigen/src/LU/arch/InverseSize4.h +353 -0
- lorann-0.4.4/lorann/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/MetisSupport/MetisSupport.h +125 -0
- lorann-0.4.4/lorann/Eigen/src/OrderingMethods/Amd.h +413 -0
- lorann-0.4.4/lorann/Eigen/src/OrderingMethods/Eigen_Colamd.h +1690 -0
- lorann-0.4.4/lorann/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/OrderingMethods/Ordering.h +146 -0
- lorann-0.4.4/lorann/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/PaStiXSupport/PaStiXSupport.h +632 -0
- lorann-0.4.4/lorann/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/PardisoSupport/PardisoSupport.h +499 -0
- lorann-0.4.4/lorann/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
- lorann-0.4.4/lorann/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +161 -0
- lorann-0.4.4/lorann/Eigen/src/QR/CompleteOrthogonalDecomposition.h +648 -0
- lorann-0.4.4/lorann/Eigen/src/QR/FullPivHouseholderQR.h +733 -0
- lorann-0.4.4/lorann/Eigen/src/QR/HouseholderQR.h +543 -0
- lorann-0.4.4/lorann/Eigen/src/QR/HouseholderQR_LAPACKE.h +77 -0
- lorann-0.4.4/lorann/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +315 -0
- lorann-0.4.4/lorann/Eigen/src/SVD/BDCSVD.h +1470 -0
- lorann-0.4.4/lorann/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- lorann-0.4.4/lorann/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/SVD/JacobiSVD.h +827 -0
- lorann-0.4.4/lorann/Eigen/src/SVD/JacobiSVD_LAPACKE.h +127 -0
- lorann-0.4.4/lorann/Eigen/src/SVD/SVDBase.h +436 -0
- lorann-0.4.4/lorann/Eigen/src/SVD/UpperBidiagonalization.h +379 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCholesky/SimplicialCholesky.h +863 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +388 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/AmbiVector.h +329 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/CompressedStorage.h +206 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +308 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseAssign.h +279 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseBlock.h +534 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseColEtree.h +194 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseCompressedBase.h +591 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +938 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +142 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseDenseProduct.h +314 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseDot.h +100 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseFuzzy.h +31 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseMap.h +295 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseMatrix.h +1876 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseMatrixBase.h +451 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparsePermutation.h +249 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseProduct.h +178 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseRedux.h +47 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseRef.h +370 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseSelfAdjointView.h +613 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseSolverBase.h +115 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +184 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseTranspose.h +83 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseTriangularView.h +177 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseUtil.h +209 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseVector.h +532 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/SparseView.h +225 -0
- lorann-0.4.4/lorann/Eigen/src/SparseCore/TriangularSolver.h +274 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU.h +969 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLUImpl.h +79 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_Memory.h +210 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_Structs.h +113 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +319 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_Utils.h +75 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_column_bmod.h +177 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_column_dfs.h +168 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +106 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +114 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +133 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_panel_bmod.h +215 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_panel_dfs.h +235 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_pivotL.h +136 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_pruneL.h +130 -0
- lorann-0.4.4/lorann/Eigen/src/SparseLU/SparseLU_relax_snode.h +81 -0
- lorann-0.4.4/lorann/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/SparseQR/SparseQR.h +706 -0
- lorann-0.4.4/lorann/Eigen/src/StlSupport/StdDeque.h +51 -0
- lorann-0.4.4/lorann/Eigen/src/StlSupport/StdList.h +50 -0
- lorann-0.4.4/lorann/Eigen/src/StlSupport/StdVector.h +51 -0
- lorann-0.4.4/lorann/Eigen/src/StlSupport/details.h +82 -0
- lorann-0.4.4/lorann/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/SuperLUSupport/SuperLUSupport.h +927 -0
- lorann-0.4.4/lorann/Eigen/src/ThreadPool/Barrier.h +70 -0
- lorann-0.4.4/lorann/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- lorann-0.4.4/lorann/Eigen/src/ThreadPool/EventCount.h +241 -0
- lorann-0.4.4/lorann/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- lorann-0.4.4/lorann/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- lorann-0.4.4/lorann/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- lorann-0.4.4/lorann/Eigen/src/ThreadPool/RunQueue.h +230 -0
- lorann-0.4.4/lorann/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- lorann-0.4.4/lorann/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- lorann-0.4.4/lorann/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- lorann-0.4.4/lorann/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- lorann-0.4.4/lorann/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- lorann-0.4.4/lorann/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/UmfPackSupport/UmfPackSupport.h +606 -0
- lorann-0.4.4/lorann/Eigen/src/misc/Image.h +80 -0
- lorann-0.4.4/lorann/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- lorann-0.4.4/lorann/Eigen/src/misc/Kernel.h +77 -0
- lorann-0.4.4/lorann/Eigen/src/misc/RealSvd2x2.h +53 -0
- lorann-0.4.4/lorann/Eigen/src/misc/blas.h +97 -0
- lorann-0.4.4/lorann/Eigen/src/misc/lapacke.h +10085 -0
- lorann-0.4.4/lorann/Eigen/src/misc/lapacke_helpers.h +163 -0
- lorann-0.4.4/lorann/Eigen/src/misc/lapacke_mangling.h +16 -0
- lorann-0.4.4/lorann/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- lorann-0.4.4/lorann/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- lorann-0.4.4/lorann/Eigen/src/plugins/BlockMethods.inc +1370 -0
- lorann-0.4.4/lorann/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- lorann-0.4.4/lorann/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- lorann-0.4.4/lorann/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- lorann-0.4.4/lorann/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- lorann-0.4.4/lorann/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- lorann-0.4.4/lorann/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- lorann-0.4.4/lorann/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- lorann-0.4.4/lorann/cereal/access.hpp +351 -0
- lorann-0.4.4/lorann/cereal/archives/adapters.hpp +163 -0
- lorann-0.4.4/lorann/cereal/archives/binary.hpp +169 -0
- lorann-0.4.4/lorann/cereal/archives/json.hpp +1041 -0
- lorann-0.4.4/lorann/cereal/archives/portable_binary.hpp +334 -0
- lorann-0.4.4/lorann/cereal/archives/xml.hpp +956 -0
- lorann-0.4.4/lorann/cereal/cereal.hpp +1120 -0
- lorann-0.4.4/lorann/cereal/details/helpers.hpp +422 -0
- lorann-0.4.4/lorann/cereal/details/polymorphic_impl.hpp +825 -0
- lorann-0.4.4/lorann/cereal/details/polymorphic_impl_fwd.hpp +65 -0
- lorann-0.4.4/lorann/cereal/details/static_object.hpp +128 -0
- lorann-0.4.4/lorann/cereal/details/traits.hpp +1411 -0
- lorann-0.4.4/lorann/cereal/details/util.hpp +84 -0
- lorann-0.4.4/lorann/cereal/external/LICENSE +21 -0
- lorann-0.4.4/lorann/cereal/external/base64.hpp +134 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/LICENSE +13 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/allocators.h +284 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/cursorstreamwrapper.h +78 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/document.h +2659 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/encodedstream.h +299 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/encodings.h +716 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/error/en.h +74 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/error/error.h +161 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/filereadstream.h +99 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/filewritestream.h +104 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/fwd.h +151 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/internal/biginteger.h +290 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/internal/diyfp.h +271 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/internal/dtoa.h +245 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/internal/ieee754.h +78 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/internal/itoa.h +308 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/internal/meta.h +186 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/internal/pow10.h +55 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/internal/regex.h +740 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/internal/stack.h +232 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/internal/strfunc.h +69 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/internal/strtod.h +290 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/internal/swap.h +46 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/istreamwrapper.h +128 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/memorybuffer.h +70 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/memorystream.h +71 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/msinttypes/LICENSE +29 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/msinttypes/inttypes.h +316 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/msinttypes/stdint.h +300 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/ostreamwrapper.h +81 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/pointer.h +1414 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/prettywriter.h +277 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/rapidjson.h +656 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/reader.h +2230 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/schema.h +2497 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/stream.h +223 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/stringbuffer.h +121 -0
- lorann-0.4.4/lorann/cereal/external/rapidjson/writer.h +709 -0
- lorann-0.4.4/lorann/cereal/external/rapidxml/license.txt +52 -0
- lorann-0.4.4/lorann/cereal/external/rapidxml/manual.html +406 -0
- lorann-0.4.4/lorann/cereal/external/rapidxml/rapidxml.hpp +2624 -0
- lorann-0.4.4/lorann/cereal/external/rapidxml/rapidxml_iterators.hpp +175 -0
- lorann-0.4.4/lorann/cereal/external/rapidxml/rapidxml_print.hpp +428 -0
- lorann-0.4.4/lorann/cereal/external/rapidxml/rapidxml_utils.hpp +123 -0
- lorann-0.4.4/lorann/cereal/macros.hpp +156 -0
- lorann-0.4.4/lorann/cereal/specialize.hpp +139 -0
- lorann-0.4.4/lorann/cereal/types/array.hpp +79 -0
- lorann-0.4.4/lorann/cereal/types/atomic.hpp +55 -0
- lorann-0.4.4/lorann/cereal/types/base_class.hpp +203 -0
- lorann-0.4.4/lorann/cereal/types/bitset.hpp +176 -0
- lorann-0.4.4/lorann/cereal/types/boost_variant.hpp +164 -0
- lorann-0.4.4/lorann/cereal/types/chrono.hpp +72 -0
- lorann-0.4.4/lorann/cereal/types/common.hpp +129 -0
- lorann-0.4.4/lorann/cereal/types/complex.hpp +56 -0
- lorann-0.4.4/lorann/cereal/types/concepts/pair_associative_container.hpp +73 -0
- lorann-0.4.4/lorann/cereal/types/deque.hpp +62 -0
- lorann-0.4.4/lorann/cereal/types/forward_list.hpp +68 -0
- lorann-0.4.4/lorann/cereal/types/functional.hpp +43 -0
- lorann-0.4.4/lorann/cereal/types/list.hpp +62 -0
- lorann-0.4.4/lorann/cereal/types/map.hpp +36 -0
- lorann-0.4.4/lorann/cereal/types/memory.hpp +425 -0
- lorann-0.4.4/lorann/cereal/types/optional.hpp +65 -0
- lorann-0.4.4/lorann/cereal/types/polymorphic.hpp +483 -0
- lorann-0.4.4/lorann/cereal/types/queue.hpp +132 -0
- lorann-0.4.4/lorann/cereal/types/set.hpp +103 -0
- lorann-0.4.4/lorann/cereal/types/stack.hpp +76 -0
- lorann-0.4.4/lorann/cereal/types/string.hpp +61 -0
- lorann-0.4.4/lorann/cereal/types/tuple.hpp +123 -0
- lorann-0.4.4/lorann/cereal/types/unordered_map.hpp +36 -0
- lorann-0.4.4/lorann/cereal/types/unordered_set.hpp +99 -0
- lorann-0.4.4/lorann/cereal/types/utility.hpp +47 -0
- lorann-0.4.4/lorann/cereal/types/valarray.hpp +89 -0
- lorann-0.4.4/lorann/cereal/types/variant.hpp +108 -0
- lorann-0.4.4/lorann/cereal/types/vector.hpp +112 -0
- lorann-0.4.4/lorann/cereal/version.hpp +52 -0
- lorann-0.4.4/lorann/clustering.h +467 -0
- lorann-0.4.4/lorann/detail/bfloat.h +56 -0
- lorann-0.4.4/lorann/detail/binary.h +71 -0
- lorann-0.4.4/lorann/detail/detail.h +14 -0
- lorann-0.4.4/lorann/detail/float.h +40 -0
- lorann-0.4.4/lorann/detail/half.h +55 -0
- lorann-0.4.4/lorann/detail/traits.h +14 -0
- lorann-0.4.4/lorann/detail/uint8.h +53 -0
- lorann-0.4.4/lorann/lorann.h +7 -0
- lorann-0.4.4/lorann/lorann_base.h +304 -0
- lorann-0.4.4/lorann/lorann_fp.h +335 -0
- lorann-0.4.4/lorann/lorann_quant.h +423 -0
- lorann-0.4.4/lorann/miniselect/floyd_rivest_select.h +129 -0
- lorann-0.4.4/lorann/miniselect/heap_select.h +106 -0
- lorann-0.4.4/lorann/miniselect/median_of_3_random.h +70 -0
- lorann-0.4.4/lorann/miniselect/median_of_medians.h +79 -0
- lorann-0.4.4/lorann/miniselect/median_of_ninthers.h +202 -0
- lorann-0.4.4/lorann/miniselect/pdqselect.h +937 -0
- lorann-0.4.4/lorann/miniselect/private/median_common.h +454 -0
- lorann-0.4.4/lorann/quant.h +1479 -0
- lorann-0.4.4/lorann/rsvd/Constants.hpp +20 -0
- lorann-0.4.4/lorann/rsvd/ErrorEstimators.hpp +36 -0
- lorann-0.4.4/lorann/rsvd/GramSchmidt.hpp +74 -0
- lorann-0.4.4/lorann/rsvd/Prelude.hpp +8 -0
- lorann-0.4.4/lorann/rsvd/RandomizedRangeFinder.hpp +206 -0
- lorann-0.4.4/lorann/rsvd/RandomizedSvd.hpp +145 -0
- lorann-0.4.4/lorann/rsvd/StandardNormalRandom.hpp +95 -0
- lorann-0.4.4/lorann/serialization.h +40 -0
- lorann-0.4.4/lorann/simsimd/binary.h +486 -0
- lorann-0.4.4/lorann/simsimd/curved.h +1541 -0
- lorann-0.4.4/lorann/simsimd/dot.h +1853 -0
- lorann-0.4.4/lorann/simsimd/elementwise.h +2465 -0
- lorann-0.4.4/lorann/simsimd/geospatial.h +43 -0
- lorann-0.4.4/lorann/simsimd/mesh.h +69 -0
- lorann-0.4.4/lorann/simsimd/probability.h +606 -0
- lorann-0.4.4/lorann/simsimd/simsimd.h +2567 -0
- lorann-0.4.4/lorann/simsimd/sparse.h +1384 -0
- lorann-0.4.4/lorann/simsimd/spatial.h +2335 -0
- lorann-0.4.4/lorann/simsimd/types.h +666 -0
- lorann-0.4.4/lorann/utils.h +344 -0
- lorann-0.4.4/pyproject.toml +39 -0
- lorann-0.4.4/python/lorann/__init__.py +1 -0
- lorann-0.4.4/python/lorann/__pycache__/__init__.cpython-312.pyc +0 -0
- lorann-0.4.4/python/lorann/__pycache__/lorann.cpython-312.pyc +0 -0
- lorann-0.4.4/python/lorann/lorann.py +593 -0
- lorann-0.4.4/python/lorann.egg-info/PKG-INFO +168 -0
- lorann-0.4.4/python/lorann.egg-info/SOURCES.txt +578 -0
- lorann-0.4.4/python/lorann.egg-info/dependency_links.txt +1 -0
- lorann-0.4.4/python/lorann.egg-info/not-zip-safe +1 -0
- lorann-0.4.4/python/lorann.egg-info/requires.txt +1 -0
- lorann-0.4.4/python/lorann.egg-info/top_level.txt +3 -0
- lorann-0.4.4/python/lorann_gpu/__init__.py +1 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/_torch.cpython-311.pyc +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.KMeans._balance_cpu.locals.loop-339.py311.1.nbc +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.KMeans._balance_cpu.locals.loop-339.py311.nbi +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu._assign_clusters_numba-58.py311.1.nbc +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu._assign_clusters_numba-58.py311.nbi +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu._assign_clusters_numba-59.py311.1.nbc +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu._assign_clusters_numba-59.py311.nbi +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.balance_kmeans_numba-111.py311.1.nbc +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.balance_kmeans_numba-111.py311.nbi +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.balance_kmeans_numba-145.py311.1.nbc +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.balance_kmeans_numba-145.py311.2.nbc +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.balance_kmeans_numba-145.py311.nbi +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.compute_distances_cosine_numba-123.py311.1.nbc +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.compute_distances_cosine_numba-123.py311.nbi +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.compute_distances_euclidean_numba-111.py311.1.nbc +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.compute_distances_euclidean_numba-111.py311.nbi +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.cpython-311.pyc +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.normalize_centroid_numba-134.py311.1.nbc +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/common_gpu.normalize_centroid_numba-134.py311.nbi +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/jax.cpython-311.pyc +0 -0
- lorann-0.4.4/python/lorann_gpu/__pycache__/randomized_svd.cpython-311.pyc +0 -0
- lorann-0.4.4/python/lorann_gpu/lorann_gpu.py +552 -0
- lorann-0.4.4/python/lorannmodule.cc +816 -0
- lorann-0.4.4/setup.cfg +4 -0
- lorann-0.4.4/setup.py +231 -0
- lorann-0.4.4/tests/test_lorann.py +452 -0
lorann-0.4.4/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Elias Jääsaari
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
lorann-0.4.4/MANIFEST.in
ADDED
lorann-0.4.4/PKG-INFO
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: lorann
|
|
3
|
+
Version: 0.4.4
|
|
4
|
+
Summary: Approximate Nearest Neighbor search library with extremely fast queries, tiny memory usage, and rapid indexing.
|
|
5
|
+
Home-page: https://github.com/ejaasaari/lorann
|
|
6
|
+
Author: Elias Jääsaari
|
|
7
|
+
Author-email: elias.jaasaari@gmail.com
|
|
8
|
+
License: MIT
|
|
9
|
+
Keywords: vector search,approximate nearest neighbor search
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Programming Language :: C++
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Topic :: Database :: Database Engines/Servers
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Operating System :: MacOS
|
|
21
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
22
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: numpy
|
|
26
|
+
Dynamic: author
|
|
27
|
+
Dynamic: author-email
|
|
28
|
+
Dynamic: classifier
|
|
29
|
+
Dynamic: description
|
|
30
|
+
Dynamic: description-content-type
|
|
31
|
+
Dynamic: home-page
|
|
32
|
+
Dynamic: keywords
|
|
33
|
+
Dynamic: license
|
|
34
|
+
Dynamic: license-file
|
|
35
|
+
Dynamic: requires-dist
|
|
36
|
+
Dynamic: summary
|
|
37
|
+
|
|
38
|
+
<h1 align="center">LoRANN</h1>
|
|
39
|
+
<div align="center">
|
|
40
|
+
Approximate nearest neighbor search library implementing <a href="https://arxiv.org/abs/2410.18926">reduced-rank regression</a> (NeurIPS '24), a technique enabling extremely fast queries, tiny memory usage, and rapid indexing on modern embedding datasets.
|
|
41
|
+
</div>
|
|
42
|
+
<br/>
|
|
43
|
+
|
|
44
|
+
<div align="center">
|
|
45
|
+
<a href="https://github.com/ejaasaari/lorann/actions/workflows/build.yml"><img src="https://github.com/ejaasaari/lorann/actions/workflows/build.yml/badge.svg" alt="Build status" /></a>
|
|
46
|
+
<a href="https://arxiv.org/abs/2410.18926"><img src="https://img.shields.io/badge/Paper-NeurIPS%3A_LoRANN-salmon" alt="Paper" /></a>
|
|
47
|
+
<a href="https://ejaasaari.github.io/lorann"><img src="https://img.shields.io/badge/api-reference-blue.svg" alt="Documentation" /></a>
|
|
48
|
+
<a href="https://pypi.org/project/lorann/"><img src="https://img.shields.io/pypi/v/lorann?color=blue" alt="PyPI" /></a>
|
|
49
|
+
<a href="https://github.com/ejaasaari/lorann/blob/master/LICENSE"><img src="https://img.shields.io/github/license/ejaasaari/lorann" alt="License" /></a>
|
|
50
|
+
<a href="https://github.com/ejaasaari/lorann/stargazers"><img src="https://img.shields.io/github/stars/ejaasaari/lorann" alt="GitHub stars" /></a>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
- Header-only C++17 library with Python bindings
|
|
56
|
+
- Query speed matching state-of-the-art graph methods but with tiny memory usage
|
|
57
|
+
- Optimized for modern high-dimensional (d > 100) embedding data sets
|
|
58
|
+
- Optimized for modern CPU architectures with acceleration for AVX2, AVX-512, and ARM NEON
|
|
59
|
+
- State-of-the-art query speed for GPU batch queries (experimental)
|
|
60
|
+
- Supported data types: float32, float16, bfloat16, uint8, binary
|
|
61
|
+
- Supported distances: (negative) inner product, Euclidean distance, cosine distance
|
|
62
|
+
- Support for index serialization
|
|
63
|
+
|
|
64
|
+
## Getting started
|
|
65
|
+
|
|
66
|
+
### Python
|
|
67
|
+
|
|
68
|
+
Install the module with `pip install lorann`
|
|
69
|
+
|
|
70
|
+
> [!TIP]
|
|
71
|
+
> On macOS, it is recommended to use the Homebrew version of Clang as the compiler:
|
|
72
|
+
|
|
73
|
+
```shell script
|
|
74
|
+
brew install llvm libomp
|
|
75
|
+
CC=/opt/homebrew/opt/llvm/bin/clang CXX=/opt/homebrew/opt/llvm/bin/clang++ pip install lorann
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
A minimal example for indexing and querying a dataset using LoRANN is provided below:
|
|
79
|
+
|
|
80
|
+
```python
|
|
81
|
+
import lorann
|
|
82
|
+
import numpy as np
|
|
83
|
+
from sklearn.datasets import fetch_openml # scikit-learn is used only for loading the data
|
|
84
|
+
|
|
85
|
+
X, _ = fetch_openml("mnist_784", version=1, return_X_y=True, as_frame=False)
|
|
86
|
+
X = np.ascontiguousarray(X, dtype=np.float32)
|
|
87
|
+
|
|
88
|
+
data = X[:60_000]
|
|
89
|
+
index = lorann.LorannIndex(
|
|
90
|
+
data=data,
|
|
91
|
+
n_clusters=256,
|
|
92
|
+
global_dim=128,
|
|
93
|
+
quantization_bits=8,
|
|
94
|
+
distance=lorann.L2,
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
index.build(verbose=False)
|
|
98
|
+
|
|
99
|
+
k = 10
|
|
100
|
+
approximate = index.search(X[-1], k, clusters_to_search=8, points_to_rerank=100)
|
|
101
|
+
exact = index.exact_search(X[-1], k)
|
|
102
|
+
|
|
103
|
+
print('Approximate:', approximate)
|
|
104
|
+
print('Exact:', exact)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
The data matrix should have type `float32`, `float16`, `uint8`, or `uint16` ([for bfloat16](https://github.com/ashvardanian/SimSIMD?tab=readme-ov-file#half-precision-brain-float-numbers)). For binary data (packed into uint8 bytes using e.g. `numpy.packbits`), use `LorannBinaryIndex`.
|
|
108
|
+
|
|
109
|
+
The distance should be either `lorann.L2` (for squared Euclidean distance), `lorann.IP` (for inner product), or `lorann.HAMMING` (only for binary data). For cosine distance, normalize vectors to unit norm and use `lorann.IP`.
|
|
110
|
+
|
|
111
|
+
For a more detailed example, see [examples/example.py](examples/example.py).
|
|
112
|
+
|
|
113
|
+
[Python documentation](https://eliasjaasaari.com/lorann/python.html)
|
|
114
|
+
|
|
115
|
+
### C++
|
|
116
|
+
|
|
117
|
+
LoRANN is a header-only library so no installation is required: just include the header `lorann/lorann.h`. A C++ compiler with C++17 support (e.g. gcc/g++ >= 7) is required.
|
|
118
|
+
|
|
119
|
+
> [!TIP]
|
|
120
|
+
> It is recommended to target the correct instruction set (e.g., by using `-march=native`) as LoRANN makes heavy use of SIMD intrinsics. The quantized version of LoRANN can use AVX-512 VNNI instructions, available in Intel Cascade Lake (and later) and AMD Zen 4, for improved performance.
|
|
121
|
+
|
|
122
|
+
Usage is similar to the Python version:
|
|
123
|
+
|
|
124
|
+
```cpp
|
|
125
|
+
Lorann::Lorann<float, Lorann::SQ8Quantizer> index(data, n_samples, dim, n_clusters, global_dim);
|
|
126
|
+
index.build();
|
|
127
|
+
|
|
128
|
+
index.search(query, k, clusters_to_search, points_to_rerank, output);
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
For a complete example, see [examples/cpp](examples/cpp).
|
|
132
|
+
|
|
133
|
+
[C++ documentation](https://eliasjaasaari.com/lorann/cpp.html)
|
|
134
|
+
|
|
135
|
+
### GPU
|
|
136
|
+
|
|
137
|
+
Hardware accelerators such as GPUs and TPUs can be used to speed up ANN search for queries that arrive in batches. GPU support in LoRANN is experimental and available only as a Python module. For index building, the GPU is currently used only partially.
|
|
138
|
+
|
|
139
|
+
Usage is similar to the CPU version, just with a different import:
|
|
140
|
+
|
|
141
|
+
```python
|
|
142
|
+
from lorann_gpu import LorannIndex
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
The GPU submodule is implemented with and depends on [PyTorch](https://pytorch.org/), but a native CUDA implementation would provide better performance and will be available in the future. All index structures are by default saved as `torch.float32` to ensure numerical stability. However, for most embedding datasets, better performance can be obtained by passing `dtype=torch.float16` to the index constructor.
|
|
146
|
+
|
|
147
|
+
For a complete example, see [examples/gpu_example.py](examples/gpu_example.py)
|
|
148
|
+
|
|
149
|
+
## Citation
|
|
150
|
+
|
|
151
|
+
If you use the library in an academic context, please consider citing the following paper:
|
|
152
|
+
|
|
153
|
+
> Jääsaari, E., Hyvönen, V., Roos, T. LoRANN: Low-Rank Matrix Factorization for Approximate Nearest Neighbor Search. Advances in Neural Information Processing Systems 37 (2024): 102121-102153.
|
|
154
|
+
|
|
155
|
+
~~~~
|
|
156
|
+
@article{Jaasaari2024lorann,
|
|
157
|
+
title={{LoRANN}: Low-Rank Matrix Factorization for Approximate Nearest Neighbor Search},
|
|
158
|
+
author={J{\"a}{\"a}saari, Elias and Hyv{\"o}nen, Ville and Roos, Teemu},
|
|
159
|
+
journal={Advances in Neural Information Processing Systems},
|
|
160
|
+
volume={37},
|
|
161
|
+
pages={102121--102153},
|
|
162
|
+
year={2024}
|
|
163
|
+
}
|
|
164
|
+
~~~~
|
|
165
|
+
|
|
166
|
+
## License
|
|
167
|
+
|
|
168
|
+
LoRANN is available under the MIT License (see [LICENSE](LICENSE)). Note that third-party libraries in the [lorann](lorann) folder may be distributed under other open source licenses (see [licenses](licenses)).
|
lorann-0.4.4/README.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
<h1 align="center">LoRANN</h1>
|
|
2
|
+
<div align="center">
|
|
3
|
+
Approximate nearest neighbor search library implementing <a href="https://arxiv.org/abs/2410.18926">reduced-rank regression</a> (NeurIPS '24), a technique enabling extremely fast queries, tiny memory usage, and rapid indexing on modern embedding datasets.
|
|
4
|
+
</div>
|
|
5
|
+
<br/>
|
|
6
|
+
|
|
7
|
+
<div align="center">
|
|
8
|
+
<a href="https://github.com/ejaasaari/lorann/actions/workflows/build.yml"><img src="https://github.com/ejaasaari/lorann/actions/workflows/build.yml/badge.svg" alt="Build status" /></a>
|
|
9
|
+
<a href="https://arxiv.org/abs/2410.18926"><img src="https://img.shields.io/badge/Paper-NeurIPS%3A_LoRANN-salmon" alt="Paper" /></a>
|
|
10
|
+
<a href="https://ejaasaari.github.io/lorann"><img src="https://img.shields.io/badge/api-reference-blue.svg" alt="Documentation" /></a>
|
|
11
|
+
<a href="https://pypi.org/project/lorann/"><img src="https://img.shields.io/pypi/v/lorann?color=blue" alt="PyPI" /></a>
|
|
12
|
+
<a href="https://github.com/ejaasaari/lorann/blob/master/LICENSE"><img src="https://img.shields.io/github/license/ejaasaari/lorann" alt="License" /></a>
|
|
13
|
+
<a href="https://github.com/ejaasaari/lorann/stargazers"><img src="https://img.shields.io/github/stars/ejaasaari/lorann" alt="GitHub stars" /></a>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
- Header-only C++17 library with Python bindings
|
|
19
|
+
- Query speed matching state-of-the-art graph methods but with tiny memory usage
|
|
20
|
+
- Optimized for modern high-dimensional (d > 100) embedding data sets
|
|
21
|
+
- Optimized for modern CPU architectures with acceleration for AVX2, AVX-512, and ARM NEON
|
|
22
|
+
- State-of-the-art query speed for GPU batch queries (experimental)
|
|
23
|
+
- Supported data types: float32, float16, bfloat16, uint8, binary
|
|
24
|
+
- Supported distances: (negative) inner product, Euclidean distance, cosine distance
|
|
25
|
+
- Support for index serialization
|
|
26
|
+
|
|
27
|
+
## Getting started
|
|
28
|
+
|
|
29
|
+
### Python
|
|
30
|
+
|
|
31
|
+
Install the module with `pip install lorann`
|
|
32
|
+
|
|
33
|
+
> [!TIP]
|
|
34
|
+
> On macOS, it is recommended to use the Homebrew version of Clang as the compiler:
|
|
35
|
+
|
|
36
|
+
```shell script
|
|
37
|
+
brew install llvm libomp
|
|
38
|
+
CC=/opt/homebrew/opt/llvm/bin/clang CXX=/opt/homebrew/opt/llvm/bin/clang++ pip install lorann
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
A minimal example for indexing and querying a dataset using LoRANN is provided below:
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
import lorann
|
|
45
|
+
import numpy as np
|
|
46
|
+
from sklearn.datasets import fetch_openml # scikit-learn is used only for loading the data
|
|
47
|
+
|
|
48
|
+
X, _ = fetch_openml("mnist_784", version=1, return_X_y=True, as_frame=False)
|
|
49
|
+
X = np.ascontiguousarray(X, dtype=np.float32)
|
|
50
|
+
|
|
51
|
+
data = X[:60_000]
|
|
52
|
+
index = lorann.LorannIndex(
|
|
53
|
+
data=data,
|
|
54
|
+
n_clusters=256,
|
|
55
|
+
global_dim=128,
|
|
56
|
+
quantization_bits=8,
|
|
57
|
+
distance=lorann.L2,
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
index.build(verbose=False)
|
|
61
|
+
|
|
62
|
+
k = 10
|
|
63
|
+
approximate = index.search(X[-1], k, clusters_to_search=8, points_to_rerank=100)
|
|
64
|
+
exact = index.exact_search(X[-1], k)
|
|
65
|
+
|
|
66
|
+
print('Approximate:', approximate)
|
|
67
|
+
print('Exact:', exact)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The data matrix should have type `float32`, `float16`, `uint8`, or `uint16` ([for bfloat16](https://github.com/ashvardanian/SimSIMD?tab=readme-ov-file#half-precision-brain-float-numbers)). For binary data (packed into uint8 bytes using e.g. `numpy.packbits`), use `LorannBinaryIndex`.
|
|
71
|
+
|
|
72
|
+
The distance should be either `lorann.L2` (for squared Euclidean distance), `lorann.IP` (for inner product), or `lorann.HAMMING` (only for binary data). For cosine distance, normalize vectors to unit norm and use `lorann.IP`.
|
|
73
|
+
|
|
74
|
+
For a more detailed example, see [examples/example.py](examples/example.py).
|
|
75
|
+
|
|
76
|
+
[Python documentation](https://eliasjaasaari.com/lorann/python.html)
|
|
77
|
+
|
|
78
|
+
### C++
|
|
79
|
+
|
|
80
|
+
LoRANN is a header-only library so no installation is required: just include the header `lorann/lorann.h`. A C++ compiler with C++17 support (e.g. gcc/g++ >= 7) is required.
|
|
81
|
+
|
|
82
|
+
> [!TIP]
|
|
83
|
+
> It is recommended to target the correct instruction set (e.g., by using `-march=native`) as LoRANN makes heavy use of SIMD intrinsics. The quantized version of LoRANN can use AVX-512 VNNI instructions, available in Intel Cascade Lake (and later) and AMD Zen 4, for improved performance.
|
|
84
|
+
|
|
85
|
+
Usage is similar to the Python version:
|
|
86
|
+
|
|
87
|
+
```cpp
|
|
88
|
+
Lorann::Lorann<float, Lorann::SQ8Quantizer> index(data, n_samples, dim, n_clusters, global_dim);
|
|
89
|
+
index.build();
|
|
90
|
+
|
|
91
|
+
index.search(query, k, clusters_to_search, points_to_rerank, output);
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
For a complete example, see [examples/cpp](examples/cpp).
|
|
95
|
+
|
|
96
|
+
[C++ documentation](https://eliasjaasaari.com/lorann/cpp.html)
|
|
97
|
+
|
|
98
|
+
### GPU
|
|
99
|
+
|
|
100
|
+
Hardware accelerators such as GPUs and TPUs can be used to speed up ANN search for queries that arrive in batches. GPU support in LoRANN is experimental and available only as a Python module. For index building, the GPU is currently used only partially.
|
|
101
|
+
|
|
102
|
+
Usage is similar to the CPU version, just with a different import:
|
|
103
|
+
|
|
104
|
+
```python
|
|
105
|
+
from lorann_gpu import LorannIndex
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The GPU submodule is implemented with and depends on [PyTorch](https://pytorch.org/), but a native CUDA implementation would provide better performance and will be available in the future. All index structures are by default saved as `torch.float32` to ensure numerical stability. However, for most embedding datasets, better performance can be obtained by passing `dtype=torch.float16` to the index constructor.
|
|
109
|
+
|
|
110
|
+
For a complete example, see [examples/gpu_example.py](examples/gpu_example.py)
|
|
111
|
+
|
|
112
|
+
## Citation
|
|
113
|
+
|
|
114
|
+
If you use the library in an academic context, please consider citing the following paper:
|
|
115
|
+
|
|
116
|
+
> Jääsaari, E., Hyvönen, V., Roos, T. LoRANN: Low-Rank Matrix Factorization for Approximate Nearest Neighbor Search. Advances in Neural Information Processing Systems 37 (2024): 102121-102153.
|
|
117
|
+
|
|
118
|
+
~~~~
|
|
119
|
+
@article{Jaasaari2024lorann,
|
|
120
|
+
title={{LoRANN}: Low-Rank Matrix Factorization for Approximate Nearest Neighbor Search},
|
|
121
|
+
author={J{\"a}{\"a}saari, Elias and Hyv{\"o}nen, Ville and Roos, Teemu},
|
|
122
|
+
journal={Advances in Neural Information Processing Systems},
|
|
123
|
+
volume={37},
|
|
124
|
+
pages={102121--102153},
|
|
125
|
+
year={2024}
|
|
126
|
+
}
|
|
127
|
+
~~~~
|
|
128
|
+
|
|
129
|
+
## License
|
|
130
|
+
|
|
131
|
+
LoRANN is available under the MIT License (see [LICENSE](LICENSE)). Note that third-party libraries in the [lorann](lorann) folder may be distributed under other open source licenses (see [licenses](licenses)).
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// This Source Code Form is subject to the terms of the Mozilla
|
|
5
|
+
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
6
|
+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
7
|
+
|
|
8
|
+
#ifndef EIGEN_ACCELERATESUPPORT_MODULE_H
|
|
9
|
+
#define EIGEN_ACCELERATESUPPORT_MODULE_H
|
|
10
|
+
|
|
11
|
+
#include "SparseCore"
|
|
12
|
+
|
|
13
|
+
#include "src/Core/util/DisableStupidWarnings.h"
|
|
14
|
+
|
|
15
|
+
/** \ingroup Support_modules
|
|
16
|
+
* \defgroup AccelerateSupport_Module AccelerateSupport module
|
|
17
|
+
*
|
|
18
|
+
* This module provides an interface to the Apple Accelerate library.
|
|
19
|
+
* It provides the seven following main factorization classes:
|
|
20
|
+
* - class AccelerateLLT: a Cholesky (LL^T) factorization.
|
|
21
|
+
* - class AccelerateLDLT: the default LDL^T factorization.
|
|
22
|
+
* - class AccelerateLDLTUnpivoted: a Cholesky-like LDL^T factorization with only 1x1 pivots and no pivoting
|
|
23
|
+
* - class AccelerateLDLTSBK: an LDL^T factorization with Supernode Bunch-Kaufman and static pivoting
|
|
24
|
+
* - class AccelerateLDLTTPP: an LDL^T factorization with full threshold partial pivoting
|
|
25
|
+
* - class AccelerateQR: a QR factorization
|
|
26
|
+
* - class AccelerateCholeskyAtA: a QR factorization without storing Q (equivalent to A^TA = R^T R)
|
|
27
|
+
*
|
|
28
|
+
* \code
|
|
29
|
+
* #include <Eigen/AccelerateSupport>
|
|
30
|
+
* \endcode
|
|
31
|
+
*
|
|
32
|
+
* In order to use this module, the Accelerate headers must be accessible from
|
|
33
|
+
* the include paths, and your binary must be linked to the Accelerate framework.
|
|
34
|
+
* The Accelerate library is only available on Apple hardware.
|
|
35
|
+
*
|
|
36
|
+
* Note that many of the algorithms can be influenced by the UpLo template
|
|
37
|
+
* argument. All matrices are assumed to be symmetric. For example, the following
|
|
38
|
+
* creates an LDLT factorization where your matrix is symmetric (implicit) and
|
|
39
|
+
* uses the lower triangle:
|
|
40
|
+
*
|
|
41
|
+
* \code
|
|
42
|
+
* AccelerateLDLT<SparseMatrix<float>, Lower> ldlt;
|
|
43
|
+
* \endcode
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
// IWYU pragma: begin_exports
|
|
47
|
+
#include "src/AccelerateSupport/AccelerateSupport.h"
|
|
48
|
+
// IWYU pragma: end_exports
|
|
49
|
+
|
|
50
|
+
#include "src/Core/util/ReenableStupidWarnings.h"
|
|
51
|
+
|
|
52
|
+
#endif // EIGEN_ACCELERATESUPPORT_MODULE_H
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// This Source Code Form is subject to the terms of the Mozilla
|
|
5
|
+
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
6
|
+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
7
|
+
|
|
8
|
+
#ifndef EIGEN_CHOLESKY_MODULE_H
|
|
9
|
+
#define EIGEN_CHOLESKY_MODULE_H
|
|
10
|
+
|
|
11
|
+
#include "Core"
|
|
12
|
+
#include "Jacobi"
|
|
13
|
+
|
|
14
|
+
#include "src/Core/util/DisableStupidWarnings.h"
|
|
15
|
+
|
|
16
|
+
/** \defgroup Cholesky_Module Cholesky module
|
|
17
|
+
*
|
|
18
|
+
*
|
|
19
|
+
*
|
|
20
|
+
* This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices.
|
|
21
|
+
* Those decompositions are also accessible via the following methods:
|
|
22
|
+
* - MatrixBase::llt()
|
|
23
|
+
* - MatrixBase::ldlt()
|
|
24
|
+
* - SelfAdjointView::llt()
|
|
25
|
+
* - SelfAdjointView::ldlt()
|
|
26
|
+
*
|
|
27
|
+
* \code
|
|
28
|
+
* #include <Eigen/Cholesky>
|
|
29
|
+
* \endcode
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
// IWYU pragma: begin_exports
|
|
33
|
+
#include "src/Cholesky/LLT.h"
|
|
34
|
+
#include "src/Cholesky/LDLT.h"
|
|
35
|
+
#ifdef EIGEN_USE_LAPACKE
|
|
36
|
+
#include "src/misc/lapacke_helpers.h"
|
|
37
|
+
#include "src/Cholesky/LLT_LAPACKE.h"
|
|
38
|
+
#endif
|
|
39
|
+
// IWYU pragma: end_exports
|
|
40
|
+
|
|
41
|
+
#include "src/Core/util/ReenableStupidWarnings.h"
|
|
42
|
+
|
|
43
|
+
#endif // EIGEN_CHOLESKY_MODULE_H
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// This Source Code Form is subject to the terms of the Mozilla
|
|
5
|
+
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
6
|
+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
7
|
+
|
|
8
|
+
#ifndef EIGEN_CHOLMODSUPPORT_MODULE_H
|
|
9
|
+
#define EIGEN_CHOLMODSUPPORT_MODULE_H
|
|
10
|
+
|
|
11
|
+
#include "SparseCore"
|
|
12
|
+
|
|
13
|
+
#include "src/Core/util/DisableStupidWarnings.h"
|
|
14
|
+
|
|
15
|
+
#include <cholmod.h>
|
|
16
|
+
|
|
17
|
+
/** \ingroup Support_modules
|
|
18
|
+
* \defgroup CholmodSupport_Module CholmodSupport module
|
|
19
|
+
*
|
|
20
|
+
* This module provides an interface to the Cholmod library which is part of the <a
|
|
21
|
+
* href="http://www.suitesparse.com">suitesparse</a> package. It provides the two following main factorization classes:
|
|
22
|
+
* - class CholmodSupernodalLLT: a supernodal LLT Cholesky factorization.
|
|
23
|
+
* - class CholmodDecomposition: a general L(D)LT Cholesky factorization with automatic or explicit runtime selection of
|
|
24
|
+
* the underlying factorization method (supernodal or simplicial).
|
|
25
|
+
*
|
|
26
|
+
* For the sake of completeness, this module also propose the two following classes:
|
|
27
|
+
* - class CholmodSimplicialLLT
|
|
28
|
+
* - class CholmodSimplicialLDLT
|
|
29
|
+
* Note that these classes does not bring any particular advantage compared to the built-in
|
|
30
|
+
* SimplicialLLT and SimplicialLDLT factorization classes.
|
|
31
|
+
*
|
|
32
|
+
* \code
|
|
33
|
+
* #include <Eigen/CholmodSupport>
|
|
34
|
+
* \endcode
|
|
35
|
+
*
|
|
36
|
+
* In order to use this module, the cholmod headers must be accessible from the include paths, and your binary must be
|
|
37
|
+
* linked to the cholmod library and its dependencies. The dependencies depend on how cholmod has been compiled. For a
|
|
38
|
+
* cmake based project, you can use our FindCholmod.cmake module to help you in this task.
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
// IWYU pragma: begin_exports
|
|
43
|
+
#include "src/CholmodSupport/CholmodSupport.h"
|
|
44
|
+
// IWYU pragma: end_exports
|
|
45
|
+
|
|
46
|
+
#include "src/Core/util/ReenableStupidWarnings.h"
|
|
47
|
+
|
|
48
|
+
#endif // EIGEN_CHOLMODSUPPORT_MODULE_H
|