├── .gitignore ├── .gitmodules ├── Plugin ├── NNComp │ ├── .gitignore │ ├── NNComp.RPP │ ├── NNComp.code-workspace │ ├── NNComp.cpp │ ├── NNComp.h │ ├── NNComp.sln │ ├── NNComp.xcworkspace │ │ ├── .xcodesamplecode.plist │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ └── michaelholmes.xcuserdatad │ │ │ └── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ ├── README.md │ ├── config.h │ ├── config │ │ ├── NNComp-ios.xcconfig │ │ ├── NNComp-mac.xcconfig │ │ ├── NNComp-web.mk │ │ └── NNComp-win.props │ ├── installer │ │ ├── NNComp-installer-bg.png │ │ ├── NNComp.iss │ │ ├── NNComp.pkgproj │ │ ├── changelog.txt │ │ ├── intro.rtf │ │ ├── known-issues.txt │ │ ├── license.rtf │ │ ├── readme-osx.rtf │ │ └── readme-win.rtf │ ├── manual │ │ ├── NNComp manual.pdf │ │ └── NNComp manual.tex │ ├── projects │ │ ├── AudioBuffer.h │ │ ├── CustomControls.h │ │ ├── Eigen │ │ │ ├── AccelerateSupport │ │ │ ├── Cholesky │ │ │ ├── CholmodSupport │ │ │ ├── Core │ │ │ ├── Dense │ │ │ ├── Eigen │ │ │ ├── Eigenvalues │ │ │ ├── Geometry │ │ │ ├── Householder │ │ │ ├── IterativeLinearSolvers │ │ │ ├── Jacobi │ │ │ ├── KLUSupport │ │ │ ├── LU │ │ │ ├── MetisSupport │ │ │ ├── OrderingMethods │ │ │ ├── PaStiXSupport │ │ │ ├── PardisoSupport │ │ │ ├── QR │ │ │ ├── QtAlignedMalloc │ │ │ ├── SPQRSupport │ │ │ ├── SVD │ │ │ ├── Sparse │ │ │ ├── SparseCholesky │ │ │ ├── SparseCore │ │ │ ├── SparseLU │ │ │ ├── SparseQR │ │ │ ├── StdDeque │ │ │ ├── StdList │ │ │ ├── StdVector │ │ │ ├── SuperLUSupport │ │ │ ├── UmfPackSupport │ │ │ └── src │ │ │ │ ├── AccelerateSupport │ │ │ │ ├── AccelerateSupport.h │ │ │ │ └── InternalHeaderCheck.h │ │ │ │ ├── Cholesky │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ ├── LDLT.h │ │ │ │ ├── LLT.h │ │ │ │ └── LLT_LAPACKE.h │ │ │ │ ├── CholmodSupport │ │ │ │ ├── CholmodSupport.h │ │ │ │ └── InternalHeaderCheck.h │ │ │ │ ├── Core │ │ │ │ ├── ArithmeticSequence.h │ │ │ │ ├── Array.h │ │ │ │ ├── ArrayBase.h │ │ │ │ ├── ArrayWrapper.h │ │ │ │ ├── Assign.h │ │ │ │ ├── AssignEvaluator.h │ │ │ │ ├── Assign_MKL.h │ │ │ │ ├── BandMatrix.h │ │ │ │ ├── Block.h │ │ │ │ ├── BooleanRedux.h │ │ │ │ ├── CommaInitializer.h │ │ │ │ ├── ConditionEstimator.h │ │ │ │ ├── CoreEvaluators.h │ │ │ │ ├── CoreIterators.h │ │ │ │ ├── CwiseBinaryOp.h │ │ │ │ ├── CwiseNullaryOp.h │ │ │ │ ├── CwiseTernaryOp.h │ │ │ │ ├── CwiseUnaryOp.h │ │ │ │ ├── CwiseUnaryView.h │ │ │ │ ├── DenseBase.h │ │ │ │ ├── DenseCoeffsBase.h │ │ │ │ ├── DenseStorage.h │ │ │ │ ├── Diagonal.h │ │ │ │ ├── DiagonalMatrix.h │ │ │ │ ├── DiagonalProduct.h │ │ │ │ ├── Dot.h │ │ │ │ ├── EigenBase.h │ │ │ │ ├── ForceAlignedAccess.h │ │ │ │ ├── Fuzzy.h │ │ │ │ ├── GeneralProduct.h │ │ │ │ ├── GenericPacketMath.h │ │ │ │ ├── GlobalFunctions.h │ │ │ │ ├── IO.h │ │ │ │ ├── IndexedView.h │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ ├── Inverse.h │ │ │ │ ├── Map.h │ │ │ │ ├── MapBase.h │ │ │ │ ├── MathFunctions.h │ │ │ │ ├── MathFunctionsImpl.h │ │ │ │ ├── Matrix.h │ │ │ │ ├── MatrixBase.h │ │ │ │ ├── NestByValue.h │ │ │ │ ├── NoAlias.h │ │ │ │ ├── NumTraits.h │ │ │ │ ├── PartialReduxEvaluator.h │ │ │ │ ├── PermutationMatrix.h │ │ │ │ ├── PlainObjectBase.h │ │ │ │ ├── Product.h │ │ │ │ ├── ProductEvaluators.h │ │ │ │ ├── Random.h │ │ │ │ ├── Redux.h │ │ │ │ ├── Ref.h │ │ │ │ ├── Replicate.h │ │ │ │ ├── Reshaped.h │ │ │ │ ├── ReturnByValue.h │ │ │ │ ├── Reverse.h │ │ │ │ ├── Select.h │ │ │ │ ├── SelfAdjointView.h │ │ │ │ ├── SelfCwiseBinaryOp.h │ │ │ │ ├── Solve.h │ │ │ │ ├── SolveTriangular.h │ │ │ │ ├── SolverBase.h │ │ │ │ ├── StableNorm.h │ │ │ │ ├── StlIterators.h │ │ │ │ ├── Stride.h │ │ │ │ ├── Swap.h │ │ │ │ ├── Transpose.h │ │ │ │ ├── Transpositions.h │ │ │ │ ├── TriangularMatrix.h │ │ │ │ ├── VectorBlock.h │ │ │ │ ├── VectorwiseOp.h │ │ │ │ ├── Visitor.h │ │ │ │ ├── arch │ │ │ │ │ ├── AVX │ │ │ │ │ │ ├── Complex.h │ │ │ │ │ │ ├── MathFunctions.h │ │ │ │ │ │ ├── PacketMath.h │ │ │ │ │ │ └── TypeCasting.h │ │ │ │ │ ├── AVX512 │ │ │ │ │ │ ├── Complex.h │ │ │ │ │ │ ├── GemmKernel.h │ │ │ │ │ │ ├── MathFunctions.h │ │ │ │ │ │ ├── PacketMath.h │ │ │ │ │ │ ├── TrsmKernel.h │ │ │ │ │ │ ├── TrsmUnrolls.inc │ │ │ │ │ │ └── TypeCasting.h │ │ │ │ │ ├── AltiVec │ │ │ │ │ │ ├── Complex.h │ │ │ │ │ │ ├── MathFunctions.h │ │ │ │ │ │ ├── MatrixProduct.h │ │ │ │ │ │ ├── MatrixProductCommon.h │ │ │ │ │ │ ├── MatrixProductMMA.h │ │ │ │ │ │ ├── MatrixVectorProduct.h │ │ │ │ │ │ └── PacketMath.h │ │ │ │ │ ├── Default │ │ │ │ │ │ ├── BFloat16.h │ │ │ │ │ │ ├── ConjHelper.h │ │ │ │ │ │ ├── GenericPacketMathFunctions.h │ │ │ │ │ │ ├── GenericPacketMathFunctionsFwd.h │ │ │ │ │ │ ├── Half.h │ │ │ │ │ │ ├── Settings.h │ │ │ │ │ │ └── TypeCasting.h │ │ │ │ │ ├── GPU │ │ │ │ │ │ ├── Complex.h │ │ │ │ │ │ ├── MathFunctions.h │ │ │ │ │ │ ├── PacketMath.h │ │ │ │ │ │ ├── Tuple.h │ │ │ │ │ │ └── TypeCasting.h │ │ │ │ │ ├── HIP │ │ │ │ │ │ └── hcc │ │ │ │ │ │ │ └── math_constants.h │ │ │ │ │ ├── MSA │ │ │ │ │ │ ├── Complex.h │ │ │ │ │ │ ├── MathFunctions.h │ │ │ │ │ │ └── PacketMath.h │ │ │ │ │ ├── NEON │ │ │ │ │ │ ├── Complex.h │ │ │ │ │ │ ├── GeneralBlockPanelKernel.h │ │ │ │ │ │ ├── MathFunctions.h │ │ │ │ │ │ ├── PacketMath.h │ │ │ │ │ │ ├── TypeCasting.h │ │ │ │ │ │ └── UnaryFunctors.h │ │ │ │ │ ├── SSE │ │ │ │ │ │ ├── Complex.h │ │ │ │ │ │ ├── MathFunctions.h │ │ │ │ │ │ ├── PacketMath.h │ │ │ │ │ │ └── TypeCasting.h │ │ │ │ │ ├── SVE │ │ │ │ │ │ ├── MathFunctions.h │ │ │ │ │ │ ├── PacketMath.h │ │ │ │ │ │ └── TypeCasting.h │ │ │ │ │ ├── SYCL │ │ │ │ │ │ ├── InteropHeaders.h │ │ │ │ │ │ ├── MathFunctions.h │ │ │ │ │ │ ├── PacketMath.h │ │ │ │ │ │ ├── SyclMemoryModel.h │ │ │ │ │ │ └── TypeCasting.h │ │ │ │ │ └── ZVector │ │ │ │ │ │ ├── Complex.h │ │ │ │ │ │ ├── MathFunctions.h │ │ │ │ │ │ └── PacketMath.h │ │ │ │ ├── functors │ │ │ │ │ ├── AssignmentFunctors.h │ │ │ │ │ ├── BinaryFunctors.h │ │ │ │ │ ├── NullaryFunctors.h │ │ │ │ │ ├── StlFunctors.h │ │ │ │ │ ├── TernaryFunctors.h │ │ │ │ │ └── UnaryFunctors.h │ │ │ │ ├── products │ │ │ │ │ ├── GeneralBlockPanelKernel.h │ │ │ │ │ ├── GeneralMatrixMatrix.h │ │ │ │ │ ├── GeneralMatrixMatrixTriangular.h │ │ │ │ │ ├── GeneralMatrixMatrixTriangular_BLAS.h │ │ │ │ │ ├── GeneralMatrixMatrix_BLAS.h │ │ │ │ │ ├── GeneralMatrixVector.h │ │ │ │ │ ├── GeneralMatrixVector_BLAS.h │ │ │ │ │ ├── Parallelizer.h │ │ │ │ │ ├── SelfadjointMatrixMatrix.h │ │ │ │ │ ├── SelfadjointMatrixMatrix_BLAS.h │ │ │ │ │ ├── SelfadjointMatrixVector.h │ │ │ │ │ ├── SelfadjointMatrixVector_BLAS.h │ │ │ │ │ ├── SelfadjointProduct.h │ │ │ │ │ ├── SelfadjointRank2Update.h │ │ │ │ │ ├── TriangularMatrixMatrix.h │ │ │ │ │ ├── TriangularMatrixMatrix_BLAS.h │ │ │ │ │ ├── TriangularMatrixVector.h │ │ │ │ │ ├── TriangularMatrixVector_BLAS.h │ │ │ │ │ ├── TriangularSolverMatrix.h │ │ │ │ │ ├── TriangularSolverMatrix_BLAS.h │ │ │ │ │ └── TriangularSolverVector.h │ │ │ │ └── util │ │ │ │ │ ├── BlasUtil.h │ │ │ │ │ ├── ConfigureVectorization.h │ │ │ │ │ ├── Constants.h │ │ │ │ │ ├── DisableStupidWarnings.h │ │ │ │ │ ├── ForwardDeclarations.h │ │ │ │ │ ├── IndexedViewHelper.h │ │ │ │ │ ├── IntegralConstant.h │ │ │ │ │ ├── MKL_support.h │ │ │ │ │ ├── Macros.h │ │ │ │ │ ├── Memory.h │ │ │ │ │ ├── Meta.h │ │ │ │ │ ├── NonMPL2.h │ │ │ │ │ ├── ReenableStupidWarnings.h │ │ │ │ │ ├── ReshapedHelper.h │ │ │ │ │ ├── Serializer.h │ │ │ │ │ ├── StaticAssert.h │ │ │ │ │ ├── SymbolicIndex.h │ │ │ │ │ └── XprHelper.h │ │ │ │ ├── Eigenvalues │ │ │ │ ├── ComplexEigenSolver.h │ │ │ │ ├── ComplexSchur.h │ │ │ │ ├── ComplexSchur_LAPACKE.h │ │ │ │ ├── EigenSolver.h │ │ │ │ ├── GeneralizedEigenSolver.h │ │ │ │ ├── GeneralizedSelfAdjointEigenSolver.h │ │ │ │ ├── HessenbergDecomposition.h │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ ├── MatrixBaseEigenvalues.h │ │ │ │ ├── RealQZ.h │ │ │ │ ├── RealSchur.h │ │ │ │ ├── RealSchur_LAPACKE.h │ │ │ │ ├── SelfAdjointEigenSolver.h │ │ │ │ ├── SelfAdjointEigenSolver_LAPACKE.h │ │ │ │ └── Tridiagonalization.h │ │ │ │ ├── Geometry │ │ │ │ ├── AlignedBox.h │ │ │ │ ├── AngleAxis.h │ │ │ │ ├── EulerAngles.h │ │ │ │ ├── Homogeneous.h │ │ │ │ ├── Hyperplane.h │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ ├── OrthoMethods.h │ │ │ │ ├── ParametrizedLine.h │ │ │ │ ├── Quaternion.h │ │ │ │ ├── Rotation2D.h │ │ │ │ ├── RotationBase.h │ │ │ │ ├── Scaling.h │ │ │ │ ├── Transform.h │ │ │ │ ├── Translation.h │ │ │ │ ├── Umeyama.h │ │ │ │ └── arch │ │ │ │ │ └── Geometry_SIMD.h │ │ │ │ ├── Householder │ │ │ │ ├── BlockHouseholder.h │ │ │ │ ├── Householder.h │ │ │ │ ├── HouseholderSequence.h │ │ │ │ └── InternalHeaderCheck.h │ │ │ │ ├── IterativeLinearSolvers │ │ │ │ ├── BasicPreconditioners.h │ │ │ │ ├── BiCGSTAB.h │ │ │ │ ├── ConjugateGradient.h │ │ │ │ ├── IncompleteCholesky.h │ │ │ │ ├── IncompleteLUT.h │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ ├── IterativeSolverBase.h │ │ │ │ ├── LeastSquareConjugateGradient.h │ │ │ │ └── SolveWithGuess.h │ │ │ │ ├── Jacobi │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ └── Jacobi.h │ │ │ │ ├── KLUSupport │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ └── KLUSupport.h │ │ │ │ ├── LU │ │ │ │ ├── Determinant.h │ │ │ │ ├── FullPivLU.h │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ ├── InverseImpl.h │ │ │ │ ├── PartialPivLU.h │ │ │ │ ├── PartialPivLU_LAPACKE.h │ │ │ │ └── arch │ │ │ │ │ └── InverseSize4.h │ │ │ │ ├── MetisSupport │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ └── MetisSupport.h │ │ │ │ ├── OrderingMethods │ │ │ │ ├── Amd.h │ │ │ │ ├── Eigen_Colamd.h │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ └── Ordering.h │ │ │ │ ├── PaStiXSupport │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ └── PaStiXSupport.h │ │ │ │ ├── PardisoSupport │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ └── PardisoSupport.h │ │ │ │ ├── QR │ │ │ │ ├── ColPivHouseholderQR.h │ │ │ │ ├── ColPivHouseholderQR_LAPACKE.h │ │ │ │ ├── CompleteOrthogonalDecomposition.h │ │ │ │ ├── FullPivHouseholderQR.h │ │ │ │ ├── HouseholderQR.h │ │ │ │ ├── HouseholderQR_LAPACKE.h │ │ │ │ └── InternalHeaderCheck.h │ │ │ │ ├── SPQRSupport │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ └── SuiteSparseQRSupport.h │ │ │ │ ├── SVD │ │ │ │ ├── BDCSVD.h │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ ├── JacobiSVD.h │ │ │ │ ├── JacobiSVD_LAPACKE.h │ │ │ │ ├── SVDBase.h │ │ │ │ └── UpperBidiagonalization.h │ │ │ │ ├── SparseCholesky │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ ├── SimplicialCholesky.h │ │ │ │ └── SimplicialCholesky_impl.h │ │ │ │ ├── SparseCore │ │ │ │ ├── AmbiVector.h │ │ │ │ ├── CompressedStorage.h │ │ │ │ ├── ConservativeSparseSparseProduct.h │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ ├── SparseAssign.h │ │ │ │ ├── SparseBlock.h │ │ │ │ ├── SparseColEtree.h │ │ │ │ ├── SparseCompressedBase.h │ │ │ │ ├── SparseCwiseBinaryOp.h │ │ │ │ ├── SparseCwiseUnaryOp.h │ │ │ │ ├── SparseDenseProduct.h │ │ │ │ ├── SparseDiagonalProduct.h │ │ │ │ ├── SparseDot.h │ │ │ │ ├── SparseFuzzy.h │ │ │ │ ├── SparseMap.h │ │ │ │ ├── SparseMatrix.h │ │ │ │ ├── SparseMatrixBase.h │ │ │ │ ├── SparsePermutation.h │ │ │ │ ├── SparseProduct.h │ │ │ │ ├── SparseRedux.h │ │ │ │ ├── SparseRef.h │ │ │ │ ├── SparseSelfAdjointView.h │ │ │ │ ├── SparseSolverBase.h │ │ │ │ ├── SparseSparseProductWithPruning.h │ │ │ │ ├── SparseTranspose.h │ │ │ │ ├── SparseTriangularView.h │ │ │ │ ├── SparseUtil.h │ │ │ │ ├── SparseVector.h │ │ │ │ ├── SparseView.h │ │ │ │ └── TriangularSolver.h │ │ │ │ ├── SparseLU │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ ├── SparseLU.h │ │ │ │ ├── SparseLUImpl.h │ │ │ │ ├── SparseLU_Memory.h │ │ │ │ ├── SparseLU_Structs.h │ │ │ │ ├── SparseLU_SupernodalMatrix.h │ │ │ │ ├── SparseLU_Utils.h │ │ │ │ ├── SparseLU_column_bmod.h │ │ │ │ ├── SparseLU_column_dfs.h │ │ │ │ ├── SparseLU_copy_to_ucol.h │ │ │ │ ├── SparseLU_gemm_kernel.h │ │ │ │ ├── SparseLU_heap_relax_snode.h │ │ │ │ ├── SparseLU_kernel_bmod.h │ │ │ │ ├── SparseLU_panel_bmod.h │ │ │ │ ├── SparseLU_panel_dfs.h │ │ │ │ ├── SparseLU_pivotL.h │ │ │ │ ├── SparseLU_pruneL.h │ │ │ │ └── SparseLU_relax_snode.h │ │ │ │ ├── SparseQR │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ └── SparseQR.h │ │ │ │ ├── StlSupport │ │ │ │ ├── StdDeque.h │ │ │ │ ├── StdList.h │ │ │ │ ├── StdVector.h │ │ │ │ └── details.h │ │ │ │ ├── SuperLUSupport │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ └── SuperLUSupport.h │ │ │ │ ├── UmfPackSupport │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ └── UmfPackSupport.h │ │ │ │ ├── misc │ │ │ │ ├── Image.h │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ ├── Kernel.h │ │ │ │ ├── RealSvd2x2.h │ │ │ │ ├── blas.h │ │ │ │ ├── lapack.h │ │ │ │ ├── lapacke.h │ │ │ │ ├── lapacke_helpers.h │ │ │ │ └── lapacke_mangling.h │ │ │ │ └── plugins │ │ │ │ ├── ArrayCwiseBinaryOps.h │ │ │ │ ├── ArrayCwiseUnaryOps.h │ │ │ │ ├── BlockMethods.h │ │ │ │ ├── CommonCwiseBinaryOps.h │ │ │ │ ├── CommonCwiseUnaryOps.h │ │ │ │ ├── IndexedViewMethods.h │ │ │ │ ├── InternalHeaderCheck.h │ │ │ │ ├── MatrixCwiseBinaryOps.h │ │ │ │ ├── MatrixCwiseUnaryOps.h │ │ │ │ └── ReshapedMethods.h │ │ ├── NNComp-aax.vcxproj │ │ ├── NNComp-aax.vcxproj.filters │ │ ├── NNComp-aax.vcxproj.user │ │ ├── NNComp-app.vcxproj │ │ ├── NNComp-app.vcxproj.filters │ │ ├── NNComp-app.vcxproj.user │ │ ├── NNComp-iOS.entitlements │ │ ├── NNComp-iOS.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ ├── iOS-APP with AUv3.xcscheme │ │ │ │ ├── iOS-AUv3.xcscheme │ │ │ │ └── iOS-AUv3Framework.xcscheme │ │ ├── NNComp-macOS.entitlements │ │ ├── NNComp-macOS.xcodeproj │ │ │ ├── project.pbxproj │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ ├── All macOS.xcscheme │ │ │ │ ├── VST3 Controller Library.xcscheme │ │ │ │ ├── macOS-AAX.xcscheme │ │ │ │ ├── macOS-APP with AUv3.xcscheme │ │ │ │ ├── macOS-APP.xcscheme │ │ │ │ ├── macOS-AUv2.xcscheme │ │ │ │ ├── macOS-AUv3.xcscheme │ │ │ │ ├── macOS-AUv3Framework.xcscheme │ │ │ │ ├── macOS-VST2.xcscheme │ │ │ │ ├── macOS-VST3 (Distributed).xcscheme │ │ │ │ └── macOS-VST3.xcscheme │ │ ├── NNComp-vst2.vcxproj │ │ ├── NNComp-vst2.vcxproj.filters │ │ ├── NNComp-vst2.vcxproj.user │ │ ├── NNComp-vst3.vcxproj │ │ ├── NNComp-vst3.vcxproj.filters │ │ ├── NNComp-vst3.vcxproj.user │ │ ├── NNComp-wam-controller.mk │ │ ├── NNComp-wam-processor.mk │ │ ├── NetworkControl.h │ │ ├── WeightSender.h │ │ ├── dsp.h │ │ ├── gru-16-1.h │ │ ├── gru-16-2.h │ │ ├── gru-2-4.h │ │ ├── gru-32-1.h │ │ ├── gru-4-2.h │ │ ├── gru-4-4.h │ │ ├── gru-8-1.h │ │ ├── gru-8-2.h │ │ ├── gru-8-4.h │ │ ├── layers.h │ │ ├── lstm-16-1.h │ │ ├── lstm-16-2.h │ │ ├── lstm-2-4.h │ │ ├── lstm-32-1.h │ │ ├── lstm-4-2.h │ │ ├── lstm-4-4.h │ │ ├── lstm-8-1.h │ │ ├── lstm-8-2.h │ │ ├── lstm-8-4.h │ │ ├── rnn-16-1.h │ │ ├── rnn-16-2.h │ │ ├── rnn-2-4.h │ │ ├── rnn-32-1.h │ │ ├── rnn-4-2.h │ │ ├── rnn-4-4.h │ │ ├── rnn-8-1.h │ │ ├── rnn-8-2.h │ │ └── rnn-8-4.h │ ├── resources │ │ ├── AUv3Framework.h │ │ ├── IPlugAUViewController_vNNComp.xib │ │ ├── Images.xcassets │ │ │ ├── Contents.json │ │ │ └── NNCompiOSAppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon.png │ │ │ │ ├── icon_20pt.png │ │ │ │ ├── icon_20pt@2x.png │ │ │ │ ├── icon_20pt@3x.png │ │ │ │ ├── icon_29pt.png │ │ │ │ ├── icon_29pt@2x.png │ │ │ │ ├── icon_29pt@3x.png │ │ │ │ ├── icon_40pt.png │ │ │ │ ├── icon_40pt@2x.png │ │ │ │ ├── icon_40pt@3x.png │ │ │ │ ├── icon_60pt@2x.png │ │ │ │ ├── icon_60pt@3x.png │ │ │ │ ├── icon_76pt.png │ │ │ │ ├── icon_76pt@2x.png │ │ │ │ └── icon_83.5@2x.png │ │ ├── NNComp-AAX-Info.plist │ │ ├── NNComp-AU-Info.plist │ │ ├── NNComp-Pages.xml │ │ ├── NNComp-VST2-Info.plist │ │ ├── NNComp-VST3-Info.plist │ │ ├── NNComp-iOS-AUv3-Info.plist │ │ ├── NNComp-iOS-AUv3Framework-Info.plist │ │ ├── NNComp-iOS-Info.plist │ │ ├── NNComp-iOS-LaunchScreen.storyboard │ │ ├── NNComp-iOS-MainInterface.storyboard │ │ ├── NNComp-iOS.storyboard │ │ ├── NNComp-macOS-AUv3-Info.plist │ │ ├── NNComp-macOS-AUv3Framework-Info.plist │ │ ├── NNComp-macOS-Info.plist │ │ ├── NNComp-macOS-MainMenu.xib │ │ ├── NNComp.icns │ │ ├── NNComp.ico │ │ ├── fonts │ │ │ ├── Inter-Regular.ttf │ │ │ └── Roboto-Regular.ttf │ │ ├── img │ │ │ ├── Logo.png │ │ │ └── Logo.svg │ │ ├── main.aps │ │ ├── main.rc │ │ ├── main.rc_mac_dlg │ │ ├── main.rc_mac_menu │ │ └── resource.h │ └── scripts │ │ ├── make_zip.py │ │ ├── makedist-mac.sh │ │ ├── makedist-web.sh │ │ ├── makedist-win.bat │ │ ├── postbuild-win.bat │ │ ├── prebuild-win.bat │ │ ├── prepare_resources-ios.py │ │ ├── prepare_resources-mac.py │ │ ├── prepare_resources-win.py │ │ ├── update_installer_version.py │ │ └── update_version.py ├── README.md ├── dsp.h ├── layers.h └── pretrained_models │ ├── gru-16-1.h │ ├── gru-16-2.h │ ├── gru-2-4.h │ ├── gru-32-1.h │ ├── gru-4-2.h │ ├── gru-4-4.h │ ├── gru-8-1.h │ ├── gru-8-2.h │ ├── gru-8-4.h │ ├── lstm-16-1.h │ ├── lstm-16-2.h │ ├── lstm-2-4.h │ ├── lstm-32-1.h │ ├── lstm-4-2.h │ ├── lstm-4-4.h │ ├── lstm-8-1.h │ ├── lstm-8-2.h │ ├── lstm-8-4.h │ ├── rnn-16-1.h │ ├── rnn-16-2.h │ ├── rnn-2-4.h │ ├── rnn-32-1.h │ ├── rnn-4-2.h │ ├── rnn-4-4.h │ ├── rnn-8-1.h │ ├── rnn-8-2.h │ └── rnn-8-4.h ├── README.md ├── Training ├── README.md ├── create_all_headers.sh ├── create_header.py ├── environment.yml ├── model.py ├── predict.py └── training.py └── license.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.vs 3 | *.exe 4 | *.sdf 5 | *.opensdf 6 | *.zip 7 | *.suo 8 | *.ncb 9 | *.vcproj.* 10 | *.pkg 11 | *.dmg 12 | *.depend 13 | *.layout 14 | *.mode1v3 15 | *.db 16 | *.LSOverride 17 | *.xcuserdata 18 | *.xcschememanagement.plist 19 | Plugin/iPlug2_Project/build-* 20 | Plugin/iPlug2_Project/ipch/* 21 | Plugin/iPlug2_Project/gui/* 22 | 23 | Icon? 24 | .DS_Stor* 25 | /Plugin/NNComp/build-win 26 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "Plugin/iPlug2"] 2 | path = Plugin/iPlug2 3 | url = https://github.com/michaelholmes4/iPlug2 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/.gitignore: -------------------------------------------------------------------------------- 1 | *.vs 2 | *.exe 3 | *.sdf 4 | *.opensdf 5 | *.zip 6 | *.suo 7 | *.ncb 8 | *.vcproj.* 9 | *.pkg 10 | *.dmg 11 | *.depend 12 | *.layout 13 | *.mode1v3 14 | *.db 15 | *.LSOverride 16 | *.xcuserdata 17 | *.xcschememanagement.plist 18 | xcuserdata 19 | *UserInterfaceState.xcuserstate 20 | 21 | ipch/* 22 | gui/* 23 | 24 | Icon? 25 | .DS_Stor* -------------------------------------------------------------------------------- /Plugin/NNComp/NNComp.RPP: -------------------------------------------------------------------------------- 1 | 28 | 30 | RENDER_FILE "" 31 | RENDER_PATTERN "" 32 | RENDER_FMT 0 2 0 33 | RENDER_1X 0 34 | RENDER_RANGE 1 0 0 18 1000 35 | RENDER_RESAMPLE 3 0 1 36 | RENDER_ADDTOPROJ 0 37 | RENDER_STEMS 0 38 | RENDER_DITHER 0 39 | TIMELOCKMODE 1 40 | TEMPOENVLOCKMODE 1 41 | ITEMMIX 0 42 | DEFPITCHMODE 589824 0 43 | TAKELANE 1 44 | SAMPLERATE 44100 0 0 45 | 47 | LOCK 1 48 | 55 | GLOBAL_AUTO -1 56 | TEMPO 120 4 4 57 | PLAYRATE 1 0 0.25 4 58 | SELECTION 0 0 59 | SELECTION2 0 0 60 | MASTERAUTOMODE 0 61 | MASTERTRACKHEIGHT 0 0 62 | MASTERPEAKCOL 16576 63 | MASTERMUTESOLO 0 64 | MASTERTRACKVIEW 0 0.6667 0.5 0.5 0 0 0 0 0 0 65 | MASTERHWOUT 0 0 1 0 0 0 0 -1 66 | MASTER_NCH 2 2 67 | MASTER_VOLUME 1 0 -1 -1 1 68 | MASTER_FX 1 69 | MASTER_SEL 0 70 | 77 | 84 | 86 | 121 | FLOATPOS 0 0 0 0 122 | FXID {C278294F-75A4-4C7A-AB71-9D724E6E3CDF} 123 | WAK 0 0 124 | > 125 | > 126 | > 127 | -------------------------------------------------------------------------------- /Plugin/NNComp/NNComp.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "." 5 | } 6 | ], 7 | "settings": { 8 | "files.associations": { 9 | "algorithm": "cpp" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Plugin/NNComp/NNComp.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "IPlug_include_in_plug_hdr.h" 4 | #include "IControls.h" 5 | #include "IPlugPaths.h" 6 | #include "CustomControls.h" 7 | #include "NetworkControl.h" 8 | #include "dsp.h" 9 | #include "WeightSender.h" 10 | #include "AudioBuffer.h" 11 | 12 | const int kNumPresets = 1; 13 | 14 | enum EParams 15 | { 16 | kGain = 0, 17 | kOutGain, 18 | kModel, 19 | kBypass, 20 | kNumParams 21 | }; 22 | 23 | enum EControlTags 24 | { 25 | kCtrlInMeter = 0, 26 | kCtrlOutMeter, 27 | kCtrlGrMeter, 28 | kCtrlNN, 29 | kCtrlTags 30 | }; 31 | 32 | using namespace iplug; 33 | using namespace igraphics; 34 | 35 | class NNComp final : public Plugin 36 | { 37 | public: 38 | NNComp(const InstanceInfo& info); 39 | 40 | #if IPLUG_DSP // http://bit.ly/2S64BDd 41 | public: 42 | void OnIdle() override; 43 | void OnReset() override; 44 | void ProcessBlock(sample** inputs, sample** outputs, int nFrames) override; 45 | 46 | private: 47 | MeterSender<2> inSender {5., 0., 0.3, 0.5}; 48 | MeterSender<2> outSender {5., 0., 0.3, 0.5}; 49 | MeterSender<2> grSender {5., 0.1, 0.5, 0.5}; 50 | WeightSender<32, 4> nnSender; 51 | 52 | NN nnL; 53 | NN nnR; 54 | 55 | CustomAudioBuffer gr; 56 | 57 | #endif 58 | }; 59 | -------------------------------------------------------------------------------- /Plugin/NNComp/NNComp.xcworkspace/.xcodesamplecode.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/NNComp.xcworkspace/.xcodesamplecode.plist -------------------------------------------------------------------------------- /Plugin/NNComp/NNComp.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Plugin/NNComp/NNComp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Plugin/NNComp/README.md: -------------------------------------------------------------------------------- 1 | # NNComp 2 | Compressor plugin using [iPlug2](https://github.com/iPlug2/iPlug2) for thesis project. 3 | 4 | 5 | -------------------------------------------------------------------------------- /Plugin/NNComp/config.h: -------------------------------------------------------------------------------- 1 | #define PLUG_NAME "NNComp" 2 | #define PLUG_MFR "michaelholmes" 3 | #define PLUG_VERSION_HEX 0x00010000 4 | #define PLUG_VERSION_STR "0.1.2" 5 | #define PLUG_UNIQUE_ID 'dgq4' 6 | #define PLUG_MFR_ID 'Acme' 7 | #define PLUG_URL_STR "https://iplug2.github.io" 8 | #define PLUG_EMAIL_STR "michael.holmes4@icloud.com" 9 | #define PLUG_COPYRIGHT_STR "Copyright 2023 Michael Holmes" 10 | #define PLUG_CLASS_NAME NNComp 11 | 12 | #define BUNDLE_NAME "NNComp" 13 | #define BUNDLE_MFR "michaelholmes" 14 | #define BUNDLE_DOMAIN "com" 15 | 16 | #define SHARED_RESOURCES_SUBPATH "NNComp" 17 | 18 | #define PLUG_CHANNEL_IO "1-1 2-2" 19 | 20 | #define PLUG_LATENCY 0 21 | #define PLUG_TYPE 0 22 | #define PLUG_DOES_MIDI_IN 0 23 | #define PLUG_DOES_MIDI_OUT 0 24 | #define PLUG_DOES_MPE 0 25 | #define PLUG_DOES_STATE_CHUNKS 0 26 | #define PLUG_HAS_UI 1 27 | #define PLUG_WIDTH 836 28 | #define PLUG_HEIGHT 666 29 | #define PLUG_FPS 60 30 | #define PLUG_SHARED_RESOURCES 0 31 | #define PLUG_HOST_RESIZE 0 32 | 33 | #define AUV2_ENTRY NNComp_Entry 34 | #define AUV2_ENTRY_STR "NNComp_Entry" 35 | #define AUV2_FACTORY NNComp_Factory 36 | #define AUV2_VIEW_CLASS NNComp_View 37 | #define AUV2_VIEW_CLASS_STR "NNComp_View" 38 | 39 | #define AAX_TYPE_IDS 'IEF1', 'IEF2' 40 | #define AAX_TYPE_IDS_AUDIOSUITE 'IEA1', 'IEA2' 41 | #define AAX_PLUG_MFR_STR "michaelholmes" 42 | #define AAX_PLUG_NAME_STR "NNComp\nIPEF" 43 | #define AAX_PLUG_CATEGORY_STR "Effect" 44 | #define AAX_DOES_AUDIOSUITE 1 45 | 46 | #define VST3_SUBCATEGORY "Fx" 47 | 48 | #define APP_NUM_CHANNELS 2 49 | #define APP_N_VECTOR_WAIT 0 50 | #define APP_MULT 1 51 | #define APP_COPY_AUV3 0 52 | #define APP_SIGNAL_VECTOR_SIZE 64 53 | 54 | #define ROBOTO_FN "Roboto-Regular.ttf" 55 | #define INTER_FN "Inter-Regular.ttf" 56 | #define LOGO_SVG "Logo.svg" 57 | -------------------------------------------------------------------------------- /Plugin/NNComp/config/NNComp-ios.xcconfig: -------------------------------------------------------------------------------- 1 | 2 | // IPLUG2_ROOT should point to the top level IPLUG2 folder 3 | // By default, that is three directories up from /Examples/NNComp/config 4 | // If you want to build your project "out of source", you can change IPLUG2_ROOT and the path to common-ios.xcconfig 5 | 6 | IPLUG2_ROOT = ../../iPlug2 7 | 8 | #include "../../iPlug2/common-ios.xcconfig" 9 | 10 | //------------------------------ 11 | // Global build settings 12 | 13 | // the basename of the vst, vst3, app, component, aaxplugin 14 | BINARY_NAME = NNComp 15 | 16 | // ------------------------------ 17 | // HEADER AND LIBRARY SEARCH PATHS 18 | EXTRA_INC_PATHS = $(IGRAPHICS_INC_PATHS) 19 | EXTRA_LIB_PATHS = $(IGRAPHICS_LIB_PATHS) 20 | EXTRA_LNK_FLAGS = -framework Metal -framework MetalKit //$(IGRAPHICS_LNK_FLAGS) 21 | 22 | //------------------------------ 23 | // PREPROCESSOR MACROS 24 | 25 | EXTRA_ALL_DEFS = OBJC_PREFIX=vNNComp IGRAPHICS_NANOVG IGRAPHICS_METAL SAMPLE_TYPE_FLOAT 26 | //EXTRA_DEBUG_DEFS = 27 | //EXTRA_RELEASE_DEFS = 28 | //EXTRA_TRACER_DEFS = 29 | 30 | //------------------------------ 31 | // RELEASE BUILD OPTIONS 32 | 33 | //Enable/Disable Profiling code 34 | PROFILE = NO //NO, YES - enable this if you want to use instruments to profile a plugin 35 | 36 | // GCC optimization level - 37 | // None: [-O0] Fast: [-O, -O1] Faster:[-O2] Fastest: [-O3] Fastest, smallest: Optimize for size. [-Os] 38 | RELEASE_OPTIMIZE = 3 //0,1,2,3,s 39 | 40 | //------------------------------ 41 | // DEBUG BUILD OPTIONS 42 | DEBUG_OPTIMIZE = 0 //0,1,2,3,s 43 | 44 | //------------------------------ 45 | // MISCELLANEOUS COMPILER OPTIONS 46 | 47 | GCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO 48 | 49 | // Uncomment to enable relaxed IEEE compliance 50 | //GCC_FAST_MATH = YES 51 | 52 | // Flags to pass to compiler for all builds 53 | GCC_CFLAGS = -Wno-write-strings 54 | 55 | ENABLE_BITCODE = YES 56 | -------------------------------------------------------------------------------- /Plugin/NNComp/config/NNComp-mac.xcconfig: -------------------------------------------------------------------------------- 1 | 2 | // IPLUG2_ROOT should point to the top level IPLUG2 folder 3 | // By default, that is three directories up from /Examples/NNComp/config 4 | // If you want to build your project "out of source", you can change IPLUG2_ROOT and the path to common-mac.xcconfig 5 | 6 | IPLUG2_ROOT = ../../iPlug2 7 | 8 | #include "../../iPlug2/common-mac.xcconfig" 9 | 10 | //------------------------------ 11 | // Global build settings 12 | 13 | // the basename of the vst, vst3, app, component, aaxplugin 14 | BINARY_NAME = NNComp 15 | 16 | // ------------------------------ 17 | // HEADER AND LIBRARY SEARCH PATHS 18 | EXTRA_INC_PATHS = $(IGRAPHICS_INC_PATHS) 19 | EXTRA_LIB_PATHS = $(IGRAPHICS_LIB_PATHS) 20 | EXTRA_LNK_FLAGS = -framework Metal -framework MetalKit -framework OpenGL -framework Accelerate $(IGRAPHICS_LNK_FLAGS) 21 | 22 | // EXTRA_APP_DEFS = 23 | // EXTRA_PLUGIN_DEFS = 24 | 25 | //------------------------------ 26 | // PREPROCESSOR MACROS 27 | EXTRA_ALL_DEFS = OBJC_PREFIX=vNNComp SWELL_APP_PREFIX=Swell_vNNComp IGRAPHICS_SKIA IGRAPHICS_METAL 28 | //EXTRA_DEBUG_DEFS = 29 | //EXTRA_RELEASE_DEFS = 30 | //EXTRA_TRACER_DEFS = 31 | 32 | //------------------------------ 33 | // RELEASE BUILD OPTIONS 34 | 35 | //Enable/Disable Profiling code 36 | PROFILE = NO //NO, YES - enable this if you want to use instruments to profile a plugin 37 | 38 | // Optimization level - 39 | // None: [-O0] Fast: [-O, -O1] Faster:[-O2] Fastest: [-O3] Fastest, smallest: Optimize for size. [-Os] 40 | RELEASE_OPTIMIZE = 3 //0,1,2,3,s 41 | 42 | //------------------------------ 43 | // DEBUG BUILD OPTIONS 44 | DEBUG_OPTIMIZE = 3 //0,1,2,3,s 45 | 46 | //------------------------------ 47 | // MISCELLANEOUS COMPILER OPTIONS 48 | 49 | //ARCHS = $(ARCHS_STANDARD_32_64_BIT) 50 | ARCHS = $(ARCHS_STANDARD_64_BIT) 51 | 52 | GCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO 53 | 54 | // Flags to pass to compiler for all builds 55 | GCC_CFLAGS[arch=x86_64] = -Wno-write-strings -mfpmath=sse -msse -msse2 -msse3 //-mavx 56 | 57 | // Uncomment to enable relaxed IEEE compliance 58 | //GCC_FAST_MATH = YES 59 | 60 | // uncomment this to enable codesigning - necessary for AUv3 delivery 61 | CODE_SIGN_IDENTITY=//Mac Developer 62 | -------------------------------------------------------------------------------- /Plugin/NNComp/config/NNComp-web.mk: -------------------------------------------------------------------------------- 1 | # IPLUG2_ROOT should point to the top level IPLUG2 folder from the project folder 2 | # By default, that is three directories up from /Examples/NNComp/config 3 | IPLUG2_ROOT = ../../iPlug2 4 | 5 | include ../../iPlug2/common-web.mk 6 | 7 | SRC += $(PROJECT_ROOT)/NNComp.cpp 8 | 9 | # WAM_SRC += 10 | 11 | # WAM_CFLAGS += 12 | 13 | WEB_CFLAGS += -DIGRAPHICS_NANOVG -DIGRAPHICS_GLES2 14 | 15 | WAM_LDFLAGS += -O3 -s EXPORT_NAME="'AudioWorkletGlobalScope.WAM.NNComp'" -s ASSERTIONS=0 16 | 17 | WEB_LDFLAGS += -O3 -s ASSERTIONS=0 18 | 19 | WEB_LDFLAGS += $(NANOVG_LDFLAGS) 20 | -------------------------------------------------------------------------------- /Plugin/NNComp/config/NNComp-win.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | $(ProjectDir)..\..\iPlug2 5 | NNComp 6 | IGRAPHICS_SKIA;IGRAPHICS_GL2 7 | 8 | 9 | 10 | $(SolutionDir)build-win\pdbs\$(TargetName)_$(Platform).pdb 11 | $(SolutionDir)build-win 12 | $(IPLUG2_ROOT)\Scripts\create_bundle.bat 13 | 14 | 15 | 16 | 17 | 18 | $(BINARY_NAME) 19 | 20 | 21 | 22 | $(EXTRA_INC_PATHS);$(IPLUG_INC_PATHS);$(IGRAPHICS_INC_PATHS);$(GLAD_GL2_PATHS);%(AdditionalIncludeDirectories) 23 | $(EXTRA_ALL_DEFS);%(PreprocessorDefinitions) 24 | 25 | 26 | wininet.lib;comctl32.lib;Shlwapi.lib;%(AdditionalDependencies) 27 | $(PDB_FILE) 28 | 29 | 30 | CALL "$(SolutionDir)scripts\postbuild-win.bat" "$(TargetExt)" "$(BINARY_NAME)" "$(Platform)" "$(COPY_VST2)" "$(TargetPath)" "$(VST2_32_PATH)" "$(VST2_64_PATH)" "$(VST3_32_PATH)" "$(VST3_64_PATH)" "$(AAX_32_PATH)" "$(AAX_64_PATH)" "$(BUILD_DIR)" "$(VST_ICON)" "$(AAX_ICON)" "$(CREATE_BUNDLE_SCRIPT)" 31 | 32 | 33 | CALL "$(SolutionDir)scripts\prebuild-win.bat" "$(TargetExt)" "$(BINARY_NAME)" "$(Platform)" "$(TargetPath)" "$(OutDir)" 34 | 35 | 36 | 37 | 38 | $(BINARY_NAME) 39 | 40 | 41 | $(EXTRA_ALL_DEFS) 42 | true 43 | 44 | 45 | $(EXTRA_DEBUG_DEFS) 46 | 47 | 48 | $(EXTRA_RELEASE_DEFS) 49 | 50 | 51 | $(EXTRA_TRACER_DEFS) 52 | 53 | 54 | $(PDB_FILE) 55 | 56 | 57 | $(BUILD_DIR) 58 | 59 | 60 | $(CREATE_BUNDLE_SCRIPT) 61 | 62 | 63 | -------------------------------------------------------------------------------- /Plugin/NNComp/installer/NNComp-installer-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/installer/NNComp-installer-bg.png -------------------------------------------------------------------------------- /Plugin/NNComp/installer/changelog.txt: -------------------------------------------------------------------------------- 1 | NNComp changelog 2 | www.thedeveloperswebsite.com 3 | 4 | 00/00/00 - v1.00 initial release -------------------------------------------------------------------------------- /Plugin/NNComp/installer/intro.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 2 | \cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 LucidaGrande;} 3 | {\colortbl;\red255\green255\blue255;} 4 | {\*\expandedcolortbl;;} 5 | \paperw11900\paperh16840\margl1440\margr1440\vieww14440\viewh8920\viewkind0 6 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 7 | 8 | \f0\fs26 \cf0 BLAH BLAH BLAH BLAH THANK YOU FOR PURCHASING MY PRODUCT\ 9 | \ 10 | THE DEVELOPER\ 11 | \ 12 | contact@thedeveloperswebsite.com\ 13 | \ 14 | http://www.developerswebsite.com\ 15 | } -------------------------------------------------------------------------------- /Plugin/NNComp/installer/known-issues.txt: -------------------------------------------------------------------------------- 1 | NNComp changelog 2 | www.thedeveloperswebsite.com 3 | 4 | 00/00/00 - v1.00 initial release -------------------------------------------------------------------------------- /Plugin/NNComp/installer/license.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 2 | \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 ArialMT;} 3 | {\colortbl;\red255\green255\blue255;} 4 | {\*\expandedcolortbl;;} 5 | \paperw11900\paperh16840\margl1440\margr1440\vieww17060\viewh12300\viewkind0 6 | \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 7 | 8 | \f0\b\fs20 \cf0 THIS IS A PLACEHOLDER LICENCE PROVIDED WITH IPLUG2 WITH NO LEGAL BASIS\ 9 | CONSULT A LAWYER BEFORE MAKING A LICENCE\ 10 | \ 11 | Caveat: 12 | \b0 \ 13 | By installing this software you agree to use it at your own risk. The developer cannot be held responsible for any damages caused as a result of it's use.\ 14 | \ 15 | 16 | \b Distribution: 17 | \b0 \ 18 | You are not permitted to distribute the software without the developer's permission. This includes, but is not limited to the distribution on magazine covers or software review websites.\ 19 | \ 20 | 21 | \b Multiple Installations*: 22 | \b0 If you purchased this product as an individual, you are licensed to install and use the software on any computer you need to use it on, providing you remove it afterwards (if it is a shared machine). If you purchased it as an institution or company, you are licensed to use it on one machine only, and must purchase additional copies for each machine you wish to use it on.\ 23 | \ 24 | 25 | \b Upgrades*: 26 | \b0 If you purchased this product you are entitled to free updates until the next major version number. The developer makes no guarantee is made that this product will be maintained indefinitely.\ 27 | \ 28 | 29 | \b License transfers*: 30 | \b0 If you purchased this product you may transfer your license to another person. As the original owner you are required to contact the developer with the details of the license transfer, so that the new owner can receive the updates and support attached to the license. Upon transferring a license the original owner must remove any copies from their machines and are no longer permitted to use the software.\ 31 | \ 32 | 33 | \b NNComp is \'a9 Copyright THE DEVELOPER 2004-2011\ 34 | 35 | \b0 \ 36 | http://www.thedeveloperswebsite.com\ 37 | \ 38 | VST and VST3 are trademarks of Steinberg Media Technologies GmbH. \ 39 | Audio Unit is a trademark of Apple, Inc. \ 40 | AAX is a trademarks of Avid, Inc.\ 41 | \ 42 | * Applies to full version only, not the demo version.} -------------------------------------------------------------------------------- /Plugin/NNComp/installer/readme-osx.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 2 | \cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 LucidaGrande;\f1\fnil\fcharset0 Monaco;} 3 | {\colortbl;\red255\green255\blue255;} 4 | {\*\expandedcolortbl;;} 5 | \paperw11900\paperh16840\margl1440\margr1440\vieww14320\viewh8340\viewkind0 6 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 7 | 8 | \f0\fs26 \cf0 The plugins will be installed in your system plugin folders which will make them available to all user accounts on your computer. 9 | \f1\fs20 10 | \f0\fs26 The standalone will be installed in the system Applications folder. \ 11 | \ 12 | If you don't want to install all components, click "Customize" on the "Installation Type" page.\ 13 | \ 14 | The plugins and app support both 32bit and 64bit operation.\ 15 | \ 16 | If you experience any problems with NNComp, please contact me at the following address:\ 17 | \ 18 | support@thedeveloperswebsite.com} -------------------------------------------------------------------------------- /Plugin/NNComp/installer/readme-win.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 2 | {\fonttbl\f0\fnil\fcharset0 LucidaGrande-Bold;\f1\fnil\fcharset0 LucidaGrande;} 3 | {\colortbl;\red255\green255\blue255;} 4 | {\*\expandedcolortbl;;} 5 | \paperw11900\paperh16840\vieww12000\viewh15840\viewkind0 6 | \deftab720 7 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\partightenfactor0 8 | 9 | \f0\b\fs26 \cf0 Thanks for installing NNComp 10 | \f1\b0 \ 11 | \ 12 | BLAH BLAH BLAH\ 13 | \ 14 | THE DEVELOPER\ 15 | \ 16 | If you experience any problems with NNComp, please contact me at the following address:\ 17 | \ 18 | \pard\pardeftab720\partightenfactor0 19 | 20 | \f0\b \cf0 support@thedeveloperswebsite.com 21 | \f1\b0 \ 22 | } -------------------------------------------------------------------------------- /Plugin/NNComp/manual/NNComp manual.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/manual/NNComp manual.pdf -------------------------------------------------------------------------------- /Plugin/NNComp/manual/NNComp manual.tex: -------------------------------------------------------------------------------- 1 | \documentclass[a4paper,14pt]{report} 2 | \begin{document} 3 | \end{document} -------------------------------------------------------------------------------- /Plugin/NNComp/projects/AudioBuffer.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | Very simple class to handle an audio buffer 4 | */ 5 | template 6 | class CustomAudioBuffer 7 | { 8 | public: 9 | CustomAudioBuffer() 10 | { 11 | } 12 | 13 | void SetFrameLength(int length) 14 | { 15 | //resize buffer 16 | buffer.resize(length * nChans); 17 | 18 | //Reset pointers 19 | ptrs.clear(); 20 | for(int i = 0; i < nChans; i++) 21 | { 22 | ptrs.push_back(&buffer[i * nChans]); 23 | } 24 | } 25 | 26 | T** GetBuffer() 27 | { 28 | return &ptrs[0]; 29 | } 30 | 31 | private: 32 | std::vector ptrs; 33 | std::vector buffer; 34 | }; 35 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/AccelerateSupport: -------------------------------------------------------------------------------- 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 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 require additional information about your 37 | * matrices. This can be provided by setting the UpLo template argument when 38 | * defining the factorization class. For example, the following creates an 39 | * LDLT factorization where your matrix is symmetric and uses the lower 40 | * triangle: 41 | * 42 | * \code 43 | * AccelerateLDLT, Lower | Symmetric> ldlt; 44 | * \endcode 45 | * 46 | * Failure to do so may result in your application crashing. 47 | */ 48 | 49 | #include "src/AccelerateSupport/AccelerateSupport.h" 50 | 51 | #include "src/Core/util/ReenableStupidWarnings.h" 52 | 53 | #endif // EIGEN_ACCELERATESUPPORT_MODULE_H 54 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/Cholesky: -------------------------------------------------------------------------------- 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 29 | * \endcode 30 | */ 31 | 32 | #include "src/Cholesky/LLT.h" 33 | #include "src/Cholesky/LDLT.h" 34 | #ifdef EIGEN_USE_LAPACKE 35 | #include "src/misc/lapacke_helpers.h" 36 | #include "src/Cholesky/LLT_LAPACKE.h" 37 | #endif 38 | 39 | #include "src/Core/util/ReenableStupidWarnings.h" 40 | 41 | #endif // EIGEN_CHOLESKY_MODULE_H 42 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/CholmodSupport: -------------------------------------------------------------------------------- 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 | extern "C" { 16 | #include 17 | } 18 | 19 | /** \ingroup Support_modules 20 | * \defgroup CholmodSupport_Module CholmodSupport module 21 | * 22 | * This module provides an interface to the Cholmod library which is part of the suitesparse package. 23 | * It provides the two following main factorization classes: 24 | * - class CholmodSupernodalLLT: a supernodal LLT Cholesky factorization. 25 | * - class CholmodDecomposiiton: a general L(D)LT Cholesky factorization with automatic or explicit runtime selection of the underlying factorization method (supernodal or simplicial). 26 | * 27 | * For the sake of completeness, this module also propose the two following classes: 28 | * - class CholmodSimplicialLLT 29 | * - class CholmodSimplicialLDLT 30 | * Note that these classes does not bring any particular advantage compared to the built-in 31 | * SimplicialLLT and SimplicialLDLT factorization classes. 32 | * 33 | * \code 34 | * #include 35 | * \endcode 36 | * 37 | * In order to use this module, the cholmod headers must be accessible from the include paths, and your binary must be linked to the cholmod library and its dependencies. 38 | * The dependencies depend on how cholmod has been compiled. 39 | * For a cmake based project, you can use our FindCholmod.cmake module to help you in this task. 40 | * 41 | */ 42 | 43 | #include "src/CholmodSupport/CholmodSupport.h" 44 | 45 | #include "src/Core/util/ReenableStupidWarnings.h" 46 | 47 | #endif // EIGEN_CHOLMODSUPPORT_MODULE_H 48 | 49 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/Dense: -------------------------------------------------------------------------------- 1 | #include "Core" 2 | #include "LU" 3 | #include "Cholesky" 4 | #include "QR" 5 | #include "SVD" 6 | #include "Geometry" 7 | #include "Eigenvalues" 8 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/Eigen: -------------------------------------------------------------------------------- 1 | #include "Dense" 2 | #include "Sparse" 3 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/Eigenvalues: -------------------------------------------------------------------------------- 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_EIGENVALUES_MODULE_H 9 | #define EIGEN_EIGENVALUES_MODULE_H 10 | 11 | #include "Core" 12 | 13 | #include "Cholesky" 14 | #include "Jacobi" 15 | #include "Householder" 16 | #include "LU" 17 | #include "Geometry" 18 | 19 | #include "src/Core/util/DisableStupidWarnings.h" 20 | 21 | /** \defgroup Eigenvalues_Module Eigenvalues module 22 | * 23 | * 24 | * 25 | * This module mainly provides various eigenvalue solvers. 26 | * This module also provides some MatrixBase methods, including: 27 | * - MatrixBase::eigenvalues(), 28 | * - MatrixBase::operatorNorm() 29 | * 30 | * \code 31 | * #include 32 | * \endcode 33 | */ 34 | 35 | #include "src/misc/RealSvd2x2.h" 36 | #include "src/Eigenvalues/Tridiagonalization.h" 37 | #include "src/Eigenvalues/RealSchur.h" 38 | #include "src/Eigenvalues/EigenSolver.h" 39 | #include "src/Eigenvalues/SelfAdjointEigenSolver.h" 40 | #include "src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h" 41 | #include "src/Eigenvalues/HessenbergDecomposition.h" 42 | #include "src/Eigenvalues/ComplexSchur.h" 43 | #include "src/Eigenvalues/ComplexEigenSolver.h" 44 | #include "src/Eigenvalues/RealQZ.h" 45 | #include "src/Eigenvalues/GeneralizedEigenSolver.h" 46 | #include "src/Eigenvalues/MatrixBaseEigenvalues.h" 47 | #ifdef EIGEN_USE_LAPACKE 48 | #ifdef EIGEN_USE_MKL 49 | #include "mkl_lapacke.h" 50 | #else 51 | #include "src/misc/lapacke.h" 52 | #endif 53 | #include "src/Eigenvalues/RealSchur_LAPACKE.h" 54 | #include "src/Eigenvalues/ComplexSchur_LAPACKE.h" 55 | #include "src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h" 56 | #endif 57 | 58 | #include "src/Core/util/ReenableStupidWarnings.h" 59 | 60 | #endif // EIGEN_EIGENVALUES_MODULE_H 61 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/Geometry: -------------------------------------------------------------------------------- 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_GEOMETRY_MODULE_H 9 | #define EIGEN_GEOMETRY_MODULE_H 10 | 11 | #include "Core" 12 | 13 | #include "SVD" 14 | #include "LU" 15 | #include 16 | 17 | #include "src/Core/util/DisableStupidWarnings.h" 18 | 19 | /** \defgroup Geometry_Module Geometry module 20 | * 21 | * This module provides support for: 22 | * - fixed-size homogeneous transformations 23 | * - translation, scaling, 2D and 3D rotations 24 | * - \link Quaternion quaternions \endlink 25 | * - cross products (\ref MatrixBase::cross, \ref MatrixBase::cross3) 26 | * - orthognal vector generation (\ref MatrixBase::unitOrthogonal) 27 | * - some linear components: \link ParametrizedLine parametrized-lines \endlink and \link Hyperplane hyperplanes \endlink 28 | * - \link AlignedBox axis aligned bounding boxes \endlink 29 | * - \link umeyama least-square transformation fitting \endlink 30 | * 31 | * \code 32 | * #include 33 | * \endcode 34 | */ 35 | 36 | #include "src/Geometry/OrthoMethods.h" 37 | #include "src/Geometry/EulerAngles.h" 38 | 39 | #include "src/Geometry/Homogeneous.h" 40 | #include "src/Geometry/RotationBase.h" 41 | #include "src/Geometry/Rotation2D.h" 42 | #include "src/Geometry/Quaternion.h" 43 | #include "src/Geometry/AngleAxis.h" 44 | #include "src/Geometry/Transform.h" 45 | #include "src/Geometry/Translation.h" 46 | #include "src/Geometry/Scaling.h" 47 | #include "src/Geometry/Hyperplane.h" 48 | #include "src/Geometry/ParametrizedLine.h" 49 | #include "src/Geometry/AlignedBox.h" 50 | #include "src/Geometry/Umeyama.h" 51 | 52 | // Use the SSE optimized version whenever possible. 53 | #if (defined EIGEN_VECTORIZE_SSE) || (defined EIGEN_VECTORIZE_NEON) 54 | #include "src/Geometry/arch/Geometry_SIMD.h" 55 | #endif 56 | 57 | #include "src/Core/util/ReenableStupidWarnings.h" 58 | 59 | #endif // EIGEN_GEOMETRY_MODULE_H 60 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/Householder: -------------------------------------------------------------------------------- 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_HOUSEHOLDER_MODULE_H 9 | #define EIGEN_HOUSEHOLDER_MODULE_H 10 | 11 | #include "Core" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | /** \defgroup Householder_Module Householder module 16 | * This module provides Householder transformations. 17 | * 18 | * \code 19 | * #include 20 | * \endcode 21 | */ 22 | 23 | #include "src/Householder/Householder.h" 24 | #include "src/Householder/HouseholderSequence.h" 25 | #include "src/Householder/BlockHouseholder.h" 26 | 27 | #include "src/Core/util/ReenableStupidWarnings.h" 28 | 29 | #endif // EIGEN_HOUSEHOLDER_MODULE_H 30 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/IterativeLinearSolvers: -------------------------------------------------------------------------------- 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_ITERATIVELINEARSOLVERS_MODULE_H 9 | #define EIGEN_ITERATIVELINEARSOLVERS_MODULE_H 10 | 11 | #include "SparseCore" 12 | #include "OrderingMethods" 13 | 14 | #include "src/Core/util/DisableStupidWarnings.h" 15 | 16 | /** 17 | * \defgroup IterativeLinearSolvers_Module IterativeLinearSolvers module 18 | * 19 | * This module currently provides iterative methods to solve problems of the form \c A \c x = \c b, where \c A is a squared matrix, usually very large and sparse. 20 | * Those solvers are accessible via the following classes: 21 | * - ConjugateGradient for selfadjoint (hermitian) matrices, 22 | * - LeastSquaresConjugateGradient for rectangular least-square problems, 23 | * - BiCGSTAB for general square matrices. 24 | * 25 | * These iterative solvers are associated with some preconditioners: 26 | * - IdentityPreconditioner - not really useful 27 | * - DiagonalPreconditioner - also called Jacobi preconditioner, work very well on diagonal dominant matrices. 28 | * - IncompleteLUT - incomplete LU factorization with dual thresholding 29 | * 30 | * Such problems can also be solved using the direct sparse decomposition modules: SparseCholesky, CholmodSupport, UmfPackSupport, SuperLUSupport, AccelerateSupport. 31 | * 32 | \code 33 | #include 34 | \endcode 35 | */ 36 | 37 | #include "src/IterativeLinearSolvers/SolveWithGuess.h" 38 | #include "src/IterativeLinearSolvers/IterativeSolverBase.h" 39 | #include "src/IterativeLinearSolvers/BasicPreconditioners.h" 40 | #include "src/IterativeLinearSolvers/ConjugateGradient.h" 41 | #include "src/IterativeLinearSolvers/LeastSquareConjugateGradient.h" 42 | #include "src/IterativeLinearSolvers/BiCGSTAB.h" 43 | #include "src/IterativeLinearSolvers/IncompleteLUT.h" 44 | #include "src/IterativeLinearSolvers/IncompleteCholesky.h" 45 | 46 | #include "src/Core/util/ReenableStupidWarnings.h" 47 | 48 | #endif // EIGEN_ITERATIVELINEARSOLVERS_MODULE_H 49 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/Jacobi: -------------------------------------------------------------------------------- 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_JACOBI_MODULE_H 9 | #define EIGEN_JACOBI_MODULE_H 10 | 11 | #include "Core" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | /** \defgroup Jacobi_Module Jacobi module 16 | * This module provides Jacobi and Givens rotations. 17 | * 18 | * \code 19 | * #include 20 | * \endcode 21 | * 22 | * In addition to listed classes, it defines the two following MatrixBase methods to apply a Jacobi or Givens rotation: 23 | * - MatrixBase::applyOnTheLeft() 24 | * - MatrixBase::applyOnTheRight(). 25 | */ 26 | 27 | #include "src/Jacobi/Jacobi.h" 28 | 29 | #include "src/Core/util/ReenableStupidWarnings.h" 30 | 31 | #endif // EIGEN_JACOBI_MODULE_H 32 | 33 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/KLUSupport: -------------------------------------------------------------------------------- 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_KLUSUPPORT_MODULE_H 9 | #define EIGEN_KLUSUPPORT_MODULE_H 10 | 11 | #include 12 | 13 | #include 14 | 15 | extern "C" { 16 | #include 17 | #include 18 | } 19 | 20 | /** \ingroup Support_modules 21 | * \defgroup KLUSupport_Module KLUSupport module 22 | * 23 | * This module provides an interface to the KLU library which is part of the suitesparse package. 24 | * It provides the following factorization class: 25 | * - class KLU: a sparse LU factorization, well-suited for circuit simulation. 26 | * 27 | * \code 28 | * #include 29 | * \endcode 30 | * 31 | * In order to use this module, the klu and btf headers must be accessible from the include paths, and your binary must be linked to the klu library and its dependencies. 32 | * The dependencies depend on how umfpack has been compiled. 33 | * For a cmake based project, you can use our FindKLU.cmake module to help you in this task. 34 | * 35 | */ 36 | 37 | #include "src/KLUSupport/KLUSupport.h" 38 | 39 | #include 40 | 41 | #endif // EIGEN_KLUSUPPORT_MODULE_H 42 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/LU: -------------------------------------------------------------------------------- 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_LU_MODULE_H 9 | #define EIGEN_LU_MODULE_H 10 | 11 | #include "Core" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | /** \defgroup LU_Module LU module 16 | * This module includes %LU decomposition and related notions such as matrix inversion and determinant. 17 | * This module defines the following MatrixBase methods: 18 | * - MatrixBase::inverse() 19 | * - MatrixBase::determinant() 20 | * 21 | * \code 22 | * #include 23 | * \endcode 24 | */ 25 | 26 | #include "src/misc/Kernel.h" 27 | #include "src/misc/Image.h" 28 | #include "src/LU/FullPivLU.h" 29 | #include "src/LU/PartialPivLU.h" 30 | #ifdef EIGEN_USE_LAPACKE 31 | #include "src/misc/lapacke_helpers.h" 32 | #include "src/LU/PartialPivLU_LAPACKE.h" 33 | #endif 34 | #include "src/LU/Determinant.h" 35 | #include "src/LU/InverseImpl.h" 36 | 37 | #if defined EIGEN_VECTORIZE_SSE || defined EIGEN_VECTORIZE_NEON 38 | #include "src/LU/arch/InverseSize4.h" 39 | #endif 40 | 41 | #include "src/Core/util/ReenableStupidWarnings.h" 42 | 43 | #endif // EIGEN_LU_MODULE_H 44 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/MetisSupport: -------------------------------------------------------------------------------- 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_METISSUPPORT_MODULE_H 9 | #define EIGEN_METISSUPPORT_MODULE_H 10 | 11 | #include "SparseCore" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | extern "C" { 16 | #include 17 | } 18 | 19 | 20 | /** \ingroup Support_modules 21 | * \defgroup MetisSupport_Module MetisSupport module 22 | * 23 | * \code 24 | * #include 25 | * \endcode 26 | * This module defines an interface to the METIS reordering package (http://glaros.dtc.umn.edu/gkhome/views/metis). 27 | * It can be used just as any other built-in method as explained in \link OrderingMethods_Module here. \endlink 28 | */ 29 | 30 | 31 | #include "src/MetisSupport/MetisSupport.h" 32 | 33 | #include "src/Core/util/ReenableStupidWarnings.h" 34 | 35 | #endif // EIGEN_METISSUPPORT_MODULE_H 36 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/OrderingMethods: -------------------------------------------------------------------------------- 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_ORDERINGMETHODS_MODULE_H 9 | #define EIGEN_ORDERINGMETHODS_MODULE_H 10 | 11 | #include "SparseCore" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | /** 16 | * \defgroup OrderingMethods_Module OrderingMethods module 17 | * 18 | * This module is currently for internal use only 19 | * 20 | * It defines various built-in and external ordering methods for sparse matrices. 21 | * They are typically used to reduce the number of elements during 22 | * the sparse matrix decomposition (LLT, LU, QR). 23 | * Precisely, in a preprocessing step, a permutation matrix P is computed using 24 | * those ordering methods and applied to the columns of the matrix. 25 | * Using for instance the sparse Cholesky decomposition, it is expected that 26 | * the nonzeros elements in LLT(A*P) will be much smaller than that in LLT(A). 27 | * 28 | * 29 | * Usage : 30 | * \code 31 | * #include 32 | * \endcode 33 | * 34 | * A simple usage is as a template parameter in the sparse decomposition classes : 35 | * 36 | * \code 37 | * SparseLU > solver; 38 | * \endcode 39 | * 40 | * \code 41 | * SparseQR > solver; 42 | * \endcode 43 | * 44 | * It is possible as well to call directly a particular ordering method for your own purpose, 45 | * \code 46 | * AMDOrdering ordering; 47 | * PermutationMatrix perm; 48 | * SparseMatrix A; 49 | * //Fill the matrix ... 50 | * 51 | * ordering(A, perm); // Call AMD 52 | * \endcode 53 | * 54 | * \note Some of these methods (like AMD or METIS), need the sparsity pattern 55 | * of the input matrix to be symmetric. When the matrix is structurally unsymmetric, 56 | * Eigen computes internally the pattern of \f$A^T*A\f$ before calling the method. 57 | * If your matrix is already symmetric (at leat in structure), you can avoid that 58 | * by calling the method with a SelfAdjointView type. 59 | * 60 | * \code 61 | * // Call the ordering on the pattern of the lower triangular matrix A 62 | * ordering(A.selfadjointView(), perm); 63 | * \endcode 64 | */ 65 | 66 | #include "src/OrderingMethods/Amd.h" 67 | #include "src/OrderingMethods/Ordering.h" 68 | #include "src/Core/util/ReenableStupidWarnings.h" 69 | 70 | #endif // EIGEN_ORDERINGMETHODS_MODULE_H 71 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/PaStiXSupport: -------------------------------------------------------------------------------- 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_PASTIXSUPPORT_MODULE_H 9 | #define EIGEN_PASTIXSUPPORT_MODULE_H 10 | 11 | #include "SparseCore" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | extern "C" { 16 | #include 17 | #include 18 | } 19 | 20 | #ifdef complex 21 | #undef complex 22 | #endif 23 | 24 | /** \ingroup Support_modules 25 | * \defgroup PaStiXSupport_Module PaStiXSupport module 26 | * 27 | * This module provides an interface to the PaSTiX library. 28 | * PaSTiX is a general \b supernodal, \b parallel and \b opensource sparse solver. 29 | * It provides the two following main factorization classes: 30 | * - class PastixLLT : a supernodal, parallel LLt Cholesky factorization. 31 | * - class PastixLDLT: a supernodal, parallel LDLt Cholesky factorization. 32 | * - class PastixLU : a supernodal, parallel LU factorization (optimized for a symmetric pattern). 33 | * 34 | * \code 35 | * #include 36 | * \endcode 37 | * 38 | * In order to use this module, the PaSTiX headers must be accessible from the include paths, and your binary must be linked to the PaSTiX library and its dependencies. 39 | * This wrapper resuires PaStiX version 5.x compiled without MPI support. 40 | * The dependencies depend on how PaSTiX has been compiled. 41 | * For a cmake based project, you can use our FindPaSTiX.cmake module to help you in this task. 42 | * 43 | */ 44 | 45 | #include "src/PaStiXSupport/PaStiXSupport.h" 46 | 47 | #include "src/Core/util/ReenableStupidWarnings.h" 48 | 49 | #endif // EIGEN_PASTIXSUPPORT_MODULE_H 50 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/PardisoSupport: -------------------------------------------------------------------------------- 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_PARDISOSUPPORT_MODULE_H 9 | #define EIGEN_PARDISOSUPPORT_MODULE_H 10 | 11 | #include "SparseCore" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | #include 16 | 17 | /** \ingroup Support_modules 18 | * \defgroup PardisoSupport_Module PardisoSupport module 19 | * 20 | * This module brings support for the Intel(R) MKL PARDISO direct sparse solvers. 21 | * 22 | * \code 23 | * #include 24 | * \endcode 25 | * 26 | * In order to use this module, the MKL headers must be accessible from the include paths, and your binary must be linked to the MKL library and its dependencies. 27 | * See this \ref TopicUsingIntelMKL "page" for more information on MKL-Eigen integration. 28 | * 29 | */ 30 | 31 | #include "src/PardisoSupport/PardisoSupport.h" 32 | 33 | #include "src/Core/util/ReenableStupidWarnings.h" 34 | 35 | #endif // EIGEN_PARDISOSUPPORT_MODULE_H 36 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/QR: -------------------------------------------------------------------------------- 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_QR_MODULE_H 9 | #define EIGEN_QR_MODULE_H 10 | 11 | #include "Core" 12 | 13 | #include "Cholesky" 14 | #include "Jacobi" 15 | #include "Householder" 16 | 17 | #include "src/Core/util/DisableStupidWarnings.h" 18 | 19 | /** \defgroup QR_Module QR module 20 | * 21 | * 22 | * 23 | * This module provides various QR decompositions 24 | * This module also provides some MatrixBase methods, including: 25 | * - MatrixBase::householderQr() 26 | * - MatrixBase::colPivHouseholderQr() 27 | * - MatrixBase::fullPivHouseholderQr() 28 | * 29 | * \code 30 | * #include 31 | * \endcode 32 | */ 33 | 34 | #include "src/QR/HouseholderQR.h" 35 | #include "src/QR/FullPivHouseholderQR.h" 36 | #include "src/QR/ColPivHouseholderQR.h" 37 | #include "src/QR/CompleteOrthogonalDecomposition.h" 38 | #ifdef EIGEN_USE_LAPACKE 39 | #include "src/misc/lapacke_helpers.h" 40 | #include "src/QR/HouseholderQR_LAPACKE.h" 41 | #include "src/QR/ColPivHouseholderQR_LAPACKE.h" 42 | #endif 43 | 44 | #include "src/Core/util/ReenableStupidWarnings.h" 45 | 46 | #endif // EIGEN_QR_MODULE_H 47 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/QtAlignedMalloc: -------------------------------------------------------------------------------- 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_QTMALLOC_MODULE_H 9 | #define EIGEN_QTMALLOC_MODULE_H 10 | 11 | #include "Core" 12 | 13 | #if (!EIGEN_MALLOC_ALREADY_ALIGNED) 14 | 15 | #include "src/Core/util/DisableStupidWarnings.h" 16 | 17 | void *qMalloc(std::size_t size) 18 | { 19 | return Eigen::internal::aligned_malloc(size); 20 | } 21 | 22 | void qFree(void *ptr) 23 | { 24 | Eigen::internal::aligned_free(ptr); 25 | } 26 | 27 | void *qRealloc(void *ptr, std::size_t size) 28 | { 29 | void* newPtr = Eigen::internal::aligned_malloc(size); 30 | std::memcpy(newPtr, ptr, size); 31 | Eigen::internal::aligned_free(ptr); 32 | return newPtr; 33 | } 34 | 35 | #include "src/Core/util/ReenableStupidWarnings.h" 36 | 37 | #endif 38 | 39 | #endif // EIGEN_QTMALLOC_MODULE_H 40 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/SPQRSupport: -------------------------------------------------------------------------------- 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_SPQRSUPPORT_MODULE_H 9 | #define EIGEN_SPQRSUPPORT_MODULE_H 10 | 11 | #include "SparseCore" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | #include "SuiteSparseQR.hpp" 16 | 17 | /** \ingroup Support_modules 18 | * \defgroup SPQRSupport_Module SuiteSparseQR module 19 | * 20 | * This module provides an interface to the SPQR library, which is part of the suitesparse package. 21 | * 22 | * \code 23 | * #include 24 | * \endcode 25 | * 26 | * In order to use this module, the SPQR headers must be accessible from the include paths, and your binary must be linked to the SPQR library and its dependencies (Cholmod, AMD, COLAMD,...). 27 | * For a cmake based project, you can use our FindSPQR.cmake and FindCholmod.Cmake modules 28 | * 29 | */ 30 | 31 | #include "Eigen/CholmodSupport" 32 | #include "src/SPQRSupport/SuiteSparseQRSupport.h" 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/SVD: -------------------------------------------------------------------------------- 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_SVD_MODULE_H 9 | #define EIGEN_SVD_MODULE_H 10 | 11 | #include "QR" 12 | #include "Householder" 13 | #include "Jacobi" 14 | 15 | #include "src/Core/util/DisableStupidWarnings.h" 16 | 17 | /** \defgroup SVD_Module SVD module 18 | * 19 | * 20 | * 21 | * This module provides SVD decomposition for matrices (both real and complex). 22 | * Two decomposition algorithms are provided: 23 | * - JacobiSVD implementing two-sided Jacobi iterations is numerically very accurate, fast for small matrices, but very slow for larger ones. 24 | * - BDCSVD implementing a recursive divide & conquer strategy on top of an upper-bidiagonalization which remains fast for large problems. 25 | * These decompositions are accessible via the respective classes and following MatrixBase methods: 26 | * - MatrixBase::jacobiSvd() 27 | * - MatrixBase::bdcSvd() 28 | * 29 | * \code 30 | * #include 31 | * \endcode 32 | */ 33 | 34 | #include "src/misc/RealSvd2x2.h" 35 | #include "src/SVD/UpperBidiagonalization.h" 36 | #include "src/SVD/SVDBase.h" 37 | #include "src/SVD/JacobiSVD.h" 38 | #include "src/SVD/BDCSVD.h" 39 | #if defined(EIGEN_USE_LAPACKE) && !defined(EIGEN_USE_LAPACKE_STRICT) 40 | #ifdef EIGEN_USE_MKL 41 | #include "mkl_lapacke.h" 42 | #else 43 | #include "src/misc/lapacke.h" 44 | #endif 45 | #include "src/SVD/JacobiSVD_LAPACKE.h" 46 | #endif 47 | 48 | #include "src/Core/util/ReenableStupidWarnings.h" 49 | 50 | #endif // EIGEN_SVD_MODULE_H 51 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/Sparse: -------------------------------------------------------------------------------- 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_SPARSE_MODULE_H 9 | #define EIGEN_SPARSE_MODULE_H 10 | 11 | /** \defgroup Sparse_Module Sparse meta-module 12 | * 13 | * Meta-module including all related modules: 14 | * - \ref SparseCore_Module 15 | * - \ref OrderingMethods_Module 16 | * - \ref SparseCholesky_Module 17 | * - \ref SparseLU_Module 18 | * - \ref SparseQR_Module 19 | * - \ref IterativeLinearSolvers_Module 20 | * 21 | \code 22 | #include 23 | \endcode 24 | */ 25 | 26 | #include "SparseCore" 27 | #include "OrderingMethods" 28 | #include "SparseCholesky" 29 | #include "SparseLU" 30 | #include "SparseQR" 31 | #include "IterativeLinearSolvers" 32 | 33 | #endif // EIGEN_SPARSE_MODULE_H 34 | 35 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/SparseCholesky: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2008-2013 Gael Guennebaud 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | #ifndef EIGEN_SPARSECHOLESKY_MODULE_H 11 | #define EIGEN_SPARSECHOLESKY_MODULE_H 12 | 13 | #include "SparseCore" 14 | #include "OrderingMethods" 15 | 16 | #include "src/Core/util/DisableStupidWarnings.h" 17 | 18 | /** 19 | * \defgroup SparseCholesky_Module SparseCholesky module 20 | * 21 | * This module currently provides two variants of the direct sparse Cholesky decomposition for selfadjoint (hermitian) matrices. 22 | * Those decompositions are accessible via the following classes: 23 | * - SimplicialLLt, 24 | * - SimplicialLDLt 25 | * 26 | * Such problems can also be solved using the ConjugateGradient solver from the IterativeLinearSolvers module. 27 | * 28 | * \code 29 | * #include 30 | * \endcode 31 | */ 32 | 33 | #include "src/SparseCholesky/SimplicialCholesky.h" 34 | #include "src/SparseCholesky/SimplicialCholesky_impl.h" 35 | #include "src/Core/util/ReenableStupidWarnings.h" 36 | 37 | #endif // EIGEN_SPARSECHOLESKY_MODULE_H 38 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/SparseCore: -------------------------------------------------------------------------------- 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_SPARSECORE_MODULE_H 9 | #define EIGEN_SPARSECORE_MODULE_H 10 | 11 | #include "Core" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | 21 | /** 22 | * \defgroup SparseCore_Module SparseCore module 23 | * 24 | * This module provides a sparse matrix representation, and basic associated matrix manipulations 25 | * and operations. 26 | * 27 | * See the \ref TutorialSparse "Sparse tutorial" 28 | * 29 | * \code 30 | * #include 31 | * \endcode 32 | * 33 | * This module depends on: Core. 34 | */ 35 | 36 | #include "src/SparseCore/SparseUtil.h" 37 | #include "src/SparseCore/SparseMatrixBase.h" 38 | #include "src/SparseCore/SparseAssign.h" 39 | #include "src/SparseCore/CompressedStorage.h" 40 | #include "src/SparseCore/AmbiVector.h" 41 | #include "src/SparseCore/SparseCompressedBase.h" 42 | #include "src/SparseCore/SparseMatrix.h" 43 | #include "src/SparseCore/SparseMap.h" 44 | #include "src/SparseCore/SparseVector.h" 45 | #include "src/SparseCore/SparseRef.h" 46 | #include "src/SparseCore/SparseCwiseUnaryOp.h" 47 | #include "src/SparseCore/SparseCwiseBinaryOp.h" 48 | #include "src/SparseCore/SparseTranspose.h" 49 | #include "src/SparseCore/SparseBlock.h" 50 | #include "src/SparseCore/SparseDot.h" 51 | #include "src/SparseCore/SparseRedux.h" 52 | #include "src/SparseCore/SparseView.h" 53 | #include "src/SparseCore/SparseDiagonalProduct.h" 54 | #include "src/SparseCore/ConservativeSparseSparseProduct.h" 55 | #include "src/SparseCore/SparseSparseProductWithPruning.h" 56 | #include "src/SparseCore/SparseProduct.h" 57 | #include "src/SparseCore/SparseDenseProduct.h" 58 | #include "src/SparseCore/SparseSelfAdjointView.h" 59 | #include "src/SparseCore/SparseTriangularView.h" 60 | #include "src/SparseCore/TriangularSolver.h" 61 | #include "src/SparseCore/SparsePermutation.h" 62 | #include "src/SparseCore/SparseFuzzy.h" 63 | #include "src/SparseCore/SparseSolverBase.h" 64 | 65 | #include "src/Core/util/ReenableStupidWarnings.h" 66 | 67 | #endif // EIGEN_SPARSECORE_MODULE_H 68 | 69 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/SparseLU: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2012 Désiré Nuentsa-Wakam 5 | // Copyright (C) 2012 Gael Guennebaud 6 | // 7 | // This Source Code Form is subject to the terms of the Mozilla 8 | // Public License v. 2.0. If a copy of the MPL was not distributed 9 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 10 | 11 | #ifndef EIGEN_SPARSELU_MODULE_H 12 | #define EIGEN_SPARSELU_MODULE_H 13 | 14 | #include "SparseCore" 15 | 16 | /** 17 | * \defgroup SparseLU_Module SparseLU module 18 | * This module defines a supernodal factorization of general sparse matrices. 19 | * The code is fully optimized for supernode-panel updates with specialized kernels. 20 | * Please, see the documentation of the SparseLU class for more details. 21 | */ 22 | 23 | // Ordering interface 24 | #include "OrderingMethods" 25 | 26 | #include "src/Core/util/DisableStupidWarnings.h" 27 | 28 | #include "src/SparseLU/SparseLU_gemm_kernel.h" 29 | 30 | #include "src/SparseLU/SparseLU_Structs.h" 31 | #include "src/SparseLU/SparseLU_SupernodalMatrix.h" 32 | #include "src/SparseLU/SparseLUImpl.h" 33 | #include "src/SparseCore/SparseColEtree.h" 34 | #include "src/SparseLU/SparseLU_Memory.h" 35 | #include "src/SparseLU/SparseLU_heap_relax_snode.h" 36 | #include "src/SparseLU/SparseLU_relax_snode.h" 37 | #include "src/SparseLU/SparseLU_pivotL.h" 38 | #include "src/SparseLU/SparseLU_panel_dfs.h" 39 | #include "src/SparseLU/SparseLU_kernel_bmod.h" 40 | #include "src/SparseLU/SparseLU_panel_bmod.h" 41 | #include "src/SparseLU/SparseLU_column_dfs.h" 42 | #include "src/SparseLU/SparseLU_column_bmod.h" 43 | #include "src/SparseLU/SparseLU_copy_to_ucol.h" 44 | #include "src/SparseLU/SparseLU_pruneL.h" 45 | #include "src/SparseLU/SparseLU_Utils.h" 46 | #include "src/SparseLU/SparseLU.h" 47 | 48 | #include "src/Core/util/ReenableStupidWarnings.h" 49 | 50 | #endif // EIGEN_SPARSELU_MODULE_H 51 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/SparseQR: -------------------------------------------------------------------------------- 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_SPARSEQR_MODULE_H 9 | #define EIGEN_SPARSEQR_MODULE_H 10 | 11 | #include "SparseCore" 12 | #include "OrderingMethods" 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | /** \defgroup SparseQR_Module SparseQR module 16 | * \brief Provides QR decomposition for sparse matrices 17 | * 18 | * This module provides a simplicial version of the left-looking Sparse QR decomposition. 19 | * The columns of the input matrix should be reordered to limit the fill-in during the 20 | * decomposition. Built-in methods (COLAMD, AMD) or external methods (METIS) can be used to this end. 21 | * See the \link OrderingMethods_Module OrderingMethods\endlink module for the list 22 | * of built-in and external ordering methods. 23 | * 24 | * \code 25 | * #include 26 | * \endcode 27 | * 28 | * 29 | */ 30 | 31 | #include "src/SparseCore/SparseColEtree.h" 32 | #include "src/SparseQR/SparseQR.h" 33 | 34 | #include "src/Core/util/ReenableStupidWarnings.h" 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/StdDeque: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Gael Guennebaud 5 | // Copyright (C) 2009 Hauke Heibel 6 | // 7 | // This Source Code Form is subject to the terms of the Mozilla 8 | // Public License v. 2.0. If a copy of the MPL was not distributed 9 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 10 | 11 | #ifndef EIGEN_STDDEQUE_MODULE_H 12 | #define EIGEN_STDDEQUE_MODULE_H 13 | 14 | #include "Core" 15 | #include 16 | 17 | #if EIGEN_COMP_MSVC && EIGEN_OS_WIN64 && (EIGEN_MAX_STATIC_ALIGN_BYTES<=16) /* MSVC auto aligns up to 16 bytes in 64 bit builds */ 18 | 19 | #define EIGEN_DEFINE_STL_DEQUE_SPECIALIZATION(...) 20 | 21 | #else 22 | 23 | #include "src/StlSupport/StdDeque.h" 24 | 25 | #endif 26 | 27 | #endif // EIGEN_STDDEQUE_MODULE_H 28 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/StdList: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Hauke Heibel 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | #ifndef EIGEN_STDLIST_MODULE_H 11 | #define EIGEN_STDLIST_MODULE_H 12 | 13 | #include "Core" 14 | #include 15 | 16 | #if EIGEN_COMP_MSVC && EIGEN_OS_WIN64 && (EIGEN_MAX_STATIC_ALIGN_BYTES<=16) /* MSVC auto aligns up to 16 bytes in 64 bit builds */ 17 | 18 | #define EIGEN_DEFINE_STL_LIST_SPECIALIZATION(...) 19 | 20 | #else 21 | 22 | #include "src/StlSupport/StdList.h" 23 | 24 | #endif 25 | 26 | #endif // EIGEN_STDLIST_MODULE_H 27 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/StdVector: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Gael Guennebaud 5 | // Copyright (C) 2009 Hauke Heibel 6 | // 7 | // This Source Code Form is subject to the terms of the Mozilla 8 | // Public License v. 2.0. If a copy of the MPL was not distributed 9 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 10 | 11 | #ifndef EIGEN_STDVECTOR_MODULE_H 12 | #define EIGEN_STDVECTOR_MODULE_H 13 | 14 | #include "Core" 15 | #include 16 | 17 | #if EIGEN_COMP_MSVC && EIGEN_OS_WIN64 && (EIGEN_MAX_STATIC_ALIGN_BYTES<=16) /* MSVC auto aligns up to 16 bytes in 64 bit builds */ 18 | 19 | #define EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(...) 20 | 21 | #else 22 | 23 | #include "src/StlSupport/StdVector.h" 24 | 25 | #endif 26 | 27 | #endif // EIGEN_STDVECTOR_MODULE_H 28 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/SuperLUSupport: -------------------------------------------------------------------------------- 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_SUPERLUSUPPORT_MODULE_H 9 | #define EIGEN_SUPERLUSUPPORT_MODULE_H 10 | 11 | #include "SparseCore" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | #ifdef EMPTY 16 | #define EIGEN_EMPTY_WAS_ALREADY_DEFINED 17 | #endif 18 | 19 | typedef int int_t; 20 | #include 21 | #include 22 | #include 23 | 24 | // slu_util.h defines a preprocessor token named EMPTY which is really polluting, 25 | // so we remove it in favor of a SUPERLU_EMPTY token. 26 | // If EMPTY was already defined then we don't undef it. 27 | 28 | #if defined(EIGEN_EMPTY_WAS_ALREADY_DEFINED) 29 | # undef EIGEN_EMPTY_WAS_ALREADY_DEFINED 30 | #elif defined(EMPTY) 31 | # undef EMPTY 32 | #endif 33 | 34 | #define SUPERLU_EMPTY (-1) 35 | 36 | namespace Eigen { struct SluMatrix; } 37 | 38 | /** \ingroup Support_modules 39 | * \defgroup SuperLUSupport_Module SuperLUSupport module 40 | * 41 | * This module provides an interface to the SuperLU library. 42 | * It provides the following factorization class: 43 | * - class SuperLU: a supernodal sequential LU factorization. 44 | * - class SuperILU: a supernodal sequential incomplete LU factorization (to be used as a preconditioner for iterative methods). 45 | * 46 | * \warning This wrapper requires at least versions 4.0 of SuperLU. The 3.x versions are not supported. 47 | * 48 | * \warning When including this module, you have to use SUPERLU_EMPTY instead of EMPTY which is no longer defined because it is too polluting. 49 | * 50 | * \code 51 | * #include 52 | * \endcode 53 | * 54 | * In order to use this module, the superlu headers must be accessible from the include paths, and your binary must be linked to the superlu library and its dependencies. 55 | * The dependencies depend on how superlu has been compiled. 56 | * For a cmake based project, you can use our FindSuperLU.cmake module to help you in this task. 57 | * 58 | */ 59 | 60 | #include "src/SuperLUSupport/SuperLUSupport.h" 61 | 62 | #include "src/Core/util/ReenableStupidWarnings.h" 63 | 64 | #endif // EIGEN_SUPERLUSUPPORT_MODULE_H 65 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/UmfPackSupport: -------------------------------------------------------------------------------- 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_UMFPACKSUPPORT_MODULE_H 9 | #define EIGEN_UMFPACKSUPPORT_MODULE_H 10 | 11 | #include "SparseCore" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | extern "C" { 16 | #include 17 | } 18 | 19 | /** \ingroup Support_modules 20 | * \defgroup UmfPackSupport_Module UmfPackSupport module 21 | * 22 | * This module provides an interface to the UmfPack library which is part of the suitesparse package. 23 | * It provides the following factorization class: 24 | * - class UmfPackLU: a multifrontal sequential LU factorization. 25 | * 26 | * \code 27 | * #include 28 | * \endcode 29 | * 30 | * In order to use this module, the umfpack headers must be accessible from the include paths, and your binary must be linked to the umfpack library and its dependencies. 31 | * The dependencies depend on how umfpack has been compiled. 32 | * For a cmake based project, you can use our FindUmfPack.cmake module to help you in this task. 33 | * 34 | */ 35 | 36 | #include "src/UmfPackSupport/UmfPackSupport.h" 37 | 38 | #include "src/Core/util/ReenableStupidWarnings.h" 39 | 40 | #endif // EIGEN_UMFPACKSUPPORT_MODULE_H 41 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/AccelerateSupport/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_ACCELERATESUPPORT_MODULE_H 2 | #error "Please include Eigen/AccelerateSupport instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Cholesky/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_CHOLESKY_MODULE_H 2 | #error "Please include Eigen/Cholesky instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/CholmodSupport/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_CHOLMODSUPPORT_MODULE_H 2 | #error "Please include Eigen/CholmodSupport instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/Assign.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2007 Michael Olbrich 5 | // Copyright (C) 2006-2010 Benoit Jacob 6 | // Copyright (C) 2008 Gael Guennebaud 7 | // 8 | // This Source Code Form is subject to the terms of the Mozilla 9 | // Public License v. 2.0. If a copy of the MPL was not distributed 10 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 11 | 12 | #ifndef EIGEN_ASSIGN_H 13 | #define EIGEN_ASSIGN_H 14 | 15 | #include "./InternalHeaderCheck.h" 16 | 17 | namespace Eigen { 18 | 19 | template 20 | template 21 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase 22 | ::lazyAssign(const DenseBase& other) 23 | { 24 | enum{ 25 | SameType = internal::is_same::value 26 | }; 27 | 28 | EIGEN_STATIC_ASSERT_LVALUE(Derived) 29 | EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(Derived,OtherDerived) 30 | EIGEN_STATIC_ASSERT(SameType,YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY) 31 | 32 | eigen_assert(rows() == other.rows() && cols() == other.cols()); 33 | internal::call_assignment_no_alias(derived(),other.derived()); 34 | 35 | return derived(); 36 | } 37 | 38 | template 39 | template 40 | EIGEN_DEVICE_FUNC 41 | EIGEN_STRONG_INLINE Derived& DenseBase::operator=(const DenseBase& other) 42 | { 43 | internal::call_assignment(derived(), other.derived()); 44 | return derived(); 45 | } 46 | 47 | template 48 | EIGEN_DEVICE_FUNC 49 | EIGEN_STRONG_INLINE Derived& DenseBase::operator=(const DenseBase& other) 50 | { 51 | internal::call_assignment(derived(), other.derived()); 52 | return derived(); 53 | } 54 | 55 | template 56 | EIGEN_DEVICE_FUNC 57 | EIGEN_STRONG_INLINE Derived& MatrixBase::operator=(const MatrixBase& other) 58 | { 59 | internal::call_assignment(derived(), other.derived()); 60 | return derived(); 61 | } 62 | 63 | template 64 | template 65 | EIGEN_DEVICE_FUNC 66 | EIGEN_STRONG_INLINE Derived& MatrixBase::operator=(const DenseBase& other) 67 | { 68 | internal::call_assignment(derived(), other.derived()); 69 | return derived(); 70 | } 71 | 72 | template 73 | template 74 | EIGEN_DEVICE_FUNC 75 | EIGEN_STRONG_INLINE Derived& MatrixBase::operator=(const EigenBase& other) 76 | { 77 | internal::call_assignment(derived(), other.derived()); 78 | return derived(); 79 | } 80 | 81 | template 82 | template 83 | EIGEN_DEVICE_FUNC 84 | EIGEN_STRONG_INLINE Derived& MatrixBase::operator=(const ReturnByValue& other) 85 | { 86 | other.derived().evalTo(derived()); 87 | return derived(); 88 | } 89 | 90 | } // end namespace Eigen 91 | 92 | #endif // EIGEN_ASSIGN_H 93 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/DiagonalProduct.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2008 Gael Guennebaud 5 | // Copyright (C) 2007-2009 Benoit Jacob 6 | // 7 | // This Source Code Form is subject to the terms of the Mozilla 8 | // Public License v. 2.0. If a copy of the MPL was not distributed 9 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 10 | 11 | #ifndef EIGEN_DIAGONALPRODUCT_H 12 | #define EIGEN_DIAGONALPRODUCT_H 13 | 14 | #include "./InternalHeaderCheck.h" 15 | 16 | namespace Eigen { 17 | 18 | /** \returns the diagonal matrix product of \c *this by the diagonal matrix \a diagonal. 19 | */ 20 | template 21 | template 22 | EIGEN_DEVICE_FUNC inline const Product 23 | MatrixBase::operator*(const DiagonalBase &a_diagonal) const 24 | { 25 | return Product(derived(),a_diagonal.derived()); 26 | } 27 | 28 | } // end namespace Eigen 29 | 30 | #endif // EIGEN_DIAGONALPRODUCT_H 31 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_CORE_MODULE_H 2 | #error "Please include Eigen/Core instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/NestByValue.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2008 Gael Guennebaud 5 | // Copyright (C) 2006-2008 Benoit Jacob 6 | // 7 | // This Source Code Form is subject to the terms of the Mozilla 8 | // Public License v. 2.0. If a copy of the MPL was not distributed 9 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 10 | 11 | #ifndef EIGEN_NESTBYVALUE_H 12 | #define EIGEN_NESTBYVALUE_H 13 | 14 | #include "./InternalHeaderCheck.h" 15 | 16 | namespace Eigen { 17 | 18 | namespace internal { 19 | template 20 | struct traits > : public traits 21 | { 22 | enum { 23 | Flags = traits::Flags & ~NestByRefBit 24 | }; 25 | }; 26 | } 27 | 28 | /** \class NestByValue 29 | * \ingroup Core_Module 30 | * 31 | * \brief Expression which must be nested by value 32 | * 33 | * \tparam ExpressionType the type of the object of which we are requiring nesting-by-value 34 | * 35 | * This class is the return type of MatrixBase::nestByValue() 36 | * and most of the time this is the only way it is used. 37 | * 38 | * \sa MatrixBase::nestByValue() 39 | */ 40 | template class NestByValue 41 | : public internal::dense_xpr_base< NestByValue >::type 42 | { 43 | public: 44 | 45 | typedef typename internal::dense_xpr_base::type Base; 46 | EIGEN_DENSE_PUBLIC_INTERFACE(NestByValue) 47 | 48 | EIGEN_DEVICE_FUNC explicit inline NestByValue(const ExpressionType& matrix) : m_expression(matrix) {} 49 | 50 | EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index rows() const EIGEN_NOEXCEPT { return m_expression.rows(); } 51 | EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index cols() const EIGEN_NOEXCEPT { return m_expression.cols(); } 52 | 53 | EIGEN_DEVICE_FUNC operator const ExpressionType&() const { return m_expression; } 54 | 55 | EIGEN_DEVICE_FUNC const ExpressionType& nestedExpression() const { return m_expression; } 56 | 57 | protected: 58 | const ExpressionType m_expression; 59 | }; 60 | 61 | /** \returns an expression of the temporary version of *this. 62 | */ 63 | template 64 | EIGEN_DEVICE_FUNC inline const NestByValue 65 | DenseBase::nestByValue() const 66 | { 67 | return NestByValue(derived()); 68 | } 69 | 70 | namespace internal { 71 | 72 | // Evaluator of Solve -> eval into a temporary 73 | template 74 | struct evaluator > 75 | : public evaluator 76 | { 77 | typedef evaluator Base; 78 | 79 | EIGEN_DEVICE_FUNC explicit evaluator(const NestByValue& xpr) 80 | : Base(xpr.nestedExpression()) 81 | {} 82 | }; 83 | } 84 | 85 | } // end namespace Eigen 86 | 87 | #endif // EIGEN_NESTBYVALUE_H 88 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/SelfCwiseBinaryOp.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009-2010 Gael Guennebaud 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | #ifndef EIGEN_SELFCWISEBINARYOP_H 11 | #define EIGEN_SELFCWISEBINARYOP_H 12 | 13 | #include "./InternalHeaderCheck.h" 14 | 15 | namespace Eigen { 16 | 17 | // TODO generalize the scalar type of 'other' 18 | 19 | template 20 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase::operator*=(const Scalar& other) 21 | { 22 | internal::call_assignment(this->derived(), PlainObject::Constant(rows(),cols(),other), internal::mul_assign_op()); 23 | return derived(); 24 | } 25 | 26 | template 27 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& ArrayBase::operator+=(const Scalar& other) 28 | { 29 | internal::call_assignment(this->derived(), PlainObject::Constant(rows(),cols(),other), internal::add_assign_op()); 30 | return derived(); 31 | } 32 | 33 | template 34 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& ArrayBase::operator-=(const Scalar& other) 35 | { 36 | internal::call_assignment(this->derived(), PlainObject::Constant(rows(),cols(),other), internal::sub_assign_op()); 37 | return derived(); 38 | } 39 | 40 | template 41 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase::operator/=(const Scalar& other) 42 | { 43 | internal::call_assignment(this->derived(), PlainObject::Constant(rows(),cols(),other), internal::div_assign_op()); 44 | return derived(); 45 | } 46 | 47 | } // end namespace Eigen 48 | 49 | #endif // EIGEN_SELFCWISEBINARYOP_H 50 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/Swap.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2006-2008 Benoit Jacob 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | #ifndef EIGEN_SWAP_H 11 | #define EIGEN_SWAP_H 12 | 13 | #include "./InternalHeaderCheck.h" 14 | 15 | namespace Eigen { 16 | 17 | namespace internal { 18 | 19 | // Overload default assignPacket behavior for swapping them 20 | template 21 | class generic_dense_assignment_kernel, Specialized> 22 | : public generic_dense_assignment_kernel, BuiltIn> 23 | { 24 | protected: 25 | typedef generic_dense_assignment_kernel, BuiltIn> Base; 26 | using Base::m_dst; 27 | using Base::m_src; 28 | using Base::m_functor; 29 | 30 | public: 31 | typedef typename Base::Scalar Scalar; 32 | typedef typename Base::DstXprType DstXprType; 33 | typedef swap_assign_op Functor; 34 | 35 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE 36 | generic_dense_assignment_kernel(DstEvaluatorTypeT &dst, const SrcEvaluatorTypeT &src, const Functor &func, DstXprType& dstExpr) 37 | : Base(dst, src, func, dstExpr) 38 | {} 39 | 40 | template 41 | EIGEN_STRONG_INLINE void assignPacket(Index row, Index col) 42 | { 43 | PacketType tmp = m_src.template packet(row,col); 44 | const_cast(m_src).template writePacket(row,col, m_dst.template packet(row,col)); 45 | m_dst.template writePacket(row,col,tmp); 46 | } 47 | 48 | template 49 | EIGEN_STRONG_INLINE void assignPacket(Index index) 50 | { 51 | PacketType tmp = m_src.template packet(index); 52 | const_cast(m_src).template writePacket(index, m_dst.template packet(index)); 53 | m_dst.template writePacket(index,tmp); 54 | } 55 | 56 | // TODO find a simple way not to have to copy/paste this function from generic_dense_assignment_kernel, by simple I mean no CRTP (Gael) 57 | template 58 | EIGEN_STRONG_INLINE void assignPacketByOuterInner(Index outer, Index inner) 59 | { 60 | Index row = Base::rowIndexByOuterInner(outer, inner); 61 | Index col = Base::colIndexByOuterInner(outer, inner); 62 | assignPacket(row, col); 63 | } 64 | }; 65 | 66 | } // namespace internal 67 | 68 | } // end namespace Eigen 69 | 70 | #endif // EIGEN_SWAP_H 71 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/arch/AltiVec/MathFunctions.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2007 Julien Pommier 5 | // Copyright (C) 2009 Gael Guennebaud 6 | // Copyright (C) 2016 Konstantinos Margaritis 7 | // 8 | // This Source Code Form is subject to the terms of the Mozilla 9 | // Public License v. 2.0. If a copy of the MPL was not distributed 10 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 11 | 12 | #ifndef EIGEN_MATH_FUNCTIONS_ALTIVEC_H 13 | #define EIGEN_MATH_FUNCTIONS_ALTIVEC_H 14 | 15 | #include "../../InternalHeaderCheck.h" 16 | 17 | namespace Eigen { 18 | 19 | namespace internal { 20 | 21 | template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS 22 | Packet4f plog(const Packet4f& _x) 23 | { 24 | return plog_float(_x); 25 | } 26 | 27 | template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS 28 | Packet4f pexp(const Packet4f& _x) 29 | { 30 | return pexp_float(_x); 31 | } 32 | 33 | template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS 34 | Packet4f psin(const Packet4f& _x) 35 | { 36 | return psin_float(_x); 37 | } 38 | 39 | template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS 40 | Packet4f pcos(const Packet4f& _x) 41 | { 42 | return pcos_float(_x); 43 | } 44 | 45 | #ifndef EIGEN_COMP_CLANG 46 | template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS 47 | Packet4f prsqrt(const Packet4f& x) 48 | { 49 | return vec_rsqrt(x); 50 | } 51 | #endif 52 | 53 | #ifdef __VSX__ 54 | #ifndef EIGEN_COMP_CLANG 55 | template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS 56 | Packet2d prsqrt(const Packet2d& x) 57 | { 58 | return vec_rsqrt(x); 59 | } 60 | #endif 61 | 62 | template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS 63 | Packet4f psqrt(const Packet4f& x) 64 | { 65 | return vec_sqrt(x); 66 | } 67 | 68 | template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS 69 | Packet2d psqrt(const Packet2d& x) 70 | { 71 | return vec_sqrt(x); 72 | } 73 | 74 | template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS 75 | Packet2d pexp(const Packet2d& _x) 76 | { 77 | return pexp_double(_x); 78 | } 79 | #endif 80 | 81 | // Hyperbolic Tangent function. 82 | template <> 83 | EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet4f 84 | ptanh(const Packet4f& x) { 85 | return internal::generic_fast_tanh_float(x); 86 | } 87 | 88 | } // end namespace internal 89 | 90 | } // end namespace Eigen 91 | 92 | #endif // EIGEN_MATH_FUNCTIONS_ALTIVEC_H 93 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/arch/Default/Settings.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2008-2010 Gael Guennebaud 5 | // Copyright (C) 2006-2008 Benoit Jacob 6 | // 7 | // This Source Code Form is subject to the terms of the Mozilla 8 | // Public License v. 2.0. If a copy of the MPL was not distributed 9 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 10 | 11 | 12 | /* All the parameters defined in this file can be specialized in the 13 | * architecture specific files, and/or by the user. 14 | * More to come... */ 15 | 16 | #ifndef EIGEN_DEFAULT_SETTINGS_H 17 | #define EIGEN_DEFAULT_SETTINGS_H 18 | 19 | /** Defines the maximal loop size to enable meta unrolling of loops. 20 | * Note that the value here is expressed in Eigen's own notion of "number of FLOPS", 21 | * it does not correspond to the number of iterations or the number of instructions 22 | */ 23 | #ifndef EIGEN_UNROLLING_LIMIT 24 | #define EIGEN_UNROLLING_LIMIT 110 25 | #endif 26 | 27 | /** Defines the threshold between a "small" and a "large" matrix. 28 | * This threshold is mainly used to select the proper product implementation. 29 | */ 30 | #ifndef EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD 31 | #define EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD 8 32 | #endif 33 | 34 | /** Defines the maximal width of the blocks used in the triangular product and solver 35 | * for vectors (level 2 blas xTRMV and xTRSV). The default is 8. 36 | */ 37 | #ifndef EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH 38 | #define EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH 8 39 | #endif 40 | 41 | 42 | /** Defines the default number of registers available for that architecture. 43 | * Currently it must be 8 or 16. Other values will fail. 44 | */ 45 | #ifndef EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS 46 | #define EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS 8 47 | #endif 48 | 49 | #endif // EIGEN_DEFAULT_SETTINGS_H 50 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/arch/GPU/TypeCasting.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2016 Benoit Steiner 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | #ifndef EIGEN_TYPE_CASTING_GPU_H 11 | #define EIGEN_TYPE_CASTING_GPU_H 12 | 13 | #include "../../InternalHeaderCheck.h" 14 | 15 | namespace Eigen { 16 | 17 | namespace internal { 18 | 19 | #if (defined(EIGEN_HAS_CUDA_FP16) && defined(EIGEN_CUDA_ARCH) && EIGEN_CUDA_ARCH >= 300) || \ 20 | (defined(EIGEN_HAS_HIP_FP16) && defined(EIGEN_HIP_DEVICE_COMPILE)) 21 | 22 | template <> 23 | struct type_casting_traits { 24 | enum { 25 | VectorizedCast = 1, 26 | SrcCoeffRatio = 1, 27 | TgtCoeffRatio = 2 28 | }; 29 | }; 30 | 31 | template<> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE float4 pcast(const half2& a, const half2& b) { 32 | float2 r1 = __half22float2(a); 33 | float2 r2 = __half22float2(b); 34 | return make_float4(r1.x, r1.y, r2.x, r2.y); 35 | } 36 | 37 | 38 | template<> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet4h2 pcast(const float4& a, const float4& b) { 39 | Packet4h2 r; 40 | half2* r_alias=reinterpret_cast(&r); 41 | r_alias[0]=__floats2half2_rn(a.x,a.y); 42 | r_alias[1]=__floats2half2_rn(a.z,a.w); 43 | r_alias[2]=__floats2half2_rn(b.x,b.y); 44 | r_alias[3]=__floats2half2_rn(b.z,b.w); 45 | return r; 46 | } 47 | 48 | template <> 49 | struct type_casting_traits { 50 | enum { 51 | VectorizedCast = 1, 52 | SrcCoeffRatio = 2, 53 | TgtCoeffRatio = 1 54 | }; 55 | }; 56 | 57 | template<> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE float4 pcast(const Packet4h2& a) { 58 | // Simply discard the second half of the input 59 | float4 r; 60 | const half2* a_alias=reinterpret_cast(&a); 61 | float2 r1 = __half22float2(a_alias[0]); 62 | float2 r2 = __half22float2(a_alias[1]); 63 | r.x=static_cast(r1.x); 64 | r.y=static_cast(r1.y); 65 | r.z=static_cast(r2.x); 66 | r.w=static_cast(r2.y); 67 | return r; 68 | } 69 | 70 | template<> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE half2 pcast(const float4& a) { 71 | // Simply discard the second half of the input 72 | return __floats2half2_rn(a.x, a.y); 73 | } 74 | 75 | #endif 76 | 77 | } // end namespace internal 78 | 79 | } // end namespace Eigen 80 | 81 | #endif // EIGEN_TYPE_CASTING_GPU_H 82 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/arch/HIP/hcc/math_constants.h: -------------------------------------------------------------------------------- 1 | /* 2 | * math_constants.h - 3 | * HIP equivalent of the CUDA header of the same name 4 | */ 5 | 6 | #ifndef __MATH_CONSTANTS_H__ 7 | #define __MATH_CONSTANTS_H__ 8 | 9 | /* single precision constants */ 10 | 11 | #define HIPRT_INF_F __int_as_float(0x7f800000) 12 | #define HIPRT_NAN_F __int_as_float(0x7fffffff) 13 | #define HIPRT_MIN_DENORM_F __int_as_float(0x00000001) 14 | #define HIPRT_MAX_NORMAL_F __int_as_float(0x7f7fffff) 15 | #define HIPRT_NEG_ZERO_F __int_as_float(0x80000000) 16 | #define HIPRT_ZERO_F 0.0f 17 | #define HIPRT_ONE_F 1.0f 18 | 19 | /* double precision constants */ 20 | #define HIPRT_INF __hiloint2double(0x7ff00000, 0x00000000) 21 | #define HIPRT_NAN __hiloint2double(0xfff80000, 0x00000000) 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/arch/NEON/UnaryFunctors.h: -------------------------------------------------------------------------------- 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_NEON_UNARY_FUNCTORS_H 9 | #define EIGEN_NEON_UNARY_FUNCTORS_H 10 | 11 | #include "../../InternalHeaderCheck.h" 12 | 13 | namespace Eigen { 14 | 15 | namespace internal { 16 | 17 | #if EIGEN_HAS_ARM64_FP16_VECTOR_ARITHMETIC 18 | /** \internal 19 | * \brief Template specialization of the logistic function for Eigen::half. 20 | */ 21 | template <> 22 | struct scalar_logistic_op { 23 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE 24 | Eigen::half operator()(const Eigen::half& x) const { 25 | // Convert to float and call scalar_logistic_op. 26 | const scalar_logistic_op float_op; 27 | return Eigen::half(float_op(float(x))); 28 | } 29 | 30 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE 31 | Eigen::half packetOp(const Eigen::half& x) const { 32 | return this->operator()(x); 33 | } 34 | 35 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE 36 | Packet4hf packetOp(const Packet4hf& x) const { 37 | const scalar_logistic_op float_op; 38 | return vcvt_f16_f32(float_op.packetOp(vcvt_f32_f16(x))); 39 | } 40 | 41 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE 42 | Packet8hf packetOp(const Packet8hf& x) const { 43 | const scalar_logistic_op float_op; 44 | return vcombine_f16( 45 | vcvt_f16_f32(float_op.packetOp(vcvt_f32_f16(vget_low_f16(x)))), 46 | vcvt_f16_f32(float_op.packetOp(vcvt_high_f32_f16(x)))); 47 | } 48 | }; 49 | 50 | template<> 51 | struct functor_traits> { 52 | enum { 53 | Cost = functor_traits>::Cost, 54 | PacketAccess = functor_traits>::PacketAccess, 55 | }; 56 | }; 57 | #endif // EIGEN_HAS_ARM64_FP16_VECTOR_ARITHMETIC 58 | 59 | } // end namespace internal 60 | 61 | } // end namespace Eigen 62 | 63 | #endif // EIGEN_NEON_UNARY_FUNCTORS_H 64 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/arch/SVE/MathFunctions.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2020, Arm Limited and Contributors 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | #ifndef EIGEN_MATH_FUNCTIONS_SVE_H 11 | #define EIGEN_MATH_FUNCTIONS_SVE_H 12 | 13 | #include "../../InternalHeaderCheck.h" 14 | 15 | namespace Eigen { 16 | namespace internal { 17 | 18 | template <> 19 | EIGEN_STRONG_INLINE PacketXf pexp(const PacketXf& x) { 20 | return pexp_float(x); 21 | } 22 | 23 | template <> 24 | EIGEN_STRONG_INLINE PacketXf plog(const PacketXf& x) { 25 | return plog_float(x); 26 | } 27 | 28 | template <> 29 | EIGEN_STRONG_INLINE PacketXf psin(const PacketXf& x) { 30 | return psin_float(x); 31 | } 32 | 33 | template <> 34 | EIGEN_STRONG_INLINE PacketXf pcos(const PacketXf& x) { 35 | return pcos_float(x); 36 | } 37 | 38 | // Hyperbolic Tangent function. 39 | template <> 40 | EIGEN_STRONG_INLINE PacketXf ptanh(const PacketXf& x) { 41 | return internal::generic_fast_tanh_float(x); 42 | } 43 | } // end namespace internal 44 | } // end namespace Eigen 45 | 46 | #endif // EIGEN_MATH_FUNCTIONS_SVE_H 47 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/arch/SVE/TypeCasting.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2020, Arm Limited and Contributors 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | #ifndef EIGEN_TYPE_CASTING_SVE_H 11 | #define EIGEN_TYPE_CASTING_SVE_H 12 | 13 | #include "../../InternalHeaderCheck.h" 14 | 15 | namespace Eigen { 16 | namespace internal { 17 | 18 | template <> 19 | struct type_casting_traits { 20 | enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 }; 21 | }; 22 | 23 | template <> 24 | struct type_casting_traits { 25 | enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 }; 26 | }; 27 | 28 | template <> 29 | EIGEN_STRONG_INLINE PacketXf pcast(const PacketXi& a) { 30 | return svcvt_f32_s32_z(svptrue_b32(), a); 31 | } 32 | 33 | template <> 34 | EIGEN_STRONG_INLINE PacketXi pcast(const PacketXf& a) { 35 | return svcvt_s32_f32_z(svptrue_b32(), a); 36 | } 37 | 38 | template <> 39 | EIGEN_STRONG_INLINE PacketXf preinterpret(const PacketXi& a) { 40 | return svreinterpret_f32_s32(a); 41 | } 42 | 43 | template <> 44 | EIGEN_STRONG_INLINE PacketXi preinterpret(const PacketXf& a) { 45 | return svreinterpret_s32_f32(a); 46 | } 47 | 48 | } // namespace internal 49 | } // namespace Eigen 50 | 51 | #endif // EIGEN_TYPE_CASTING_SVE_H 52 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/arch/SYCL/TypeCasting.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Mehdi Goli Codeplay Software Ltd. 5 | // Ralph Potter Codeplay Software Ltd. 6 | // Luke Iwanski Codeplay Software Ltd. 7 | // Contact: 8 | // 9 | // This Source Code Form is subject to the terms of the Mozilla 10 | // Public License v. 2.0. If a copy of the MPL was not distributed 11 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 12 | 13 | /***************************************************************** 14 | * TypeCasting.h 15 | * 16 | * \brief: 17 | * TypeCasting 18 | * 19 | *****************************************************************/ 20 | 21 | #ifndef EIGEN_TYPE_CASTING_SYCL_H 22 | #define EIGEN_TYPE_CASTING_SYCL_H 23 | 24 | #include "../../InternalHeaderCheck.h" 25 | 26 | namespace Eigen { 27 | 28 | namespace internal { 29 | #ifdef SYCL_DEVICE_ONLY 30 | template <> 31 | struct type_casting_traits { 32 | enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 }; 33 | }; 34 | 35 | template <> 36 | EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE cl::sycl::cl_int4 37 | pcast(const cl::sycl::cl_float4& a) { 38 | return a 39 | .template convert(); 40 | } 41 | 42 | template <> 43 | struct type_casting_traits { 44 | enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 }; 45 | }; 46 | 47 | template <> 48 | EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE cl::sycl::cl_float4 49 | pcast(const cl::sycl::cl_int4& a) { 50 | return a.template convert(); 52 | } 53 | 54 | template <> 55 | struct type_casting_traits { 56 | enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 }; 57 | }; 58 | 59 | template <> 60 | EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE cl::sycl::cl_float4 61 | pcast( 62 | const cl::sycl::cl_double2& a, const cl::sycl::cl_double2& b) { 63 | auto a1 = a.template convert(); 65 | auto b1 = b.template convert(); 67 | return cl::sycl::float4(a1.x(), a1.y(), b1.x(), b1.y()); 68 | } 69 | 70 | template <> 71 | struct type_casting_traits { 72 | enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 }; 73 | }; 74 | 75 | template <> 76 | EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE cl::sycl::cl_double2 77 | pcast(const cl::sycl::cl_float4& a) { 78 | // Simply discard the second half of the input 79 | return cl::sycl::cl_double2(a.x(), a.y()); 80 | } 81 | 82 | #endif 83 | } // end namespace internal 84 | 85 | } // end namespace Eigen 86 | 87 | #endif // EIGEN_TYPE_CASTING_SYCL_H 88 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/functors/TernaryFunctors.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2016 Eugene Brevdo 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | #ifndef EIGEN_TERNARY_FUNCTORS_H 11 | #define EIGEN_TERNARY_FUNCTORS_H 12 | 13 | #include "../InternalHeaderCheck.h" 14 | 15 | namespace Eigen { 16 | 17 | namespace internal { 18 | 19 | //---------- associative ternary functors ---------- 20 | 21 | 22 | 23 | } // end namespace internal 24 | 25 | } // end namespace Eigen 26 | 27 | #endif // EIGEN_TERNARY_FUNCTORS_H 28 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/util/NonMPL2.h: -------------------------------------------------------------------------------- 1 | #ifdef EIGEN_MPL2_ONLY 2 | #error Including non-MPL2 code in EIGEN_MPL2_ONLY mode 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/util/ReenableStupidWarnings.h: -------------------------------------------------------------------------------- 1 | #ifdef EIGEN_WARNINGS_DISABLED_2 2 | // "DisableStupidWarnings.h" was included twice recursively: Do not re-enable warnings yet! 3 | # undef EIGEN_WARNINGS_DISABLED_2 4 | 5 | #elif defined(EIGEN_WARNINGS_DISABLED) 6 | #undef EIGEN_WARNINGS_DISABLED 7 | 8 | #ifndef EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS 9 | #ifdef _MSC_VER 10 | #pragma warning( pop ) 11 | #elif defined __INTEL_COMPILER 12 | #pragma warning pop 13 | #elif defined __clang__ 14 | #pragma clang diagnostic pop 15 | #elif defined __GNUC__ && !defined(__FUJITSU) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) 16 | #pragma GCC diagnostic pop 17 | #endif 18 | 19 | #if defined __NVCC__ 20 | // Don't re-enable the diagnostic messages, as it turns out these messages need 21 | // to be disabled at the point of the template instantiation (i.e the user code) 22 | // otherwise they'll be triggered by nvcc. 23 | // #define EIGEN_MAKE_PRAGMA(X) _Pragma(#X) 24 | // #if __NVCC_DIAG_PRAGMA_SUPPORT__ 25 | // #define EIGEN_NV_DIAG_DEFAULT(X) EIGEN_MAKE_PRAGMA(nv_diag_default X) 26 | // #else 27 | // #define EIGEN_NV_DIAG_DEFAULT(X) EIGEN_MAKE_PRAGMA(diag_default X) 28 | // #endif 29 | // EIGEN_NV_DIAG_DEFAULT(code_is_unreachable) 30 | // EIGEN_NV_DIAG_DEFAULT(initialization_not_reachable) 31 | // EIGEN_NV_DIAG_DEFAULT(2651) 32 | // EIGEN_NV_DIAG_DEFAULT(2653) 33 | // #undef EIGEN_NV_DIAG_DEFAULT 34 | // #undef EIGEN_MAKE_PRAGMA 35 | #endif 36 | 37 | #endif 38 | 39 | #endif // EIGEN_WARNINGS_DISABLED 40 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Core/util/ReshapedHelper.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2017 Gael Guennebaud 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | 11 | #ifndef EIGEN_RESHAPED_HELPER_H 12 | #define EIGEN_RESHAPED_HELPER_H 13 | 14 | #include "../InternalHeaderCheck.h" 15 | 16 | namespace Eigen { 17 | 18 | enum AutoSize_t { AutoSize }; 19 | const int AutoOrder = 2; 20 | 21 | namespace internal { 22 | 23 | template 24 | struct get_compiletime_reshape_size { 25 | enum { value = get_fixed_value::value }; 26 | }; 27 | 28 | template 29 | Index get_runtime_reshape_size(SizeType size, Index /*other*/, Index /*total*/) { 30 | return internal::get_runtime_value(size); 31 | } 32 | 33 | template 34 | struct get_compiletime_reshape_size { 35 | enum { 36 | other_size = get_fixed_value::value, 37 | value = (TotalSize==Dynamic || other_size==Dynamic) ? Dynamic : TotalSize / other_size }; 38 | }; 39 | 40 | inline Index get_runtime_reshape_size(AutoSize_t /*size*/, Index other, Index total) { 41 | return total/other; 42 | } 43 | 44 | constexpr inline int get_compiletime_reshape_order(int flags, int order) { 45 | return order == AutoOrder ? flags & RowMajorBit : order; 46 | } 47 | 48 | } 49 | 50 | } // end namespace Eigen 51 | 52 | #endif // EIGEN_RESHAPED_HELPER_H 53 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Eigenvalues/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_EIGENVALUES_MODULE_H 2 | #error "Please include Eigen/Eigenvalues instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Geometry/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_GEOMETRY_MODULE_H 2 | #error "Please include Eigen/Geometry instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Householder/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_HOUSEHOLDER_MODULE_H 2 | #error "Please include Eigen/Householder instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_ITERATIVELINEARSOLVERS_MODULE_H 2 | #error "Please include Eigen/IterativeLinearSolvers instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/Jacobi/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_JACOBI_MODULE_H 2 | #error "Please include Eigen/Jacobi instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/KLUSupport/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_KLUSUPPORT_MODULE_H 2 | #error "Please include Eigen/KLUSupport instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/LU/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_LU_MODULE_H 2 | #error "Please include Eigen/LU instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/MetisSupport/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_METISSUPPORT_MODULE_H 2 | #error "Please include Eigen/MetisSupport instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/OrderingMethods/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_ORDERINGMETHODS_MODULE_H 2 | #error "Please include Eigen/OrderingMethods instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/PaStiXSupport/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_PASTIXSUPPORT_MODULE_H 2 | #error "Please include Eigen/PaStiXSupport instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/PardisoSupport/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_PARDISOSUPPORT_MODULE_H 2 | #error "Please include Eigen/PardisoSupport instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/QR/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_QR_MODULE_H 2 | #error "Please include Eigen/QR instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/SPQRSupport/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_SPQRSUPPORT_MODULE_H 2 | #error "Please include Eigen/SPQRSupport instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/SVD/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_SVD_MODULE_H 2 | #error "Please include Eigen/SVD instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/SparseCholesky/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_SPARSECHOLESKY_MODULE_H 2 | #error "Please include Eigen/SparseCholesky instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/SparseCore/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_SPARSECORE_MODULE_H 2 | #error "Please include Eigen/SparseCore instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/SparseCore/SparseFuzzy.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2008-2014 Gael Guennebaud 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | #ifndef EIGEN_SPARSE_FUZZY_H 11 | #define EIGEN_SPARSE_FUZZY_H 12 | 13 | #include "./InternalHeaderCheck.h" 14 | 15 | namespace Eigen { 16 | 17 | template 18 | template 19 | bool SparseMatrixBase::isApprox(const SparseMatrixBase& other, const RealScalar &prec) const 20 | { 21 | const typename internal::nested_eval::type actualA(derived()); 22 | std::conditional_t::type, 24 | const PlainObject> actualB(other.derived()); 25 | 26 | return (actualA - actualB).squaredNorm() <= prec * prec * numext::mini(actualA.squaredNorm(), actualB.squaredNorm()); 27 | } 28 | 29 | } // end namespace Eigen 30 | 31 | #endif // EIGEN_SPARSE_FUZZY_H 32 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/SparseCore/SparseRedux.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2008-2014 Gael Guennebaud 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | #ifndef EIGEN_SPARSEREDUX_H 11 | #define EIGEN_SPARSEREDUX_H 12 | 13 | #include "./InternalHeaderCheck.h" 14 | 15 | namespace Eigen { 16 | 17 | template 18 | typename internal::traits::Scalar 19 | SparseMatrixBase::sum() const 20 | { 21 | eigen_assert(rows()>0 && cols()>0 && "you are using a non initialized matrix"); 22 | Scalar res(0); 23 | internal::evaluator thisEval(derived()); 24 | for (Index j=0; j::InnerIterator iter(thisEval,j); iter; ++iter) 26 | res += iter.value(); 27 | return res; 28 | } 29 | 30 | template 31 | typename internal::traits >::Scalar 32 | SparseMatrix::sum() const 33 | { 34 | eigen_assert(rows()>0 && cols()>0 && "you are using a non initialized matrix"); 35 | if(this->isCompressed()) 36 | return Matrix::Map(m_data.valuePtr(), m_data.size()).sum(); 37 | else 38 | return Base::sum(); 39 | } 40 | 41 | template 42 | typename internal::traits >::Scalar 43 | SparseVector::sum() const 44 | { 45 | eigen_assert(rows()>0 && cols()>0 && "you are using a non initialized matrix"); 46 | return Matrix::Map(m_data.valuePtr(), m_data.size()).sum(); 47 | } 48 | 49 | } // end namespace Eigen 50 | 51 | #endif // EIGEN_SPARSEREDUX_H 52 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/SparseLU/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_SPARSELU_MODULE_H 2 | #error "Please include Eigen/SparseLU instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/SparseLU/SparseLU_Utils.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2012 Désiré Nuentsa-Wakam 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | 11 | #ifndef EIGEN_SPARSELU_UTILS_H 12 | #define EIGEN_SPARSELU_UTILS_H 13 | 14 | #include "./InternalHeaderCheck.h" 15 | 16 | namespace Eigen { 17 | namespace internal { 18 | 19 | /** 20 | * \brief Count Nonzero elements in the factors 21 | */ 22 | template 23 | void SparseLUImpl::countnz(const Index n, Index& nnzL, Index& nnzU, GlobalLU_t& glu) 24 | { 25 | nnzL = 0; 26 | nnzU = (glu.xusub)(n); 27 | Index nsuper = (glu.supno)(n); 28 | Index jlen; 29 | Index i, j, fsupc; 30 | if (n <= 0 ) return; 31 | // For each supernode 32 | for (i = 0; i <= nsuper; i++) 33 | { 34 | fsupc = glu.xsup(i); 35 | jlen = glu.xlsub(fsupc+1) - glu.xlsub(fsupc); 36 | 37 | for (j = fsupc; j < glu.xsup(i+1); j++) 38 | { 39 | nnzL += jlen; 40 | nnzU += j - fsupc + 1; 41 | jlen--; 42 | } 43 | } 44 | } 45 | 46 | /** 47 | * \brief Fix up the data storage lsub for L-subscripts. 48 | * 49 | * It removes the subscripts sets for structural pruning, 50 | * and applies permutation to the remaining subscripts 51 | * 52 | */ 53 | template 54 | void SparseLUImpl::fixupL(const Index n, const IndexVector& perm_r, GlobalLU_t& glu) 55 | { 56 | Index fsupc, i, j, k, jstart; 57 | 58 | StorageIndex nextl = 0; 59 | Index nsuper = (glu.supno)(n); 60 | 61 | // For each supernode 62 | for (i = 0; i <= nsuper; i++) 63 | { 64 | fsupc = glu.xsup(i); 65 | jstart = glu.xlsub(fsupc); 66 | glu.xlsub(fsupc) = nextl; 67 | for (j = jstart; j < glu.xlsub(fsupc + 1); j++) 68 | { 69 | glu.lsub(nextl) = perm_r(glu.lsub(j)); // Now indexed into P*A 70 | nextl++; 71 | } 72 | for (k = fsupc+1; k < glu.xsup(i+1); k++) 73 | glu.xlsub(k) = nextl; // other columns in supernode i 74 | } 75 | 76 | glu.xlsub(n) = nextl; 77 | } 78 | 79 | } // end namespace internal 80 | 81 | } // end namespace Eigen 82 | #endif // EIGEN_SPARSELU_UTILS_H 83 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/SparseQR/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_SPARSEQR_MODULE_H 2 | #error "Please include Eigen/SparseQR instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/StlSupport/StdDeque.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Gael Guennebaud 5 | // Copyright (C) 2009 Hauke Heibel 6 | // 7 | // This Source Code Form is subject to the terms of the Mozilla 8 | // Public License v. 2.0. If a copy of the MPL was not distributed 9 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 10 | 11 | #ifndef EIGEN_STDDEQUE_H 12 | #define EIGEN_STDDEQUE_H 13 | 14 | #ifndef EIGEN_STDDEQUE_MODULE_H 15 | #error "Please include Eigen/StdDeque instead of including this file directly." 16 | #endif 17 | 18 | #include "details.h" 19 | 20 | /** 21 | * This section contains a convenience MACRO which allows an easy specialization of 22 | * std::deque such that for data types with alignment issues the correct allocator 23 | * is used automatically. 24 | */ 25 | #define EIGEN_DEFINE_STL_DEQUE_SPECIALIZATION(...) \ 26 | namespace std \ 27 | { \ 28 | template<> \ 29 | class deque<__VA_ARGS__, std::allocator<__VA_ARGS__> > \ 30 | : public deque<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > \ 31 | { \ 32 | typedef deque<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > deque_base; \ 33 | public: \ 34 | typedef __VA_ARGS__ value_type; \ 35 | typedef deque_base::allocator_type allocator_type; \ 36 | typedef deque_base::size_type size_type; \ 37 | typedef deque_base::iterator iterator; \ 38 | explicit deque(const allocator_type& a = allocator_type()) : deque_base(a) {} \ 39 | template \ 40 | deque(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) : deque_base(first, last, a) {} \ 41 | deque(const deque& c) : deque_base(c) {} \ 42 | explicit deque(size_type num, const value_type& val = value_type()) : deque_base(num, val) {} \ 43 | deque(iterator start_, iterator end_) : deque_base(start_, end_) {} \ 44 | deque& operator=(const deque& x) { \ 45 | deque_base::operator=(x); \ 46 | return *this; \ 47 | } \ 48 | }; \ 49 | } 50 | 51 | #endif // EIGEN_STDDEQUE_H 52 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/StlSupport/StdList.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Hauke Heibel 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | #ifndef EIGEN_STDLIST_H 11 | #define EIGEN_STDLIST_H 12 | 13 | #ifndef EIGEN_STDLIST_MODULE_H 14 | #error "Please include Eigen/StdList instead of including this file directly." 15 | #endif 16 | 17 | #include "details.h" 18 | 19 | /** 20 | * This section contains a convenience MACRO which allows an easy specialization of 21 | * std::list such that for data types with alignment issues the correct allocator 22 | * is used automatically. 23 | */ 24 | #define EIGEN_DEFINE_STL_LIST_SPECIALIZATION(...) \ 25 | namespace std \ 26 | { \ 27 | template<> \ 28 | class list<__VA_ARGS__, std::allocator<__VA_ARGS__> > \ 29 | : public list<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > \ 30 | { \ 31 | typedef list<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > list_base; \ 32 | public: \ 33 | typedef __VA_ARGS__ value_type; \ 34 | typedef list_base::allocator_type allocator_type; \ 35 | typedef list_base::size_type size_type; \ 36 | typedef list_base::iterator iterator; \ 37 | explicit list(const allocator_type& a = allocator_type()) : list_base(a) {} \ 38 | template \ 39 | list(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) : list_base(first, last, a) {} \ 40 | list(const list& c) : list_base(c) {} \ 41 | explicit list(size_type num, const value_type& val = value_type()) : list_base(num, val) {} \ 42 | list(iterator start_, iterator end_) : list_base(start_, end_) {} \ 43 | list& operator=(const list& x) { \ 44 | list_base::operator=(x); \ 45 | return *this; \ 46 | } \ 47 | }; \ 48 | } 49 | 50 | #endif // EIGEN_STDLIST_H 51 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/StlSupport/StdVector.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Gael Guennebaud 5 | // Copyright (C) 2009 Hauke Heibel 6 | // 7 | // This Source Code Form is subject to the terms of the Mozilla 8 | // Public License v. 2.0. If a copy of the MPL was not distributed 9 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 10 | 11 | #ifndef EIGEN_STDVECTOR_H 12 | #define EIGEN_STDVECTOR_H 13 | 14 | #ifndef EIGEN_STDVECTOR_MODULE_H 15 | #error "Please include Eigen/StdVector instead of including this file directly." 16 | #endif 17 | 18 | #include "details.h" 19 | 20 | /** 21 | * This section contains a convenience MACRO which allows an easy specialization of 22 | * std::vector such that for data types with alignment issues the correct allocator 23 | * is used automatically. 24 | */ 25 | #define EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(...) \ 26 | namespace std \ 27 | { \ 28 | template<> \ 29 | class vector<__VA_ARGS__, std::allocator<__VA_ARGS__> > \ 30 | : public vector<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > \ 31 | { \ 32 | typedef vector<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > vector_base; \ 33 | public: \ 34 | typedef __VA_ARGS__ value_type; \ 35 | typedef vector_base::allocator_type allocator_type; \ 36 | typedef vector_base::size_type size_type; \ 37 | typedef vector_base::iterator iterator; \ 38 | explicit vector(const allocator_type& a = allocator_type()) : vector_base(a) {} \ 39 | template \ 40 | vector(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) : vector_base(first, last, a) {} \ 41 | vector(const vector& c) : vector_base(c) {} \ 42 | explicit vector(size_type num, const value_type& val = value_type()) : vector_base(num, val) {} \ 43 | vector(iterator start_, iterator end_) : vector_base(start_, end_) {} \ 44 | vector& operator=(const vector& x) { \ 45 | vector_base::operator=(x); \ 46 | return *this; \ 47 | } \ 48 | }; \ 49 | } 50 | 51 | #endif // EIGEN_STDVECTOR_H 52 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/StlSupport/details.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Gael Guennebaud 5 | // Copyright (C) 2009 Hauke Heibel 6 | // 7 | // This Source Code Form is subject to the terms of the Mozilla 8 | // Public License v. 2.0. If a copy of the MPL was not distributed 9 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 10 | 11 | #ifndef EIGEN_STL_DETAILS_H 12 | #define EIGEN_STL_DETAILS_H 13 | 14 | #ifndef EIGEN_ALIGNED_ALLOCATOR 15 | #define EIGEN_ALIGNED_ALLOCATOR Eigen::aligned_allocator 16 | #endif 17 | 18 | namespace Eigen { 19 | 20 | // This one is needed to prevent reimplementing the whole std::vector. 21 | template 22 | class aligned_allocator_indirection : public EIGEN_ALIGNED_ALLOCATOR 23 | { 24 | public: 25 | typedef std::size_t size_type; 26 | typedef std::ptrdiff_t difference_type; 27 | typedef T* pointer; 28 | typedef const T* const_pointer; 29 | typedef T& reference; 30 | typedef const T& const_reference; 31 | typedef T value_type; 32 | 33 | template 34 | struct rebind 35 | { 36 | typedef aligned_allocator_indirection other; 37 | }; 38 | 39 | aligned_allocator_indirection() {} 40 | aligned_allocator_indirection(const aligned_allocator_indirection& ) : EIGEN_ALIGNED_ALLOCATOR() {} 41 | aligned_allocator_indirection(const EIGEN_ALIGNED_ALLOCATOR& ) {} 42 | template 43 | aligned_allocator_indirection(const aligned_allocator_indirection& ) {} 44 | template 45 | aligned_allocator_indirection(const EIGEN_ALIGNED_ALLOCATOR& ) {} 46 | ~aligned_allocator_indirection() {} 47 | }; 48 | 49 | #if EIGEN_COMP_MSVC 50 | 51 | // sometimes, MSVC detects, at compile time, that the argument x 52 | // in std::vector::resize(size_t s,T x) won't be aligned and generate an error 53 | // even if this function is never called. Whence this little wrapper. 54 | #define EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T) \ 55 | std::conditional_t::value, T, Eigen::internal::workaround_msvc_stl_support > 56 | 57 | namespace internal { 58 | template struct workaround_msvc_stl_support : public T 59 | { 60 | inline workaround_msvc_stl_support() : T() {} 61 | inline workaround_msvc_stl_support(const T& other) : T(other) {} 62 | inline operator T& () { return *static_cast(this); } 63 | inline operator const T& () const { return *static_cast(this); } 64 | template 65 | inline T& operator=(const OtherT& other) 66 | { T::operator=(other); return *this; } 67 | inline workaround_msvc_stl_support& operator=(const workaround_msvc_stl_support& other) 68 | { T::operator=(other); return *this; } 69 | }; 70 | } 71 | 72 | #else 73 | 74 | #define EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T) T 75 | 76 | #endif 77 | 78 | } 79 | 80 | #endif // EIGEN_STL_DETAILS_H 81 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/SuperLUSupport/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_SUPERLUSUPPORT_MODULE_H 2 | #error "Please include Eigen/SuperLUSupport instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/UmfPackSupport/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_UMFPACKSUPPORT_MODULE_H 2 | #error "Please include Eigen/UmfPackSupport instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/misc/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_CORE_MODULE_H 2 | #error "Please include Eigen/Core instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/misc/Kernel.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Benoit Jacob 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9 | 10 | #ifndef EIGEN_MISC_KERNEL_H 11 | #define EIGEN_MISC_KERNEL_H 12 | 13 | #include "./InternalHeaderCheck.h" 14 | 15 | namespace Eigen { 16 | 17 | namespace internal { 18 | 19 | /** \class kernel_retval_base 20 | * 21 | */ 22 | template 23 | struct traits > 24 | { 25 | typedef typename DecompositionType::MatrixType MatrixType; 26 | typedef Matrix< 27 | typename MatrixType::Scalar, 28 | MatrixType::ColsAtCompileTime, // the number of rows in the "kernel matrix" 29 | // is the number of cols of the original matrix 30 | // so that the product "matrix * kernel = zero" makes sense 31 | Dynamic, // we don't know at compile-time the dimension of the kernel 32 | MatrixType::Options, 33 | MatrixType::MaxColsAtCompileTime, // see explanation for 2nd template parameter 34 | MatrixType::MaxColsAtCompileTime // the kernel is a subspace of the domain space, 35 | // whose dimension is the number of columns of the original matrix 36 | > ReturnType; 37 | }; 38 | 39 | template struct kernel_retval_base 40 | : public ReturnByValue > 41 | { 42 | typedef DecompositionType_ DecompositionType; 43 | typedef ReturnByValue Base; 44 | 45 | explicit kernel_retval_base(const DecompositionType& dec) 46 | : m_dec(dec), 47 | m_rank(dec.rank()), 48 | m_cols(m_rank==dec.cols() ? 1 : dec.cols() - m_rank) 49 | {} 50 | 51 | inline Index rows() const { return m_dec.cols(); } 52 | inline Index cols() const { return m_cols; } 53 | inline Index rank() const { return m_rank; } 54 | inline const DecompositionType& dec() const { return m_dec; } 55 | 56 | template inline void evalTo(Dest& dst) const 57 | { 58 | static_cast*>(this)->evalTo(dst); 59 | } 60 | 61 | protected: 62 | const DecompositionType& m_dec; 63 | Index m_rank, m_cols; 64 | }; 65 | 66 | } // end namespace internal 67 | 68 | #define EIGEN_MAKE_KERNEL_HELPERS(DecompositionType) \ 69 | typedef typename DecompositionType::MatrixType MatrixType; \ 70 | typedef typename MatrixType::Scalar Scalar; \ 71 | typedef typename MatrixType::RealScalar RealScalar; \ 72 | typedef Eigen::internal::kernel_retval_base Base; \ 73 | using Base::dec; \ 74 | using Base::rank; \ 75 | using Base::rows; \ 76 | using Base::cols; \ 77 | kernel_retval(const DecompositionType& dec) : Base(dec) {} 78 | 79 | } // end namespace Eigen 80 | 81 | #endif // EIGEN_MISC_KERNEL_H 82 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/misc/RealSvd2x2.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009-2010 Benoit Jacob 5 | // Copyright (C) 2013-2016 Gael Guennebaud 6 | // 7 | // This Source Code Form is subject to the terms of the Mozilla 8 | // Public License v. 2.0. If a copy of the MPL was not distributed 9 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 10 | 11 | #ifndef EIGEN_REALSVD2X2_H 12 | #define EIGEN_REALSVD2X2_H 13 | 14 | #include "./InternalHeaderCheck.h" 15 | 16 | namespace Eigen { 17 | 18 | namespace internal { 19 | 20 | template 21 | void real_2x2_jacobi_svd(const MatrixType& matrix, Index p, Index q, 22 | JacobiRotation *j_left, 23 | JacobiRotation *j_right) 24 | { 25 | using std::sqrt; 26 | using std::abs; 27 | Matrix m; 28 | m << numext::real(matrix.coeff(p,p)), numext::real(matrix.coeff(p,q)), 29 | numext::real(matrix.coeff(q,p)), numext::real(matrix.coeff(q,q)); 30 | JacobiRotation rot1; 31 | RealScalar t = m.coeff(0,0) + m.coeff(1,1); 32 | RealScalar d = m.coeff(1,0) - m.coeff(0,1); 33 | 34 | if(abs(d) < (std::numeric_limits::min)()) 35 | { 36 | rot1.s() = RealScalar(0); 37 | rot1.c() = RealScalar(1); 38 | } 39 | else 40 | { 41 | // If d!=0, then t/d cannot overflow because the magnitude of the 42 | // entries forming d are not too small compared to the ones forming t. 43 | RealScalar u = t / d; 44 | RealScalar tmp = sqrt(RealScalar(1) + numext::abs2(u)); 45 | rot1.s() = RealScalar(1) / tmp; 46 | rot1.c() = u / tmp; 47 | } 48 | m.applyOnTheLeft(0,1,rot1); 49 | j_right->makeJacobi(m,0,1); 50 | *j_left = rot1 * j_right->transpose(); 51 | } 52 | 53 | } // end namespace internal 54 | 55 | } // end namespace Eigen 56 | 57 | #endif // EIGEN_REALSVD2X2_H 58 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/misc/lapacke_mangling.h: -------------------------------------------------------------------------------- 1 | #ifndef LAPACK_HEADER_INCLUDED 2 | #define LAPACK_HEADER_INCLUDED 3 | 4 | #ifndef LAPACK_GLOBAL 5 | #if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) 6 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 7 | #elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) 8 | #define LAPACK_GLOBAL(lcname,UCNAME) UCNAME 9 | #elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE) 10 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname 11 | #else 12 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 13 | #endif 14 | #endif 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/Eigen/src/plugins/InternalHeaderCheck.h: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_CORE_MODULE_H 2 | #error "Please include Eigen/plugins instead of including headers inside the src directory directly." 3 | #endif 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-aax.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-app.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | WindowsLocalDebugger 5 | 6 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-iOS.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.application-groups 6 | 7 | group.io.github.iplug2 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-iOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-iOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-iOS.xcodeproj/xcshareddata/xcschemes/iOS-AUv3Framework.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 45 | 46 | 52 | 53 | 54 | 55 | 61 | 62 | 68 | 69 | 70 | 71 | 73 | 74 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-macOS.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.application-groups 8 | 9 | group.io.github.iplug2 10 | 11 | com.apple.security.assets.music.read-write 12 | 13 | com.apple.security.device.microphone 14 | 15 | com.apple.security.files.user-selected.read-write 16 | 17 | com.apple.security.network.client 18 | 19 | com.apple.security.network.server 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-macOS.xcodeproj/xcshareddata/xcschemes/All macOS.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 45 | 46 | 52 | 53 | 54 | 55 | 61 | 62 | 64 | 65 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-macOS.xcodeproj/xcshareddata/xcschemes/VST3 Controller Library.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 45 | 46 | 52 | 53 | 54 | 55 | 61 | 62 | 68 | 69 | 70 | 71 | 73 | 74 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-macOS.xcodeproj/xcshareddata/xcschemes/macOS-AAX.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 45 | 49 | 50 | 51 | 57 | 58 | 59 | 60 | 66 | 69 | 70 | 71 | 73 | 74 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-macOS.xcodeproj/xcshareddata/xcschemes/macOS-AUv2.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 45 | 49 | 50 | 51 | 57 | 58 | 59 | 60 | 66 | 69 | 70 | 71 | 73 | 74 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-vst2.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(VST2_32_HOST_PATH) 5 | $(VST2_32_COMMAND_ARGS) 6 | WindowsLocalDebugger 7 | 8 | 9 | $(VST2_32_HOST_PATH) 10 | WindowsLocalDebugger 11 | $(VST2_32_COMMAND_ARGS) 12 | 13 | 14 | $(VST2_32_HOST_PATH) 15 | WindowsLocalDebugger 16 | $(VST2_32_COMMAND_ARGS) 17 | 18 | 19 | $(VST2_64_HOST_PATH) 20 | $(VST2_64_COMMAND_ARGS) 21 | WindowsLocalDebugger 22 | 23 | 24 | $(VST2_64_HOST_PATH) 25 | WindowsLocalDebugger 26 | $(VST2_64_COMMAND_ARGS) 27 | 28 | 29 | $(VST2_64_HOST_PATH) 30 | WindowsLocalDebugger 31 | $(VST2_64_COMMAND_ARGS) 32 | 33 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-vst3.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(VST3_32_HOST_PATH) 5 | $(VST3_32_COMMAND_ARGS) 6 | WindowsLocalDebugger 7 | 8 | 9 | $(VST3_32_HOST_PATH) 10 | WindowsLocalDebugger 11 | $(VST3_32_COMMAND_ARGS) 12 | 13 | 14 | $(VST3_32_HOST_PATH) 15 | WindowsLocalDebugger 16 | $(VST3_32_COMMAND_ARGS) 17 | 18 | 19 | $(VST3_64_HOST_PATH) 20 | $(VST3_64_COMMAND_ARGS) 21 | WindowsLocalDebugger 22 | 23 | 24 | $(VST3_64_HOST_PATH) 25 | WindowsLocalDebugger 26 | $(VST3_64_COMMAND_ARGS) 27 | 28 | 29 | $(VST3_64_HOST_PATH) 30 | WindowsLocalDebugger 31 | $(VST3_64_COMMAND_ARGS) 32 | 33 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-wam-controller.mk: -------------------------------------------------------------------------------- 1 | include ../config/NNComp-web.mk 2 | 3 | TARGET = ../build-web/scripts/NNComp-web.js 4 | 5 | SRC += $(WEB_SRC) 6 | CFLAGS += $(WEB_CFLAGS) 7 | CFLAGS += $(EXTRA_CFLAGS) 8 | LDFLAGS += $(WEB_LDFLAGS) \ 9 | -s EXPORTED_FUNCTIONS=$(WEB_EXPORTS) 10 | 11 | $(TARGET): $(OBJECTS) 12 | $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(SRC) 13 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/NNComp-wam-processor.mk: -------------------------------------------------------------------------------- 1 | include ../config/NNComp-web.mk 2 | 3 | TARGET = ../build-web/scripts/NNComp-wam.js 4 | 5 | SRC += $(WAM_SRC) 6 | CFLAGS += $(WAM_CFLAGS) 7 | CFLAGS += $(EXTRA_CFLAGS) 8 | LDFLAGS += $(WAM_LDFLAGS) \ 9 | -s EXPORTED_FUNCTIONS=$(WAM_EXPORTS) 10 | 11 | $(TARGET): $(OBJECTS) 12 | $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(SRC) 13 | -------------------------------------------------------------------------------- /Plugin/NNComp/projects/rnn-2-4.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Autogenerated header file for rnn-2-4 3 | * neural network model parameters. 4 | * 5 | * Created on: 03/10/2022 at: 10:19 6 | * By Michael Holmes 7 | */ 8 | 9 | #pragma once 10 | #include "layers.h" 11 | 12 | template 13 | class Rnn_2_4 14 | { 15 | public: 16 | const static int h = 2; 17 | const static int d = 1; 18 | const static int layers = 4; 19 | 20 | FccLayer f; 21 | RnnLayer l0; 22 | RnnLayer l1; 23 | RnnLayer l2; 24 | RnnLayer l3; 25 | 26 | Rnn_2_4() { 27 | l0.Wih << -2.729341 ,-2.0342002; 28 | 29 | l0.Whh << 0.17036283, 0.22163755,-0.6127797 ,-0.92778975; 30 | 31 | l0.bih << -0.2096899, 0.4739973; 32 | 33 | l0.bhh << -0.09538452,-0.69105047; 34 | 35 | l0.htn1 << 0.,0.; 36 | 37 | l1.Wih << -0.17657861,-1.5796613 , 1.8669199 , 5.1016483 ; 38 | 39 | l1.Whh << 0.17998615,-0.8947482 , 0.16628672,-0.11702587; 40 | 41 | l1.bih << 0.08207554,0.39094877; 42 | 43 | l1.bhh << 0.00801696,0.41186023; 44 | 45 | l1.htn1 << 0.,0.; 46 | 47 | l2.Wih << -0.10098406,-0.5625597 , 1.195943 ,-0.76536983; 48 | 49 | l2.Whh << 0.5601913 ,-0.1288622 ,-1.5549568 ,-0.02015822; 50 | 51 | l2.bih << -0.01715576, 0.47096157; 52 | 53 | l2.bhh << 0.0897334 ,-0.49221122; 54 | 55 | l2.htn1 << 0.,0.; 56 | 57 | l3.Wih << 0.06845319,-0.11383019,-0.16757894, 0.31667355; 58 | 59 | l3.Whh << -0.02625313, 0.49640965, 0.1726651 , 0.15925215; 60 | 61 | l3.bih << 0.24028167,0.39340463; 62 | 63 | l3.bhh << 0.00806533,-0.13443708; 64 | 65 | l3.htn1 << 0.,0.; 66 | 67 | f.A << 0.5618275 ,0.45957944; 68 | f.b << -0.3761936; 69 | } 70 | 71 | void apply_model(T* x, T* y) { 72 | l0.apply_layer(*x); 73 | l1.apply_layer(l0.ht); 74 | l2.apply_layer(l1.ht); 75 | l3.apply_layer(l2.ht); 76 | *y=f.apply_layer(l3.ht); 77 | } 78 | }; -------------------------------------------------------------------------------- /Plugin/NNComp/projects/rnn-4-2.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Autogenerated header file for rnn-4-2 3 | * neural network model parameters. 4 | * 5 | * Created on: 03/10/2022 at: 10:19 6 | * By Michael Holmes 7 | */ 8 | 9 | #pragma once 10 | #include "layers.h" 11 | 12 | template 13 | class Rnn_4_2 14 | { 15 | public: 16 | const static int h = 4; 17 | const static int d = 1; 18 | const static int layers = 2; 19 | 20 | FccLayer f; 21 | RnnLayer l0; 22 | RnnLayer l1; 23 | 24 | Rnn_4_2() { 25 | l0.Wih << -0.7641525,-2.170938 ,-3.3177743, 1.6444587; 26 | 27 | l0.Whh << 0.15292361,-0.42343518, 0.42897373,-0.04844489, 0.3896424 , 0.43099037, 0.8278761 ,-0.02794668,-0.74310386, 0.5688661 ,-0.7089677 ,-0.07437804, 1.2105962 , 0.6156074 , 1.2762611 ,-0.14833477; 28 | 29 | l0.bih << -0.06375539,-0.09946165, 0.00039329, 0.15916412; 30 | 31 | l0.bhh << 0.07518297, 0.14388879,-0.07234067,-0.06315058; 32 | 33 | l0.htn1 << 0.,0.,0.,0.; 34 | 35 | l1.Wih << 0.20215914,-0.13239339,-1.0504835 , 0.58724517,-0.08805969,-0.41035822, 0.26139578, 0.09402591,-0.45126632, 0.23512302,-0.10377465, 0.0272059 , 0.49106863, 0.5424334 , 0.37444782, 0.47922778; 36 | 37 | l1.Whh << 0.81809086, 0.17532243,-0.27424708, 0.51467806, 0.07009848, 0.44989705, 0.05719742,-0.16287218,-0.15242687,-0.01511888, 0.15565023,-0.1492239 , -0.4972751 ,-0.34240258,-0.01299326,-0.02044555; 38 | 39 | l1.bih << 0.22883806, 0.68488115,-0.11670925,-0.04507213; 40 | 41 | l1.bhh << -0.3452019 , 0.51348436, 0.3855292 , 0.33463517; 42 | 43 | l1.htn1 << 0.,0.,0.,0.; 44 | 45 | f.A << 0.16077106, 0.21200751,-0.34766006, 0.05411138; 46 | f.b << -0.08815242; 47 | } 48 | 49 | void apply_model(T* x, T* y) { 50 | l0.apply_layer(*x); 51 | l1.apply_layer(l0.ht); 52 | *y=f.apply_layer(l1.ht); 53 | } 54 | }; -------------------------------------------------------------------------------- /Plugin/NNComp/projects/rnn-4-4.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Autogenerated header file for rnn-4-4 3 | * neural network model parameters. 4 | * 5 | * Created on: 03/10/2022 at: 10:19 6 | * By Michael Holmes 7 | */ 8 | 9 | #pragma once 10 | #include "layers.h" 11 | 12 | template 13 | class Rnn_4_4 14 | { 15 | public: 16 | const static int h = 4; 17 | const static int d = 1; 18 | const static int layers = 4; 19 | 20 | FccLayer f; 21 | RnnLayer l0; 22 | RnnLayer l1; 23 | RnnLayer l2; 24 | RnnLayer l3; 25 | 26 | Rnn_4_4() { 27 | l0.Wih << 0.9315215 ,-1.6558564 ,-0.10325249, 2.1970193 ; 28 | 29 | l0.Whh << 0.40967533,-0.08108214, 0.43656713,-0.8437126 , 0.05684733, 0.08927614, -0.35692787, 0.4219292 , 1.1438857 ,-0.24164957, 0.6760968 ,-0.02619013, -0.45267648, 0.72611123, 0.01351567,-0.13732894; 30 | 31 | l0.bih << 0.23939747,-0.3152251 ,-0.55183357, 0.3463919 ; 32 | 33 | l0.bhh << 0.23091818,-0.34642354,-0.6155484 ,-0.02685513; 34 | 35 | l0.htn1 << 0.,0.,0.,0.; 36 | 37 | l1.Wih << -1.5025789 , 0.7474239 ,-0.13501884,-2.3247974 , 0.1468175 , 0.04559393, 1.0627385 ,-1.3766254 , 0.537908 , 0.01588612, 0.0863247 , 1.0272297 , -0.21042347,-0.08692385,-0.48056236, 0.9376688 ; 38 | 39 | l1.Whh << -0.00302888,-0.32519868,-0.26956478, 0.21639448,-0.01423775, 0.28962362, -0.11506301, 0.04610545, 0.44346094, 0.38637948,-0.41679865,-0.12546231, 0.19608895,-0.431093 , 0.0521007 , 0.00682012; 40 | 41 | l1.bih << 0.35246614,-0.01507667,-0.1493856 ,-0.2463627 ; 42 | 43 | l1.bhh << 0.56012136,-0.5369595 , 0.2548565 ,-0.0157051 ; 44 | 45 | l1.htn1 << 0.,0.,0.,0.; 46 | 47 | l2.Wih << -0.39902014,-0.13581562, 0.18687965,-0.52348524, 0.39958546,-0.23347002, -0.29812694, 0.09433543, 0.67541444, 0.2828418 ,-0.8808627 ,-0.3135039 , -0.25789294,-0.51251286, 0.09062625,-0.17301221; 48 | 49 | l2.Whh << 3.6014390e-01, 3.1910786e-01,-2.0375332e-01, 2.1387710e-01, 3.3159617e-02,-3.0632126e-01, 3.1296693e-02,-3.7170917e-01, 1.7173584e-01, 3.4536690e-01, 3.6071262e-01,-1.4600658e-01, 2.3854713e-01, 4.5966521e-01, 4.3358738e-04, 1.3851538e-01; 50 | 51 | l2.bih << -0.08421056,-0.2790538 , 0.22017753, 0.31851572; 52 | 53 | l2.bhh << -0.3194949 ,-0.2563916 ,-0.22271849, 0.34143054; 54 | 55 | l2.htn1 << 0.,0.,0.,0.; 56 | 57 | l3.Wih << -0.26563346,-0.2830662 , 0.2488352 , 0.07055547, 0.4217168 , 0.257569 , -0.2102743 , 0.03718962, 0.09970601,-0.14482608,-0.04297564, 0.00321576, 0.21109217, 0.37506768, 0.02770434, 0.50471026; 58 | 59 | l3.Whh << -0.01496095, 0.27587798, 0.45723405,-0.3457543 ,-0.4205788 ,-0.28446257, -0.05706016, 0.36168197, 0.3057461 , 0.47623238, 0.10174152,-0.16392283, -0.30442083, 0.28893924,-0.1560029 ,-0.21844189; 60 | 61 | l3.bih << -0.52465886, 0.09827567,-0.11267006, 0.40877873; 62 | 63 | l3.bhh << 0.1551421 , 0.10238243,-0.19903839,-0.3894912 ; 64 | 65 | l3.htn1 << 0.,0.,0.,0.; 66 | 67 | f.A << 0.14003934,-0.4091425 ,-0.07050643,-0.4202682 ; 68 | f.b << 0.18697527; 69 | } 70 | 71 | void apply_model(T* x, T* y) { 72 | l0.apply_layer(*x); 73 | l1.apply_layer(l0.ht); 74 | l2.apply_layer(l1.ht); 75 | l3.apply_layer(l2.ht); 76 | *y=f.apply_layer(l3.ht); 77 | } 78 | }; -------------------------------------------------------------------------------- /Plugin/NNComp/projects/rnn-8-1.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Autogenerated header file for rnn-8-1 3 | * neural network model parameters. 4 | * 5 | * Created on: 03/10/2022 at: 10:19 6 | * By Michael Holmes 7 | */ 8 | 9 | #pragma once 10 | #include "layers.h" 11 | 12 | template 13 | class Rnn_8_1 14 | { 15 | public: 16 | const static int h = 8; 17 | const static int d = 1; 18 | const static int layers = 1; 19 | 20 | FccLayer f; 21 | RnnLayer l0; 22 | 23 | Rnn_8_1() { 24 | l0.Wih << -1.0104719 ,-1.2445518 ,-0.14760897,-1.7846098 ,-1.1380048 , 1.726847 , 0.17627457, 0.04696293; 25 | 26 | l0.Whh << 0.35848308,-0.06729728,-0.32881945, 0.04960677,-0.20325142,-0.0417577 , 0.4774429 ,-0.28927884, 0.36997646,-0.09991776, 0.6495694 , 0.00634439, -0.09730758, 0.0700631 ,-0.31398088, 0.57314783, 0.04449876, 0.2211951 , 0.8885421 ,-0.10325389,-0.02835545, 0.1369639 ,-0.19644623, 0.11457521, 0.3352639 ,-0.41323847,-0.04167278,-0.0539661 , 0.16595034,-0.23440833, -0.11069407, 0.141781 , 0.25822464,-0.39805785,-0.14323637,-0.08167489, 0.22301011,-0.22381276, 0.09438097,-0.5147528 , 0.08744797,-0.2772196 , -0.24120697, 0.3164663 ,-0.08886573, 0.06086904, 0.25300816,-0.25632155, -0.18665552,-0.10936162,-0.20404786, 0.14685282, 0.0706276 , 0.17052639, 0.12713106,-0.13517004, 0.10319311, 0.47038656, 0.20518449,-0.32775074, -0.21297574, 0.0463723 ,-0.4020116 ,-0.00284344; 27 | 28 | l0.bih << -0.21002235,-0.06572902, 0.19230777,-0.04835439, 0.059521 ,-0.27936655, -0.30450985,-0.13640101; 29 | 30 | l0.bhh << -0.08784267,-0.36084813, 0.10081744,-0.2005233 , 0.2746383 ,-0.09998523, 0.21096951, 0.19763641; 31 | 32 | l0.htn1 << 0.,0.,0.,0.,0.,0.,0.,0.; 33 | 34 | f.A << -0.25176963, 0.33883563,-0.20167461,-0.47240692, 0.4982961 , 0.3684467 , -0.3129835 , 0.1150392 ; 35 | f.b << -0.05823666; 36 | } 37 | 38 | void apply_model(T* x, T* y) { 39 | l0.apply_layer(*x); 40 | *y=f.apply_layer(l0.ht); 41 | } 42 | }; -------------------------------------------------------------------------------- /Plugin/NNComp/resources/AUv3Framework.h: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #if TARGET_OS_IOS == 1 4 | #import 5 | #else 6 | #import 7 | #endif 8 | 9 | //! Project version number for AUv3Framework. 10 | FOUNDATION_EXPORT double AUv3FrameworkVersionNumber; 11 | 12 | //! Project version string for AUv3Framework. 13 | FOUNDATION_EXPORT const unsigned char AUv3FrameworkVersionString[]; 14 | 15 | @class IPlugAUViewController_vNNComp; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/IPlugAUViewController_vNNComp.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "icon_20pt@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "icon_20pt@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "icon_29pt@2x.png", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "icon_29pt@3x.png", 25 | "scale" : "3x" 26 | }, 27 | { 28 | "size" : "40x40", 29 | "idiom" : "iphone", 30 | "filename" : "icon_40pt@2x.png", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "icon_40pt@3x.png", 37 | "scale" : "3x" 38 | }, 39 | { 40 | "size" : "60x60", 41 | "idiom" : "iphone", 42 | "filename" : "icon_60pt@2x.png", 43 | "scale" : "2x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "icon_60pt@3x.png", 49 | "scale" : "3x" 50 | }, 51 | { 52 | "size" : "20x20", 53 | "idiom" : "ipad", 54 | "filename" : "icon_20pt.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "icon_20pt@2x.png", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "size" : "29x29", 65 | "idiom" : "ipad", 66 | "filename" : "icon_29pt.png", 67 | "scale" : "1x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "icon_29pt@2x.png", 73 | "scale" : "2x" 74 | }, 75 | { 76 | "size" : "40x40", 77 | "idiom" : "ipad", 78 | "filename" : "icon_40pt.png", 79 | "scale" : "1x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "icon_40pt@2x.png", 85 | "scale" : "2x" 86 | }, 87 | { 88 | "size" : "76x76", 89 | "idiom" : "ipad", 90 | "filename" : "icon_76pt.png", 91 | "scale" : "1x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "icon_76pt@2x.png", 97 | "scale" : "2x" 98 | }, 99 | { 100 | "size" : "83.5x83.5", 101 | "idiom" : "ipad", 102 | "filename" : "icon_83.5@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "1024x1024", 107 | "idiom" : "ios-marketing", 108 | "filename" : "Icon.png", 109 | "scale" : "1x" 110 | } 111 | ], 112 | "info" : { 113 | "version" : 1, 114 | "author" : "xcode" 115 | } 116 | } -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/Icon.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_20pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_20pt.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_20pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_20pt@2x.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_20pt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_20pt@3x.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_29pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_29pt.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_29pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_29pt@2x.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_29pt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_29pt@3x.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_40pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_40pt.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_40pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_40pt@2x.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_40pt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_40pt@3x.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_60pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_60pt@2x.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_60pt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_60pt@3x.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_76pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_76pt.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_76pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_76pt@2x.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/Images.xcassets/NNCompiOSAppIcon.appiconset/icon_83.5@2x.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp-AAX-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | NNComp 9 | CFBundleGetInfoString 10 | NNComp v1.0.0 Copyright 2023 Michael Holmes 11 | CFBundleIdentifier 12 | com.michaelholmes.aax.NNComp 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | NNComp 17 | CFBundlePackageType 18 | TDMw 19 | CFBundleShortVersionString 20 | 1.0.0 21 | CFBundleSignature 22 | PTul 23 | CFBundleVersion 24 | 1.0.0 25 | CSResourcesFileMapped 26 | 27 | LSMinimumSystemVersion 28 | 10.11.0 29 | LSMultipleInstancesProhibited 30 | true 31 | LSPrefersCarbon 32 | 33 | NSAppleScriptEnabled 34 | No 35 | 36 | 37 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp-AU-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AudioComponents 6 | 7 | 8 | description 9 | NNComp 10 | factoryFunction 11 | NNComp_Factory 12 | manufacturer 13 | Acme 14 | name 15 | michaelholmes: NNComp 16 | sandboxSafe 17 | 18 | subtype 19 | dgq4 20 | type 21 | aufx 22 | version 23 | 65536 24 | 25 | 26 | AudioUnit Version 27 | 0x00010000 28 | CFBundleDevelopmentRegion 29 | English 30 | CFBundleExecutable 31 | NNComp 32 | CFBundleGetInfoString 33 | NNComp v1.0.0 Copyright 2023 Michael Holmes 34 | CFBundleIdentifier 35 | com.michaelholmes.audiounit.NNComp 36 | CFBundleInfoDictionaryVersion 37 | 6.0 38 | CFBundleName 39 | NNComp 40 | CFBundlePackageType 41 | BNDL 42 | CFBundleShortVersionString 43 | 1.0.0 44 | CFBundleSignature 45 | dgq4 46 | CFBundleVersion 47 | 1.0.0 48 | CSResourcesFileMapped 49 | 50 | LSMinimumSystemVersion 51 | 10.11.0 52 | NSPrincipalClass 53 | NNComp_View 54 | 55 | 56 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp-VST2-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | NNComp 9 | CFBundleGetInfoString 10 | NNComp v1.0.0 Copyright 2023 Michael Holmes 11 | CFBundleIdentifier 12 | com.michaelholmes.vst.NNComp 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | NNComp 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 1.0.0 21 | CFBundleSignature 22 | dgq4 23 | CFBundleVersion 24 | 1.0.0 25 | CSResourcesFileMapped 26 | 27 | LSMinimumSystemVersion 28 | 10.11.0 29 | 30 | 31 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp-VST3-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | NNComp 9 | CFBundleGetInfoString 10 | NNComp v1.0.0 Copyright 2023 Michael Holmes 11 | CFBundleIdentifier 12 | com.michaelholmes.vst3.NNComp 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | NNComp 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 1.0.0 21 | CFBundleSignature 22 | dgq4 23 | CFBundleVersion 24 | 1.0.0 25 | CSResourcesFileMapped 26 | 27 | LSMinimumSystemVersion 28 | 10.11.0 29 | 30 | 31 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp-iOS-AUv3-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | NNCompAppExtension 9 | CFBundleExecutable 10 | NNCompAppExtension 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | NNCompAppExtension 17 | CFBundlePackageType 18 | XPC! 19 | CFBundleShortVersionString 20 | 1.0.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0.0 25 | NSExtension 26 | 27 | NSExtensionAttributes 28 | 29 | AudioComponents 30 | 31 | 32 | description 33 | NNComp 34 | factoryFunction 35 | IPlugAUViewController_vNNComp 36 | manufacturer 37 | Acme 38 | name 39 | michaelholmes: NNComp 40 | sandboxSafe 41 | 42 | subtype 43 | Ipef 44 | tags 45 | 46 | Effects 47 | size:{600,600} 48 | 49 | type 50 | aufx 51 | version 52 | 65536 53 | 54 | 55 | 56 | NSExtensionMainStoryboard 57 | NNComp-iOS-MainInterface 58 | NSExtensionPointIdentifier 59 | com.apple.AudioUnit-UI 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp-iOS-AUv3Framework-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | AUv3Framework 9 | CFBundleExecutable 10 | AUv3Framework 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | AUv3Framework 17 | CFBundlePackageType 18 | FMWK 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1.0.0 23 | 24 | 25 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp-iOS-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | NNComp 9 | CFBundleIcons 10 | 11 | 12 | CFBundleIdentifier 13 | $(PRODUCT_BUNDLE_IDENTIFIER) 14 | CFBundleInfoDictionaryVersion 15 | 6.0 16 | CFBundleName 17 | NNComp 18 | CFBundlePackageType 19 | APPL 20 | CFBundleShortVersionString 21 | 1.0.0 22 | CFBundleSignature 23 | ???? 24 | CFBundleVersion 25 | 1.0.0 26 | LSApplicationCategoryType 27 | public.app-category.music 28 | LSRequiresIPhoneOS 29 | 30 | NSBluetoothAlwaysUsageDescription 31 | Needs Bluetooth MIDI 32 | NSMicrophoneUsageDescription 33 | Needs microphone access to process audio 34 | UIBackgroundModes 35 | 36 | audio 37 | 38 | UILaunchStoryboardName 39 | NNComp-iOS-LaunchScreen 40 | UIMainStoryboardFile 41 | NNComp-iOS 42 | UIRequiredDeviceCapabilities 43 | 44 | armv7 45 | 46 | UIRequiresFullScreen 47 | 48 | UISupportedInterfaceOrientations 49 | 50 | UIInterfaceOrientationPortrait 51 | UIInterfaceOrientationLandscapeLeft 52 | UIInterfaceOrientationLandscapeRight 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp-iOS-MainInterface.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp-iOS.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp-macOS-AUv3-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | NNComp 9 | CFBundleGetInfoString 10 | NNComp v1.0.0 Copyright 2023 Michael Holmes 11 | CFBundleIdentifier 12 | com.michaelholmes.app.NNComp.AUv3 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | NNComp 17 | CFBundlePackageType 18 | XPC! 19 | CFBundleShortVersionString 20 | 1.0.0 21 | CFBundleVersion 22 | 1.0.0 23 | LSMinimumSystemVersion 24 | 10.14.0 25 | NSExtension 26 | 27 | NSExtensionAttributes 28 | 29 | AudioComponentBundle 30 | com.michaelholmes.app.NNComp.AUv3Framework 31 | AudioComponents 32 | 33 | 34 | description 35 | NNComp 36 | manufacturer 37 | Acme 38 | name 39 | michaelholmes: NNComp 40 | sandboxSafe 41 | 42 | subtype 43 | dgq4 44 | tags 45 | 46 | Effects 47 | 48 | type 49 | aufx 50 | version 51 | 65536 52 | 53 | 54 | 55 | NSExtensionPointIdentifier 56 | com.apple.AudioUnit-UI 57 | NSExtensionPrincipalClass 58 | IPlugAUViewController_vNNComp 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp-macOS-AUv3Framework-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | AUv3Framework 9 | CFBundleIdentifier 10 | com.michaelholmes.app.NNComp.AUv3Framework 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | AUv3Framework 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleVersion 20 | 1.0.0 21 | 22 | 23 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp-macOS-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | NNComp 9 | CFBundleGetInfoString 10 | NNComp v1.0.0 Copyright 2023 Michael Holmes 11 | CFBundleIconFile 12 | NNComp.icns 13 | CFBundleIdentifier 14 | com.michaelholmes.app.NNComp 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | NNComp 19 | CFBundlePackageType 20 | BNDL 21 | CFBundleShortVersionString 22 | 1.0.0 23 | CFBundleSignature 24 | dgq4 25 | CFBundleVersion 26 | 1.0.0 27 | CSResourcesFileMapped 28 | 29 | LSApplicationCategoryType 30 | public.app-category.music 31 | LSMinimumSystemVersion 32 | 10.11.0 33 | NSMainNibFile 34 | NNComp-macOS-MainMenu 35 | NSMicrophoneUsageDescription 36 | This app needs mic access to process audio. 37 | NSPrincipalClass 38 | SWELLApplication 39 | 40 | 41 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/NNComp.icns -------------------------------------------------------------------------------- /Plugin/NNComp/resources/NNComp.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/NNComp.ico -------------------------------------------------------------------------------- /Plugin/NNComp/resources/fonts/Inter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/fonts/Inter-Regular.ttf -------------------------------------------------------------------------------- /Plugin/NNComp/resources/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /Plugin/NNComp/resources/img/Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/img/Logo.png -------------------------------------------------------------------------------- /Plugin/NNComp/resources/main.aps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaelholmes4/NNComp/56b4462b96565262302954c45518e34c9bb8a851/Plugin/NNComp/resources/main.aps -------------------------------------------------------------------------------- /Plugin/NNComp/resources/main.rc_mac_menu: -------------------------------------------------------------------------------- 1 | SWELL_DEFINE_MENU_RESOURCE_BEGIN(IDR_MENU1) 2 | POPUP "&File" 3 | BEGIN 4 | MENUITEM "&Preferences...\tCtrl+,", ID_PREFERENCES 5 | MENUITEM "&Quit", ID_QUIT 6 | END 7 | POPUP "&Debug" 8 | BEGIN 9 | MENUITEM "&Live Edit Mode\tCtrl+E", ID_LIVE_EDIT 10 | MENUITEM "&Show Control Bounds\tCtrl+B", ID_SHOW_BOUNDS 11 | MENUITEM "&Show Drawn Area\tCtrl+D", ID_SHOW_DRAWN 12 | MENUITEM "&Show FPS\tCtrl+F", ID_SHOW_FPS 13 | END 14 | POPUP "&Help" 15 | BEGIN 16 | MENUITEM "&About", ID_ABOUT 17 | MENUITEM "&Read Manual", ID_HELP 18 | END 19 | SWELL_DEFINE_MENU_RESOURCE_END(IDR_MENU1) 20 | 21 | 22 | 23 | //EOF 24 | 25 | -------------------------------------------------------------------------------- /Plugin/NNComp/resources/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by main.rc 4 | 5 | #define IDR_ACCELERATOR1 40000 6 | #define IDD_DIALOG_MAIN 40001 7 | #define IDD_DIALOG_PREF 40002 8 | #define IDI_ICON1 40003 9 | #define IDR_MENU1 40004 10 | #define ID_ABOUT 40005 11 | #define ID_PREFERENCES 40006 12 | #define ID_QUIT 40007 13 | #define ID_HELP 40008 14 | #define IDC_COMBO_AUDIO_DRIVER 40009 15 | #define IDC_COMBO_AUDIO_IN_DEV 40010 16 | #define IDC_COMBO_AUDIO_OUT_DEV 40011 17 | #define IDC_COMBO_AUDIO_BUF_SIZE 40012 18 | #define IDC_COMBO_AUDIO_SR 40013 19 | #define IDC_COMBO_AUDIO_IN_L 40014 20 | #define IDC_COMBO_AUDIO_IN_R 40015 21 | #define IDC_COMBO_AUDIO_OUT_R 40016 22 | #define IDC_COMBO_AUDIO_OUT_L 40017 23 | #define IDC_COMBO_MIDI_IN_DEV 40018 24 | #define IDC_COMBO_MIDI_OUT_DEV 40019 25 | #define IDC_COMBO_MIDI_IN_CHAN 40020 26 | #define IDC_COMBO_MIDI_OUT_CHAN 40021 27 | #define IDC_BUTTON_OS_DEV_SETTINGS 40022 28 | #define IDC_CB_MONO_INPUT 40023 29 | #define IDAPPLY 40024 30 | #define ID_LIVE_EDIT 40025 31 | #define ID_SHOW_DRAWN 40026 32 | #define ID_SHOW_FPS 40027 33 | #define ID_SHOW_BOUNDS 40028 34 | 35 | // Next default values for new objects 36 | // 37 | #ifdef APSTUDIO_INVOKED 38 | #ifndef APSTUDIO_READONLY_SYMBOLS 39 | #define _APS_NEXT_RESOURCE_VALUE 105 40 | #define _APS_NEXT_COMMAND_VALUE 40001 41 | #define _APS_NEXT_CONTROL_VALUE 1011 42 | #define _APS_NEXT_SYMED_VALUE 101 43 | #endif 44 | #endif 45 | -------------------------------------------------------------------------------- /Plugin/NNComp/scripts/make_zip.py: -------------------------------------------------------------------------------- 1 | import zipfile, os, fileinput, string, sys 2 | 3 | scriptpath = os.path.dirname(os.path.realpath(__file__)) 4 | projectpath = os.path.abspath(os.path.join(scriptpath, os.pardir)) 5 | 6 | MajorStr = "" 7 | MinorStr = "" 8 | BugfixStr = "" 9 | BUNDLE_NAME = "" 10 | 11 | def main(): 12 | if len(sys.argv) != 2: 13 | print("Usage: make_zip.py demo(0 or 1)") 14 | sys.exit(1) 15 | else: 16 | demo=int(sys.argv[1]) 17 | 18 | installer = "\installer\NNComp Installer.exe" 19 | 20 | if demo: 21 | installer = "\installer\NNComp Demo Installer.exe" 22 | 23 | FILES_TO_ZIP = [ 24 | projectpath + installer, 25 | projectpath + "\installer\changelog.txt", 26 | projectpath + "\installer\known-issues.txt", 27 | projectpath + "\manual\NNComp manual.pdf" 28 | ] 29 | 30 | # extract values from config.h 31 | for line in fileinput.input(projectpath + "\config.h",inplace=0): 32 | if "#define PLUG_VERSION_HEX " in line: 33 | PLUG_VER_STR = string.lstrip(line, "#define PLUG_VERSION_HEX ") 34 | PLUG_VER = int(PLUG_VER_STR, 16) 35 | MAJOR = PLUG_VER & 0xFFFF0000 36 | MAJORSTR = str(MAJOR >> 16) 37 | MINOR = PLUG_VER & 0x0000FF00 38 | MINORSTR = str(MINOR >> 8) 39 | BUGFIXSTR = str(PLUG_VER & 0x000000FF) 40 | 41 | if "#define BUNDLE_NAME " in line: 42 | BUNDLE_NAME = string.lstrip(line, "#define BUNDLE_NAME ") 43 | 44 | FULLVERSIONSTR = MAJORSTR + "." + MINORSTR + "." + BUGFIXSTR 45 | 46 | ZIPNAME = "NNComp-v" + FULLVERSIONSTR + "-win.zip" 47 | 48 | if demo: 49 | ZIPNAME = "NNComp-v" + FULLVERSIONSTR + "-win-demo.zip" 50 | 51 | zf = zipfile.ZipFile(projectpath + "\installer\/" + ZIPNAME, mode="w") 52 | 53 | for f in FILES_TO_ZIP: 54 | print("adding " + f) 55 | zf.write(f, os.path.basename(f)); 56 | 57 | zf.close() 58 | print("wrote ") 59 | 60 | if __name__ == '__main__': 61 | main() -------------------------------------------------------------------------------- /Plugin/NNComp/scripts/prebuild-win.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM - CALL "$(SolutionDir)scripts\prebuild-win.bat" "$(TargetExt)" "$(BINARY_NAME)" "$(Platform)" "$(TargetPath)" "$(OutDir)" 3 | REM set FORMAT=%1 4 | REM set NAME=%2 5 | REM set PLATFORM=%3 6 | REM set BUILT_BINARY=%4 -------------------------------------------------------------------------------- /Plugin/README.md: -------------------------------------------------------------------------------- 1 | # Plugin 2 | In this module is both code to load and use the C++ headers generated in `Training` as well as the iPlug2 project file used in the thesis project. 3 | 4 |

5 | Screenshot 6 |

7 | 8 | ## Contents 9 | * `dsh.h` - Provides an example of how to load model header files and process an input sample 10 | * `layers.h` - C++ implementation of LSTM, GRU and RNN layer equations 11 | * `pretrained_models` - Header files for pretrained models from the thesis project 12 | * `iPlug2_Project` - iPlug2 project file for plugin 13 | 14 | ## Usage 15 | ### Use C++ implementation in own project 16 | An efficient C++ implementation is provided for LSTM, RNN and GRU networks. They can be run directly using the generated `.h` files from the `Training` module. Alternatively, a model from `pretrained_models` can be used. 17 | 1. Include the model `.h` file in the project. 18 | 2. Download the Eigen linear algebra library [here](https://eigen.tuxfamily.org/). 19 | 3. Ensure the `Eigen/Dense` and `layers.h` are included in the project paths. 20 | 21 | Audio can then be processed on sequential audio samples by repeatedly calling the `apply_model(x, y);` function in the model class. 22 | 23 | ### iPlug2 Project 24 | These are the rough steps that need to be followed to build the plugin. I would suggest reading the iPlug2 documentation to further understand the build process: 25 | 26 | 1. Ensure submodules have been pulled when cloning this repo. `git submodule update --init --recursive` 27 | 2. Open the `NNComp.xcworkspace` in Xcode or `NNComp.code-workspace` in Visual Studio in the project folder. 28 | 3. Download the prebuild dependencies as documented [here](https://github.com/iPlug2/iPlug2/tree/master/Dependencies). 29 | 4. Build the plugin. 30 | 31 | Alternatively, download the already built AU and APP files [here](https://files.hcloudh.com/s/kAecJ4yCz5tjmNQ). 32 | -------------------------------------------------------------------------------- /Plugin/pretrained_models/rnn-2-4.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Autogenerated header file for rnn-2-4 3 | * neural network model parameters. 4 | * 5 | * Created on: 03/10/2022 at: 10:19 6 | * By Michael Holmes 7 | */ 8 | 9 | #pragma once 10 | #include "layers.h" 11 | 12 | template 13 | class Rnn_2_4 14 | { 15 | public: 16 | const static int h = 2; 17 | const static int d = 1; 18 | const static int layers = 4; 19 | 20 | FccLayer f; 21 | RnnLayer l0; 22 | RnnLayer l1; 23 | RnnLayer l2; 24 | RnnLayer l3; 25 | 26 | Rnn_2_4() { 27 | l0.Wih << -2.729341 ,-2.0342002; 28 | 29 | l0.Whh << 0.17036283, 0.22163755,-0.6127797 ,-0.92778975; 30 | 31 | l0.bih << -0.2096899, 0.4739973; 32 | 33 | l0.bhh << -0.09538452,-0.69105047; 34 | 35 | l0.htn1 << 0.,0.; 36 | 37 | l1.Wih << -0.17657861,-1.5796613 , 1.8669199 , 5.1016483 ; 38 | 39 | l1.Whh << 0.17998615,-0.8947482 , 0.16628672,-0.11702587; 40 | 41 | l1.bih << 0.08207554,0.39094877; 42 | 43 | l1.bhh << 0.00801696,0.41186023; 44 | 45 | l1.htn1 << 0.,0.; 46 | 47 | l2.Wih << -0.10098406,-0.5625597 , 1.195943 ,-0.76536983; 48 | 49 | l2.Whh << 0.5601913 ,-0.1288622 ,-1.5549568 ,-0.02015822; 50 | 51 | l2.bih << -0.01715576, 0.47096157; 52 | 53 | l2.bhh << 0.0897334 ,-0.49221122; 54 | 55 | l2.htn1 << 0.,0.; 56 | 57 | l3.Wih << 0.06845319,-0.11383019,-0.16757894, 0.31667355; 58 | 59 | l3.Whh << -0.02625313, 0.49640965, 0.1726651 , 0.15925215; 60 | 61 | l3.bih << 0.24028167,0.39340463; 62 | 63 | l3.bhh << 0.00806533,-0.13443708; 64 | 65 | l3.htn1 << 0.,0.; 66 | 67 | f.A << 0.5618275 ,0.45957944; 68 | f.b << -0.3761936; 69 | } 70 | 71 | void apply_model(T* x, T* y) { 72 | l0.apply_layer(*x); 73 | l1.apply_layer(l0.ht); 74 | l2.apply_layer(l1.ht); 75 | l3.apply_layer(l2.ht); 76 | *y=f.apply_layer(l3.ht); 77 | } 78 | }; -------------------------------------------------------------------------------- /Plugin/pretrained_models/rnn-4-2.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Autogenerated header file for rnn-4-2 3 | * neural network model parameters. 4 | * 5 | * Created on: 03/10/2022 at: 10:19 6 | * By Michael Holmes 7 | */ 8 | 9 | #pragma once 10 | #include "layers.h" 11 | 12 | template 13 | class Rnn_4_2 14 | { 15 | public: 16 | const static int h = 4; 17 | const static int d = 1; 18 | const static int layers = 2; 19 | 20 | FccLayer f; 21 | RnnLayer l0; 22 | RnnLayer l1; 23 | 24 | Rnn_4_2() { 25 | l0.Wih << -0.7641525,-2.170938 ,-3.3177743, 1.6444587; 26 | 27 | l0.Whh << 0.15292361,-0.42343518, 0.42897373,-0.04844489, 0.3896424 , 0.43099037, 0.8278761 ,-0.02794668,-0.74310386, 0.5688661 ,-0.7089677 ,-0.07437804, 1.2105962 , 0.6156074 , 1.2762611 ,-0.14833477; 28 | 29 | l0.bih << -0.06375539,-0.09946165, 0.00039329, 0.15916412; 30 | 31 | l0.bhh << 0.07518297, 0.14388879,-0.07234067,-0.06315058; 32 | 33 | l0.htn1 << 0.,0.,0.,0.; 34 | 35 | l1.Wih << 0.20215914,-0.13239339,-1.0504835 , 0.58724517,-0.08805969,-0.41035822, 0.26139578, 0.09402591,-0.45126632, 0.23512302,-0.10377465, 0.0272059 , 0.49106863, 0.5424334 , 0.37444782, 0.47922778; 36 | 37 | l1.Whh << 0.81809086, 0.17532243,-0.27424708, 0.51467806, 0.07009848, 0.44989705, 0.05719742,-0.16287218,-0.15242687,-0.01511888, 0.15565023,-0.1492239 , -0.4972751 ,-0.34240258,-0.01299326,-0.02044555; 38 | 39 | l1.bih << 0.22883806, 0.68488115,-0.11670925,-0.04507213; 40 | 41 | l1.bhh << -0.3452019 , 0.51348436, 0.3855292 , 0.33463517; 42 | 43 | l1.htn1 << 0.,0.,0.,0.; 44 | 45 | f.A << 0.16077106, 0.21200751,-0.34766006, 0.05411138; 46 | f.b << -0.08815242; 47 | } 48 | 49 | void apply_model(T* x, T* y) { 50 | l0.apply_layer(*x); 51 | l1.apply_layer(l0.ht); 52 | *y=f.apply_layer(l1.ht); 53 | } 54 | }; -------------------------------------------------------------------------------- /Plugin/pretrained_models/rnn-4-4.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Autogenerated header file for rnn-4-4 3 | * neural network model parameters. 4 | * 5 | * Created on: 03/10/2022 at: 10:19 6 | * By Michael Holmes 7 | */ 8 | 9 | #pragma once 10 | #include "layers.h" 11 | 12 | template 13 | class Rnn_4_4 14 | { 15 | public: 16 | const static int h = 4; 17 | const static int d = 1; 18 | const static int layers = 4; 19 | 20 | FccLayer f; 21 | RnnLayer l0; 22 | RnnLayer l1; 23 | RnnLayer l2; 24 | RnnLayer l3; 25 | 26 | Rnn_4_4() { 27 | l0.Wih << 0.9315215 ,-1.6558564 ,-0.10325249, 2.1970193 ; 28 | 29 | l0.Whh << 0.40967533,-0.08108214, 0.43656713,-0.8437126 , 0.05684733, 0.08927614, -0.35692787, 0.4219292 , 1.1438857 ,-0.24164957, 0.6760968 ,-0.02619013, -0.45267648, 0.72611123, 0.01351567,-0.13732894; 30 | 31 | l0.bih << 0.23939747,-0.3152251 ,-0.55183357, 0.3463919 ; 32 | 33 | l0.bhh << 0.23091818,-0.34642354,-0.6155484 ,-0.02685513; 34 | 35 | l0.htn1 << 0.,0.,0.,0.; 36 | 37 | l1.Wih << -1.5025789 , 0.7474239 ,-0.13501884,-2.3247974 , 0.1468175 , 0.04559393, 1.0627385 ,-1.3766254 , 0.537908 , 0.01588612, 0.0863247 , 1.0272297 , -0.21042347,-0.08692385,-0.48056236, 0.9376688 ; 38 | 39 | l1.Whh << -0.00302888,-0.32519868,-0.26956478, 0.21639448,-0.01423775, 0.28962362, -0.11506301, 0.04610545, 0.44346094, 0.38637948,-0.41679865,-0.12546231, 0.19608895,-0.431093 , 0.0521007 , 0.00682012; 40 | 41 | l1.bih << 0.35246614,-0.01507667,-0.1493856 ,-0.2463627 ; 42 | 43 | l1.bhh << 0.56012136,-0.5369595 , 0.2548565 ,-0.0157051 ; 44 | 45 | l1.htn1 << 0.,0.,0.,0.; 46 | 47 | l2.Wih << -0.39902014,-0.13581562, 0.18687965,-0.52348524, 0.39958546,-0.23347002, -0.29812694, 0.09433543, 0.67541444, 0.2828418 ,-0.8808627 ,-0.3135039 , -0.25789294,-0.51251286, 0.09062625,-0.17301221; 48 | 49 | l2.Whh << 3.6014390e-01, 3.1910786e-01,-2.0375332e-01, 2.1387710e-01, 3.3159617e-02,-3.0632126e-01, 3.1296693e-02,-3.7170917e-01, 1.7173584e-01, 3.4536690e-01, 3.6071262e-01,-1.4600658e-01, 2.3854713e-01, 4.5966521e-01, 4.3358738e-04, 1.3851538e-01; 50 | 51 | l2.bih << -0.08421056,-0.2790538 , 0.22017753, 0.31851572; 52 | 53 | l2.bhh << -0.3194949 ,-0.2563916 ,-0.22271849, 0.34143054; 54 | 55 | l2.htn1 << 0.,0.,0.,0.; 56 | 57 | l3.Wih << -0.26563346,-0.2830662 , 0.2488352 , 0.07055547, 0.4217168 , 0.257569 , -0.2102743 , 0.03718962, 0.09970601,-0.14482608,-0.04297564, 0.00321576, 0.21109217, 0.37506768, 0.02770434, 0.50471026; 58 | 59 | l3.Whh << -0.01496095, 0.27587798, 0.45723405,-0.3457543 ,-0.4205788 ,-0.28446257, -0.05706016, 0.36168197, 0.3057461 , 0.47623238, 0.10174152,-0.16392283, -0.30442083, 0.28893924,-0.1560029 ,-0.21844189; 60 | 61 | l3.bih << -0.52465886, 0.09827567,-0.11267006, 0.40877873; 62 | 63 | l3.bhh << 0.1551421 , 0.10238243,-0.19903839,-0.3894912 ; 64 | 65 | l3.htn1 << 0.,0.,0.,0.; 66 | 67 | f.A << 0.14003934,-0.4091425 ,-0.07050643,-0.4202682 ; 68 | f.b << 0.18697527; 69 | } 70 | 71 | void apply_model(T* x, T* y) { 72 | l0.apply_layer(*x); 73 | l1.apply_layer(l0.ht); 74 | l2.apply_layer(l1.ht); 75 | l3.apply_layer(l2.ht); 76 | *y=f.apply_layer(l3.ht); 77 | } 78 | }; -------------------------------------------------------------------------------- /Plugin/pretrained_models/rnn-8-1.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Autogenerated header file for rnn-8-1 3 | * neural network model parameters. 4 | * 5 | * Created on: 03/10/2022 at: 10:19 6 | * By Michael Holmes 7 | */ 8 | 9 | #pragma once 10 | #include "layers.h" 11 | 12 | template 13 | class Rnn_8_1 14 | { 15 | public: 16 | const static int h = 8; 17 | const static int d = 1; 18 | const static int layers = 1; 19 | 20 | FccLayer f; 21 | RnnLayer l0; 22 | 23 | Rnn_8_1() { 24 | l0.Wih << -1.0104719 ,-1.2445518 ,-0.14760897,-1.7846098 ,-1.1380048 , 1.726847 , 0.17627457, 0.04696293; 25 | 26 | l0.Whh << 0.35848308,-0.06729728,-0.32881945, 0.04960677,-0.20325142,-0.0417577 , 0.4774429 ,-0.28927884, 0.36997646,-0.09991776, 0.6495694 , 0.00634439, -0.09730758, 0.0700631 ,-0.31398088, 0.57314783, 0.04449876, 0.2211951 , 0.8885421 ,-0.10325389,-0.02835545, 0.1369639 ,-0.19644623, 0.11457521, 0.3352639 ,-0.41323847,-0.04167278,-0.0539661 , 0.16595034,-0.23440833, -0.11069407, 0.141781 , 0.25822464,-0.39805785,-0.14323637,-0.08167489, 0.22301011,-0.22381276, 0.09438097,-0.5147528 , 0.08744797,-0.2772196 , -0.24120697, 0.3164663 ,-0.08886573, 0.06086904, 0.25300816,-0.25632155, -0.18665552,-0.10936162,-0.20404786, 0.14685282, 0.0706276 , 0.17052639, 0.12713106,-0.13517004, 0.10319311, 0.47038656, 0.20518449,-0.32775074, -0.21297574, 0.0463723 ,-0.4020116 ,-0.00284344; 27 | 28 | l0.bih << -0.21002235,-0.06572902, 0.19230777,-0.04835439, 0.059521 ,-0.27936655, -0.30450985,-0.13640101; 29 | 30 | l0.bhh << -0.08784267,-0.36084813, 0.10081744,-0.2005233 , 0.2746383 ,-0.09998523, 0.21096951, 0.19763641; 31 | 32 | l0.htn1 << 0.,0.,0.,0.,0.,0.,0.,0.; 33 | 34 | f.A << -0.25176963, 0.33883563,-0.20167461,-0.47240692, 0.4982961 , 0.3684467 , -0.3129835 , 0.1150392 ; 35 | f.b << -0.05823666; 36 | } 37 | 38 | void apply_model(T* x, T* y) { 39 | l0.apply_layer(*x); 40 | *y=f.apply_layer(l0.ht); 41 | } 42 | }; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # NNComp 2 | This is the code base for the Honours [thesis](https://files.hcloudh.com/s/zrpJqozJeN6Y25c) project submitted to the University of Queensland by Michael Holmes 2022. 3 | 4 |

5 | 6 |

7 | 8 | ### Update 2023 9 | New GUI!! 10 | Now the plugin has a modern look and the weights of each neural network can be visualised in real-time. 11 |

12 | Screenshot 13 |

14 | 15 | ### Acknowledgements 16 | The following papers were highly influential in guiding this project: 17 | * [Efficient neural networks for real-time modeling of analog dynamic range compression](https://arxiv.org/abs/2102.06200) by Christian Steinmetz and Joshua Reiss. 18 | * [Real-time black-box modelling with recurrent neural networks](http://dafx.de/paper-archive/2019/DAFx2019_paper_43.pdf) by Alec Wright, Eero-Pekka Damskägg, and Vesa Välimäki 19 | 20 | ## Introduction 21 | This repo can be used to train RNN, LSTM and GRU neural networks and convert these networks into efficient C++ code for use in audio plugins. 22 | 23 | The trained models from the thesis project can be downloaded [here](https://files.hcloudh.com/s/qcNFYJYneXgY8X5). 24 | 25 | An audio plugin was created using [iPlug2](https://github.com/iPlug2/iPlug2) and can be downloaded in the releases tab. **Note for best sound quality please run the plugin at a sample rate of 48kHz. Additional sample rates to be added in the future.* 26 | 27 | 28 | ## Contents 29 | This repo is split into 2 modules: `Training` and `Plugin`. Detailed usage instructions are available inside each module. 30 | 31 | ### Training 32 | Code for training and testing the PyTorch models. A script is supplied for converting these models into C++ headers to use with the `Plugin` module. 33 | 34 | ### Plugin 35 | The iPlug2 project file is supplied along with quick C++ implementations that can be used in other projects. 36 | -------------------------------------------------------------------------------- /Training/create_all_headers.sh: -------------------------------------------------------------------------------- 1 | #Converts all .pth models in current directory into c++ header files. Model must bee created using training.py for this script to work. 2 | for i in out/*.pth; do 3 | [ -f "$i" ] || break 4 | python3 create_header.py $i 5 | done -------------------------------------------------------------------------------- /Training/environment.yml: -------------------------------------------------------------------------------- 1 | name: nncomp 2 | channels: 3 | - pytorch 4 | - anaconda 5 | - conda-forge 6 | dependencies: 7 | - python 8 | - pytorch 9 | - torchvision 10 | - cudatoolkit=11.3 11 | - librosa 12 | - scipy 13 | - numpy 14 | - pip 15 | - pip: 16 | - tensorboard 17 | - auraloss 18 | 19 | -------------------------------------------------------------------------------- /Training/predict.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | from model import AudioDataSet, Trainer 4 | import librosa 5 | from torch.utils.data import DataLoader, Dataset 6 | from datetime import datetime 7 | from scipy.io import wavfile as wav 8 | import argparse 9 | 10 | 11 | #Parse input arguments 12 | parser = argparse.ArgumentParser() 13 | parser.add_argument('Model', help="Path to model file", type=str) 14 | parser.add_argument('Audio', help="Path to audio input file", type=str) 15 | parser.add_argument('--ingain', '-i', help="Input gain dB", type=float) 16 | parser.add_argument('--outgain', '-g', help="Output gain dB", type=float) 17 | parser.add_argument('--out', '-o', help="Output path", type=str) 18 | args = parser.parse_args() 19 | if args.out: 20 | out = args.out 21 | else: 22 | out = "./" 23 | if args.ingain: 24 | ingain = args.ingain 25 | else: 26 | ingain = 0.0 27 | if args.outgain: 28 | outgain = args.outgain 29 | else: 30 | outgain = 0.0 31 | 32 | audio_path = args.Audio 33 | model_path = args.Model 34 | 35 | #import audio 36 | audio, sr = librosa.load(audio_path, mono=True, sr=48000, dtype=np.float32) 37 | 38 | #apply model 39 | data = Dataset() 40 | dataset = DataLoader(data) 41 | trainer = Trainer(dataset, dataset) 42 | trainer.load_model(model_path) 43 | 44 | #predict 45 | output = trainer.predict(audio.astype(np.float32) * 10**(ingain/20)) * 10**(outgain/20) 46 | 47 | #save file 48 | wav.write(out + "predict_{}.wav".format(datetime.now().strftime("_%Y%d%m_%H%M")), sr, output) -------------------------------------------------------------------------------- /Training/training.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | from torch import nn 4 | from model import AudioDataSet, LstmModel, Trainer #Custom classes and code 5 | from scipy.io import wavfile as wav 6 | import os 7 | import re 8 | import matplotlib.pyplot as plt 9 | import librosa 10 | from torch.utils.data import DataLoader 11 | from datetime import datetime 12 | from torch.utils.tensorboard import SummaryWriter 13 | import argparse 14 | 15 | #Parse input arguments 16 | parser = argparse.ArgumentParser() 17 | parser.add_argument('Type', help="Model type: eg. lstm-32-1 or gru-16-2 ...", type=str) 18 | parser.add_argument('--path', '-p', help="Path to dataset", type=str) 19 | parser.add_argument('--epochs', '-e', help="Number of epochs to train for. Default = 1000", type=int) 20 | parser.add_argument('--batch_size', '-b', help="Training mini-batch size. Default = 32", type=int) 21 | parser.add_argument('--out', '-o', help="Output path", type=str) 22 | args = parser.parse_args() 23 | if args.path: 24 | path = args.path 25 | else: 26 | path = 'dataset/' 27 | if args.epochs: 28 | epochs = args.epochs 29 | else: 30 | epochs = 1000 31 | if args.batch_size: 32 | batch_size = args.batch_size 33 | else: 34 | batch_size = 32 35 | if args.out: 36 | out = args.out 37 | else: 38 | out = "out/" 39 | 40 | type = args.Type 41 | 42 | #Import dataset 43 | train_data = AudioDataSet(path + 'train/') 44 | val_data = AudioDataSet(path + 'val/') 45 | 46 | #Create torch dataloader to put data into batches and shuffle 47 | train_dataloader = DataLoader(train_data, batch_size=batch_size, shuffle=True, drop_last=True) 48 | val_dataloader = DataLoader(val_data, batch_size=batch_size, shuffle=True, drop_last=True) 49 | 50 | #Create model name 51 | name = type + datetime.now().strftime("_%Y%d%m_%H%M") 52 | 53 | #Create trainer 54 | trainer = Trainer(train_dataloader, val_dataloader) 55 | trainer.create_model(type, name) 56 | trainer.create_optimiser(learning_rate=3e-4) 57 | 58 | #Path to save model to 59 | save_to = out + 'model_' + name + ".pth" #create file to save model to 60 | 61 | #Train model 62 | trainer.fit(epochs=epochs) #train model 63 | 64 | #Save model 65 | trainer.save_model(save_to) 66 | -------------------------------------------------------------------------------- /license.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Michael Holmes 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. 22 | --------------------------------------------------------------------------------