Full Code of EvolutionGym/evogym for AI

main f63c649c688a cached
467 files
6.6 MB
1.7M tokens
4135 symbols
1 requests
Download .txt
Showing preview only (6,995K chars total). Download the full file or copy to clipboard to get everything.
Repository: EvolutionGym/evogym
Branch: main
Commit: f63c649c688a
Files: 467
Total size: 6.6 MB

Directory structure:
gitextract_7lcliole/

├── .github/
│   └── workflows/
│       ├── test.yml
│       └── wheels.yml
├── .gitignore
├── .gitmodules
├── LICENSE
├── MANIFEST.in
├── README.md
├── environment.yml
├── evogym/
│   ├── __init__.py
│   ├── envs/
│   │   ├── __init__.py
│   │   ├── balance.py
│   │   ├── base.py
│   │   ├── change_shape.py
│   │   ├── climb.py
│   │   ├── flip.py
│   │   ├── jump.py
│   │   ├── manipulate.py
│   │   ├── multi_goal.py
│   │   ├── sim_files/
│   │   │   ├── Balancer-v0.json
│   │   │   ├── Balancer-v1.json
│   │   │   ├── BeamSlider-v0.json
│   │   │   ├── BeamToppler-v0.json
│   │   │   ├── BidirectionalWalker-v0.json
│   │   │   ├── BridgeWalker-v0.json
│   │   │   ├── Carrier-v0.json
│   │   │   ├── Carrier-v1.json
│   │   │   ├── CaveCrawler-v0.json
│   │   │   ├── Climber-v0.json
│   │   │   ├── Climber-v1.json
│   │   │   ├── Climber-v2.json
│   │   │   ├── DownStepper-v0.json
│   │   │   ├── Flipper-v0.json
│   │   │   ├── GapJumper-v0.json
│   │   │   ├── Hurdler-v0.json
│   │   │   ├── Jumper-v0.json
│   │   │   ├── Lifter-v0.json
│   │   │   ├── ObstacleTraverser-v0.json
│   │   │   ├── ObstacleTraverser-v1.json
│   │   │   ├── PlatformJumper-v0.json
│   │   │   ├── Pusher-v0.json
│   │   │   ├── Pusher-v1.json
│   │   │   ├── ShapeChange.json
│   │   │   ├── Thrower-v0.json
│   │   │   ├── Traverser-v0.json
│   │   │   ├── UpStepper-v0.json
│   │   │   ├── Walker-v0.json
│   │   │   ├── package.json
│   │   │   ├── peg.json
│   │   │   ├── rigid_1x1.json
│   │   │   ├── rigid_2x2.json
│   │   │   └── rigid_3x3.json
│   │   ├── traverse.py
│   │   └── walk.py
│   ├── sim.py
│   ├── simulator/
│   │   ├── CMakeLists.txt
│   │   ├── FindGLEW.cmake
│   │   ├── SimulatorCPP/
│   │   │   ├── BBTreeNode.cpp
│   │   │   ├── BBTreeNode.h
│   │   │   ├── Boxel.cpp
│   │   │   ├── Boxel.h
│   │   │   ├── CMakeLists.txt
│   │   │   ├── Camera.cpp
│   │   │   ├── Camera.h
│   │   │   ├── Colors.h
│   │   │   ├── Edge.cpp
│   │   │   ├── Edge.h
│   │   │   ├── Environment.cpp
│   │   │   ├── Environment.h
│   │   │   ├── Interface.cpp
│   │   │   ├── Interface.h
│   │   │   ├── ObjectCreator.cpp
│   │   │   ├── ObjectCreator.h
│   │   │   ├── PhysicsEngine.cpp
│   │   │   ├── PhysicsEngine.h
│   │   │   ├── PythonBindings.cpp
│   │   │   ├── Robot.cpp
│   │   │   ├── Robot.h
│   │   │   ├── Sim.cpp
│   │   │   ├── Sim.h
│   │   │   ├── SimObject.cpp
│   │   │   ├── SimObject.h
│   │   │   ├── Snapshot.cpp
│   │   │   ├── Snapshot.h
│   │   │   ├── main.cpp
│   │   │   └── main.h
│   │   └── externals/
│   │       ├── CMakeLists.txt
│   │       └── eigen/
│   │           └── Eigen/
│   │               ├── 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/
│   │                   ├── Cholesky/
│   │                   │   ├── LDLT.h
│   │                   │   ├── LLT.h
│   │                   │   └── LLT_LAPACKE.h
│   │                   ├── CholmodSupport/
│   │                   │   └── CholmodSupport.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
│   │                   │   ├── 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
│   │                   │   │   │   ├── MathFunctions.h
│   │                   │   │   │   ├── PacketMath.h
│   │                   │   │   │   └── TypeCasting.h
│   │                   │   │   ├── AltiVec/
│   │                   │   │   │   ├── Complex.h
│   │                   │   │   │   ├── MathFunctions.h
│   │                   │   │   │   ├── MatrixProduct.h
│   │                   │   │   │   ├── MatrixProductCommon.h
│   │                   │   │   │   ├── MatrixProductMMA.h
│   │                   │   │   │   └── PacketMath.h
│   │                   │   │   ├── CUDA/
│   │                   │   │   │   └── Complex.h
│   │                   │   │   ├── Default/
│   │                   │   │   │   ├── BFloat16.h
│   │                   │   │   │   ├── ConjHelper.h
│   │                   │   │   │   ├── GenericPacketMathFunctions.h
│   │                   │   │   │   ├── GenericPacketMathFunctionsFwd.h
│   │                   │   │   │   ├── Half.h
│   │                   │   │   │   ├── Settings.h
│   │                   │   │   │   └── TypeCasting.h
│   │                   │   │   ├── GPU/
│   │                   │   │   │   ├── MathFunctions.h
│   │                   │   │   │   ├── PacketMath.h
│   │                   │   │   │   └── TypeCasting.h
│   │                   │   │   ├── HIP/
│   │                   │   │   │   └── hcc/
│   │                   │   │   │       └── math_constants.h
│   │                   │   │   ├── MSA/
│   │                   │   │   │   ├── Complex.h
│   │                   │   │   │   ├── MathFunctions.h
│   │                   │   │   │   └── PacketMath.h
│   │                   │   │   ├── NEON/
│   │                   │   │   │   ├── Complex.h
│   │                   │   │   │   ├── MathFunctions.h
│   │                   │   │   │   ├── PacketMath.h
│   │                   │   │   │   └── TypeCasting.h
│   │                   │   │   ├── SSE/
│   │                   │   │   │   ├── Complex.h
│   │                   │   │   │   ├── 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
│   │                   │       ├── StaticAssert.h
│   │                   │       ├── SymbolicIndex.h
│   │                   │       └── XprHelper.h
│   │                   ├── Eigenvalues/
│   │                   │   ├── ComplexEigenSolver.h
│   │                   │   ├── ComplexSchur.h
│   │                   │   ├── ComplexSchur_LAPACKE.h
│   │                   │   ├── EigenSolver.h
│   │                   │   ├── GeneralizedEigenSolver.h
│   │                   │   ├── GeneralizedSelfAdjointEigenSolver.h
│   │                   │   ├── HessenbergDecomposition.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
│   │                   │   ├── 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
│   │                   ├── IterativeLinearSolvers/
│   │                   │   ├── BasicPreconditioners.h
│   │                   │   ├── BiCGSTAB.h
│   │                   │   ├── ConjugateGradient.h
│   │                   │   ├── IncompleteCholesky.h
│   │                   │   ├── IncompleteLUT.h
│   │                   │   ├── IterativeSolverBase.h
│   │                   │   ├── LeastSquareConjugateGradient.h
│   │                   │   └── SolveWithGuess.h
│   │                   ├── Jacobi/
│   │                   │   └── Jacobi.h
│   │                   ├── KLUSupport/
│   │                   │   └── KLUSupport.h
│   │                   ├── LU/
│   │                   │   ├── Determinant.h
│   │                   │   ├── FullPivLU.h
│   │                   │   ├── InverseImpl.h
│   │                   │   ├── PartialPivLU.h
│   │                   │   ├── PartialPivLU_LAPACKE.h
│   │                   │   └── arch/
│   │                   │       └── InverseSize4.h
│   │                   ├── MetisSupport/
│   │                   │   └── MetisSupport.h
│   │                   ├── OrderingMethods/
│   │                   │   ├── Amd.h
│   │                   │   ├── Eigen_Colamd.h
│   │                   │   └── Ordering.h
│   │                   ├── PaStiXSupport/
│   │                   │   └── PaStiXSupport.h
│   │                   ├── PardisoSupport/
│   │                   │   └── PardisoSupport.h
│   │                   ├── QR/
│   │                   │   ├── ColPivHouseholderQR.h
│   │                   │   ├── ColPivHouseholderQR_LAPACKE.h
│   │                   │   ├── CompleteOrthogonalDecomposition.h
│   │                   │   ├── FullPivHouseholderQR.h
│   │                   │   ├── HouseholderQR.h
│   │                   │   └── HouseholderQR_LAPACKE.h
│   │                   ├── SPQRSupport/
│   │                   │   └── SuiteSparseQRSupport.h
│   │                   ├── SVD/
│   │                   │   ├── BDCSVD.h
│   │                   │   ├── JacobiSVD.h
│   │                   │   ├── JacobiSVD_LAPACKE.h
│   │                   │   ├── SVDBase.h
│   │                   │   └── UpperBidiagonalization.h
│   │                   ├── SparseCholesky/
│   │                   │   ├── SimplicialCholesky.h
│   │                   │   └── SimplicialCholesky_impl.h
│   │                   ├── SparseCore/
│   │                   │   ├── AmbiVector.h
│   │                   │   ├── CompressedStorage.h
│   │                   │   ├── ConservativeSparseSparseProduct.h
│   │                   │   ├── MappedSparseMatrix.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/
│   │                   │   ├── 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/
│   │                   │   └── SparseQR.h
│   │                   ├── StlSupport/
│   │                   │   ├── StdDeque.h
│   │                   │   ├── StdList.h
│   │                   │   ├── StdVector.h
│   │                   │   └── details.h
│   │                   ├── SuperLUSupport/
│   │                   │   └── SuperLUSupport.h
│   │                   ├── UmfPackSupport/
│   │                   │   └── UmfPackSupport.h
│   │                   ├── misc/
│   │                   │   ├── Image.h
│   │                   │   ├── Kernel.h
│   │                   │   ├── RealSvd2x2.h
│   │                   │   ├── blas.h
│   │                   │   ├── lapack.h
│   │                   │   ├── lapacke.h
│   │                   │   └── lapacke_mangling.h
│   │                   └── plugins/
│   │                       ├── ArrayCwiseBinaryOps.h
│   │                       ├── ArrayCwiseUnaryOps.h
│   │                       ├── BlockMethods.h
│   │                       ├── CommonCwiseBinaryOps.h
│   │                       ├── CommonCwiseUnaryOps.h
│   │                       ├── IndexedViewMethods.h
│   │                       ├── MatrixCwiseBinaryOps.h
│   │                       ├── MatrixCwiseUnaryOps.h
│   │                       └── ReshapedMethods.h
│   ├── utils.py
│   ├── viewer.py
│   └── world.py
├── examples/
│   ├── README.md
│   ├── bo/
│   │   ├── optimizer.py
│   │   └── run.py
│   ├── cppn_neat/
│   │   ├── neat.cfg
│   │   ├── parallel.py
│   │   ├── population.py
│   │   └── run.py
│   ├── ga/
│   │   └── run.py
│   ├── gym_test.py
│   ├── make_gifs.py
│   ├── ppo/
│   │   ├── args.py
│   │   ├── callback.py
│   │   ├── eval.py
│   │   ├── group_ppo.py
│   │   └── run.py
│   ├── run_bo.py
│   ├── run_cppn_neat.py
│   ├── run_ga.py
│   ├── run_group_ppo.py
│   ├── run_ppo.py
│   ├── utils/
│   │   ├── algo_utils.py
│   │   └── mp_group.py
│   ├── visualize.py
│   └── world_data/
│       ├── carry_bot.json
│       ├── simple_evironment.json
│       └── speed_bot.json
├── pyproject.toml
├── requirements-dev.txt
├── requirements.txt
├── setup.py
├── tests/
│   ├── pytest.ini
│   ├── requires_screen/
│   │   └── test_screen_render_modes.py
│   ├── screen_free/
│   │   ├── test_baseline_envs.py
│   │   ├── test_img_render_modes.py
│   │   └── test_utils.py
│   └── utils.py
└── tutorials/
    ├── README.md
    ├── basic_api.py
    ├── envs/
    │   ├── __init__.py
    │   └── simple_env.py
    ├── rendering_options.py
    ├── visualize_simple_env.py
    └── world_data/
        ├── simple_environment.json
        ├── simple_environment_with_robot.json
        └── simple_walker_env.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/workflows/test.yml
================================================
name: Test

on: [push]

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build_and_test:
    strategy:
      fail-fast: false
      matrix:
        os:
          - "ubuntu-latest"
        python:
          - "3.7"
          - "3.8"
          - "3.9"
          - "3.10"
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: true
      - name: Set up Python ${{ matrix.python }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python }}
      - name: Update deb repository
        run: sudo apt-get update
      - name: Install deb dependencies
        run: sudo apt-get install -y xorg-dev libglu1-mesa-dev libglew-dev xvfb
      - name: Install python dependencies
        run: pip install -r requirements-dev.txt
      - name: Cache python wheel packages
        uses: actions/cache@v3
        with:
          path: ~/.cache/pip
          key: wheel-cache-${{ hashFiles('requirements-dev.txt') }}
      - name: Install evolution gym
        run: pip install -e .
      - name: Run test
        run: xvfb-run python -m pytest -s -v -n auto -m lite
        working-directory: tests


================================================
FILE: .github/workflows/wheels.yml
================================================
name: Build

on: [push]

jobs:
  build_wheels:
    name: Build wheels on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          # Window 64 bit
          - os: windows-latest
            platform_id: win_amd64
          
          # Linux 64 bit
          - os: ubuntu-latest
            platform_id: manylinux_x86_64
            manylinux_image: manylinux_2_28

            # manylinux2014 dosen't work due to an issue in GLEW:
            # https://github.com/glfw/glfw/issues/2139
            # manylinux_image: manylinux2014

          # MacOS x86_64    # Deprecated, github actions no longer support macos-12
          # - os: macos-12
          #   platform_id: macosx_x86_64
            
          # MacOS arm64
          - os: macos-14
            platform_id: macosx_arm64

    steps:
      - uses: actions/checkout@v4
        with:
          submodules: true

      # Used to host cibuildwheel
      - uses: actions/setup-python@v5
        with:
            python-version: "3.8"

      - name: Install cibuildwheel
        run: python -m pip install cibuildwheel==2.19.0

      # Build wheels
      - name: Build wheels
        run: python -m cibuildwheel --output-dir wheelhouse
        # to supply options, put them in 'env', like:
        # env:
        #   CIBW_SOME_OPTION: value

      # Upload wheels
      - uses: actions/upload-artifact@v4
        with:
          name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
          path: ./wheelhouse/*.whl

================================================
FILE: .gitignore
================================================
evogym/simulator/.vs/
evogym/simulator/x64/
evogym/simulator/SimulatorCPP/x64/
old/
.vs/
.idea
.idea/
.vscode
*.vcxproj
*.vcxproj.*
*.sln
*.egg-info
dist/
build/
__pycache__/
examples/saved_data
examples/__pycache__
examples/api_planning.txt
evogym/__pycache__
evogym/envs/__pycache__
build_scripts
.DS_Store
exported/
req_ns.txt
backup/


================================================
FILE: .gitmodules
================================================
[submodule "examples/externals/pytorch_a2c_ppo_acktr_gail"]
	path = examples/externals/pytorch_a2c_ppo_acktr_gail
	url = https://github.com/ikostrikov/pytorch-a2c-ppo-acktr-gail.git
[submodule "evogym/simulator/externals/pybind11"]
	path = evogym/simulator/externals/pybind11
	url = https://github.com/pybind/pybind11
[submodule "evogym/simulator/externals/glfw"]
	path = evogym/simulator/externals/glfw
	url = https://github.com/glfw/glfw
[submodule "evogym/simulator/externals/glew"]
	path = evogym/simulator/externals/glew
	url = https://github.com/Perlmint/glew-cmake
[submodule "examples/externals/PyTorch-NEAT"]
	path = examples/externals/PyTorch-NEAT
	url = https://github.com/uber-research/PyTorch-NEAT


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2022 jagdeepsb

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: MANIFEST.in
================================================
graft evogym/simulator


================================================
FILE: README.md
================================================
# Evolution Gym

[![Build](https://github.com/EvolutionGym/evogym/actions/workflows/wheels.yml/badge.svg?branch=main)](https://github.com/EvolutionGym/evogym/actions/workflows/wheels.yml)
[![Test](https://github.com/EvolutionGym/evogym/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/EvolutionGym/evogym/actions/workflows/test.yml)

Evolution Gym is a large-scale benchmark for co-optimizing the design and control of soft robots. It provides a lightweight soft-body simulator wrapped with a gym-like interface for developing learning algorithms. EvoGym also includes a suite of 32 locomotion and manipulation tasks, detailed on our [website](https://evolutiongym.github.io/all-tasks). Task suite evaluations are described in our [NeurIPS 2021 paper](https://arxiv.org/pdf/2201.09863).


<br>
<p align="center">
  <a href="https://forms.gle/Rn1TwzYGuVSAPQKfA" target="_blank" style="text-decoration: none;">
    <img src="https://img.shields.io/badge/Get%20feature%20notifications-orange?style=for-the-badge&logo=tacobell&logoColor=black&color=fda158" alt="Get notified on releases">
  </a>
  <!-- &nbsp;&nbsp; -->
  <a href="https://forms.gle/vH5Ta7HtVVQb6GpR9" target="_blank" style="text-decoration: none;">
    <img src="https://img.shields.io/badge/Submit%20a%20feature%20request-blue?style=for-the-badge&logo=googleforms&logoColor=black&color=a3d7ff" alt="Submit a feature request">
  </a>
</p>



<!-- <p align="center">
  <a href="https://forms.gle/Rn1TwzYGuVSAPQKfA" target="_blank">
    <img src="https://img.shields.io/badge/🔔%20Get%20feature%20notifications-orange?style=for-the-badge&logoColor=black&color=ff8119" alt="Get notified on releases">
  </a>
  <a href="https://forms.gle/vH5Ta7HtVVQb6GpR9" target="_blank">
    <img src="https://img.shields.io/badge/Submit%20a%20feature%20request-blue?style=for-the-badge&logo=googleforms&logoColor=white&color=199cff" alt="Submit a feature request">
  </a>
</p> -->



> [!NOTE]
> **[06/25]** 90k+ robot structures and 2.5k+ robot policies from the original EvoGym paper are now [available for download with instructions](https://github.com/EvolutionGym/evogym-datasets)!

> [!NOTE]
> **[07/24]** EvoGym has been recently updated! TLDR: requirements have been modernized (gym/gymnasium, numpy, etc.), and the library is now pip-installable.

[//]: # (<img src="https://github.com/EvolutionGym/evogym/raw/main/images/teaser-low-res.gif" alt="teaser" width="800"/>)
![teaser](https://github.com/EvolutionGym/evogym/raw/main/images/teaser-low-res.gif)

# Installation

EvoGym supports python `3.7` to `3.10` on most operating systems:

```shell
pip install evogym --upgrade
```

<!-- > [!CAUTION]
> This doesn't work yet -- coming soon! For now, you can install from test pypi:
> ```shell
> pip install "numpy<2.0.0" gymnasium
> pip install -i https://test.pypi.org/simple/ evogym
> ``` -->

On **Linux** install the following packages (or equivalent):

```shell
sudo apt-get install xorg-dev libglu1-mesa-dev
```

## From Source

If your platform is not supported, you may alternatively build from source:

### Requirements

* Python 3
* Linux, macOS, or Windows with [Visual Studios 2017](https://visualstudio.microsoft.com/vs/older-downloads/) build tools.
* [CMake](https://cmake.org/download/)

Clone the repo and submodules:

```shell
git clone --recurse-submodules https://github.com/EvolutionGym/evogym.git
```

On **Linux only**:

```shell
sudo apt-get install xorg-dev libglu1-mesa-dev
```

Finally, to install `evogym`, run the following in the environment of your choice:

```shell
pip install -e .
```

## Test Installation

If you have the repo cloned, `cd` to the `examples` folder and run the following script:

```shell
python gym_test.py
```

Alternatively, you can run the following snippet:

```python
import gymnasium as gym
import evogym.envs
from evogym import sample_robot


if __name__ == '__main__':

    body, connections = sample_robot((5,5))
    env = gym.make('Walker-v0', body=body, render_mode='human')
    env.reset()

    while True:
        action = env.action_space.sample()
        ob, reward, terminated, truncated, info = env.step(action)

        if terminated or truncated:
            env.reset()

    env.close()
```

This script creates a random `5x5` robot in the `Walking-v0` environment. The robot is taking random actions. A window should open with a visualization of the environment -- kill the process from the terminal to close it.

## Known Issues

### Linux and Conda

Error message: `libGL error: MESA-LOADER: failed to open iris: /usr/lib/dri/iris_dri.so`

Fix: `conda install -c conda-forge libstdcxx-ng`

# Usage

In addition to the resources below, you can find API documentation on our [website](https://evolutiongym.github.io/documentation).

## Tutorials

You can find tutorials for getting started with the codebase on our [website](https://evolutiongym.github.io/tutorials). Completed code from all tutorials is also available in the `tutorials` folder, along with a `README`. Tutorials are included for:
- Using the [evogym API](https://evolutiongym.github.io/tutorials/basic-api.html)
- Making a [custom evogym environment](https://evolutiongym.github.io/tutorials/new-env.html)
- Supported [rendering options](https://github.com/EvolutionGym/evogym/blob/main/tutorials/rendering_options.py)

## Examples

To run co-design and control optimization experiments in EvoGym, please see the `examples` folder and its `README`. Included are scripts for:
- Running PPO
- Running a Genetic Algorithm
- Running Bayesian Optimization
- Running CPPN-NEAT
- Visualizing results
- Saving results as gifs

Make sure you clone the repo with submodules:

```shell
git clone --recurse-submodules https://github.com/EvolutionGym/evogym.git
```

Install the necessary python requirements:
```shell
pip install -r requirements.txt
```

## Design Tool

The Design Tool provides a gui for creating Evolution Gym environments. Please see [this repo](https://github.com/EvolutionGym/evogym-design-tool).

[//]: # (<img src="https://github.com/EvolutionGym/evogym/raw/main/images/design-tool.gif" alt="design-tool" width="800"/>)
![design-tool](https://github.com/EvolutionGym/evogym/raw/main/images/design-tool.gif)

## Headless Mode

EvoGym runs in headless mode by default, and avoids initializing rendering libraries until necessary. If using a server without rendering capabilities, ensure that:

```python
# Envs are created with render_mode=None (None by default)
env = gym.make('Walker-v0', body=body, render_mode=None)
```

```python
# If using the low-level api, do not call EvoViewer.render()
world = EvoWorld.from_json(os.path.join('world_data', 'simple_environment.json'))
sim = EvoSim(world)
viewer = EvoViewer(sim)
viewer.render('img') # <-- Rendering libraries are initialized; do not call this
```

# Datasets
We've released two datasets of robot structures and policies from the original EvoGym paper. Instructions for downloading and using these datasets are available in the [evogym-datasets](https://github.com/EvolutionGym/evogym-datasets) repo. All datasets are hosted on [huggingface](https://huggingface.co/EvoGym).

- [EvoGym/robots](https://huggingface.co/datasets/EvoGym/robots): 90k+ annotated robot structures
- [EvoGym/robot-with-policies](https://huggingface.co/datasets/EvoGym/robots-with-policies): 2.5k+ annotated robot structures and policies

# Dev

Install the repo with submodules:

```shell
git clone --recurse-submodules https://github.com/EvolutionGym/evogym.git
```

Install the necessary python requirements. You will additionally need to install the dev requirements:
```shell
pip install -r requirements.txt
pip install -r requirements-dev.txt
```

## Run Tests

From within the `tests` directory run the full test suite:

```shell
cd tests
pytest -s -v -n auto
```

Or the lite test suite:


```shell
cd tests
pytest -s -v -n auto -m lite
```

# Citation

If you find our repository helpful to your research, please cite our paper:

```
@article{bhatia2021evolution,
  title={Evolution gym: A large-scale benchmark for evolving soft robots},
  author={Bhatia, Jagdeep and Jackson, Holly and Tian, Yunsheng and Xu, Jie and Matusik, Wojciech},
  journal={Advances in Neural Information Processing Systems},
  volume={34},
  year={2021}
}
```


================================================
FILE: environment.yml
================================================
name: evogym
channels:
  - defaults
dependencies:
  - python=3.7.11
  - pip
  - pip:
    - glfw==2.5.0
    - gpy==1.10.0
    - git+https://github.com/yunshengtian/neat-python@2762ab630838520ca6c03a866e8a158f592b0370
    - gym==0.22.0
    - h5py==3.6.0
    - imageio==2.14.1
    - matplotlib==3.5.1
    - git+https://github.com/yunshengtian/GPyOpt@5fc1188ffdefea9a3bc7964a9414d4922603e904
    - numpy==1.21.5
    - opencv-python==4.5.5.62
    - pillow==9.0.0
    - pybind11==2.9.0
    - pygifsicle==1.0.5
    - pyopengl==3.1.5
    - pyopengl-accelerate==3.1.5
    - torch==1.10.2
    - ttkbootstrap==1.5.1
    - typing==3.7.4.3



================================================
FILE: evogym/__init__.py
================================================
from evogym.world import EvoWorld, WorldObject
from evogym.sim import EvoSim
from evogym.viewer import EvoViewer
from evogym.utils import *

================================================
FILE: evogym/envs/__init__.py
================================================

from evogym.envs.base import *
from evogym.envs.balance import *
from evogym.envs.manipulate import *
from evogym.envs.climb import *
from evogym.envs.flip import *
from evogym.envs.jump import *
from evogym.envs.multi_goal import *
from evogym.envs.change_shape import *
from evogym.envs.traverse import *
from evogym.envs.walk import *

from gymnasium.envs.registration import register

## SIMPLE ##
register(
    id = 'Walker-v0',
    entry_point = 'evogym.envs.walk:WalkingFlat',
    max_episode_steps=500
)

register(
    id = 'BridgeWalker-v0',
    entry_point = 'evogym.envs.walk:SoftBridge',
    max_episode_steps=500
)

register(
    id = 'CaveCrawler-v0',
    entry_point = 'evogym.envs.walk:Duck',
    max_episode_steps=1000
)

register(
    id = 'Jumper-v0',
    entry_point = 'evogym.envs.jump:StationaryJump',
    max_episode_steps=500
)

register(
    id = 'Flipper-v0',
    entry_point = 'evogym.envs.flip:Flipping',
    max_episode_steps=600
)

register(
    id = 'Balancer-v0',
    entry_point = 'evogym.envs.balance:Balance',
    max_episode_steps=600
)

register(
    id = 'Balancer-v1',
    entry_point = 'evogym.envs.balance:BalanceJump',
    max_episode_steps=600
)

register(
    id = 'UpStepper-v0',
    entry_point = 'evogym.envs.traverse:StepsUp',
    max_episode_steps=600
)

register(
    id = 'DownStepper-v0',
    entry_point = 'evogym.envs.traverse:StepsDown',
    max_episode_steps=500
)

register(
    id = 'ObstacleTraverser-v0',
    entry_point = 'evogym.envs.traverse:WalkingBumpy',
    max_episode_steps=1000
)

register(
    id = 'ObstacleTraverser-v1',
    entry_point = 'evogym.envs.traverse:WalkingBumpy2',
    max_episode_steps=1000
)

register(
    id = 'Hurdler-v0',
    entry_point = 'evogym.envs.traverse:VerticalBarrier',
    max_episode_steps=1000
)

register(
    id = 'GapJumper-v0',
    entry_point = 'evogym.envs.traverse:Gaps',
    max_episode_steps=1000
)

register(
    id = 'PlatformJumper-v0',
    entry_point = 'evogym.envs.traverse:FloatingPlatform',
    max_episode_steps=1000
)

register(
    id = 'Traverser-v0',
    entry_point = 'evogym.envs.traverse:BlockSoup',
    max_episode_steps=600
)

## PACKAGE ##
register(
    id = 'Lifter-v0',
    entry_point = 'evogym.envs.manipulate:LiftSmallRect',
    max_episode_steps=300
)

register(
    id = 'Carrier-v0',
    entry_point = 'evogym.envs.manipulate:CarrySmallRect',
    max_episode_steps=500
)

register(
    id = 'Carrier-v1',
    entry_point = 'evogym.envs.manipulate:CarrySmallRectToTable',
    max_episode_steps=1000
)

register(
    id = 'Pusher-v0',
    entry_point = 'evogym.envs.manipulate:PushSmallRect',
    max_episode_steps=500
)

register(
    id = 'Pusher-v1',
    entry_point = 'evogym.envs.manipulate:PushSmallRectOnOppositeSide',
    max_episode_steps=600
)

register(
    id = 'BeamToppler-v0',
    entry_point = 'evogym.envs.manipulate:ToppleBeam',
    max_episode_steps=1000
)

register(
    id = 'BeamSlider-v0',
    entry_point = 'evogym.envs.manipulate:SlideBeam',
    max_episode_steps=1000
)

register(
    id = 'Thrower-v0',
    entry_point = 'evogym.envs.manipulate:ThrowSmallRect',
    max_episode_steps=300
)

register(
    id = 'Catcher-v0',
    entry_point = 'evogym.envs.manipulate:CatchSmallRect',
    max_episode_steps=400
)

### SHAPE ###
register(
    id = 'AreaMaximizer-v0',
    entry_point = 'evogym.envs.change_shape:MaximizeShape',
    max_episode_steps=600
)

register(
    id = 'AreaMinimizer-v0',
    entry_point = 'evogym.envs.change_shape:MinimizeShape',
    max_episode_steps=600
)

register(
    id = 'WingspanMazimizer-v0',
    entry_point = 'evogym.envs.change_shape:MaximizeXShape',
    max_episode_steps=600
)

register(
    id = 'HeightMaximizer-v0',
    entry_point = 'evogym.envs.change_shape:MaximizeYShape',
    max_episode_steps=500
)

### CLIMB ###
register(
    id = 'Climber-v0',
    entry_point = 'evogym.envs.climb:Climb0',
    max_episode_steps=400
)

register(
    id = 'Climber-v1',
    entry_point = 'evogym.envs.climb:Climb1',
    max_episode_steps=600
)

register(
    id = 'Climber-v2',
    entry_point = 'evogym.envs.climb:Climb2',
    max_episode_steps=1000
)

### MULTI GOAL ###
register(
    id = 'BidirectionalWalker-v0',
    entry_point = 'evogym.envs.multi_goal:BiWalk',
    max_episode_steps=1000
)

================================================
FILE: evogym/envs/balance.py
================================================
import gymnasium as gym
from gymnasium import error, spaces
from gymnasium import utils
from gymnasium.utils import seeding

from evogym import *
from evogym.envs import BenchmarkBase

import random
import math
import numpy as np
import os
from typing import Dict, Any, Optional

class Balance(BenchmarkBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Balancer-v0.json'))
        self.world.add_from_array('robot', body, 15, 3, connections=connections)

        # init sim
        BenchmarkBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(1 + num_robot_points,), dtype=float)

    def get_obs(self, pos_final):
        com_final = np.mean(pos_final, 1)

        return np.array([
            17*self.VOXEL_SIZE - com_final[0],
            5.5*self.VOXEL_SIZE - com_final[1],
        ])

    def get_reward(self, pos_init, pos_final):
        com_init = np.mean(pos_init, 1)
        com_final = np.mean(pos_final, 1)
        
        reward = abs(17*self.VOXEL_SIZE - com_init[0]) - abs(17*self.VOXEL_SIZE - com_final[0])
        reward += (abs(5.0*self.VOXEL_SIZE - com_init[1]) - abs(5.0*self.VOXEL_SIZE - com_final[1]))
        return reward

    def step(self, action):

        # collect pre step information
        pos_1 = self.object_pos_at_time(self.get_time(), "robot")
        
        # step
        done = super().step({'robot': action})

        # collect post step information
        pos_2 = self.object_pos_at_time(self.get_time(), "robot")
        ort = self.object_orientation_at_time(self.get_time(), "robot")

        # observation
        obs = np.concatenate((
            np.array([ort]),
            self.get_relative_pos_obs("robot"),
            ))

        # compute reward
        reward = self.get_reward(pos_1, pos_2)
        
        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0
        
        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]:
        
        super().reset(seed=seed, options=options)

        # observation
        obs = np.concatenate((
            self.get_ort_obs("robot"),
            self.get_relative_pos_obs("robot"),
            ))

        return obs, {}

        
class BalanceJump(BenchmarkBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Balancer-v1.json'))
        self.world.add_from_array('robot', body, 10, 1, connections=connections)

        # init sim
        BenchmarkBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(1 + num_robot_points,), dtype=float)

    def get_obs(self, pos_final):
        com_final = np.mean(pos_final, 1)

        return np.array([
            17.5*self.VOXEL_SIZE - com_final[0],
            6*self.VOXEL_SIZE - com_final[1],
        ])

    def get_reward(self, pos_init, pos_final):
        com_init = np.mean(pos_init, 1)
        com_final = np.mean(pos_final, 1)
        
        reward = abs(17.5*self.VOXEL_SIZE - com_init[0]) - abs(17.5*self.VOXEL_SIZE - com_final[0])
        reward += (abs(6*self.VOXEL_SIZE - com_init[1]) - abs(6*self.VOXEL_SIZE - com_final[1]))

        return reward

    def step(self, action):

        # collect pre step information
        pos_1 = self.object_pos_at_time(self.get_time(), "robot")
        
        # step
        done = super().step({'robot': action})

        # collect post step information
        pos_2 = self.object_pos_at_time(self.get_time(), "robot")
        ort = self.object_orientation_at_time(self.get_time(), "robot")

        # observation
        obs = np.concatenate((
            np.array([ort]),
            self.get_relative_pos_obs("robot"),
            ))

        # compute reward
        reward = self.get_reward(pos_1, pos_2)
        
        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0
        
        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]:
        
        super().reset(seed=seed, options=options)

        # observation
        obs = np.concatenate((
            self.get_ort_obs("robot"),
            self.get_relative_pos_obs("robot"),
            ))

        return obs, {}

================================================
FILE: evogym/envs/base.py
================================================

import gymnasium as gym
from gymnasium import error, spaces
from gymnasium import utils
from gymnasium.utils import seeding

from typing import Dict, Optional, List, Any
from evogym import *

import random
import math
import pkg_resources
import numpy as np
import os

class EvoGymBase(gym.Env):
    """
    Base class for all Evolution Gym environments.

    Args:
        world (EvoWorld): object specifying the voxel layout of the environment.
        render_mode (Optional[str]): values of `screen` and `human` will automatically render to a debug window every `step()`. If set to `img` or `rgb_array`, `render()` will return an image array. No rendering by default (default = None)
        render_options (Optional[Dict[str, Any]]): dictionary of rendering options. See EvoGymBase.render() for details (default = None)
    """
    
    metadata = {'render_modes': ['screen', 'human', 'img', 'rgb_array']}
    
    def __init__(
        self,
        world: EvoWorld,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ) -> None:

        # sim
        self._sim = EvoSim(world)
        self._default_viewer = EvoViewer(self._sim)
        
        # render
        self._render_mode = render_mode
        self._render_options = render_options

    def step(self, action: Dict[str, np.ndarray]) -> bool:
        """
        Step the environment by running physics computations.

        Args:
            action (Dict[str, np.ndarray]): dictionary mapping robot names to actions. Actions are `(n,)` arrays, where `n` is the number of actuators in the target robot.
            
        Returns:
            bool: whether or not the simulation has reached an unstable state and cannot be recovered (`True` = unstable).
        """
        #step
        for robot_name, a in action.items():
            a = np.clip(a, 0.6, 1.6)
            a[abs(a) < 1e-8] = 0
            self._sim.set_action(robot_name, a)
        done = self._sim.step()
        
        if self._render_mode == 'human' or self._render_mode == 'screen':
            self.render()

        return done

    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> None:
        """
        Reset the simulation to the initial state.
        """
        self._sim.reset()

    @property
    def sim(self,) -> EvoSim:
        """
        Returns the environment's simulation.

        Returns:
            EvoSim: simulation object to return.
        """
        return self._sim

    @property
    def default_viewer(self,) -> EvoViewer:
        """
        Returns the environment's default viewer.

        Returns:
            EvoSim: viewer object to return.
        """
        return self._default_viewer
    
    def render(
        self,
    ) -> Optional[np.ndarray]:
        """
        Render the simulation according to the `render_mode` and `render_options` specified at initialization.
        The following rendering options are available as key-value pairs in the `render_options` dictionary:
        - `verbose` (bool): whether or not to print the rendering speed (rps) every second. (default = False)
        - `hide_background` (bool): whether or not to render the cream-colored background. If shut off background will be white. (default = False)
        - `hide_grid` (bool): whether or not to render the grid. (default = False)
        - `hide_edges` (bool): whether or not to render edges around all objects. (default = False)
        - `hide_voxels` (bool): whether or not to render voxels. (default = False)
        
        Returns:
            Optional[np.ndarray]: if `mode` is set to `img` or `rgb_array`, will return an image array. Otherwise, will return `None`.
        """
        mode, render_options = self._render_mode, {} if self._render_options is None else self._render_options
        if mode is None:
            return None
        
        verbose = render_options.get('verbose', False)
        hide_background = render_options.get('hide_background', False)
        hide_grid = render_options.get('hide_grid', False)
        hide_edges = render_options.get('hide_edges', False)
        hide_voxels = render_options.get('hide_voxels', False)
        
        return self.default_viewer.render(mode, verbose, hide_background, hide_grid, hide_edges, hide_voxels)

    def close(self) -> None:
        """
        Close the simulation.
        """
        self.default_viewer.close()
        del self._default_viewer
        del self._sim

    def get_actuator_indices(self, robot_name: str) -> np.ndarray:
        """
        Returns the voxel indices a target robot's actuators in the environment's simulation.

        Args:
            robot_name (str): name of robot.
        
        Returns:
            np.ndarray: `(n,)` array of actuator indices, where `n` is the number of actuators.
        """
        return self._sim.get_actuator_indices(robot_name)

    def get_dim_action_space(self, robot_name: str) -> int:
        """
        Returns the number of actuators for a target robot in the environment's simulation.

        Args:
            robot_name (str): name of robot.
        
        Returns:
            int: number of actuators.
        """
        return self._sim.get_dim_action_space(robot_name)

    def get_time(self, ) -> int:
        """
        Returns the current time as defined in the environment's simulator. Time starts at `0` and is incremented each time the environment steps. Time resets to `0` when the environment is reset.

        Returns:
            int: the current time.
        """
        return self._sim.get_time()

    def pos_at_time(self, time: int) -> np.ndarray:
        """
        Returns positions of all point-masses in the environment's simulation at time `time`. Use `EvoGymBase.get_time()` to get current measurements.

        Args:
            time (int): time at which to return measurements.
        
        Returns:
            np.ndarray: `(2, n)` array of measurements, where `n` is the number of points in the environment's simulation.
        """
        return self._sim.pos_at_time(time)

    def vel_at_time(self, time: int) -> np.ndarray:
        """
        Returns velocities of all point-masses in the environment's simulation at time `time`. Use `EvoGymBase.get_time()` to get current measurements.

        Args:
            time (int): time at which to return measurements.
        
        Returns:
            np.ndarray: `(2, n)` array of measurements, where `n` is the number of points in the environment's simulation.
        """
        return self._sim.vel_at_time(time)
        
    def object_pos_at_time(self, time: int, object_name: str) -> np.ndarray:
        """
        Returns positions of all point-masses in a target object at time `time`. Use `EvoGymBase.get_time()` to get current measurements.

        Args:
            time (int): time at which to return measurements.
            object_name (str): name of object
        
        Returns:
            np.ndarray: `(2, n)` array of measurements, where `n` is the number of point-masses in the target object.
        """
        return self._sim.object_pos_at_time(time, object_name)

    def object_vel_at_time(self, time: int, object_name: str) -> np.ndarray:
        """
        Returns velocities of all point-masses in a target object at time `time`. Use `EvoGymBase.get_time()` to get current measurements.

        Args:
            time (int): time at which to return measurements.
            object_name (str): name of object
        
        Returns:
            np.ndarray: `(2, n)` array of measurements, where `n` is the number of point-masses in the target object.
        """
        return self._sim.object_vel_at_time(time, object_name)

    def object_orientation_at_time(self, time: int, object_name: str) -> float:
        """
        Returns an estimate of the orientation of an object at time `time`. Use `EvoGymBase.get_time()` to get current measurements.

        Args:
            time (int): time at which to return measurement.
            object_name (str): name of object
        
        Returns:
            float: orientation with respect to x-axis in radians (increasing counter-clockwise) from the range [0, 2π].
        """
        return self._sim.object_orientation_at_time(time, object_name)  

    def get_pos_com_obs(self, object_name: str) -> np.ndarray:
        """
        Observation helper-function. Computes the position of the center of mass of a target object by averaging the positions of the object's point masses.

        Args:
            object_name (str): name of object
        
        Returns:
            np.ndarray: `(2,)` array of the position of the center of mass.
        """
        object_points_pos = self._sim.object_pos_at_time(self.get_time(), object_name)
        object_pos_com = np.mean(object_points_pos, axis=1)
        return np.array([object_pos_com[0], object_pos_com[1]])

    def get_vel_com_obs(self, object_name: str) -> np.ndarray:
        """
        Observation helper-function. Computes the velocity of the center of mass of a target object by averaging the velocities of the object's point masses.

        Args:
            object_name (str): name of object
        
        Returns:
            np.ndarray: `(2,)` array of the velocity of the center of mass.
        """
        object_points_vel = self._sim.object_vel_at_time(self.get_time(), object_name)
        object_vel_com = np.mean(object_points_vel, axis=1)
        return np.array([object_vel_com[0], object_vel_com[1]])

    def get_relative_pos_obs(self, object_name: str):
        """
        Observation helper-function. Computes the positions of a target object's point masses relative to their center of mass.

        Args:
            object_name (str): name of object
        
        Returns:
            np.ndarray: `(2n,)` array of positions, where `n` is the number of point masses.
        """
        object_points_pos = self._sim.object_pos_at_time(self.get_time(), object_name)
        object_pos_com = np.mean(object_points_pos, axis=1)
        return (object_points_pos-np.array([object_pos_com]).T).flatten()

    def get_ort_obs(self, object_name: str):
        """
        Observation helper-function. Returns the orientation of a target object.

        Args:
            object_name (str): name of object
        
        Returns:
            np.ndarray: `(1,)` array of the object's orientation.
        """
        return np.array([self.object_orientation_at_time(self.get_time(), object_name)])

    def get_floor_obs(
        self, 
        object_name: str, 
        terrain_list: List[str], 
        sight_dist: int, 
        sight_range: float = 5) -> np.ndarray:
        """
        Observation helper-function. Computes an observation describing the shape of the terrain below the target object. Specifically, for each voxel to the left and right of the target object's center of mass (along with the voxel containing the center of mass), the following observation is computed: min(y-distance in voxels to the nearest terrain object below the target object's center of mass, `sight_range`). Results are returned in a 1D numpy array.

        Args:
            object_name (str): name of target object.
            terrain_list (List[str]): names of objects to be considered terrain in the computation.
            sight_dist (int): number of voxels to the left and right of the target object's center of mass for which an observation should be returned.
            sight_range (float): the max number of voxels below the object that can be seen. (default = 5)
        
        Returns:
            np.ndarray: `(2 * sight_range + 1, )` array of distance observations.
        """
        
        object_points_pos = self._sim.object_pos_at_time(self.get_time(), object_name)
        object_pos_com = np.mean(object_points_pos, axis=1)
        
        if len(terrain_list) == 0:
            return None

        terrain_pos = self._sim.object_pos_at_time(self.get_time(), terrain_list[0])
        for i in range(1, len(terrain_list)):
            terrain_pos = np.concatenate((terrain_pos, self._sim.object_pos_at_time(self.get_time(), terrain_list[i])), axis = 1)

        right_mask = terrain_pos[0, :] > (object_pos_com[0] - (sight_dist+0.5))
        terrain_pos = terrain_pos[:, right_mask]

        left_mask = terrain_pos[0, :] < (object_pos_com[0] + (sight_dist+0.5))
        terrain_pos = terrain_pos[:, left_mask]

        bot_mask = terrain_pos[1, :] < (object_pos_com[1])
        terrain_pos = terrain_pos[:, bot_mask]

        elevations = np.zeros((sight_dist*2+1)) - sight_range + object_pos_com[1]
        for i in range(-sight_dist, sight_dist+1):
            less_than_mask = terrain_pos[0, :] > (object_pos_com[0] + (i-0.5))
            greater_than_mask = terrain_pos[0, :] < (object_pos_com[0] + (i+0.5))
            try:
                max_elevation = np.max(terrain_pos[1, (less_than_mask & greater_than_mask)])
                elevations[i+sight_dist] = max_elevation
            except:
                pass

        elevations = object_pos_com[1] - elevations
        elevations = np.clip(elevations, 0, sight_range)

        return elevations

    def get_ceil_obs(
        self, 
        object_name: str, 
        terrain_list: List[str], 
        sight_dist: int, 
        sight_range: float = 5) -> np.ndarray:
        """
        Observation helper-function. Computes an observation describing the shape of the terrain above the target object. Specifically, for each voxel to the left and right of the target object's center of mass (along with the voxel containing the center of mass), the following observation is computed: min(y-distance in voxels to the nearest terrain object above the target object's center of mass, `sight_range`). Results are returned in a 1D numpy array.

        Args:
            object_name (str): name of target object.
            terrain_list (List[str]): names of objects to be considered terrain in the computation.
            sight_dist (int): number of voxels to the left and right of the target object's center of mass for which an observation should be returned.
            sight_range (float): the max number of voxels above the object that can be seen. (default = 5)
        
        Returns:
            np.ndarray: `(2 * sight_range + 1, )` array of distance observations.
        """
        object_points_pos = self._sim.object_pos_at_time(self.get_time(), object_name)
        object_pos_com = np.mean(object_points_pos, axis=1)
        
        if len(terrain_list) == 0:
            return None

        terrain_pos = self._sim.object_pos_at_time(self.get_time(), terrain_list[0])
        for i in range(1, len(terrain_list)):
            terrain_pos = np.concatenate((terrain_pos, self._sim.object_pos_at_time(self.get_time(), terrain_list[i])), axis = 1)

        right_mask = terrain_pos[0, :] > (object_pos_com[0] - (sight_dist+0.5))
        terrain_pos = terrain_pos[:, right_mask]

        left_mask = terrain_pos[0, :] < (object_pos_com[0] + (sight_dist+0.5))
        terrain_pos = terrain_pos[:, left_mask]

        bot_mask = terrain_pos[1, :] > (object_pos_com[1])
        terrain_pos = terrain_pos[:, bot_mask]

        elevations = np.zeros((sight_dist*2+1)) + sight_range + object_pos_com[1]
        for i in range(-sight_dist, sight_dist+1):
            less_than_mask = terrain_pos[0, :] > (object_pos_com[0] + (i-0.5))
            greater_than_mask = terrain_pos[0, :] < (object_pos_com[0] + (i+0.5))
            try:
                max_elevation = np.min(terrain_pos[1, (less_than_mask & greater_than_mask)])
                elevations[i+sight_dist] = max_elevation
            except:
                pass

        elevations =  elevations - object_pos_com[1]
        elevations = np.clip(elevations, 0, sight_range)

        return elevations

class BenchmarkBase(EvoGymBase):

    DATA_PATH = pkg_resources.resource_filename('evogym.envs', os.path.join('sim_files'))
    VOXEL_SIZE = 0.1

    def __init__(
        self,
        world: EvoWorld,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        EvoGymBase.__init__(self, world=world, render_mode=render_mode, render_options=render_options)
        self.default_viewer.track_objects('robot')
    
    def pos_at_time(self, time):
        return super().pos_at_time(time)*self.VOXEL_SIZE

    def vel_at_time(self, time):
        return super().vel_at_time(time)*self.VOXEL_SIZE
        
    def object_pos_at_time(self, time, object_name):
        return super().object_pos_at_time(time, object_name)*self.VOXEL_SIZE

    def object_vel_at_time(self, time, object_name):
        return super().object_vel_at_time(time, object_name)*self.VOXEL_SIZE

    def get_pos_com_obs(self, object_name):
        return super().get_pos_com_obs(object_name)*self.VOXEL_SIZE

    def get_vel_com_obs(self, object_name):
        temp = super().get_vel_com_obs(object_name)*self.VOXEL_SIZE
        # print(f'child says super vel obs: {super().get_vel_com_obs(object_name)}\n')
        # print(f'vel obs: {temp}\n\n')
        return temp

    def get_relative_pos_obs(self, object_name):
        return super().get_relative_pos_obs(object_name)*self.VOXEL_SIZE

    def get_floor_obs(self, object_name, terrain_list, sight_dist, sight_range = 5):
        return super().get_floor_obs(object_name, terrain_list, sight_dist, sight_range)*self.VOXEL_SIZE

    def get_ceil_obs(self, object_name, terrain_list, sight_dist, sight_range = 5):
        return super().get_ceil_obs(object_name, terrain_list, sight_dist, sight_range)*self.VOXEL_SIZE

================================================
FILE: evogym/envs/change_shape.py
================================================
import gymnasium as gym
from gymnasium import error, spaces
from gymnasium import utils
from gymnasium.utils import seeding

from evogym import *
from evogym.envs import BenchmarkBase

import random
from math import *
import numpy as np
import os
from typing import Dict, Any, Optional

class ShapeBase(BenchmarkBase):
    
    def __init__(
        self,
        world: EvoWorld,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        super().__init__(world=world, render_mode=render_mode, render_options=render_options)

    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]:
        
        super().reset(seed=seed, options=options)
        
        # observation
        obs = np.concatenate((
            self.get_relative_pos_obs("robot"),
            ))

        return obs, {}

    ### ----------------------------------------------------------------------

    # This section of code is modified from the following author 
    # from https://github.com/RodolfoFerro/ConvexHull

    # Author: Rodolfo Ferro 
    # Mail: ferro@cimat.mx
    # Script: Compute the Convex Hull of a set of points using the Graham Scan
    # Function to know if we have a CCW turn
    def CCW(self, p1, p2, p3):
        if (p3[1]-p1[1])*(p2[0]-p1[0]) >= (p2[1]-p1[1])*(p3[0]-p1[0]):
            return True
        return False

    # Main function:
    def jarvis_march(self, S):
        n = len(S)
        P = [None] * n
        l = np.where(S[:,0] == np.min(S[:,0]))
        pointOnHull = S[l[0][0]]
        i = 0
        while True:
            P[i] = pointOnHull
            endpoint = S[0]
            for j in range(1,n):
                if (endpoint[0] == pointOnHull[0] and endpoint[1] == pointOnHull[1]) or not self.CCW(S[j],P[i],endpoint):
                    endpoint = S[j]
            i = i + 1
            pointOnHull = endpoint
            if endpoint[0] == P[0][0] and endpoint[1] == P[0][1]:
                break
        for i in range(n):
            if P[-1] is None:
                del P[-1]
        return np.array(P)

    ### ----------------------------------------------------------------------

    def convex_poly_area(self, pts_cw):
        area = 0
        for i in range(len(pts_cw)):
            i_1 = i + 1
            if i_1 >= len(pts_cw):
                i_1 = 0
            area += (pts_cw[i,0] * pts_cw[i_1,1] - pts_cw[i_1,0] * pts_cw[i,1])
        return 0.5 * area


class MaximizeShape(ShapeBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'ShapeChange.json'))
        self.world.add_from_array('robot', body, 7, 1, connections=connections)

        # init sim
        ShapeBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(num_robot_points,), dtype=float)

    def step(self, action):

        # collect pre step information
        robot_pos_init = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")

        # observation
        obs = np.concatenate((
            self.get_relative_pos_obs("robot"),
            ))
       
        # compute reward
        reward = self.get_reward(robot_pos_init, robot_pos_final)
        
        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}
    
    def get_reward(self, robot_pos_init, robot_pos_final):

        # find convex hull of initial state 
        convex_hull_init = self.jarvis_march(np.transpose(robot_pos_init))
        area_init = self.convex_poly_area(convex_hull_init)

        # find convex of final state
        convex_hull_final = self.jarvis_march(np.transpose(robot_pos_final))
        area_final = self.convex_poly_area(convex_hull_final)
        
        reward = (area_final - area_init) * 10
    
        return reward

class MinimizeShape(ShapeBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'ShapeChange.json'))
        self.world.add_from_array('robot', body, 7, 1, connections=connections)

        # init sim
        ShapeBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(num_robot_points,), dtype=float)

    def step(self, action):

        # collect pre step information
        robot_pos_init = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")

        # observation
        obs = np.concatenate((
            self.get_relative_pos_obs("robot"),
            ))
       
        # compute reward
        reward = self.get_reward(robot_pos_init, robot_pos_final)
        
        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

    def get_reward(self, robot_pos_init, robot_pos_final):

        # find convex hull of initial state 
        convex_hull_init = self.jarvis_march(np.transpose(robot_pos_init))
        area_init = self.convex_poly_area(convex_hull_init)

        # find convex of final state
        convex_hull_final = self.jarvis_march(np.transpose(robot_pos_final))
        area_final = self.convex_poly_area(convex_hull_final)
        
        reward = (area_init - area_final) * 10
    
        return reward

class MaximizeXShape(ShapeBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'ShapeChange.json'))
        self.world.add_from_array('robot', body, 7, 1, connections=connections)

        # init sim
        ShapeBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(num_robot_points,), dtype=float)

    def step(self, action):

        # collect pre step information
        robot_pos_init = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")

        # observation
        obs = np.concatenate((
            self.get_relative_pos_obs("robot"),
            ))
       
        # compute reward
        reward = self.get_reward(robot_pos_init, robot_pos_final)
        
        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}
    
    def get_reward(self, robot_pos_init, robot_pos_final):
        
        robot_min_pos_init = np.min(robot_pos_init, axis=1)
        robot_max_pos_init = np.max(robot_pos_init, axis=1)
        
        robot_min_pos_final = np.min(robot_pos_final, axis=1)
        robot_max_pos_final = np.max(robot_pos_final, axis=1)

        span_final = (robot_max_pos_final[0] - robot_min_pos_final[0]) 
        span_initial = (robot_max_pos_init[0] - robot_min_pos_init[0]) 
        
        reward = (span_final - span_initial)
    
        return reward

class MaximizeYShape(ShapeBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'ShapeChange.json'))
        self.world.add_from_array('robot', body, 7, 1, connections=connections)

        # init sim
        ShapeBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(num_robot_points,), dtype=float)

    def step(self, action):

        # collect pre step information
        robot_pos_init = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")

        # observation
        obs = np.concatenate((
            self.get_relative_pos_obs("robot"),
            ))
       
        # compute reward
        reward = self.get_reward(robot_pos_init, robot_pos_final)
        
        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}
    
    def get_reward(self, robot_pos_init, robot_pos_final):
        
        robot_min_pos_init = np.min(robot_pos_init, axis=1)
        robot_max_pos_init = np.max(robot_pos_init, axis=1)
        
        robot_min_pos_final = np.min(robot_pos_final, axis=1)
        robot_max_pos_final = np.max(robot_pos_final, axis=1)

        span_final = (robot_max_pos_final[1] - robot_min_pos_final[1]) 
        span_initial = (robot_max_pos_init[1] - robot_min_pos_init[1]) 
        
        reward = (span_final - span_initial)
    
        return reward



================================================
FILE: evogym/envs/climb.py
================================================
import gymnasium as gym
from gymnasium import error, spaces
from gymnasium import utils
from gymnasium.utils import seeding

from evogym import *
from evogym.envs import BenchmarkBase

import random
import math
import numpy as np
import os
from typing import Dict, Any, Optional

class ClimbBase(BenchmarkBase):
    
    def __init__(
        self,
        world: EvoWorld,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        super().__init__(world=world, render_mode=render_mode, render_options=render_options)

    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]:
        
        super().reset(seed=seed, options=options)

        # observation
        obs = np.concatenate((
            self.get_vel_com_obs("robot"),
            self.get_relative_pos_obs("robot"),
            ))

        return obs, {}


class Climb0(ClimbBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Climber-v0.json'))
        self.world.add_from_array('robot', body, 1, 1, connections=connections)

        # init sim
        ClimbBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + num_robot_points,), dtype=float)

    def step(self, action):

        # collect pre step information
        pos_1 = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        pos_2 = self.object_pos_at_time(self.get_time(), "robot")

        obs = np.concatenate((
            self.get_vel_com_obs("robot"),
            self.get_relative_pos_obs("robot"),
            ))

        # compute reward
        com_1 = np.mean(pos_1, 1)
        com_2 = np.mean(pos_2, 1)
        reward = (com_2[1] - com_1[1])

        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # check termination condition
        if com_2[1] > (86)*self.VOXEL_SIZE:
            done = True
            reward += 1.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

class Climb1(ClimbBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Climber-v1.json'))
        self.world.add_from_array('robot', body, 1, 1, connections=connections)

        # init sim
        ClimbBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + num_robot_points,), dtype=float)

    def step(self, action):

        # collect pre step information
        pos_1 = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        pos_2 = self.object_pos_at_time(self.get_time(), "robot")

        obs = np.concatenate((
            self.get_vel_com_obs("robot"),
            self.get_relative_pos_obs("robot"),
            ))

        # compute reward
        com_1 = np.mean(pos_1, 1)
        com_2 = np.mean(pos_2, 1)
        reward = (com_2[1] - com_1[1])
        
        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # check termination condition
        if com_2[1] > (65)*self.VOXEL_SIZE:
            done = True
            reward += 1.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

class Climb2(ClimbBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Climber-v2.json'))
        self.world.add_from_array('robot', body, 1, 1, connections=connections)

        # init sim
        ClimbBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size
        self.sight_dist = 3

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=float)

    def step(self, action):

        # collect pre step information
        pos_1 = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        pos_2 = self.object_pos_at_time(self.get_time(), "robot")

        # observation
        obs = np.concatenate((
            self.get_vel_com_obs("robot"),
            self.get_ort_obs("robot"),
            self.get_relative_pos_obs("robot"),
            self.get_ceil_obs("robot", ["pipe"], self.sight_dist),
            ))

        # compute reward
        com_1 = np.mean(pos_1, 1)
        com_2 = np.mean(pos_2, 1)
        reward = (com_2[1] - com_1[1]) + (com_2[0] - com_1[0])*0.2

        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}
    
    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]:
        
        super().reset(seed=seed, options=options)

        # observation
        obs = np.concatenate((
            self.get_vel_com_obs("robot"),
            self.get_ort_obs("robot"),
            self.get_relative_pos_obs("robot"),
            self.get_ceil_obs("robot", ["pipe"], self.sight_dist),
            ))

        return obs, {}

================================================
FILE: evogym/envs/flip.py
================================================
import gymnasium as gym
from gymnasium import error, spaces
from gymnasium import utils
from gymnasium.utils import seeding

from evogym import *
from evogym.envs import BenchmarkBase

import random
import math
import numpy as np
import os
from typing import Dict, Any, Optional


class Flipping(BenchmarkBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Flipper-v0.json'))
        self.world.add_from_array('robot', body, 60, 1, connections=connections)

        # init sim
        BenchmarkBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(1 + num_robot_points,), dtype=float)

        # reward
        self.num_flips = 0


    def step(self, action):

        # collect pre step information
        pos_1 = self.object_pos_at_time(self.get_time(), "robot")
        ort_1 = self.object_orientation_at_time(self.get_time(), "robot")
        
        # step
        done = super().step({'robot': action})

        # collect post step information
        pos_2 = self.object_pos_at_time(self.get_time(), "robot")
        ort_2 = self.object_orientation_at_time(self.get_time(), "robot")

        # observation
        obs = np.concatenate((
            np.array([ort_2]),
            self.get_relative_pos_obs("robot"),
            ))

        # update flips
        flattened_ort_1 = self.num_flips * 2 * math.pi + ort_1

        if ort_1 < math.pi/3 and ort_2 > 5*math.pi/3:
            self.num_flips -= 1
        if ort_1 > 5*math.pi/3 and ort_2 <  math.pi/3:
            self.num_flips += 1

        flattened_ort_2 = self.num_flips * 2 * math.pi + ort_2

        # compute reward
        com_1 = np.mean(pos_1, 1)
        com_2 = np.mean(pos_2, 1)
        reward = (flattened_ort_2 - flattened_ort_1) 

        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0
        
        # check goal met
        if com_2[0] < (1)*self.VOXEL_SIZE:
            done = True


        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]:
        
        super().reset(seed=seed, options=options)

        self.num_flips = 0

        # observation
        obs = np.concatenate((
            self.get_ort_obs("robot"),
            self.get_relative_pos_obs("robot"),
            ))

        return obs, {}

================================================
FILE: evogym/envs/jump.py
================================================
import gymnasium as gym
from gymnasium import error, spaces
from gymnasium import utils
from gymnasium.utils import seeding

from evogym import *
from evogym.envs import BenchmarkBase

import random
import math
import numpy as np
import os
from typing import Dict, Any, Optional

class StationaryJump(BenchmarkBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Jumper-v0.json'))
        self.world.add_from_array('robot', body, 32, 1, connections=connections)

        # init sim
        BenchmarkBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size
        self.sight_dist = 2

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + num_robot_points + (self.sight_dist*2 +1),), dtype=float)

    def step(self, action):

        # collect pre step information
        pos_1 = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        pos_2 = self.object_pos_at_time(self.get_time(), "robot")

        # observation
        obs = np.concatenate((
            self.get_vel_com_obs("robot"),
            self.get_relative_pos_obs("robot"),
            self.get_floor_obs("robot", ["ground"], self.sight_dist),
            ))

        # compute reward
        com_1 = np.mean(pos_1, 1)
        com_2 = np.mean(pos_2, 1)
        reward = (com_2[1] - com_1[1])*10 - abs(com_2[0] - com_1[0])*5
        
        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]:
        
        super().reset(seed=seed, options=options)

        # observation
        obs = np.concatenate((
            self.get_vel_com_obs("robot"),
            self.get_relative_pos_obs("robot"),
            self.get_floor_obs("robot", ["ground"], self.sight_dist),
            ))

        return obs, {}


================================================
FILE: evogym/envs/manipulate.py
================================================
from evogym.envs.base import EvoGymBase
import gymnasium as gym
from gymnasium import error, spaces
from gymnasium import utils
from gymnasium.utils import seeding

from evogym import *
from evogym.envs import BenchmarkBase

import random
import math
import numpy as np
import os
from typing import Dict, Any, Optional


class PackageBase(BenchmarkBase):
    
    def __init__(
        self,
        world: EvoWorld,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        super().__init__(world=world, render_mode=render_mode, render_options=render_options)
        self.default_viewer.track_objects('robot', 'package')

    def get_obs(self, robot_pos_final, robot_vel_final, package_pos_final, package_vel_final) -> np.ndarray:
        
        robot_com_pos = np.mean(robot_pos_final, axis=1)
        robot_com_vel = np.mean(robot_vel_final, axis=1)
        box_com_pos = np.mean(package_pos_final, axis=1)
        box_com_vel = np.mean(package_vel_final, axis=1)

        obs = np.array([
            robot_com_vel[0], robot_com_vel[1],
            box_com_pos[0]-robot_com_pos[0], box_com_pos[1]-robot_com_pos[1],
            box_com_vel[0], box_com_vel[1]
        ])

        return obs

    def get_reward(self, package_pos_init, package_pos_final, robot_pos_init, robot_pos_final):
        
        package_com_pos_init = np.mean(package_pos_init, axis=1)
        package_com_pos_final = np.mean(package_pos_final, axis=1)
        
        robot_com_pos_init = np.mean(robot_pos_init, axis=1)
        robot_com_pos_final = np.mean(robot_pos_final, axis=1)

        # positive reward for moving forward
        reward = (package_com_pos_final[0] - package_com_pos_init[0])*0.75
        reward += (robot_com_pos_final[0] - robot_com_pos_init[0])*0.5

        # negative reward for robot/block separating
        reward += abs(robot_com_pos_init[0] - package_com_pos_init[0]) - abs(robot_com_pos_final[0] - package_com_pos_final[0])

        # negative reward for block going below thresh height
        if package_com_pos_final[1] < self.thresh_height:
            reward += 10 * (package_com_pos_final[1] - package_com_pos_init[1])
    
        return reward

    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]:
        
        super().reset(seed=seed, options=options)

        # observation
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        robot_vel_final = self.object_vel_at_time(self.get_time(), "robot")
        package_pos_final = self.object_pos_at_time(self.get_time(), "package")
        package_vel_final = self.object_vel_at_time(self.get_time(), "package")

        obs = self.get_obs(robot_pos_final, robot_vel_final, package_pos_final, package_vel_final)
        obs = np.concatenate((
            obs,
            self.get_relative_pos_obs("robot"),
        ))

        return obs, {}


class CarrySmallRect(PackageBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):
        
        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Carrier-v0.json'))
        self.world.add_from_array('robot', body, 1, 1, connections=connections)

        # init sim
        PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=float)

        # threshhold height
        self.thresh_height = 3.0*self.VOXEL_SIZE

    def get_reward_carry(self, package_pos_init, package_pos_final, robot_pos_init, robot_pos_final):
        
        package_com_pos_init = np.mean(package_pos_init, axis=1)
        package_com_pos_final = np.mean(package_pos_final, axis=1)
        
        robot_com_pos_init = np.mean(robot_pos_init, axis=1)
        robot_com_pos_final = np.mean(robot_pos_final, axis=1)

        # positive reward for moving forward
        reward = (package_com_pos_final[0] - package_com_pos_init[0])*0.5
        reward += (robot_com_pos_final[0] - robot_com_pos_init[0])*0.5

        # negative reward for block going below thresh height
        if package_com_pos_final[1] < self.thresh_height:
            reward += 10 * (package_com_pos_final[1] - package_com_pos_init[1])
    
        return reward

    def step(self, action):

        # collect pre step information
        package_pos_init = self.object_pos_at_time(self.get_time(), "package")
        robot_pos_init = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        robot_vel_final = self.object_vel_at_time(self.get_time(), "robot")
        package_pos_final = self.object_pos_at_time(self.get_time(), "package")
        package_vel_final = self.object_vel_at_time(self.get_time(), "package")

        # observation
        obs = super().get_obs(robot_pos_final, robot_vel_final, package_pos_final, package_vel_final)
        obs = np.concatenate((
            obs,
            self.get_relative_pos_obs("robot"),
        ))
       
        # compute reward
        reward = self.get_reward_carry(package_pos_init, package_pos_final, robot_pos_init, robot_pos_final)

        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # check goal met
        com_2 = np.mean(robot_pos_final, 1)
        if com_2[0] > (99)*self.VOXEL_SIZE:
            done = True
            reward += 1.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

class CarrySmallRectToTable(PackageBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Carrier-v1.json'))
        self.world.add_from_array('robot', body, 1, 4, connections=connections)

        # init sim
        PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=float)

        # threshhold height
        self.thresh_height = 6.0*self.VOXEL_SIZE

    def get_reward_carry(self, package_pos_init, package_pos_final, robot_pos_init, robot_pos_final):
        
        package_com_pos_init = np.mean(package_pos_init, axis=1)
        package_com_pos_final = np.mean(package_pos_final, axis=1)
        
        robot_com_pos_init = np.mean(robot_pos_init, axis=1)
        robot_com_pos_final = np.mean(robot_pos_final, axis=1)

        # positive reward for moving block/robot to goal
        reward = 2*(abs(48.5*self.VOXEL_SIZE - package_com_pos_init[0]) - abs(48.5*self.VOXEL_SIZE - package_com_pos_final[0]))
        reward = (abs(40*self.VOXEL_SIZE - robot_com_pos_init[0]) - abs(40*self.VOXEL_SIZE - robot_com_pos_final[0]))

        self.thresh_height = 6.0*self.VOXEL_SIZE
        if package_com_pos_final[0] > 20 * self.VOXEL_SIZE:
            self.thresh_height = 4.0*self.VOXEL_SIZE

        # negative reward for block going below thresh height
        if package_com_pos_final[1] < self.thresh_height:
            reward += 10 * (package_com_pos_final[1] - package_com_pos_init[1])
    
        return reward

    def step(self, action):

        # collect pre step information
        package_pos_init = self.object_pos_at_time(self.get_time(), "package")
        robot_pos_init = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        robot_vel_final = self.object_vel_at_time(self.get_time(), "robot")
        package_pos_final = self.object_pos_at_time(self.get_time(), "package")
        package_vel_final = self.object_vel_at_time(self.get_time(), "package")

        # observation
        obs = super().get_obs(robot_pos_final, robot_vel_final, package_pos_final, package_vel_final)
        obs = np.concatenate((
            obs,
            self.get_relative_pos_obs("robot"),
        ))
       
        # compute reward
        reward = self.get_reward_carry(package_pos_init, package_pos_final, robot_pos_init, robot_pos_final)
       
        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

class PushSmallRect(PackageBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Pusher-v0.json'))
        self.world.add_from_array('robot', body, 1, 1, connections=connections)

        # init sim
        PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=float)

        # threshhold height
        self.thresh_height = 0.0*self.VOXEL_SIZE

    def step(self, action):

        # collect pre step information
        package_pos_init = self.object_pos_at_time(self.get_time(), "package")
        robot_pos_init = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        robot_vel_final = self.object_vel_at_time(self.get_time(), "robot")
        package_pos_final = self.object_pos_at_time(self.get_time(), "package")
        package_vel_final = self.object_vel_at_time(self.get_time(), "package")

        # observation
        obs = super().get_obs(robot_pos_final, robot_vel_final, package_pos_final, package_vel_final)
        obs = np.concatenate((
            obs,
            self.get_relative_pos_obs("robot"),
        ))

        # compute reward
        reward = super().get_reward(package_pos_init, package_pos_final, robot_pos_init, robot_pos_final)
        
        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # check goal met
        com_2 = np.mean(robot_pos_final, 1)
        if com_2[0] > (99)*0.1:
            done = True
            reward += 1.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

class PushSmallRectOnOppositeSide(PackageBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Pusher-v1.json'))
        self.world.add_from_array('robot', body, 13, 1, connections=connections)

        # init sim
        PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=float)

        # threshhold height
        self.thresh_height = 0.0*self.VOXEL_SIZE

    def step(self, action):

        # collect pre step information
        package_pos_init = self.object_pos_at_time(self.get_time(), "package")
        robot_pos_init = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        robot_vel_final = self.object_vel_at_time(self.get_time(), "robot")
        package_pos_final = self.object_pos_at_time(self.get_time(), "package")
        package_vel_final = self.object_vel_at_time(self.get_time(), "package")

        # observation
        obs = super().get_obs(robot_pos_final, robot_vel_final, package_pos_final, package_vel_final)
        obs = np.concatenate((
            obs,
            self.get_relative_pos_obs("robot"),
        ))

        # compute reward
        reward = super().get_reward(package_pos_init, package_pos_final, robot_pos_init, robot_pos_final)
        
        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # check goal met
        com_2 = np.mean(robot_pos_final, 1)
        if com_2[0] > (69)*self.VOXEL_SIZE:
            done = True
            reward += 1.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

class ThrowSmallRect(PackageBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Thrower-v0.json'))
        self.world.add_from_array('robot', body, 1, 1, connections=connections)

        # init sim
        PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=float)

        # threshhold height
        self.thresh_height = 0.0*self.VOXEL_SIZE

    def get_reward_throw(self, robot_pos_init, robot_pos_final, package_pos_init, package_pos_final):
        
        package_com_pos_init = np.mean(package_pos_init, axis=1)
        package_com_pos_final = np.mean(package_pos_final, axis=1)

        robot_com_pos_init = np.mean(robot_pos_init, axis=1)
        robot_com_pos_final = np.mean(robot_pos_final, axis=1)

        motion_penalty = (robot_com_pos_init[0] - robot_com_pos_final[0])*0.25
        if robot_com_pos_final[0] < 0:
            motion_penalty *= -1

        reward = package_com_pos_final[0] - package_com_pos_init[0] + motion_penalty

        return reward

    def step(self, action):

        # collect pre step information
        package_pos_init = self.object_pos_at_time(self.get_time(), "package")
        robot_pos_init = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        robot_vel_final = self.object_vel_at_time(self.get_time(), "robot")
        package_pos_final = self.object_pos_at_time(self.get_time(), "package")
        package_vel_final = self.object_vel_at_time(self.get_time(), "package")

        # observation
        obs = super().get_obs(robot_pos_final, robot_vel_final, package_pos_final, package_vel_final)
        obs = np.concatenate((
            obs,
            self.get_relative_pos_obs("robot"),
        ))
       
        # compute reward
        reward = self.get_reward_throw(robot_pos_init, robot_pos_final, package_pos_init, package_pos_final)
        
        #error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

class CatchSmallRect(PackageBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        self.robot_body = body
        self.robot_connections = connections
        
        self.render_mode = render_mode
        self.render_options = render_options

        self.random_init()
 
    def random_init(self):
        
        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Walker-v0.json'))
        self.world.add_from_array('robot', self.robot_body, 22, 1, connections=self.robot_connections)

        self.offsetx = random.randint(-6, 4)
        self.offsety = random.randint(0, 5)

        package = WorldObject.from_json(os.path.join(self.DATA_PATH, 'package.json'))
        package.set_pos(21+self.offsetx, 41+self.offsety)
        package.rename('package')
        self.world.add_object(package)
        
        peg1 = WorldObject.from_json(os.path.join(self.DATA_PATH, 'peg.json'))
        peg1.set_pos(17+self.offsetx, 39+self.offsety)
        peg1.rename('peg1')
        self.world.add_object(peg1)

        peg2 = WorldObject.from_json(os.path.join(self.DATA_PATH, 'peg.json'))
        peg2.set_pos(19+self.offsetx, 25+self.offsety)
        peg2.rename('peg2')
        self.world.add_object(peg2)

        # init sim
        PackageBase.__init__(self, world=self.world, render_mode=self.render_mode, render_options=self.render_options)
        
        self.default_viewer.track_objects('robot', 'package')

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(7 + num_robot_points,), dtype=float)

        # threshhold height
        self.thresh_height = 5.0*self.VOXEL_SIZE
    
    def get_obs_catch(self, robot_pos_final, package_pos_final) -> np.ndarray:
        
        robot_com_pos = np.mean(robot_pos_final, axis=1)
        package_com_pos = np.mean(package_pos_final, axis=1)

        obs = np.array([
            package_com_pos[0]-robot_com_pos[0], package_com_pos[1]-robot_com_pos[1],
        ])

        return obs

    def get_reward_catch(self, robot_pos_init, robot_pos_final, package_pos_init, package_pos_final):

        package_com_pos_init = np.mean(package_pos_init, axis=1)
        package_com_pos_final = np.mean(package_pos_final, axis=1)

        robot_com_pos_init = np.mean(robot_pos_init, axis=1)
        robot_com_pos_final = np.mean(robot_pos_final, axis=1)

        # negative reward for robot/block separating in X
        reward = abs(robot_com_pos_init[0] - package_com_pos_init[0]) - abs(robot_com_pos_final[0] - package_com_pos_final[0])

        # negative reward for block going below thresh height
        if package_com_pos_final[1] < self.thresh_height:
            reward += 10 * (package_com_pos_final[1] - package_com_pos_init[1])
    
        return reward

    def step(self, action):

        # collect pre step information
        package_pos_init = self.object_pos_at_time(self.get_time(), "package")
        robot_pos_init = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        package_pos_final = self.object_pos_at_time(self.get_time(), "package")

        # observation
        obs = self.get_obs_catch(robot_pos_final, package_pos_final)
        obs = np.concatenate((
            obs,
            self.get_vel_com_obs("robot"),
            self.get_vel_com_obs("package"),
            self.get_ort_obs("package"),
            self.get_relative_pos_obs("robot"),
        ))
       
        # compute reward
        reward = self.get_reward_catch(robot_pos_init, robot_pos_final, package_pos_init, package_pos_final)

        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]:
        
        EvoGymBase.reset(self, seed=seed, options=options)
        self.default_viewer.hide_debug_window()
        self.random_init()

        # self.translate_object(-self.offsetx*self.VOXEL_SIZE, -self.offsety*self.VOXEL_SIZE, "package")
        # self.translate_object(-self.offsetx*self.VOXEL_SIZE, -self.offsety*self.VOXEL_SIZE, "peg1")
        # self.translate_object(-self.offsetx*self.VOXEL_SIZE, -self.offsety*self.VOXEL_SIZE, "peg2")

        # self.offsetx = random.randint(-6, 4)
        # self.offsety = random.randint(0, 5)

        # self.translate_object(self.offsetx*self.VOXEL_SIZE, self.offsety*self.VOXEL_SIZE, "package")
        # self.translate_object(self.offsetx*self.VOXEL_SIZE, self.offsety*self.VOXEL_SIZE, "peg1")
        # self.translate_object(self.offsetx*self.VOXEL_SIZE, self.offsety*self.VOXEL_SIZE, "peg2")

        # observation
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        package_pos_final = self.object_pos_at_time(self.get_time(), "package")

        obs = self.get_obs_catch(robot_pos_final, package_pos_final)
        obs = np.concatenate((
            obs,
            self.get_vel_com_obs("robot"),
            self.get_vel_com_obs("package"),
            self.get_ort_obs("package"),
            self.get_relative_pos_obs("robot"),
        ))

        return obs, {}

class ToppleBeam(PackageBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'BeamToppler-v0.json'))
        self.world.add_from_array('robot', body, 1, 1, connections=connections)

        # init sim
        PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(7 + num_robot_points,), dtype=float)

        # threshhold height
        self.thresh_height = 0.0*self.VOXEL_SIZE

        #tracking
        self.default_viewer.track_objects('robot', 'beam')
    
    def get_obs_topple(self, robot_pos_final, beam_pos_final):

        beam_com_pos_final = np.mean(beam_pos_final, axis=1)
        robot_com_pos_final = np.mean(robot_pos_final, axis=1)

        diff = beam_com_pos_final - robot_com_pos_final
        return np.array([diff[0], diff[1]])

    def get_reward_topple(self, robot_pos_init, robot_pos_final, beam_pos_init, beam_pos_final):
        
        beam_com_pos_init = np.mean(beam_pos_init, axis=1)
        beam_com_pos_final = np.mean(beam_pos_final, axis=1)

        robot_com_pos_init = np.mean(robot_pos_init, axis=1)
        robot_com_pos_final = np.mean(robot_pos_final, axis=1)

        # rewarded for moving to beam
        reward = abs(beam_com_pos_init[0] - robot_com_pos_init[0]) - abs(beam_com_pos_final[0] - robot_com_pos_final[0])

        # reward for moving beam
        reward += abs(beam_com_pos_final[0] - beam_com_pos_init[0])*1.0
        reward += abs(beam_com_pos_final[1] - beam_com_pos_init[1])*3.0

        # reward for making beam fall
        reward += (beam_com_pos_init[1] - beam_com_pos_final[1])*10

        task_complete = False
        if beam_com_pos_final[0] < 2 * self.VOXEL_SIZE:
            task_complete = True

        return reward, task_complete

    def step(self, action):

        # collect pre step information
        beam_pos_init = self.object_pos_at_time(self.get_time(), "beam")
        robot_pos_init = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        beam_pos_final = self.object_pos_at_time(self.get_time(), "beam")

        # observation
        obs = self.get_obs_topple(robot_pos_final, beam_pos_final)
        obs = np.concatenate((
            obs,
            self.get_vel_com_obs("robot"),
            self.get_vel_com_obs("beam"),
            self.get_ort_obs("beam"),
            self.get_relative_pos_obs("robot"),
        ))
       
        # compute reward
        reward, task_complete = self.get_reward_topple(robot_pos_init, robot_pos_final, beam_pos_init, beam_pos_final)
        
        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        if task_complete:
            reward += 1.0
            done = True

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]:
        
        EvoGymBase.reset(self, seed=seed, options=options)

        # observation
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        beam_pos_final = self.object_pos_at_time(self.get_time(), "beam")

        obs = self.get_obs_topple(robot_pos_final, beam_pos_final)
        obs = np.concatenate((
            obs,
            self.get_vel_com_obs("robot"),
            self.get_vel_com_obs("beam"),
            self.get_ort_obs("beam"),
            self.get_relative_pos_obs("robot"),
        ))

        return obs, {}

class SlideBeam(PackageBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'BeamSlider-v0.json'))
        self.world.add_from_array('robot', body, 1, 1, connections=connections)

        # init sim
        PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(7 + num_robot_points,), dtype=float)

        # threshhold height
        self.thresh_height = 0.0*self.VOXEL_SIZE

        # tracking
        self.default_viewer.track_objects('robot', 'beam')

    def get_obs_topple(self, robot_pos_final, beam_pos_final):

        beam_com_pos_final = np.mean(beam_pos_final, axis=1)
        robot_com_pos_final = np.mean(robot_pos_final, axis=1)

        diff = beam_com_pos_final - robot_com_pos_final
        return np.array([diff[0], diff[1]])

    def get_reward_topple(self, robot_pos_init, robot_pos_final, beam_pos_init, beam_pos_final):
        
        beam_com_pos_init = np.mean(beam_pos_init, axis=1)
        beam_com_pos_final = np.mean(beam_pos_final, axis=1)

        robot_com_pos_init = np.mean(robot_pos_init, axis=1)
        robot_com_pos_final = np.mean(robot_pos_final, axis=1)

        # rewarded for moving to beam
        reward = abs(beam_com_pos_init[0] - robot_com_pos_init[0]) - abs(beam_com_pos_final[0] - robot_com_pos_final[0])

        # reward for moving beam (in positive x)
        reward += (beam_com_pos_final[0] - beam_com_pos_init[0])*1.0

        task_complete = False
        if beam_com_pos_final[0] < 2 * self.VOXEL_SIZE:
            task_complete = True

        return reward, task_complete

    def step(self, action):

        # collect pre step information
        beam_pos_init = self.object_pos_at_time(self.get_time(), "beam")
        robot_pos_init = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        beam_pos_final = self.object_pos_at_time(self.get_time(), "beam")

        # observation
        obs = self.get_obs_topple(robot_pos_final, beam_pos_final)
        obs = np.concatenate((
            obs,
            self.get_vel_com_obs("robot"),
            self.get_vel_com_obs("beam"),
            self.get_ort_obs("beam"),
            self.get_relative_pos_obs("robot"),
        ))
       
        # compute reward
        reward, task_complete = self.get_reward_topple(robot_pos_init, robot_pos_final, beam_pos_init, beam_pos_final)
        
        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        if task_complete:
            reward += 1.0
            done = True

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]:
        
        EvoGymBase.reset(self, seed=seed, options=options)

        # observation
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        beam_pos_final = self.object_pos_at_time(self.get_time(), "beam")

        obs = self.get_obs_topple(robot_pos_final, beam_pos_final)
        obs = np.concatenate((
            obs,
            self.get_vel_com_obs("robot"),
            self.get_vel_com_obs("beam"),
            self.get_ort_obs("beam"),
            self.get_relative_pos_obs("robot"),
        ))

        return obs, {}

class LiftSmallRect(PackageBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Lifter-v0.json'))
        self.world.add_from_array('robot', body, 2, 3, connections=connections)

        # init sim
        PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(7 + num_robot_points,), dtype=float)

    def get_reward_lift(self, robot_pos_init, robot_pos_final, package_pos_init, package_pos_final):
        
        package_com_pos_init = np.mean(package_pos_init, axis=1)
        package_com_pos_final = np.mean(package_pos_final, axis=1)

        robot_com_pos_init = np.mean(robot_pos_init, axis=1)
        robot_com_pos_final = np.mean(robot_pos_final, axis=1)

        reward = (package_com_pos_final[1] - package_com_pos_init[1])*10

        # penalize x movement
        goal = 5.5 * self.VOXEL_SIZE
        reward += (abs(goal-package_com_pos_init[0]) - abs(goal-package_com_pos_final[0]))*10

        # penalize robot falling below certain y com
        thresh = 3
        if robot_com_pos_final[1] < thresh*self.VOXEL_SIZE:
            reward += 20 * (robot_com_pos_final[1] - robot_com_pos_init[1])

        return reward

    def step(self, action):

        # collect pre step information
        package_pos_init = self.object_pos_at_time(self.get_time(), "package")
        robot_pos_init = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        robot_vel_final = self.object_vel_at_time(self.get_time(), "robot")
        package_pos_final = self.object_pos_at_time(self.get_time(), "package")
        package_vel_final = self.object_vel_at_time(self.get_time(), "package")

        # observation
        obs = super().get_obs(robot_pos_final, robot_vel_final, package_pos_final, package_vel_final)
        obs = np.concatenate((
            obs,
            self.get_ort_obs("package"),
            self.get_relative_pos_obs("robot"),
        ))
       
        # compute reward
        reward = self.get_reward_lift(robot_pos_init, robot_pos_final, package_pos_init, package_pos_final)

        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}
    
    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]:
        
        EvoGymBase.reset(self, seed=seed, options=options)

        # observation
        robot_pos_final = self.object_pos_at_time(self.get_time(), "robot")
        robot_vel_final = self.object_vel_at_time(self.get_time(), "robot")
        package_pos_final = self.object_pos_at_time(self.get_time(), "package")
        package_vel_final = self.object_vel_at_time(self.get_time(), "package")

        obs = self.get_obs(robot_pos_final, robot_vel_final, package_pos_final, package_vel_final)
        obs = np.concatenate((
            obs,
            self.get_ort_obs("package"),
            self.get_relative_pos_obs("robot"),
        ))

        return obs, {}
        

================================================
FILE: evogym/envs/multi_goal.py
================================================
import gymnasium as gym
from gymnasium import error, spaces
from gymnasium import utils
from gymnasium.utils import seeding

from evogym import *
from evogym.envs import BenchmarkBase

import random
import math
import numpy as np
import os
from typing import Dict, Any, Optional

class Goal():
    def __init__(self, name, requirements = None):
        self.name = name
        self.requirements = requirements if requirements is not None else []
    def evaluate_reward(self, args):
        raise NotImplementedError("Your goal must implement an evaluate function which returns (reward, has_terminated).")

class GoalBase(BenchmarkBase):
    
    def __init__(
        self,
        world: EvoWorld,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        super().__init__(world=world, render_mode=render_mode, render_options=render_options)

    def init_reward_goals(self, goals):

        if goals is None or len(goals) == 0:
            raise ValueError("Cannot create env with no goals") 

        self.goals = goals
        self.requirements = {}
        self.current_goal = 0

        for goal in goals:
            for req in goal.requirements:
                if req not in self.requirements:
                    self.requirements[req] = []
                self.requirements[req].append(goal.name)

    def get_reward(self, args):
        
        for req, dependents in self.requirements.items():
            if args[req] is None:
                raise ValueError(f'Args is missing requirement \'{req}\' for {dependents}')

        has_terminated = True
        reward = 0

        while (has_terminated and self.current_goal != len(self.goals)):
            reward, has_terminated = self.goals[self.current_goal].evaluate(args)
            if has_terminated:
                self.current_goal += 1

        done = False
        if self.current_goal == len(self.goals):
            done = True

        return reward, done

    def get_obs(self, args):
        return self.goals[self.current_goal].get_obs(args)

class WalkToX(Goal):

    def __init__(self, x_goal):
        super().__init__(f'Walk to x = {x_goal}', requirements = [
            'robot_com_pos_initial',
            'robot_com_pos_final',
        ])
        self.x_goal = x_goal

    def evaluate(self, args):
        com_init = np.mean(args['robot_com_pos_initial'], axis=1)
        com_final = np.mean(args['robot_com_pos_final'], axis=1)

        dist_init = abs(self.x_goal*0.1 - com_init[0])
        dist_final = abs(self.x_goal*0.1 - com_final[0])

        reward = dist_init - dist_final
        has_terminated = True if dist_final < 2*0.1 else False #2 blocks away

        #print(self.x_goal, com_final[0])

        return reward, has_terminated

    def get_obs(self, args):
        com_final = np.mean(args['robot_com_pos_final'], axis=1)
        return np.array([self.x_goal*0.1, self.x_goal*0.1 - com_final[0]])
    
class BiWalk(GoalBase):

    def __init__(
        self,
        body: np.ndarray,
        connections: Optional[np.ndarray] = None,
        render_mode: Optional[str] = None,
        render_options: Optional[Dict[str, Any]] = None,
    ):

        # make world
        self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'BidirectionalWalker-v0.json'))
        self.world.add_from_array('robot', body, 33, 1, connections=connections)

        # init sim
        GoalBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options)

        # set action space and observation space
        num_actuators = self.get_actuator_indices('robot').size
        num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size

        self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float)
        self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(5 + num_robot_points,), dtype=float)

        self.set_random_goals(20, 50, 100)

        # super().init_reward_goals([
        #     WalkToX(40),
        #     WalkToX(10),
        #     WalkToX(40),
        #     WalkToX(10)
        # ])

    def set_random_goals(self, lower_bound, upper_bound, goal_dist):
        
        curr_pos = 35
        dist = 0
        goals = []

        while dist < goal_dist:
            next_pos = random.randrange(lower_bound, upper_bound)
            dist += abs(curr_pos-next_pos)
            curr_pos = next_pos
            goals.append(WalkToX(next_pos))
            #print(f'Goal: {next_pos}')

        super().init_reward_goals(goals)

    def step(self, action):

        # collect pre step information
        pos_1 = self.object_pos_at_time(self.get_time(), "robot")

        # step
        done = super().step({'robot': action})

        # collect post step information
        pos_2 = self.object_pos_at_time(self.get_time(), "robot")
        vel_2 = self.object_vel_at_time(self.get_time(), "robot")

        # observation
        obs = np.concatenate((
            self.get_vel_com_obs("robot"),
            self.get_relative_pos_obs("robot"),
            np.array([self.current_goal]),
            ))

        obs = np.concatenate((obs, 
                super().get_obs(args = {
                'robot_com_pos_initial': pos_1,
                'robot_com_pos_final': pos_2
            })
        ))

        # compute reward
        reward, goals_done = super().get_reward(args = {
            'robot_com_pos_initial': pos_1,
            'robot_com_pos_final': pos_2
        })

        # error check unstable simulation
        if done:
            print("SIMULATION UNSTABLE... TERMINATING")
            reward -= 3.0

        if goals_done:
            done = True
            reward += 1.0

        # observation, reward, has simulation met termination conditions, truncated, debugging info
        return obs, reward, done, False, {}

    def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]:
        
        super().reset(seed=seed, options=options)

        self.current_goal = 0
        self.set_random_goals(20, 50, 100)

        pos_2 = self.object_pos_at_time(self.get_time(), "robot")

        # observation
        obs = np.concatenate((
            self.get_vel_com_obs("robot"),
            self.get_relative_pos_obs("robot"),
            np.array([self.current_goal]),
            ))

        obs = np.concatenate((obs, 
                super().get_obs(args = {
                'robot_com_pos_final': pos_2
            })
        ))

        return obs, {}


================================================
FILE: evogym/envs/sim_files/Balancer-v0.json
================================================
{
    "grid_width": 30,
    "grid_height": 5,
    "objects": {
        "ground": {
            "indices": [
                120,
                149,
                90,
                119,
                60,
                77,
                89,
                30,
                47,
                59,
                0,
                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
            ],
            "types": [
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5
            ],
            "neighbors": {
                "120": [
                    90
                ],
                "149": [
                    119
                ],
                "90": [
                    120,
                    60
                ],
                "119": [
                    149,
                    89
                ],
                "60": [
                    90,
                    30
                ],
                "77": [
                    47
                ],
                "89": [
                    119,
                    59
                ],
                "30": [
                    60,
                    0
                ],
                "47": [
                    17,
                    77
                ],
                "59": [
                    89,
                    29
                ],
                "0": [
                    1,
                    30
                ],
                "1": [
                    0,
                    2
                ],
                "2": [
                    1,
                    3
                ],
                "3": [
                    2,
                    4
                ],
                "4": [
                    3,
                    5
                ],
                "5": [
                    4,
                    6
                ],
                "6": [
                    5,
                    7
                ],
                "7": [
                    8,
                    6
                ],
                "8": [
                    7,
                    9
                ],
                "9": [
                    8,
                    10
                ],
                "10": [
                    9,
                    11
                ],
                "11": [
                    10,
                    12
                ],
                "12": [
                    11,
                    13
                ],
                "13": [
                    12,
                    14
                ],
                "14": [
                    13,
                    15
                ],
                "15": [
                    14,
                    16
                ],
                "16": [
                    15,
                    17
                ],
                "17": [
                    16,
                    18,
                    47
                ],
                "18": [
                    17,
                    19
                ],
                "19": [
                    18,
                    20
                ],
                "20": [
                    19,
                    21
                ],
                "21": [
                    20,
                    22
                ],
                "22": [
                    21,
                    23
                ],
                "23": [
                    22,
                    24
                ],
                "24": [
                    23,
                    25
                ],
                "25": [
                    24,
                    26
                ],
                "26": [
                    25,
                    27
                ],
                "27": [
                    26,
                    28
                ],
                "28": [
                    27,
                    29
                ],
                "29": [
                    28,
                    59
                ]
            }
        }
    }
}

================================================
FILE: evogym/envs/sim_files/Balancer-v1.json
================================================
{
    "grid_width": 30,
    "grid_height": 5,
    "objects": {
        "ground": {
            "indices": [
                120,
                149,
                90,
                107,
                119,
                60,
                77,
                89,
                30,
                47,
                59,
                0,
                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
            ],
            "types": [
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5
            ],
            "neighbors": {
                "120": [
                    90
                ],
                "149": [
                    119
                ],
                "90": [
                    120,
                    60
                ],
                "107": [
                    77
                ],
                "119": [
                    149,
                    89
                ],
                "60": [
                    90,
                    30
                ],
                "77": [
                    47,
                    107
                ],
                "89": [
                    119,
                    59
                ],
                "30": [
                    60,
                    0
                ],
                "47": [
                    17,
                    77
                ],
                "59": [
                    89,
                    29
                ],
                "0": [
                    1,
                    30
                ],
                "1": [
                    0,
                    2
                ],
                "2": [
                    1,
                    3
                ],
                "3": [
                    2,
                    4
                ],
                "4": [
                    3,
                    5
                ],
                "5": [
                    4,
                    6
                ],
                "6": [
                    5,
                    7
                ],
                "7": [
                    8,
                    6
                ],
                "8": [
                    7,
                    9
                ],
                "9": [
                    8,
                    10
                ],
                "10": [
                    9,
                    11
                ],
                "11": [
                    10,
                    12
                ],
                "12": [
                    11,
                    13
                ],
                "13": [
                    12,
                    14
                ],
                "14": [
                    13,
                    15
                ],
                "15": [
                    14,
                    16
                ],
                "16": [
                    15,
                    17
                ],
                "17": [
                    16,
                    18,
                    47
                ],
                "18": [
                    17,
                    19
                ],
                "19": [
                    18,
                    20
                ],
                "20": [
                    19,
                    21
                ],
                "21": [
                    20,
                    22
                ],
                "22": [
                    21,
                    23
                ],
                "23": [
                    22,
                    24
                ],
                "24": [
                    23,
                    25
                ],
                "25": [
                    24,
                    26
                ],
                "26": [
                    25,
                    27
                ],
                "27": [
                    26,
                    28
                ],
                "28": [
                    27,
                    29
                ],
                "29": [
                    28,
                    59
                ]
            }
        }
    }
}

================================================
FILE: evogym/envs/sim_files/BeamSlider-v0.json
================================================
{
    "grid_width": 70,
    "grid_height": 7,
    "objects": {
        "beam": {
            "indices": [
                442,
                443,
                444,
                445,
                446,
                447,
                448,
                449,
                450,
                451,
                372,
                373,
                374,
                375,
                376,
                377,
                378,
                379,
                380,
                381
            ],
            "types": [
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1
            ],
            "neighbors": {
                "442": [
                    443,
                    372
                ],
                "443": [
                    444,
                    373,
                    442
                ],
                "444": [
                    445,
                    374,
                    443
                ],
                "445": [
                    446,
                    375,
                    444
                ],
                "446": [
                    447,
                    376,
                    445
                ],
                "447": [
                    448,
                    377,
                    446
                ],
                "448": [
                    449,
                    378,
                    447
                ],
                "449": [
                    379,
                    450,
                    448
                ],
                "450": [
                    449,
                    380,
                    451
                ],
                "451": [
                    450,
                    381
                ],
                "372": [
                    373,
                    442
                ],
                "373": [
                    443,
                    372,
                    374
                ],
                "374": [
                    375,
                    444,
                    373
                ],
                "375": [
                    376,
                    445,
                    374
                ],
                "376": [
                    377,
                    446,
                    375
                ],
                "377": [
                    378,
                    447,
                    376
                ],
                "378": [
                    379,
                    448,
                    377
                ],
                "379": [
                    380,
                    449,
                    378
                ],
                "380": [
                    379,
                    381,
                    450
                ],
                "381": [
                    380,
                    451
                ]
            }
        },
        "peg1": {
            "indices": [
                300,
                301,
                302,
                303,
                304
            ],
            "types": [
                5,
                5,
                5,
                5,
                5
            ],
            "neighbors": {
                "300": [
                    301
                ],
                "301": [
                    302,
                    300
                ],
                "302": [
                    303,
                    301
                ],
                "303": [
                    304,
                    302
                ],
                "304": [
                    303
                ]
            }
        },
        "peg2": {
            "indices": [
                309,
                310,
                311
            ],
            "types": [
                5,
                5,
                5
            ],
            "neighbors": {
                "309": [
                    310
                ],
                "310": [
                    309,
                    311
                ],
                "311": [
                    310
                ]
            }
        },
        "peg3": {
            "indices": [
                315,
                316,
                317
            ],
            "types": [
                5,
                5,
                5
            ],
            "neighbors": {
                "315": [
                    316
                ],
                "316": [
                    315,
                    317
                ],
                "317": [
                    316
                ]
            }
        },
        "peg4": {
            "indices": [
                321,
                322,
                323
            ],
            "types": [
                5,
                5,
                5
            ],
            "neighbors": {
                "321": [
                    322
                ],
                "322": [
                    321,
                    323
                ],
                "323": [
                    322
                ]
            }
        },
        "peg5": {
            "indices": [
                329,
                330,
                331
            ],
            "types": [
                5,
                5,
                5
            ],
            "neighbors": {
                "329": [
                    330
                ],
                "330": [
                    329,
                    331
                ],
                "331": [
                    330
                ]
            }
        },
        "ground": {
            "indices": [
                0,
                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,
                38,
                39,
                40,
                41,
                42,
                43,
                44,
                45,
                46,
                47,
                48,
                49,
                50,
                51,
                52,
                53,
                54,
                55,
                56,
                57,
                58,
                59,
                60,
                61,
                62,
                63,
                64,
                65,
                66,
                67,
                68,
                69
            ],
            "types": [
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5
            ],
            "neighbors": {
                "0": [
                    1
                ],
                "1": [
                    0,
                    2
                ],
                "2": [
                    1,
                    3
                ],
                "3": [
                    2,
                    4
                ],
                "4": [
                    3,
                    5
                ],
                "5": [
                    6,
                    4
                ],
                "6": [
                    5,
                    7
                ],
                "7": [
                    6,
                    8
                ],
                "8": [
                    7,
                    9
                ],
                "9": [
                    8,
                    10
                ],
                "10": [
                    9,
                    11
                ],
                "11": [
                    10,
                    12
                ],
                "12": [
                    11,
                    13
                ],
                "13": [
                    12,
                    14
                ],
                "14": [
                    15,
                    13
                ],
                "15": [
                    16,
                    14
                ],
                "16": [
                    15,
                    17
                ],
                "17": [
                    16,
                    18
                ],
                "18": [
                    17,
                    19
                ],
                "19": [
                    18,
                    20
                ],
                "20": [
                    19,
                    21
                ],
                "21": [
                    20,
                    22
                ],
                "22": [
                    21,
                    23
                ],
                "23": [
                    22,
                    24
                ],
                "24": [
                    23,
                    25
                ],
                "25": [
                    24,
                    26
                ],
                "26": [
                    25,
                    27
                ],
                "27": [
                    26,
                    28
                ],
                "28": [
                    29,
                    27
                ],
                "29": [
                    28,
                    30
                ],
                "30": [
                    29,
                    31
                ],
                "31": [
                    30,
                    32
                ],
                "32": [
                    31,
                    33
                ],
                "33": [
                    32,
                    34
                ],
                "34": [
                    33,
                    35
                ],
                "35": [
                    34,
                    36
                ],
                "36": [
                    35,
                    37
                ],
                "37": [
                    36,
                    38
                ],
                "38": [
                    37,
                    39
                ],
                "39": [
                    38,
                    40
                ],
                "40": [
                    39,
                    41
                ],
                "41": [
                    40,
                    42
                ],
                "42": [
                    41,
                    43
                ],
                "43": [
                    42,
                    44
                ],
                "44": [
                    43,
                    45
                ],
                "45": [
                    44,
                    46
                ],
                "46": [
                    45,
                    47
                ],
                "47": [
                    46,
                    48
                ],
                "48": [
                    47,
                    49
                ],
                "49": [
                    48,
                    50
                ],
                "50": [
                    49,
                    51
                ],
                "51": [
                    50,
                    52
                ],
                "52": [
                    51,
                    53
                ],
                "53": [
                    52,
                    54
                ],
                "54": [
                    53,
                    55
                ],
                "55": [
                    54,
                    56
                ],
                "56": [
                    55,
                    57
                ],
                "57": [
                    56,
                    58
                ],
                "58": [
                    57,
                    59
                ],
                "59": [
                    58,
                    60
                ],
                "60": [
                    59,
                    61
                ],
                "61": [
                    60,
                    62
                ],
                "62": [
                    61,
                    63
                ],
                "63": [
                    62,
                    64
                ],
                "64": [
                    63,
                    65
                ],
                "65": [
                    64,
                    66
                ],
                "66": [
                    65,
                    67
                ],
                "67": [
                    66,
                    68
                ],
                "68": [
                    67,
                    69
                ],
                "69": [
                    68
                ]
            }
        }
    }
}

================================================
FILE: evogym/envs/sim_files/BeamToppler-v0.json
================================================
{
    "grid_width": 70,
    "grid_height": 7,
    "objects": {
        "beam": {
            "indices": [
                449,
                450,
                451,
                452,
                453,
                454,
                455,
                456,
                457,
                458,
                379,
                380,
                381,
                382,
                383,
                384,
                385,
                386,
                387,
                388
            ],
            "types": [
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1,
                1
            ],
            "neighbors": {
                "449": [
                    379,
                    450
                ],
                "450": [
                    449,
                    380,
                    451
                ],
                "451": [
                    450,
                    381,
                    452
                ],
                "452": [
                    451,
                    382,
                    453
                ],
                "453": [
                    452,
                    383,
                    454
                ],
                "454": [
                    453,
                    384,
                    455
                ],
                "455": [
                    454,
                    385,
                    456
                ],
                "456": [
                    455,
                    386,
                    457
                ],
                "457": [
                    456,
                    387,
                    458
                ],
                "458": [
                    457,
                    388
                ],
                "379": [
                    380,
                    449
                ],
                "380": [
                    379,
                    381,
                    450
                ],
                "381": [
                    380,
                    382,
                    451
                ],
                "382": [
                    381,
                    383,
                    452
                ],
                "383": [
                    382,
                    384,
                    453
                ],
                "384": [
                    383,
                    385,
                    454
                ],
                "385": [
                    384,
                    386,
                    455
                ],
                "386": [
                    385,
                    387,
                    456
                ],
                "387": [
                    386,
                    388,
                    457
                ],
                "388": [
                    387,
                    458
                ]
            }
        },
        "peg1": {
            "indices": [
                307,
                308,
                309,
                310,
                311
            ],
            "types": [
                5,
                5,
                5,
                5,
                5
            ],
            "neighbors": {
                "307": [
                    308
                ],
                "308": [
                    307,
                    309
                ],
                "309": [
                    308,
                    310
                ],
                "310": [
                    309,
                    311
                ],
                "311": [
                    310
                ]
            }
        },
        "peg2": {
            "indices": [
                316,
                317,
                318,
                319,
                320
            ],
            "types": [
                5,
                5,
                5,
                5,
                5
            ],
            "neighbors": {
                "316": [
                    317
                ],
                "317": [
                    316,
                    318
                ],
                "318": [
                    317,
                    319
                ],
                "319": [
                    318,
                    320
                ],
                "320": [
                    319
                ]
            }
        },
        "ground": {
            "indices": [
                0,
                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,
                38,
                39,
                40,
                41,
                42,
                43,
                44,
                45,
                46,
                47,
                48,
                49,
                50,
                51,
                52,
                53,
                54,
                55,
                56,
                57,
                58,
                59,
                60,
                61,
                62,
                63,
                64,
                65,
                66,
                67,
                68,
                69
            ],
            "types": [
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5
            ],
            "neighbors": {
                "0": [
                    1
                ],
                "1": [
                    0,
                    2
                ],
                "2": [
                    1,
                    3
                ],
                "3": [
                    2,
                    4
                ],
                "4": [
                    3,
                    5
                ],
                "5": [
                    6,
                    4
                ],
                "6": [
                    5,
                    7
                ],
                "7": [
                    6,
                    8
                ],
                "8": [
                    7,
                    9
                ],
                "9": [
                    8,
                    10
                ],
                "10": [
                    9,
                    11
                ],
                "11": [
                    10,
                    12
                ],
                "12": [
                    11,
                    13
                ],
                "13": [
                    12,
                    14
                ],
                "14": [
                    15,
                    13
                ],
                "15": [
                    16,
                    14
                ],
                "16": [
                    15,
                    17
                ],
                "17": [
                    16,
                    18
                ],
                "18": [
                    17,
                    19
                ],
                "19": [
                    18,
                    20
                ],
                "20": [
                    19,
                    21
                ],
                "21": [
                    20,
                    22
                ],
                "22": [
                    21,
                    23
                ],
                "23": [
                    22,
                    24
                ],
                "24": [
                    23,
                    25
                ],
                "25": [
                    24,
                    26
                ],
                "26": [
                    25,
                    27
                ],
                "27": [
                    26,
                    28
                ],
                "28": [
                    29,
                    27
                ],
                "29": [
                    28,
                    30
                ],
                "30": [
                    29,
                    31
                ],
                "31": [
                    30,
                    32
                ],
                "32": [
                    31,
                    33
                ],
                "33": [
                    32,
                    34
                ],
                "34": [
                    33,
                    35
                ],
                "35": [
                    34,
                    36
                ],
                "36": [
                    35,
                    37
                ],
                "37": [
                    36,
                    38
                ],
                "38": [
                    37,
                    39
                ],
                "39": [
                    38,
                    40
                ],
                "40": [
                    39,
                    41
                ],
                "41": [
                    40,
                    42
                ],
                "42": [
                    41,
                    43
                ],
                "43": [
                    42,
                    44
                ],
                "44": [
                    43,
                    45
                ],
                "45": [
                    44,
                    46
                ],
                "46": [
                    45,
                    47
                ],
                "47": [
                    46,
                    48
                ],
                "48": [
                    47,
                    49
                ],
                "49": [
                    48,
                    50
                ],
                "50": [
                    49,
                    51
                ],
                "51": [
                    50,
                    52
                ],
                "52": [
                    51,
                    53
                ],
                "53": [
                    52,
                    54
                ],
                "54": [
                    53,
                    55
                ],
                "55": [
                    54,
                    56
                ],
                "56": [
                    55,
                    57
                ],
                "57": [
                    56,
                    58
                ],
                "58": [
                    57,
                    59
                ],
                "59": [
                    58,
                    60
                ],
                "60": [
                    59,
                    61
                ],
                "61": [
                    60,
                    62
                ],
                "62": [
                    61,
                    63
                ],
                "63": [
                    62,
                    64
                ],
                "64": [
                    63,
                    65
                ],
                "65": [
                    64,
                    66
                ],
                "66": [
                    65,
                    67
                ],
                "67": [
                    66,
                    68
                ],
                "68": [
                    67,
                    69
                ],
                "69": [
                    68
                ]
            }
        }
    }
}

================================================
FILE: evogym/envs/sim_files/BidirectionalWalker-v0.json
================================================
{
    "grid_width": 70,
    "grid_height": 1,
    "objects": {
        "new_object_1": {
            "indices": [
                0,
                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,
                38,
                39,
                40,
                41,
                42,
                43,
                44,
                45,
                46,
                47,
                48,
                49,
                50,
                51,
                52,
                53,
                54,
                55,
                56,
                57,
                58,
                59,
                60,
                61,
                62,
                63,
                64,
                65,
                66,
                67,
                68,
                69
            ],
            "types": [
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5
            ],
            "neighbors": {
                "0": [
                    1
                ],
                "1": [
                    0,
                    2
                ],
                "2": [
                    1,
                    3
                ],
                "3": [
                    4,
                    2
                ],
                "4": [
                    3,
                    5
                ],
                "5": [
                    4,
                    6
                ],
                "6": [
                    5,
                    7
                ],
                "7": [
                    6,
                    8
                ],
                "8": [
                    7,
                    9
                ],
                "9": [
                    8,
                    10
                ],
                "10": [
                    9,
                    11
                ],
                "11": [
                    10,
                    12
                ],
                "12": [
                    11,
                    13
                ],
                "13": [
                    12,
                    14
                ],
                "14": [
                    13,
                    15
                ],
                "15": [
                    14,
                    16
                ],
                "16": [
                    15,
                    17
                ],
                "17": [
                    16,
                    18
                ],
                "18": [
                    17,
                    19
                ],
                "19": [
                    18,
                    20
                ],
                "20": [
                    19,
                    21
                ],
                "21": [
                    20,
                    22
                ],
                "22": [
                    23,
                    21
                ],
                "23": [
                    24,
                    22
                ],
                "24": [
                    23,
                    25
                ],
                "25": [
                    24,
                    26
                ],
                "26": [
                    25,
                    27
                ],
                "27": [
                    26,
                    28
                ],
                "28": [
                    27,
                    29
                ],
                "29": [
                    28,
                    30
                ],
                "30": [
                    29,
                    31
                ],
                "31": [
                    30,
                    32
                ],
                "32": [
                    31,
                    33
                ],
                "33": [
                    32,
                    34
                ],
                "34": [
                    33,
                    35
                ],
                "35": [
                    34,
                    36
                ],
                "36": [
                    35,
                    37
                ],
                "37": [
                    36,
                    38
                ],
                "38": [
                    39,
                    37
                ],
                "39": [
                    40,
                    38
                ],
                "40": [
                    41,
                    39
                ],
                "41": [
                    42,
                    40
                ],
                "42": [
                    41,
                    43
                ],
                "43": [
                    42,
                    44
                ],
                "44": [
                    43,
                    45
                ],
                "45": [
                    44,
                    46
                ],
                "46": [
                    45,
                    47
                ],
                "47": [
                    46,
                    48
                ],
                "48": [
                    49,
                    47
                ],
                "49": [
                    48,
                    50
                ],
                "50": [
                    49,
                    51
                ],
                "51": [
                    50,
                    52
                ],
                "52": [
                    51,
                    53
                ],
                "53": [
                    52,
                    54
                ],
                "54": [
                    53,
                    55
                ],
                "55": [
                    54,
                    56
                ],
                "56": [
                    55,
                    57
                ],
                "57": [
                    56,
                    58
                ],
                "58": [
                    57,
                    59
                ],
                "59": [
                    58,
                    60
                ],
                "60": [
                    59,
                    61
                ],
                "61": [
                    60,
                    62
                ],
                "62": [
                    61,
                    63
                ],
                "63": [
                    62,
                    64
                ],
                "64": [
                    63,
                    65
                ],
                "65": [
                    64,
                    66
                ],
                "66": [
                    65,
                    67
                ],
                "67": [
                    66,
                    68
                ],
                "68": [
                    67,
                    69
                ],
                "69": [
                    68
                ]
            }
        }
    }
}

================================================
FILE: evogym/envs/sim_files/BridgeWalker-v0.json
================================================
{
    "grid_width": 60,
    "grid_height": 5,
    "objects": {
        "new_object_2": {
            "indices": [
                240,
                241,
                242,
                243,
                244,
                245,
                246,
                247,
                248,
                249,
                250,
                251,
                252,
                253,
                254,
                255,
                256,
                257,
                258,
                259,
                260,
                261,
                262,
                263,
                264,
                265,
                266,
                267,
                268,
                269,
                270,
                271,
                272,
                273,
                274,
                275,
                276,
                277,
                278,
                279,
                280,
                281,
                282,
                283,
                284,
                285,
                286,
                287,
                288,
                289,
                290,
                291,
                292,
                293,
                294,
                295,
                296,
                297,
                298,
                299,
                180,
                181,
                182,
                183,
                184,
                185,
                186,
                187,
                188,
                189,
                190,
                191,
                192,
                193,
                194,
                195,
                196,
                197,
                198,
                199,
                200,
                201,
                202,
                203,
                204,
                205,
                206,
                207,
                208,
                209,
                210,
                211,
                212,
                213,
                214,
                215,
                216,
                217,
                218,
                219,
                220,
                221,
                222,
                223,
                224,
                225,
                226,
                227,
                228,
                229,
                230,
                231,
                232,
                233,
                234,
                235,
                236,
                237,
                238,
                239,
                120,
                125,
                130,
                138,
                149,
                166,
                178,
                179,
                60,
                65,
                70,
                78,
                89,
                106,
                118,
                119,
                0,
                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,
                38,
                39,
                40,
                41,
                42,
                43,
                44,
                45,
                46,
                47,
                48,
                49,
                50,
                51,
                52,
                53,
                54,
                55,
                56,
                57,
                58,
                59
            ],
            "types": [
                5,
                2,
                2,
                2,
                2,
                5,
                2,
                2,
                2,
                2,
                5,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                5,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                5,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                5,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                5,
                5,
                5,
                2,
                2,
                2,
                2,
                5,
                2,
                2,
                2,
                2,
                5,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                5,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                5,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                5,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                2,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5
            ],
            "neighbors": {
                "240": [
                    180,
                    241
                ],
                "241": [
                    240,
                    242,
                    181
                ],
                "242": [
                    243,
                    241,
                    182
                ],
                "243": [
                    242,
                    244,
                    183
                ],
                "244": [
                    243,
                    245,
                    184
                ],
                "245": [
                    185,
                    246,
                    244
                ],
                "246": [
                    245,
                    247,
                    186
                ],
                "247": [
                    248,
                    187,
                    246
                ],
                "248": [
                    247,
                    249,
                    188
                ],
                "249": [
                    248,
                    250,
                    189
                ],
                "250": [
                    190,
                    251,
                    249
                ],
                "251": [
                    250,
                    252,
                    191
                ],
                "252": [
                    251,
                    253,
                    192
                ],
                "253": [
                    252,
                    254,
                    193
                ],
                "254": [
                    253,
                    255,
                    194
                ],
                "255": [
                    254,
                    256,
                    195
                ],
                "256": [
                    255,
                    257,
                    196
                ],
                "257": [
                    256,
                    258,
                    197
                ],
                "258": [
                    198,
                    259,
                    257
                ],
                "259": [
                    258,
                    260,
                    199
                ],
                "260": [
                    259,
                    261,
                    200
                ],
                "261": [
                    260,
                    262,
                    201
                ],
                "262": [
                    261,
                    263,
                    202
                ],
                "263": [
                    262,
                    264,
                    203
                ],
                "264": [
                    263,
                    265,
                    204
                ],
                "265": [
                    264,
                    266,
                    205
                ],
                "266": [
                    265,
                    267,
                    206
                ],
                "267": [
                    266,
                    268,
                    207
                ],
                "268": [
                    267,
                    269,
                    208
                ],
                "269": [
                    209,
                    270,
                    268
                ],
                "270": [
                    269,
                    271,
                    210
                ],
                "271": [
                    270,
                    272,
                    211
                ],
                "272": [
                    271,
                    273,
                    212
                ],
                "273": [
                    272,
                    274,
                    213
                ],
                "274": [
                    273,
                    275,
                    214
                ],
                "275": [
                    274,
                    276,
                    215
                ],
                "276": [
                    275,
                    277,
                    216
                ],
                "277": [
                    276,
                    278,
                    217
                ],
                "278": [
                    277,
                    279,
                    218
                ],
                "279": [
                    278,
                    280,
                    219
                ],
                "280": [
                    279,
                    281,
                    220
                ],
                "281": [
                    280,
                    282,
                    221
                ],
                "282": [
                    281,
                    283,
                    222
                ],
                "283": [
                    282,
                    284,
                    223
                ],
                "284": [
                    283,
                    285,
                    224
                ],
                "285": [
                    284,
                    286,
                    225
                ],
                "286": [
                    226,
                    287,
                    285
                ],
                "287": [
                    286,
                    288,
                    227
                ],
                "288": [
                    287,
                    289,
                    228
                ],
                "289": [
                    288,
                    290,
                    229
                ],
                "290": [
                    289,
                    291,
                    230
                ],
                "291": [
                    290,
                    292,
                    231
                ],
                "292": [
                    293,
                    291,
                    232
                ],
                "293": [
                    294,
                    292,
                    233
                ],
                "294": [
                    295,
                    293,
                    234
                ],
                "295": [
                    294,
                    296,
                    235
                ],
                "296": [
                    295,
                    297,
                    236
                ],
                "297": [
                    296,
                    298,
                    237
                ],
                "298": [
                    238,
                    299,
                    297
                ],
                "299": [
                    298,
                    239
                ],
                "180": [
                    240,
                    120,
                    181
                ],
                "181": [
                    180,
                    182,
                    241
                ],
                "182": [
                    183,
                    242,
                    181
                ],
                "183": [
                    184,
                    243,
                    182
                ],
                "184": [
                    185,
                    244,
                    183
                ],
                "185": [
                    245,
                    125,
                    186,
                    184
                ],
                "186": [
                    185,
                    187,
                    246
                ],
                "187": [
                    188,
                    247,
                    186
                ],
                "188": [
                    189,
                    248,
                    187
                ],
                "189": [
                    190,
                    249,
                    188
                ],
                "190": [
                    250,
                    130,
                    191,
                    189
                ],
                "191": [
                    190,
                    192,
                    251
                ],
                "192": [
                    193,
                    252,
                    191
                ],
                "193": [
                    194,
                    253,
                    192
                ],
                "194": [
                    195,
                    254,
                    193
                ],
                "195": [
                    196,
                    255,
                    194
                ],
                "196": [
                    197,
                    256,
                    195
                ],
                "197": [
                    198,
                    257,
                    196
                ],
                "198": [
                    258,
                    138,
                    199,
                    197
                ],
                "199": [
                    198,
                    200,
                    259
                ],
                "200": [
                    201,
                    260,
                    199
                ],
                "201": [
                    202,
                    261,
                    200
                ],
                "202": [
                    203,
                    262,
                    201
                ],
                "203": [
                    204,
                    263,
                    202
                ],
                "204": [
                    205,
                    264,
                    203
                ],
                "205": [
                    206,
                    265,
                    204
                ],
                "206": [
                    266,
                    205,
                    207
                ],
                "207": [
                    206,
                    208,
                    267
                ],
                "208": [
                    209,
                    268,
                    207
                ],
                "209": [
                    269,
                    149,
                    210,
                    208
                ],
                "210": [
                    209,
                    211,
                    270
                ],
                "211": [
                    212,
                    271,
                    210
                ],
                "212": [
                    213,
                    272,
                    211
                ],
                "213": [
                    214,
                    273,
                    212
                ],
                "214": [
                    215,
                    274,
                    213
                ],
                "215": [
                    216,
                    275,
                    214
                ],
                "216": [
                    276,
                    215,
                    217
                ],
                "217": [
                    216,
                    218,
                    277
                ],
                "218": [
                    219,
                    278,
                    217
                ],
                "219": [
                    220,
                    279,
                    218
                ],
                "220": [
                    221,
                    280,
                    219
                ],
                "221": [
                    222,
                    281,
                    220
                ],
                "222": [
                    223,
                    282,
                    221
                ],
                "223": [
                    224,
                    283,
                    222
                ],
                "224": [
                    225,
                    284,
                    223
                ],
                "225": [
                    226,
                    285,
                    224
                ],
                "226": [
                    286,
                    166,
                    227,
                    225
                ],
                "227": [
                    226,
                    228,
                    287
                ],
                "228": [
                    229,
                    288,
                    227
                ],
                "229": [
                    289,
                    228,
                    230
                ],
                "230": [
                    229,
                    290,
                    231
                ],
                "231": [
                    230,
                    291,
                    232
                ],
                "232": [
                    231,
                    292,
                    233
                ],
                "233": [
                    232,
                    293,
                    234
                ],
                "234": [
                    233,
                    294,
                    235
                ],
                "235": [
                    234,
                    295,
                    236
                ],
                "236": [
                    235,
                    296,
                    237
                ],
                "237": [
                    236,
                    238,
                    297
                ],
                "238": [
                    298,
                    178,
                    239,
                    237
                ],
                "239": [
                    238,
                    179,
                    299
                ],
                "120": [
                    180,
                    60
                ],
                "125": [
                    185,
                    65
                ],
                "130": [
                    190,
                    70
                ],
                "138": [
                    198,
                    78
                ],
                "149": [
                    209,
                    89
                ],
                "166": [
                    226,
                    106
                ],
                "178": [
                    238,
                    118,
                    179
                ],
                "179": [
                    178,
                    119,
                    239
                ],
                "60": [
                    120,
                    0
                ],
                "65": [
                    125,
                    5
                ],
                "70": [
                    130,
                    10
                ],
                "78": [
                    138,
                    18
                ],
                "89": [
                    149,
                    29
                ],
                "106": [
                    166,
                    46
                ],
                "118": [
                    178,
                    58,
                    119
                ],
                "119": [
                    118,
                    59,
                    179
                ],
                "0": [
                    1,
                    60
                ],
                "1": [
                    0,
                    2
                ],
                "2": [
                    1,
                    3
                ],
                "3": [
                    2,
                    4
                ],
                "4": [
                    3,
                    5
                ],
                "5": [
                    4,
                    6,
                    65
                ],
                "6": [
                    5,
                    7
                ],
                "7": [
                    8,
                    6
                ],
                "8": [
                    7,
                    9
                ],
                "9": [
                    8,
                    10
                ],
                "10": [
                    9,
                    11,
                    70
                ],
                "11": [
                    10,
                    12
                ],
                "12": [
                    11,
                    13
                ],
                "13": [
                    12,
                    14
                ],
                "14": [
                    13,
                    15
                ],
                "15": [
                    14,
                    16
                ],
                "16": [
                    15,
                    17
                ],
                "17": [
                    16,
                    18
                ],
                "18": [
                    17,
                    19,
                    78
                ],
                "19": [
                    18,
                    20
                ],
                "20": [
                    19,
                    21
                ],
                "21": [
                    20,
                    22
                ],
                "22": [
                    21,
                    23
                ],
                "23": [
                    22,
                    24
                ],
                "24": [
                    23,
                    25
                ],
                "25": [
                    24,
                    26
                ],
                "26": [
                    25,
                    27
                ],
                "27": [
                    26,
                    28
                ],
                "28": [
                    27,
                    29
                ],
                "29": [
                    28,
                    30,
                    89
                ],
                "30": [
                    29,
                    31
                ],
                "31": [
                    30,
                    32
                ],
                "32": [
                    31,
                    33
                ],
                "33": [
                    32,
                    34
                ],
                "34": [
                    33,
                    35
                ],
                "35": [
                    34,
                    36
                ],
                "36": [
                    35,
                    37
                ],
                "37": [
                    36,
                    38
                ],
                "38": [
                    37,
                    39
                ],
                "39": [
                    38,
                    40
                ],
                "40": [
                    39,
                    41
                ],
                "41": [
                    40,
                    42
                ],
                "42": [
                    41,
                    43
                ],
                "43": [
                    42,
                    44
                ],
                "44": [
                    43,
                    45
                ],
                "45": [
                    44,
                    46
                ],
                "46": [
                    45,
                    47,
                    106
                ],
                "47": [
                    48,
                    46
                ],
                "48": [
                    49,
                    47
                ],
                "49": [
                    48,
                    50
                ],
                "50": [
                    49,
                    51
                ],
                "51": [
                    52,
                    50
                ],
                "52": [
                    53,
                    51
                ],
                "53": [
                    54,
                    52
                ],
                "54": [
                    53,
                    55
                ],
                "55": [
                    54,
                    56
                ],
                "56": [
                    55,
                    57
                ],
                "57": [
                    56,
                    58
                ],
                "58": [
                    57,
                    59,
                    118
                ],
                "59": [
                    58,
                    119
                ]
            }
        }
    }
}

================================================
FILE: evogym/envs/sim_files/Carrier-v0.json
================================================
{
    "grid_width": 100,
    "grid_height": 8,
    "objects": {
        "package": {
            "indices": [
                703,
                704,
                705,
                603,
                604,
                605
            ],
            "types": [
                2,
                2,
                2,
                2,
                2,
                2
            ],
            "neighbors": {
                "703": [
                    704,
                    603
                ],
                "704": [
                    705,
                    604,
                    703
                ],
                "705": [
                    605,
                    704
                ],
                "603": [
                    604,
                    703
                ],
                "604": [
                    603,
                    605,
                    704
                ],
                "605": [
                    604,
                    705
                ]
            }
        },
        "ground": {
            "indices": [
                0,
                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,
                38,
                39,
                40,
                41,
                42,
                43,
                44,
                45,
                46,
                47,
                48,
                49,
                50,
                51,
                52,
                53,
                54,
                55,
                56,
                57,
                58,
                59,
                60,
                61,
                62,
                63,
                64,
                65,
                66,
                67,
                68,
                69,
                70,
                71,
                72,
                73,
                74,
                75,
                76,
                77,
                78,
                79,
                80,
                81,
                82,
                83,
                84,
                85,
                86,
                87,
                88,
                89,
                90,
                91,
                92,
                93,
                94,
                95,
                96,
                97,
                98,
                99
            ],
            "types": [
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5
            ],
            "neighbors": {
                "0": [
                    1
                ],
                "1": [
                    0,
                    2
                ],
                "2": [
                    1,
                    3
                ],
                "3": [
                    2,
                    4
                ],
                "4": [
                    3,
                    5
                ],
                "5": [
                    4,
                    6
                ],
                "6": [
                    5,
                    7
                ],
                "7": [
                    8,
                    6
                ],
                "8": [
                    7,
                    9
                ],
                "9": [
                    8,
                    10
                ],
                "10": [
                    9,
                    11
                ],
                "11": [
                    10,
                    12
                ],
                "12": [
                    11,
                    13
                ],
                "13": [
                    12,
                    14
                ],
                "14": [
                    13,
                    15
                ],
                "15": [
                    14,
                    16
                ],
                "16": [
                    15,
                    17
                ],
                "17": [
                    16,
                    18
                ],
                "18": [
                    17,
                    19
                ],
                "19": [
                    18,
                    20
                ],
                "20": [
                    19,
                    21
                ],
                "21": [
                    20,
                    22
                ],
                "22": [
                    21,
                    23
                ],
                "23": [
                    22,
                    24
                ],
                "24": [
                    23,
                    25
                ],
                "25": [
                    24,
                    26
                ],
                "26": [
                    25,
                    27
                ],
                "27": [
                    26,
                    28
                ],
                "28": [
                    27,
                    29
                ],
                "29": [
                    28,
                    30
                ],
                "30": [
                    29,
                    31
                ],
                "31": [
                    30,
                    32
                ],
                "32": [
                    31,
                    33
                ],
                "33": [
                    32,
                    34
                ],
                "34": [
                    33,
                    35
                ],
                "35": [
                    34,
                    36
                ],
                "36": [
                    35,
                    37
                ],
                "37": [
                    36,
   
Download .txt
gitextract_7lcliole/

├── .github/
│   └── workflows/
│       ├── test.yml
│       └── wheels.yml
├── .gitignore
├── .gitmodules
├── LICENSE
├── MANIFEST.in
├── README.md
├── environment.yml
├── evogym/
│   ├── __init__.py
│   ├── envs/
│   │   ├── __init__.py
│   │   ├── balance.py
│   │   ├── base.py
│   │   ├── change_shape.py
│   │   ├── climb.py
│   │   ├── flip.py
│   │   ├── jump.py
│   │   ├── manipulate.py
│   │   ├── multi_goal.py
│   │   ├── sim_files/
│   │   │   ├── Balancer-v0.json
│   │   │   ├── Balancer-v1.json
│   │   │   ├── BeamSlider-v0.json
│   │   │   ├── BeamToppler-v0.json
│   │   │   ├── BidirectionalWalker-v0.json
│   │   │   ├── BridgeWalker-v0.json
│   │   │   ├── Carrier-v0.json
│   │   │   ├── Carrier-v1.json
│   │   │   ├── CaveCrawler-v0.json
│   │   │   ├── Climber-v0.json
│   │   │   ├── Climber-v1.json
│   │   │   ├── Climber-v2.json
│   │   │   ├── DownStepper-v0.json
│   │   │   ├── Flipper-v0.json
│   │   │   ├── GapJumper-v0.json
│   │   │   ├── Hurdler-v0.json
│   │   │   ├── Jumper-v0.json
│   │   │   ├── Lifter-v0.json
│   │   │   ├── ObstacleTraverser-v0.json
│   │   │   ├── ObstacleTraverser-v1.json
│   │   │   ├── PlatformJumper-v0.json
│   │   │   ├── Pusher-v0.json
│   │   │   ├── Pusher-v1.json
│   │   │   ├── ShapeChange.json
│   │   │   ├── Thrower-v0.json
│   │   │   ├── Traverser-v0.json
│   │   │   ├── UpStepper-v0.json
│   │   │   ├── Walker-v0.json
│   │   │   ├── package.json
│   │   │   ├── peg.json
│   │   │   ├── rigid_1x1.json
│   │   │   ├── rigid_2x2.json
│   │   │   └── rigid_3x3.json
│   │   ├── traverse.py
│   │   └── walk.py
│   ├── sim.py
│   ├── simulator/
│   │   ├── CMakeLists.txt
│   │   ├── FindGLEW.cmake
│   │   ├── SimulatorCPP/
│   │   │   ├── BBTreeNode.cpp
│   │   │   ├── BBTreeNode.h
│   │   │   ├── Boxel.cpp
│   │   │   ├── Boxel.h
│   │   │   ├── CMakeLists.txt
│   │   │   ├── Camera.cpp
│   │   │   ├── Camera.h
│   │   │   ├── Colors.h
│   │   │   ├── Edge.cpp
│   │   │   ├── Edge.h
│   │   │   ├── Environment.cpp
│   │   │   ├── Environment.h
│   │   │   ├── Interface.cpp
│   │   │   ├── Interface.h
│   │   │   ├── ObjectCreator.cpp
│   │   │   ├── ObjectCreator.h
│   │   │   ├── PhysicsEngine.cpp
│   │   │   ├── PhysicsEngine.h
│   │   │   ├── PythonBindings.cpp
│   │   │   ├── Robot.cpp
│   │   │   ├── Robot.h
│   │   │   ├── Sim.cpp
│   │   │   ├── Sim.h
│   │   │   ├── SimObject.cpp
│   │   │   ├── SimObject.h
│   │   │   ├── Snapshot.cpp
│   │   │   ├── Snapshot.h
│   │   │   ├── main.cpp
│   │   │   └── main.h
│   │   └── externals/
│   │       ├── CMakeLists.txt
│   │       └── eigen/
│   │           └── Eigen/
│   │               ├── 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/
│   │                   ├── Cholesky/
│   │                   │   ├── LDLT.h
│   │                   │   ├── LLT.h
│   │                   │   └── LLT_LAPACKE.h
│   │                   ├── CholmodSupport/
│   │                   │   └── CholmodSupport.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
│   │                   │   ├── 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
│   │                   │   │   │   ├── MathFunctions.h
│   │                   │   │   │   ├── PacketMath.h
│   │                   │   │   │   └── TypeCasting.h
│   │                   │   │   ├── AltiVec/
│   │                   │   │   │   ├── Complex.h
│   │                   │   │   │   ├── MathFunctions.h
│   │                   │   │   │   ├── MatrixProduct.h
│   │                   │   │   │   ├── MatrixProductCommon.h
│   │                   │   │   │   ├── MatrixProductMMA.h
│   │                   │   │   │   └── PacketMath.h
│   │                   │   │   ├── CUDA/
│   │                   │   │   │   └── Complex.h
│   │                   │   │   ├── Default/
│   │                   │   │   │   ├── BFloat16.h
│   │                   │   │   │   ├── ConjHelper.h
│   │                   │   │   │   ├── GenericPacketMathFunctions.h
│   │                   │   │   │   ├── GenericPacketMathFunctionsFwd.h
│   │                   │   │   │   ├── Half.h
│   │                   │   │   │   ├── Settings.h
│   │                   │   │   │   └── TypeCasting.h
│   │                   │   │   ├── GPU/
│   │                   │   │   │   ├── MathFunctions.h
│   │                   │   │   │   ├── PacketMath.h
│   │                   │   │   │   └── TypeCasting.h
│   │                   │   │   ├── HIP/
│   │                   │   │   │   └── hcc/
│   │                   │   │   │       └── math_constants.h
│   │                   │   │   ├── MSA/
│   │                   │   │   │   ├── Complex.h
│   │                   │   │   │   ├── MathFunctions.h
│   │                   │   │   │   └── PacketMath.h
│   │                   │   │   ├── NEON/
│   │                   │   │   │   ├── Complex.h
│   │                   │   │   │   ├── MathFunctions.h
│   │                   │   │   │   ├── PacketMath.h
│   │                   │   │   │   └── TypeCasting.h
│   │                   │   │   ├── SSE/
│   │                   │   │   │   ├── Complex.h
│   │                   │   │   │   ├── 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
│   │                   │       ├── StaticAssert.h
│   │                   │       ├── SymbolicIndex.h
│   │                   │       └── XprHelper.h
│   │                   ├── Eigenvalues/
│   │                   │   ├── ComplexEigenSolver.h
│   │                   │   ├── ComplexSchur.h
│   │                   │   ├── ComplexSchur_LAPACKE.h
│   │                   │   ├── EigenSolver.h
│   │                   │   ├── GeneralizedEigenSolver.h
│   │                   │   ├── GeneralizedSelfAdjointEigenSolver.h
│   │                   │   ├── HessenbergDecomposition.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
│   │                   │   ├── 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
│   │                   ├── IterativeLinearSolvers/
│   │                   │   ├── BasicPreconditioners.h
│   │                   │   ├── BiCGSTAB.h
│   │                   │   ├── ConjugateGradient.h
│   │                   │   ├── IncompleteCholesky.h
│   │                   │   ├── IncompleteLUT.h
│   │                   │   ├── IterativeSolverBase.h
│   │                   │   ├── LeastSquareConjugateGradient.h
│   │                   │   └── SolveWithGuess.h
│   │                   ├── Jacobi/
│   │                   │   └── Jacobi.h
│   │                   ├── KLUSupport/
│   │                   │   └── KLUSupport.h
│   │                   ├── LU/
│   │                   │   ├── Determinant.h
│   │                   │   ├── FullPivLU.h
│   │                   │   ├── InverseImpl.h
│   │                   │   ├── PartialPivLU.h
│   │                   │   ├── PartialPivLU_LAPACKE.h
│   │                   │   └── arch/
│   │                   │       └── InverseSize4.h
│   │                   ├── MetisSupport/
│   │                   │   └── MetisSupport.h
│   │                   ├── OrderingMethods/
│   │                   │   ├── Amd.h
│   │                   │   ├── Eigen_Colamd.h
│   │                   │   └── Ordering.h
│   │                   ├── PaStiXSupport/
│   │                   │   └── PaStiXSupport.h
│   │                   ├── PardisoSupport/
│   │                   │   └── PardisoSupport.h
│   │                   ├── QR/
│   │                   │   ├── ColPivHouseholderQR.h
│   │                   │   ├── ColPivHouseholderQR_LAPACKE.h
│   │                   │   ├── CompleteOrthogonalDecomposition.h
│   │                   │   ├── FullPivHouseholderQR.h
│   │                   │   ├── HouseholderQR.h
│   │                   │   └── HouseholderQR_LAPACKE.h
│   │                   ├── SPQRSupport/
│   │                   │   └── SuiteSparseQRSupport.h
│   │                   ├── SVD/
│   │                   │   ├── BDCSVD.h
│   │                   │   ├── JacobiSVD.h
│   │                   │   ├── JacobiSVD_LAPACKE.h
│   │                   │   ├── SVDBase.h
│   │                   │   └── UpperBidiagonalization.h
│   │                   ├── SparseCholesky/
│   │                   │   ├── SimplicialCholesky.h
│   │                   │   └── SimplicialCholesky_impl.h
│   │                   ├── SparseCore/
│   │                   │   ├── AmbiVector.h
│   │                   │   ├── CompressedStorage.h
│   │                   │   ├── ConservativeSparseSparseProduct.h
│   │                   │   ├── MappedSparseMatrix.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/
│   │                   │   ├── 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/
│   │                   │   └── SparseQR.h
│   │                   ├── StlSupport/
│   │                   │   ├── StdDeque.h
│   │                   │   ├── StdList.h
│   │                   │   ├── StdVector.h
│   │                   │   └── details.h
│   │                   ├── SuperLUSupport/
│   │                   │   └── SuperLUSupport.h
│   │                   ├── UmfPackSupport/
│   │                   │   └── UmfPackSupport.h
│   │                   ├── misc/
│   │                   │   ├── Image.h
│   │                   │   ├── Kernel.h
│   │                   │   ├── RealSvd2x2.h
│   │                   │   ├── blas.h
│   │                   │   ├── lapack.h
│   │                   │   ├── lapacke.h
│   │                   │   └── lapacke_mangling.h
│   │                   └── plugins/
│   │                       ├── ArrayCwiseBinaryOps.h
│   │                       ├── ArrayCwiseUnaryOps.h
│   │                       ├── BlockMethods.h
│   │                       ├── CommonCwiseBinaryOps.h
│   │                       ├── CommonCwiseUnaryOps.h
│   │                       ├── IndexedViewMethods.h
│   │                       ├── MatrixCwiseBinaryOps.h
│   │                       ├── MatrixCwiseUnaryOps.h
│   │                       └── ReshapedMethods.h
│   ├── utils.py
│   ├── viewer.py
│   └── world.py
├── examples/
│   ├── README.md
│   ├── bo/
│   │   ├── optimizer.py
│   │   └── run.py
│   ├── cppn_neat/
│   │   ├── neat.cfg
│   │   ├── parallel.py
│   │   ├── population.py
│   │   └── run.py
│   ├── ga/
│   │   └── run.py
│   ├── gym_test.py
│   ├── make_gifs.py
│   ├── ppo/
│   │   ├── args.py
│   │   ├── callback.py
│   │   ├── eval.py
│   │   ├── group_ppo.py
│   │   └── run.py
│   ├── run_bo.py
│   ├── run_cppn_neat.py
│   ├── run_ga.py
│   ├── run_group_ppo.py
│   ├── run_ppo.py
│   ├── utils/
│   │   ├── algo_utils.py
│   │   └── mp_group.py
│   ├── visualize.py
│   └── world_data/
│       ├── carry_bot.json
│       ├── simple_evironment.json
│       └── speed_bot.json
├── pyproject.toml
├── requirements-dev.txt
├── requirements.txt
├── setup.py
├── tests/
│   ├── pytest.ini
│   ├── requires_screen/
│   │   └── test_screen_render_modes.py
│   ├── screen_free/
│   │   ├── test_baseline_envs.py
│   │   ├── test_img_render_modes.py
│   │   └── test_utils.py
│   └── utils.py
└── tutorials/
    ├── README.md
    ├── basic_api.py
    ├── envs/
    │   ├── __init__.py
    │   └── simple_env.py
    ├── rendering_options.py
    ├── visualize_simple_env.py
    └── world_data/
        ├── simple_environment.json
        ├── simple_environment_with_robot.json
        └── simple_walker_env.json
Download .txt
Showing preview only (364K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4135 symbols across 349 files)

FILE: evogym/envs/balance.py
  class Balance (line 15) | class Balance(BenchmarkBase):
    method __init__ (line 17) | def __init__(
    method get_obs (line 39) | def get_obs(self, pos_final):
    method get_reward (line 47) | def get_reward(self, pos_init, pos_final):
    method step (line 55) | def step(self, action):
    method reset (line 84) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...
  class BalanceJump (line 97) | class BalanceJump(BenchmarkBase):
    method __init__ (line 99) | def __init__(
    method get_obs (line 121) | def get_obs(self, pos_final):
    method get_reward (line 129) | def get_reward(self, pos_init, pos_final):
    method step (line 138) | def step(self, action):
    method reset (line 167) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...

FILE: evogym/envs/base.py
  class EvoGymBase (line 16) | class EvoGymBase(gym.Env):
    method __init__ (line 28) | def __init__(
    method step (line 43) | def step(self, action: Dict[str, np.ndarray]) -> bool:
    method reset (line 65) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...
    method sim (line 72) | def sim(self,) -> EvoSim:
    method default_viewer (line 82) | def default_viewer(self,) -> EvoViewer:
    method render (line 91) | def render(
    method close (line 118) | def close(self) -> None:
    method get_actuator_indices (line 126) | def get_actuator_indices(self, robot_name: str) -> np.ndarray:
    method get_dim_action_space (line 138) | def get_dim_action_space(self, robot_name: str) -> int:
    method get_time (line 150) | def get_time(self, ) -> int:
    method pos_at_time (line 159) | def pos_at_time(self, time: int) -> np.ndarray:
    method vel_at_time (line 171) | def vel_at_time(self, time: int) -> np.ndarray:
    method object_pos_at_time (line 183) | def object_pos_at_time(self, time: int, object_name: str) -> np.ndarray:
    method object_vel_at_time (line 196) | def object_vel_at_time(self, time: int, object_name: str) -> np.ndarray:
    method object_orientation_at_time (line 209) | def object_orientation_at_time(self, time: int, object_name: str) -> f...
    method get_pos_com_obs (line 222) | def get_pos_com_obs(self, object_name: str) -> np.ndarray:
    method get_vel_com_obs (line 236) | def get_vel_com_obs(self, object_name: str) -> np.ndarray:
    method get_relative_pos_obs (line 250) | def get_relative_pos_obs(self, object_name: str):
    method get_ort_obs (line 264) | def get_ort_obs(self, object_name: str):
    method get_floor_obs (line 276) | def get_floor_obs(
    method get_ceil_obs (line 329) | def get_ceil_obs(
  class BenchmarkBase (line 381) | class BenchmarkBase(EvoGymBase):
    method __init__ (line 386) | def __init__(
    method pos_at_time (line 396) | def pos_at_time(self, time):
    method vel_at_time (line 399) | def vel_at_time(self, time):
    method object_pos_at_time (line 402) | def object_pos_at_time(self, time, object_name):
    method object_vel_at_time (line 405) | def object_vel_at_time(self, time, object_name):
    method get_pos_com_obs (line 408) | def get_pos_com_obs(self, object_name):
    method get_vel_com_obs (line 411) | def get_vel_com_obs(self, object_name):
    method get_relative_pos_obs (line 417) | def get_relative_pos_obs(self, object_name):
    method get_floor_obs (line 420) | def get_floor_obs(self, object_name, terrain_list, sight_dist, sight_r...
    method get_ceil_obs (line 423) | def get_ceil_obs(self, object_name, terrain_list, sight_dist, sight_ra...

FILE: evogym/envs/change_shape.py
  class ShapeBase (line 15) | class ShapeBase(BenchmarkBase):
    method __init__ (line 17) | def __init__(
    method reset (line 26) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...
    method CCW (line 46) | def CCW(self, p1, p2, p3):
    method jarvis_march (line 52) | def jarvis_march(self, S):
    method convex_poly_area (line 75) | def convex_poly_area(self, pts_cw):
  class MaximizeShape (line 85) | class MaximizeShape(ShapeBase):
    method __init__ (line 87) | def __init__(
    method step (line 109) | def step(self, action):
    method get_reward (line 136) | def get_reward(self, robot_pos_init, robot_pos_final):
  class MinimizeShape (line 150) | class MinimizeShape(ShapeBase):
    method __init__ (line 152) | def __init__(
    method step (line 174) | def step(self, action):
    method get_reward (line 201) | def get_reward(self, robot_pos_init, robot_pos_final):
  class MaximizeXShape (line 215) | class MaximizeXShape(ShapeBase):
    method __init__ (line 217) | def __init__(
    method step (line 239) | def step(self, action):
    method get_reward (line 266) | def get_reward(self, robot_pos_init, robot_pos_final):
  class MaximizeYShape (line 281) | class MaximizeYShape(ShapeBase):
    method __init__ (line 283) | def __init__(
    method step (line 305) | def step(self, action):
    method get_reward (line 332) | def get_reward(self, robot_pos_init, robot_pos_final):

FILE: evogym/envs/climb.py
  class ClimbBase (line 15) | class ClimbBase(BenchmarkBase):
    method __init__ (line 17) | def __init__(
    method reset (line 26) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...
  class Climb0 (line 39) | class Climb0(ClimbBase):
    method __init__ (line 41) | def __init__(
    method step (line 63) | def step(self, action):
  class Climb1 (line 97) | class Climb1(ClimbBase):
    method __init__ (line 99) | def __init__(
    method step (line 121) | def step(self, action):
  class Climb2 (line 155) | class Climb2(ClimbBase):
    method __init__ (line 157) | def __init__(
    method step (line 180) | def step(self, action):
    method reset (line 212) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...

FILE: evogym/envs/flip.py
  class Flipping (line 16) | class Flipping(BenchmarkBase):
    method __init__ (line 18) | def __init__(
    method step (line 44) | def step(self, action):
    method reset (line 91) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...

FILE: evogym/envs/jump.py
  class StationaryJump (line 15) | class StationaryJump(BenchmarkBase):
    method __init__ (line 17) | def __init__(
    method step (line 40) | def step(self, action):
    method reset (line 71) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...

FILE: evogym/envs/manipulate.py
  class PackageBase (line 17) | class PackageBase(BenchmarkBase):
    method __init__ (line 19) | def __init__(
    method get_obs (line 29) | def get_obs(self, robot_pos_final, robot_vel_final, package_pos_final,...
    method get_reward (line 44) | def get_reward(self, package_pos_init, package_pos_final, robot_pos_in...
    method reset (line 65) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...
  class CarrySmallRect (line 84) | class CarrySmallRect(PackageBase):
    method __init__ (line 86) | def __init__(
    method get_reward_carry (line 111) | def get_reward_carry(self, package_pos_init, package_pos_final, robot_...
    method step (line 129) | def step(self, action):
  class CarrySmallRectToTable (line 168) | class CarrySmallRectToTable(PackageBase):
    method __init__ (line 170) | def __init__(
    method get_reward_carry (line 195) | def get_reward_carry(self, package_pos_init, package_pos_final, robot_...
    method step (line 217) | def step(self, action):
  class PushSmallRect (line 250) | class PushSmallRect(PackageBase):
    method __init__ (line 252) | def __init__(
    method step (line 277) | def step(self, action):
  class PushSmallRectOnOppositeSide (line 316) | class PushSmallRectOnOppositeSide(PackageBase):
    method __init__ (line 318) | def __init__(
    method step (line 343) | def step(self, action):
  class ThrowSmallRect (line 382) | class ThrowSmallRect(PackageBase):
    method __init__ (line 384) | def __init__(
    method get_reward_throw (line 409) | def get_reward_throw(self, robot_pos_init, robot_pos_final, package_po...
    method step (line 425) | def step(self, action):
  class CatchSmallRect (line 458) | class CatchSmallRect(PackageBase):
    method __init__ (line 460) | def __init__(
    method random_init (line 476) | def random_init(self):
    method get_obs_catch (line 515) | def get_obs_catch(self, robot_pos_final, package_pos_final) -> np.ndar...
    method get_reward_catch (line 526) | def get_reward_catch(self, robot_pos_init, robot_pos_final, package_po...
    method step (line 543) | def step(self, action):
    method reset (line 577) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...
  class ToppleBeam (line 609) | class ToppleBeam(PackageBase):
    method __init__ (line 611) | def __init__(
    method get_obs_topple (line 639) | def get_obs_topple(self, robot_pos_final, beam_pos_final):
    method get_reward_topple (line 647) | def get_reward_topple(self, robot_pos_init, robot_pos_final, beam_pos_...
    method step (line 671) | def step(self, action):
    method reset (line 709) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...
  class SlideBeam (line 728) | class SlideBeam(PackageBase):
    method __init__ (line 730) | def __init__(
    method get_obs_topple (line 758) | def get_obs_topple(self, robot_pos_final, beam_pos_final):
    method get_reward_topple (line 766) | def get_reward_topple(self, robot_pos_init, robot_pos_final, beam_pos_...
    method step (line 786) | def step(self, action):
    method reset (line 824) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...
  class LiftSmallRect (line 843) | class LiftSmallRect(PackageBase):
    method __init__ (line 845) | def __init__(
    method get_reward_lift (line 867) | def get_reward_lift(self, robot_pos_init, robot_pos_final, package_pos...
    method step (line 888) | def step(self, action):
    method reset (line 922) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...

FILE: evogym/envs/multi_goal.py
  class Goal (line 15) | class Goal():
    method __init__ (line 16) | def __init__(self, name, requirements = None):
    method evaluate_reward (line 19) | def evaluate_reward(self, args):
  class GoalBase (line 22) | class GoalBase(BenchmarkBase):
    method __init__ (line 24) | def __init__(
    method init_reward_goals (line 33) | def init_reward_goals(self, goals):
    method get_reward (line 48) | def get_reward(self, args):
    method get_obs (line 68) | def get_obs(self, args):
  class WalkToX (line 71) | class WalkToX(Goal):
    method __init__ (line 73) | def __init__(self, x_goal):
    method evaluate (line 80) | def evaluate(self, args):
    method get_obs (line 94) | def get_obs(self, args):
  class BiWalk (line 98) | class BiWalk(GoalBase):
    method __init__ (line 100) | def __init__(
    method set_random_goals (line 131) | def set_random_goals(self, lower_bound, upper_bound, goal_dist):
    method step (line 146) | def step(self, action):
    method reset (line 190) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...

FILE: evogym/envs/traverse.py
  class StairsBase (line 16) | class StairsBase(BenchmarkBase):
    method __init__ (line 18) | def __init__(
    method get_reward (line 27) | def get_reward(self, robot_pos_init, robot_pos_final):
    method reset (line 35) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...
  class StepsUp (line 51) | class StepsUp(StairsBase):
    method __init__ (line 53) | def __init__(
    method step (line 76) | def step(self, action):
  class StepsDown (line 116) | class StepsDown(StairsBase):
    method __init__ (line 118) | def __init__(
    method step (line 141) | def step(self, action):
  class WalkingBumpy (line 181) | class WalkingBumpy(StairsBase):
    method __init__ (line 183) | def __init__(
    method step (line 207) | def step(self, action):
  class WalkingBumpy2 (line 247) | class WalkingBumpy2(StairsBase):
    method __init__ (line 249) | def __init__(
    method step (line 273) | def step(self, action):
  class VerticalBarrier (line 310) | class VerticalBarrier(StairsBase):
    method __init__ (line 312) | def __init__(
    method step (line 336) | def step(self, action):
  class FloatingPlatform (line 371) | class FloatingPlatform(StairsBase):
    method __init__ (line 373) | def __init__(
    method step (line 399) | def step(self, action):
    method reset (line 441) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...
  class Gaps (line 456) | class Gaps(StairsBase):
    method __init__ (line 458) | def __init__(
    method step (line 484) | def step(self, action):
    method reset (line 521) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...
  class BlockSoup (line 536) | class BlockSoup(StairsBase):
    method __init__ (line 538) | def __init__(
    method step (line 594) | def step(self, action):
    method reset (line 631) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...

FILE: evogym/envs/walk.py
  class WalkingFlat (line 15) | class WalkingFlat(BenchmarkBase):
    method __init__ (line 17) | def __init__(
    method step (line 39) | def step(self, action):
    method reset (line 74) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...
  class SoftBridge (line 86) | class SoftBridge(BenchmarkBase):
    method __init__ (line 88) | def __init__(
    method step (line 110) | def step(self, action):
    method reset (line 146) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...
  class Duck (line 159) | class Duck(BenchmarkBase):
    method __init__ (line 161) | def __init__(
    method step (line 184) | def step(self, action):
    method reset (line 221) | def reset(self, seed: Optional[int] = None, options: Optional[Dict[str...

FILE: evogym/sim.py
  class EvoSim (line 15) | class EvoSim(Sim):
    method __init__ (line 26) | def __init__(self, world: EvoWorld) -> None:
    method _init_world_items (line 41) | def _init_world_items(self, world: EvoWorld) -> None:
    method get_actuator_indices (line 97) | def get_actuator_indices(self, robot_name: str) -> np.ndarray:
    method get_dim_action_space (line 110) | def get_dim_action_space(self, robot_name: str) -> int:
    method set_action (line 123) | def set_action(self, robot_name: str, action: np.ndarray) -> None:
    method _check_valid_time (line 142) | def _check_valid_time(self, time: int) -> None:
    method _check_valid_robot_name (line 154) | def _check_valid_robot_name(self, robot_name: str) -> None:
    method _check_valid_object_name (line 164) | def _check_valid_object_name(self, object_name: str) -> None:
    method pos_at_time (line 174) | def pos_at_time(self, time: int) -> np.ndarray:
    method vel_at_time (line 187) | def vel_at_time(self, time: int) -> np.ndarray:
    method object_pos_at_time (line 200) | def object_pos_at_time(self, time: int, object_name: str) -> np.ndarray:
    method object_vel_at_time (line 215) | def object_vel_at_time(self, time: int, object_name: str) -> np.ndarray:
    method object_orientation_at_time (line 230) | def object_orientation_at_time(self, time: int, object_name: str) -> f...
    method reset (line 245) | def reset(self,) -> None:

FILE: evogym/simulator/SimulatorCPP/BBTreeNode.h
  function class (line 8) | class BBTreeNode

FILE: evogym/simulator/SimulatorCPP/Boxel.cpp
  function BoundingBox (line 31) | BoundingBox Boxel::get_bounding_box(Ref <Matrix <double, 2, Dynamic>> po...
  function cross2f (line 37) | double cross2f(Vector2d* a, Vector2d* b) {

FILE: evogym/simulator/SimulatorCPP/Boxel.h
  function class (line 12) | class Boxel

FILE: evogym/simulator/SimulatorCPP/Camera.cpp
  function Vector2d (line 66) | Vector2d Camera::world_to_camera(Vector2d coord) {
  function GLubyte (line 140) | GLubyte* Camera::get_image_data_ptr() {

FILE: evogym/simulator/SimulatorCPP/Camera.h
  function class (line 13) | class Camera

FILE: evogym/simulator/SimulatorCPP/Edge.cpp
  function Vector2d (line 16) | Vector2d Edge::get_normal(Ref< Matrix <double, 2, Dynamic>> pos) {

FILE: evogym/simulator/SimulatorCPP/Edge.h
  function class (line 9) | class Edge

FILE: evogym/simulator/SimulatorCPP/Environment.cpp
  function RefMatrixXd (line 265) | RefMatrixXd Environment::get_pos_at_time(long int sim_time) {
  function RefMatrixXd (line 276) | RefMatrixXd Environment::get_vel_at_time(long int sim_time) {
  function RefMatrixXd (line 288) | RefMatrixXd Environment::object_pos_at_time(long int sim_time, string ob...
  function RefMatrixXd (line 303) | RefMatrixXd Environment::object_vel_at_time(long int sim_time, string ob...
  function Robot (line 421) | Robot* Environment::get_robot(string robot_name) {

FILE: evogym/simulator/SimulatorCPP/Environment.h
  function class (line 26) | class Environment

FILE: evogym/simulator/SimulatorCPP/Interface.cpp
  function GLFWwindow (line 51) | GLFWwindow* Interface::get_debug_window_ref(){
  function setColorInterval (line 339) | void setColorInterval(double a1, double b1, double c1, double a2, double...
  function setColorInterval (line 351) | void setColorInterval(double a1, double b1, double c1, double a2, double...
  function setColorInterval (line 377) | void setColorInterval(double actuation, bool is_act_vert) {

FILE: evogym/simulator/SimulatorCPP/Interface.h
  type color_byte (line 40) | struct color_byte {

FILE: evogym/simulator/SimulatorCPP/ObjectCreator.cpp
  function Edge (line 94) | Edge* ObjectCreator::get_edge(int index) {

FILE: evogym/simulator/SimulatorCPP/ObjectCreator.h
  function class (line 16) | class ObjectCreator

FILE: evogym/simulator/SimulatorCPP/PhysicsEngine.h
  function class (line 12) | class PhysicsEngine

FILE: evogym/simulator/SimulatorCPP/PythonBindings.cpp
  function PYBIND11_MODULE (line 14) | PYBIND11_MODULE(simulator_cpp, m) {

FILE: evogym/simulator/SimulatorCPP/Robot.cpp
  function Boxel (line 28) | Boxel* Robot::get_actuator(int grid_index) {

FILE: evogym/simulator/SimulatorCPP/Robot.h
  function class (line 14) | class Robot : public SimObject

FILE: evogym/simulator/SimulatorCPP/Sim.cpp
  function RefMatrixXd (line 139) | RefMatrixXd Sim::pos_at_time(long int sim_time) {
  function RefMatrixXd (line 142) | RefMatrixXd Sim::vel_at_time(long int sim_time) {
  function RefMatrixXd (line 154) | RefMatrixXd Sim::object_pos_at_time(long int sim_time, string object_nam...
  function RefMatrixXd (line 157) | RefMatrixXd Sim::object_vel_at_time(long int sim_time, string object_nam...

FILE: evogym/simulator/SimulatorCPP/Sim.h
  function class (line 12) | class Sim

FILE: evogym/simulator/SimulatorCPP/SimObject.h
  function class (line 17) | class SimObject

FILE: evogym/simulator/SimulatorCPP/Snapshot.h
  function class (line 11) | class Snapshot

FILE: evogym/simulator/SimulatorCPP/main.cpp
  function should_render (line 30) | bool should_render() {
  function get_action (line 59) | Matrix <double, Dynamic, 2> get_action(Ref <MatrixXi> indicies) {
  function main (line 101) | int main(int argc, char** argv)

FILE: evogym/simulator/SimulatorCPP/main.h
  type coord_identifier (line 32) | enum coord_identifier { VAL_X = 0, VAL_Y = 1 }
  type direction (line 33) | enum direction { TOP = 0, BOT = 1, LEFT = 2, RIGHT = 3, TOP_LEFT = 4, TO...
  type cell_type (line 34) | enum cell_type { CELL_EMPTY = 0, CELL_RIGID, CELL_SOFT, CELL_ACT_H, CELL...
  function class (line 38) | class BoundingBox {
  function in (line 64) | bool in(BoundingBox* a) {
  function area (line 74) | double area() {
  function print (line 78) | void print() {

FILE: evogym/simulator/externals/eigen/Eigen/src/Cholesky/LDLT.h
  function namespace (line 16) | namespace Eigen {
  type SolverBase (line 64) | typedef SolverBase<LDLT> Base;
  function enum (line 67) | EIGEN_GENERIC_PUBLIC_INTERFACE(LDLT)
  type Matrix (line 73) | typedef Matrix<Scalar, RowsAtCompileTime, 1, 0, MaxRowsAtCompileTime, 1>...
  type Transpositions (line 75) | typedef Transpositions<RowsAtCompileTime, MaxRowsAtCompileTime> Transpos...
  type PermutationMatrix (line 76) | typedef PermutationMatrix<RowsAtCompileTime, MaxRowsAtCompileTime> Permu...
  type internal (line 78) | typedef internal::LDLT_Traits<MatrixType,UpLo> Traits;
  function setZero (line 143) | void setZero()
  function typename (line 149) | inline typename Traits::MatrixU matrixU() const
  function isNegative (line 185) | inline bool isNegative(void) const
  function MatrixType (line 234) | inline const MatrixType& matrixLDLT() const
  function namespace (line 293) | namespace internal {
  function Upper (line 460) | struct ldlt_inplace<Upper>
  type TriangularView (line 480) | typedef const TriangularView<const typename
  function MatrixL (line 481) | static inline MatrixL getL(const MatrixType& m) { return MatrixL(m); }
  function MatrixU (line 482) | static inline MatrixU getU(const MatrixType& m) { return MatrixU(m.adjoi...
  type TriangularView (line 488) | typedef const TriangularView<const MatrixType, UnitUpper> MatrixU;
  function MatrixL (line 489) | static inline MatrixL getL(const MatrixType& m) { return MatrixL(m.adjoi...
  function MatrixU (line 490) | static inline MatrixU getU(const MatrixType& m) { return MatrixU(m); }
  type typename (line 541) | typedef typename TranspositionType::StorageIndex IndexType;

FILE: evogym/simulator/externals/eigen/Eigen/src/Cholesky/LLT.h
  function namespace (line 13) | namespace Eigen {
  type SolverBase (line 71) | typedef SolverBase<LLT> Base;
  function enum (line 74) | EIGEN_GENERIC_PUBLIC_INTERFACE(LLT)
  type internal (line 85) | typedef internal::LLT_Traits<MatrixType,UpLo> Traits;
  function explicit (line 101) | explicit LLT(Index size) : m_matrix(size, size),
  function typename (line 128) | inline typename Traits::MatrixU matrixU() const
  function MatrixType (line 177) | inline const MatrixType& matrixLLT() const
  function namespace (line 235) | namespace internal {
  type typename (line 379) | typedef typename NumTraits<Scalar>::Real RealScalar;
  type TriangularView (line 404) | typedef const TriangularView<const typename
  function MatrixL (line 405) | static inline MatrixL getL(const MatrixType& m) { return MatrixL(m); }
  function MatrixU (line 406) | static inline MatrixU getU(const MatrixType& m) { return MatrixU(m.adjoi...
  function inplace_decomposition (line 407) | static bool inplace_decomposition(MatrixType& m)
  type TriangularView (line 414) | typedef const TriangularView<const MatrixType, Upper> MatrixU;
  function MatrixL (line 415) | static inline MatrixL getL(const MatrixType& m) { return MatrixL(m.adjoi...
  function MatrixU (line 416) | static inline MatrixU getU(const MatrixType& m) { return MatrixU(m); }
  function inplace_decomposition (line 417) | static bool inplace_decomposition(MatrixType& m)

FILE: evogym/simulator/externals/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h
  function namespace (line 36) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/CholmodSupport/CholmodSupport.h
  function namespace (line 13) | namespace Eigen {
  function cholmod_sparse (line 105) | cholmod_sparse viewAsCholmod(const SparseMatrix<_Scalar,_Options,_Index>...
  function cholmod_sparse (line 112) | cholmod_sparse viewAsCholmod(const SparseVector<_Scalar,_Options,_Index>...
  type typename (line 140) | typedef typename Derived::Scalar Scalar;
  function namespace (line 165) | namespace internal {
  type CholmodMode (line 203) | enum CholmodMode {
  type typename (line 223) | typedef typename MatrixType::Scalar Scalar;
  type typename (line 224) | typedef typename MatrixType::RealScalar RealScalar;
  type MatrixType (line 225) | typedef MatrixType CholMatrixType;
  type typename (line 226) | typedef typename MatrixType::StorageIndex StorageIndex;
  function StorageIndex (line 258) | inline StorageIndex cols() const { return internal::convert_index<Storag...
  function analyzePattern (line 286) | void analyzePattern(const MatrixType& matrix)
  function factorize (line 308) | void factorize(const MatrixType& matrix)
  function Scalar (line 391) | Scalar determinant() const
  function Base (line 488) | CholmodSimplicialLLT(const MatrixType& matrix) : Base()
  function Base (line 539) | CholmodSimplicialLDLT(const MatrixType& matrix) : Base()
  function Base (line 588) | CholmodSupernodalLLT(const MatrixType& matrix) : Base()
  function Base (line 639) | CholmodDecomposition(const MatrixType& matrix) : Base()
  function setMode (line 647) | void setMode(CholmodMode mode)

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/ArithmeticSequence.h
  function namespace (line 13) | namespace Eigen {
  function namespace (line 399) | namespace indexing {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Array.h
  function namespace (line 13) | namespace Eigen {
  function enum (line 51) | EIGEN_DENSE_PUBLIC_INTERFACE(Array)
  function EIGEN_DEVICE_FUNC (line 141) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 151) | EIGEN_DEVICE_FUNC
  function EIGEN_STRONG_INLINE (line 175) | EIGEN_STRONG_INLINE
  function EIGEN_STRONG_INLINE (line 207) | EIGEN_STRONG_INLINE explicit Array(const T& x)
  function EIGEN_STRONG_INLINE (line 215) | EIGEN_STRONG_INLINE Array(const T0& val0, const T1& val1)
  function Base (line 274) | Array(const Array& other)
  type PrivateType (line 279) | struct PrivateType {}
  function EIGEN_STRONG_INLINE (line 285) | EIGEN_STRONG_INLINE Array(const EigenBase<OtherDerived> &other,
  type internal (line 301) | struct internal

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/ArrayBase.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/ArrayWrapper.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Assign.h
  function namespace (line 15) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/AssignEvaluator.h
  function namespace (line 15) | namespace Eigen {
  function run (line 245) | void run(Kernel& kernel)
  type typename (line 266) | typedef typename Kernel::DstEvaluatorType DstEvaluatorType;
  type typename (line 267) | typedef typename DstEvaluatorType::XprType DstXprType;
  type typename (line 268) | typedef typename Kernel::PacketType PacketType;
  function run (line 277) | void run(Kernel &kernel)
  type typename (line 294) | typedef typename Kernel::PacketType PacketType;
  function run (line 295) | void run(Kernel &kernel, Index outer)
  type typename (line 330) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type typename (line 358) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type typename (line 368) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type unaligned_dense_assignment_loop (line 393) | struct unaligned_dense_assignment_loop
  type typename (line 421) | typedef typename Kernel::Scalar Scalar;
  type typename (line 422) | typedef typename Kernel::PacketType PacketType;
  type typename (line 448) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type typename (line 449) | typedef typename Kernel::PacketType PacketType;
  function run (line 472) | void run(Kernel &kernel)
  type typename (line 488) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type typename (line 498) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type typename (line 499) | typedef typename Kernel::AssignmentTraits Traits;
  type typename (line 527) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type typename (line 541) | typedef typename Kernel::Scalar Scalar;
  type typename (line 542) | typedef typename Kernel::PacketType PacketType;
  type typename (line 589) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type typename (line 590) | typedef typename Kernel::PacketType PacketType;
  type typename (line 622) | typedef typename SrcEvaluatorTypeT::XprType SrcXprType;
  type SrcEvaluatorTypeT (line 626) | typedef SrcEvaluatorTypeT SrcEvaluatorType;
  type typename (line 627) | typedef typename DstEvaluatorType::Scalar Scalar;
  type copy_using_evaluator_traits (line 628) | typedef copy_using_evaluator_traits<DstEvaluatorTypeT, SrcEvaluatorTypeT...
  type typename (line 629) | typedef typename AssignmentTraits::PacketType PacketType;
  function EIGEN_DEVICE_FUNC (line 648) | EIGEN_DEVICE_FUNC DstEvaluatorType& dstEvaluator() { return m_dst; }
  function assignCoeff (line 652) | void assignCoeff(Index row, Index col)
  function assignCoeff (line 658) | void assignCoeff(Index index)
  function assignCoeffByOuterInner (line 664) | void assignCoeffByOuterInner(Index outer, Index inner)
  function assignPacket (line 673) | void assignPacket(Index row, Index col)
  function assignPacket (line 679) | void assignPacket(Index index)
  function assignPacketByOuterInner (line 685) | void assignPacketByOuterInner(Index outer, Index inner)
  function Index (line 692) | Index rowIndexByOuterInner(Index outer, Index inner)
  function Index (line 701) | Index colIndexByOuterInner(Index outer, Index inner)
  function EIGEN_DEVICE_FUNC (line 710) | EIGEN_DEVICE_FUNC const Scalar* dstDataPtr() const
  type typename (line 734) | typedef typename Base::DstXprType DstXprType;
  type copy_using_evaluator_traits (line 735) | typedef copy_using_evaluator_traits<DstEvaluatorTypeT, SrcEvaluatorTypeT...
  type typename (line 736) | typedef typename AssignmentTraits::PacketType PacketType;
  function EIGEN_DEVICE_FUNC (line 738) | EIGEN_DEVICE_FUNC restricted_packet_dense_assignment_kernel(DstEvaluator...
  function resize_if_allowed (line 750) | void resize_if_allowed(DstXprType &dst, const SrcXprType& src, const Fun...
  type evaluator (line 772) | typedef evaluator<SrcXprType> SrcEvaluatorType;
  type generic_dense_assignment_kernel (line 782) | typedef generic_dense_assignment_kernel<DstEvaluatorType,SrcEvaluatorTyp...
  function call_dense_assignment_loop (line 789) | void call_dense_assignment_loop(DstXprType& dst, const SrcXprType& src)
  type Dense2Dense (line 804) | struct Dense2Dense {}
  type EigenBase2EigenBase (line 805) | struct EigenBase2EigenBase {}
  type EigenBase2EigenBase (line 807) | typedef EigenBase2EigenBase Kind;
  type AssignmentKind (line 808) | struct AssignmentKind
  type Dense2Dense (line 808) | typedef Dense2Dense Kind;
  function call_assignment (line 824) | void call_assignment(Dst& dst, const Src& src)
  function call_assignment (line 830) | void call_assignment(const Dst& dst, const Src& src)
  function call_assignment_no_alias (line 863) | void call_assignment_no_alias(Dst& dst, const Src& src, const Func& func)
  function call_restricted_packet_assignment_no_alias (line 885) | void call_restricted_packet_assignment_no_alias(Dst& dst, const Src& src...
  function call_assignment_no_alias (line 905) | void call_assignment_no_alias(Dst& dst, const Src& src)
  function call_assignment_no_alias_no_transpose (line 912) | void call_assignment_no_alias_no_transpose(Dst& dst, const Src& src, con...
  function call_assignment_no_alias_no_transpose (line 923) | void call_assignment_no_alias_no_transpose(Dst& dst, const Src& src)
  type Assignment (line 953) | struct Assignment

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Assign_MKL.h
  function namespace (line 37) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/BandMatrix.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 103) | typedef typename internal::conditional<Conjugate,
  function typename (line 115) | const typename DiagonalIntReturnType<N>::Type diagonal() const
  function DenseMatrixType (line 145) | DenseMatrixType toDenseMatrix() const
  type Dense (line 181) | typedef Dense StorageKind;
  type Eigen (line 182) | typedef Eigen::Index StorageIndex;
  type Matrix (line 195) | typedef Matrix<Scalar,DataRowsAtCompileTime,ColsAtCompileTime,Options
  type typename (line 203) | typedef typename internal::traits<BandMatrix>::Scalar Scalar;
  type typename (line 204) | typedef typename internal::traits<BandMatrix>::StorageIndex StorageIndex;
  type typename (line 205) | typedef typename internal::traits<BandMatrix>::CoefficientsType Coeffici...
  function CoefficientsType (line 226) | inline CoefficientsType& coeffs() { return m_coeffs; }
  type typename (line 243) | typedef typename _CoefficientsType::StorageKind StorageKind;
  type typename (line 244) | typedef typename _CoefficientsType::StorageIndex StorageIndex;
  type _CoefficientsType (line 257) | typedef _CoefficientsType CoefficientsType;
  type typename (line 266) | typedef typename internal::traits<BandMatrixWrapper>::CoefficientsType C...
  type typename (line 267) | typedef typename internal::traits<BandMatrixWrapper>::StorageIndex Stora...
  type typename (line 315) | typedef typename Base::StorageIndex StorageIndex;
  type BandShape (line 331) | struct BandShape {}
  type AssignmentKind (line 347) | struct AssignmentKind
  type EigenBase2EigenBase (line 347) | typedef EigenBase2EigenBase Kind;

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Block.h
  function namespace (line 14) | namespace Eigen {
  type typename (line 158) | typedef typename XprType::StorageIndex StorageIndex;
  function EIGEN_STRONG_INLINE (line 162) | EIGEN_STRONG_INLINE BlockImpl(XprType& xpr, Index i) : Impl(xpr,i) {}
  function namespace (line 169) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/BooleanRedux.h
  function namespace (line 13) | namespace Eigen {
  function EIGEN_DEVICE_FUNC (line 51) | EIGEN_DEVICE_FUNC static inline bool run(const Derived &mat)
  function run (line 60) | static inline bool run(const Derived & /*mat*/) { return false; }
  function run (line 66) | static inline bool run(const Derived &) { return false; }
  function all (line 79) | inline bool DenseBase<Derived>::all() const
  function any (line 103) | inline bool DenseBase<Derived>::any() const

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/CommaInitializer.h
  function namespace (line 14) | namespace Eigen {
  function EIGEN_DEVICE_FUNC (line 120) | EIGEN_DEVICE_FUNC

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/ConditionEstimator.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/CoreEvaluators.h
  function namespace (line 16) | namespace Eigen {
  type typename (line 167) | typedef typename PlainObjectType::Scalar Scalar;
  type typename (line 168) | typedef typename PlainObjectType::CoeffReturnType CoeffReturnType;
  function explicit (line 195) | explicit evaluator(const PlainObjectType& m)
  function CoeffReturnType (line 202) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 211) | CoeffReturnType coeff(Index index) const
  function PacketType (line 233) | PacketType packet(Index row, Index col) const
  function PacketType (line 243) | PacketType packet(Index index) const
  function writePacket (line 250) | void writePacket(Index row, Index col, const PacketType& x)
  function writePacket (line 262) | void writePacket(Index index, const PacketType& x)
  function EIGEN_DEVICE_FUNC (line 278) | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
  function explicit (line 282) | explicit evaluator(const XprType& m)
  function EIGEN_DEVICE_FUNC (line 293) | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
  function explicit (line 297) | explicit evaluator(const XprType& m)
  function explicit (line 317) | explicit unary_evaluator(const XprType& t) : m_argImpl(t.nestedExpressio...
  type typename (line 319) | typedef typename XprType::Scalar Scalar;
  type typename (line 320) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 323) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 329) | CoeffReturnType coeff(Index index) const
  function typename (line 341) | typename XprType::Scalar& coeffRef(Index index)
  function PacketType (line 348) | PacketType packet(Index row, Index col) const
  function PacketType (line 355) | PacketType packet(Index index) const
  function writePacket (line 362) | void writePacket(Index row, Index col, const PacketType& x)
  function writePacket (line 369) | void writePacket(Index index, const PacketType& x)
  function EIGEN_STRONG_INLINE (line 391) | EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i) ...
  function EIGEN_STRONG_INLINE (line 393) | EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexTy...
  function EIGEN_STRONG_INLINE (line 394) | EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i) const {...
  function EIGEN_STRONG_INLINE (line 424) | EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexTy...
  function EIGEN_STRONG_INLINE (line 430) | EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i) ...
  function EIGEN_STRONG_INLINE (line 432) | EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i) const {...
  function EIGEN_STRONG_INLINE (line 472) | EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i) ...
  function EIGEN_STRONG_INLINE (line 480) | EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexTy...
  function EIGEN_STRONG_INLINE (line 487) | EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i) const {
  type typename (line 501) | typedef typename internal::remove_all<PlainObjectType>::type PlainObject...
  function EIGEN_DEVICE_FUNC (line 514) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType& n)
  type typename (line 520) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function EIGEN_STRONG_INLINE (line 523) | EIGEN_STRONG_INLINE
  function EIGEN_STRONG_INLINE (line 530) | EIGEN_STRONG_INLINE
  function PacketType (line 538) | PacketType packet(IndexType row, IndexType col) const
  function PacketType (line 545) | PacketType packet(IndexType index) const
  function explicit (line 572) | explicit unary_evaluator(const XprType& op) : m_d(op)
  type typename (line 578) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 581) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 587) | CoeffReturnType coeff(Index index) const
  function PacketType (line 594) | PacketType packet(Index row, Index col) const
  function PacketType (line 601) | PacketType packet(Index index) const
  type ternary_evaluator (line 630) | typedef ternary_evaluator<CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> > ...
  function EIGEN_DEVICE_FUNC (line 632) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr) : Base(xpr) {}
  function EIGEN_DEVICE_FUNC (line 663) | EIGEN_DEVICE_FUNC explicit ternary_evaluator(const XprType& xpr) : m_d(xpr)
  type typename (line 669) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 672) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 678) | CoeffReturnType coeff(Index index) const
  function PacketType (line 685) | PacketType packet(Index row, Index col) const
  function PacketType (line 694) | PacketType packet(Index index) const
  type Data (line 703) | struct Data
  type binary_evaluator (line 725) | typedef binary_evaluator<CwiseBinaryOp<BinaryOp, Lhs, Rhs> > Base;
  function explicit (line 728) | explicit evaluator(const XprType& xpr) : Base(xpr) {}
  function explicit (line 757) | explicit binary_evaluator(const XprType& xpr) : m_d(xpr)
  type typename (line 763) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 766) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 772) | CoeffReturnType coeff(Index index) const
  function PacketType (line 779) | PacketType packet(Index row, Index col) const
  function PacketType (line 787) | PacketType packet(Index index) const
  type Data (line 796) | struct Data
  function EIGEN_DEVICE_FUNC (line 825) | EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& op) : m_d(op)
  type typename (line 831) | typedef typename XprType::Scalar Scalar;
  type typename (line 832) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 835) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 841) | CoeffReturnType coeff(Index index) const
  type Data (line 861) | struct Data
  type Derived (line 883) | typedef Derived  XprType;
  type typename (line 884) | typedef typename XprType::PointerType PointerType;
  type typename (line 885) | typedef typename XprType::Scalar Scalar;
  type typename (line 886) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 906) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 912) | CoeffReturnType coeff(Index index) const
  function PacketType (line 931) | PacketType packet(Index row, Index col) const
  function PacketType (line 939) | PacketType packet(Index index) const
  function writePacket (line 946) | void writePacket(Index row, Index col, const PacketType& x)
  function writePacket (line 954) | void writePacket(Index index, const PacketType& x)
  function Index (line 960) | Index rowStride() const { return XprType::IsRowMajor ? m_outerStride.val...
  function explicit (line 1086) | explicit block_evaluator(const XprType& block)
  function CoeffReturnType (line 1114) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 1120) | CoeffReturnType coeff(Index index) const
  function PacketType (line 1139) | PacketType packet(Index row, Index col) const
  function PacketType (line 1146) | PacketType packet(Index index) const
  function writePacket (line 1157) | void writePacket(Index row, Index col, const PacketType& x)
  function writePacket (line 1164) | void writePacket(Index index, const PacketType& x)
  function CoeffReturnType (line 1176) | CoeffReturnType linear_coeff_impl(Index index, internal::true_type /* Fo...
  function CoeffReturnType (line 1181) | CoeffReturnType linear_coeff_impl(Index index, internal::false_type /* n...
  type typename (line 1212) | typedef typename XprType::Scalar Scalar;
  function explicit (line 1215) | explicit block_evaluator(const XprType& block)
  type typename (line 1252) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 1255) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 1264) | CoeffReturnType coeff(Index index) const
  type typename (line 1286) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  type typename (line 1290) | typedef typename internal::nested_eval<ArgType,Factor>::type ArgTypeNested;
  type typename (line 1291) | typedef typename internal::remove_all<ArgTypeNested>::type ArgTypeNested...
  function CoeffReturnType (line 1324) | CoeffReturnType coeff(Index index) const
  function PacketType (line 1336) | PacketType packet(Index row, Index col) const
  function PacketType (line 1350) | PacketType packet(Index index) const
  type typename (line 1375) | typedef typename remove_all<typename XprType::NestedExpressionType>::typ...
  function explicit (line 1383) | explicit evaluator_wrapper_base(const ArgType& arg) : m_argImpl(arg) {}
  type typename (line 1385) | typedef typename ArgType::Scalar Scalar;
  type typename (line 1386) | typedef typename ArgType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 1389) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 1395) | CoeffReturnType coeff(Index index) const
  function PacketType (line 1414) | PacketType packet(Index row, Index col) const
  function PacketType (line 1421) | PacketType packet(Index index) const
  function writePacket (line 1428) | void writePacket(Index row, Index col, const PacketType& x)
  function writePacket (line 1435) | void writePacket(Index index, const PacketType& x)
  function explicit (line 1451) | explicit unary_evaluator(const XprType& wrapper)
  function explicit (line 1463) | explicit unary_evaluator(const XprType& wrapper)
  type typename (line 1479) | typedef typename XprType::Scalar Scalar;
  type typename (line 1480) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 1520) | CoeffReturnType coeff(Index index) const
  function PacketType (line 1540) | PacketType packet(Index row, Index col) const
  function PacketType (line 1555) | PacketType packet(Index index) const
  function writePacket (line 1563) | void writePacket(Index row, Index col, const PacketType& x)
  function writePacket (line 1580) | void writePacket(Index index, const PacketType& x)
  function explicit (line 1614) | explicit evaluator(const XprType& diagonal)
  type typename (line 1619) | typedef typename XprType::Scalar Scalar;
  type typename (line 1620) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 1623) | CoeffReturnType coeff(Index row, Index) const
  function CoeffReturnType (line 1629) | CoeffReturnType coeff(Index index) const
  function EvalToTemp (line 1678) | EIGEN_GENERIC_PUBLIC_INTERFACE(EvalToTemp)
  type typename (line 1708) | typedef typename ArgType::PlainObject         PlainObject;
  type evaluator (line 1709) | typedef evaluator<PlainObject> Base;
  function EIGEN_DEVICE_FUNC (line 1711) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr)
  function EIGEN_DEVICE_FUNC (line 1718) | EIGEN_DEVICE_FUNC evaluator(const ArgType& arg)

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/CoreIterators.h
  function namespace (line 13) | namespace Eigen {
  function namespace (line 75) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/CwiseBinaryOp.h
  function namespace (line 14) | namespace Eigen {
  type typename (line 88) | typedef typename internal::remove_all<LhsType>::type Lhs;
  type typename (line 89) | typedef typename internal::remove_all<RhsType>::type Rhs;
  type typename (line 91) | typedef typename CwiseBinaryOpImpl<
  type typename (line 99) | typedef typename internal::ref_selector<RhsType>::type RhsNested;
  type typename (line 100) | typedef typename internal::remove_reference<LhsNested>::type _LhsNested;
  type typename (line 101) | typedef typename internal::remove_reference<RhsNested>::type _RhsNested;

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/CwiseNullaryOp.h
  function namespace (line 13) | namespace Eigen {
  function EIGEN_STATIC_ASSERT_FIXED_SIZE (line 302) | EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
  function fill (line 335) | void DenseBase<Derived>::fill(const Scalar& val)
  function namespace (line 759) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/CwiseTernaryOp.h
  function namespace (line 15) | namespace Eigen {
  type typename (line 91) | typedef typename internal::remove_all<Arg2Type>::type Arg2;
  type typename (line 92) | typedef typename internal::remove_all<Arg3Type>::type Arg3;
  type typename (line 94) | typedef typename CwiseTernaryOpImpl<
  type typename (line 100) | typedef typename internal::ref_selector<Arg2Type>::type Arg2Nested;
  type typename (line 101) | typedef typename internal::ref_selector<Arg3Type>::type Arg3Nested;
  type typename (line 102) | typedef typename internal::remove_reference<Arg1Nested>::type _Arg1Nested;
  type typename (line 103) | typedef typename internal::remove_reference<Arg2Nested>::type _Arg2Nested;
  type typename (line 104) | typedef typename internal::remove_reference<Arg3Nested>::type _Arg3Nested;

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/CwiseUnaryOp.h
  function namespace (line 14) | namespace Eigen {
  type typename (line 62) | typedef typename internal::remove_all<XprType>::type NestedExpression;
  function typename (line 84) | typename internal::remove_all<XprTypeNested>::type&

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/CwiseUnaryView.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 65) | typedef typename internal::remove_all<MatrixType>::type NestedExpression;
  type typename (line 107) | typedef typename internal::dense_xpr_base< CwiseUnaryView<ViewOp, Matrix...
  function EIGEN_INHERIT_ASSIGNMENT_OPERATORS (line 109) | EIGEN_DENSE_PUBLIC_INTERFACE(Derived)

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/DenseBase.h
  function namespace (line 16) | namespace internal {
  type typename (line 55) | typedef typename internal::traits<Derived>::StorageKind StorageKind;
  type typename (line 63) | typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
  type typename (line 66) | typedef typename internal::traits<Derived>::Scalar Scalar;
  type Scalar (line 71) | typedef Scalar value_type;
  type typename (line 73) | typedef typename NumTraits<Scalar>::Real RealScalar;
  type DenseCoeffsBase (line 74) | typedef DenseCoeffsBase<Derived, internal::accessors_level<Derived>::val...
  type typename (line 96) | typedef typename Base::CoeffReturnType CoeffReturnType;
  type typename (line 179) | typedef typename internal::find_best_packet<Scalar,SizeAtCompileTime>::t...
  type Matrix (line 185) | typedef Matrix<typename
  type Array (line 195) | typedef Array<typename
  type typename (line 209) | typedef typename internal::conditional<internal::is_same<typename
  function EIGEN_DEVICE_FUNC (line 245) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 256) | EIGEN_DEVICE_FUNC
  type CwiseNullaryOp (line 267) | typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>,PlainObject>...
  type CwiseNullaryOp (line 271) | typedef CwiseNullaryOp<internal::linspaced_op<Scalar>,PlainObject> Rando...
  type Matrix (line 273) | typedef Matrix<typename
  type Transpose (line 324) | typedef Transpose<Derived> TransposeReturnType;
  type typename (line 327) | typedef typename internal::add_const<Transpose<const Derived> >::type Co...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/DenseCoeffsBase.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 486) | typedef typename internal::traits<Derived>::Scalar Scalar;
  type typename (line 487) | typedef typename NumTraits<Scalar>::Real RealScalar;
  function Index (line 516) | inline Index stride() const
  type typename (line 561) | typedef typename internal::traits<Derived>::Scalar Scalar;
  type typename (line 562) | typedef typename NumTraits<Scalar>::Real RealScalar;
  function Index (line 591) | inline Index stride() const
  function EIGEN_DEVICE_FUNC (line 610) | EIGEN_DEVICE_FUNC
  function Index (line 643) | inline Index first_aligned(const DenseBase<Derived>& m)
  function Index (line 650) | inline Index first_default_aligned(const DenseBase<Derived>& m)

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/DenseStorage.h
  function namespace (line 21) | namespace Eigen {
  function EIGEN_DEVICE_FUNC (line 125) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 132) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 144) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 151) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 162) | EIGEN_DEVICE_FUNC plain_array() {}
  function EIGEN_DEVICE_FUNC (line 163) | EIGEN_DEVICE_FUNC plain_array(constructor_without_unaligned_array_assert...
  function EIGEN_DEVICE_FUNC (line 193) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 204) | EIGEN_DEVICE_FUNC DenseStorage(DenseStorage&& other) EIGEN_NOEXCEPT
  function EIGEN_DEVICE_FUNC (line 215) | EIGEN_DEVICE_FUNC DenseStorage(Index size, Index rows, Index cols) {
  function EIGEN_DEVICE_FUNC (line 225) | EIGEN_DEVICE_FUNC static Index rows(void) {return _Rows;}
  function EIGEN_DEVICE_FUNC (line 226) | EIGEN_DEVICE_FUNC static Index cols(void) {return _Cols;}
  function EIGEN_DEVICE_FUNC (line 227) | EIGEN_DEVICE_FUNC void conservativeResize(Index,Index,Index) {}
  function EIGEN_DEVICE_FUNC (line 228) | EIGEN_DEVICE_FUNC void resize(Index,Index,Index) {}
  function EIGEN_DEVICE_FUNC (line 229) | EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 230) | EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 237) | EIGEN_DEVICE_FUNC DenseStorage() {}
  function EIGEN_DEVICE_FUNC (line 238) | EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_un...
  function EIGEN_DEVICE_FUNC (line 239) | EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage&) {}
  function EIGEN_DEVICE_FUNC (line 241) | EIGEN_DEVICE_FUNC DenseStorage(Index,Index,Index) {}
  function EIGEN_DEVICE_FUNC (line 282) | EIGEN_DEVICE_FUNC DenseStorage(Index, Index rows, Index cols) : m_rows(r...
  function EIGEN_DEVICE_FUNC (line 291) | EIGEN_DEVICE_FUNC void conservativeResize(Index, Index rows, Index cols)...
  function EIGEN_DEVICE_FUNC (line 292) | EIGEN_DEVICE_FUNC void resize(Index, Index rows, Index cols) { m_rows = ...
  function EIGEN_DEVICE_FUNC (line 293) | EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 294) | EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 304) | EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_un...
  function EIGEN_DEVICE_FUNC (line 306) | EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other) : m_data(other...
  function EIGEN_DEVICE_FUNC (line 316) | EIGEN_DEVICE_FUNC DenseStorage(Index, Index rows, Index) : m_rows(rows) {}
  function EIGEN_DEVICE_FUNC (line 322) | EIGEN_DEVICE_FUNC Index rows(void) const {return m_rows;}
  function EIGEN_DEVICE_FUNC (line 323) | EIGEN_DEVICE_FUNC Index cols(void) const {return _Cols;}
  function EIGEN_DEVICE_FUNC (line 324) | EIGEN_DEVICE_FUNC void conservativeResize(Index, Index rows, Index) { m_...
  function EIGEN_DEVICE_FUNC (line 325) | EIGEN_DEVICE_FUNC void resize(Index, Index rows, Index) { m_rows = rows; }
  function EIGEN_DEVICE_FUNC (line 326) | EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 327) | EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 337) | EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_un...
  function EIGEN_DEVICE_FUNC (line 339) | EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other) : m_data(other...
  function EIGEN_DEVICE_FUNC (line 349) | EIGEN_DEVICE_FUNC DenseStorage(Index, Index, Index cols) : m_cols(cols) {}
  function EIGEN_DEVICE_FUNC (line 354) | EIGEN_DEVICE_FUNC Index rows(void) const {return _Rows;}
  function EIGEN_DEVICE_FUNC (line 355) | EIGEN_DEVICE_FUNC Index cols(void) const {return m_cols;}
  function EIGEN_DEVICE_FUNC (line 356) | EIGEN_DEVICE_FUNC void conservativeResize(Index, Index, Index cols) { m_...
  function EIGEN_DEVICE_FUNC (line 357) | EIGEN_DEVICE_FUNC void resize(Index, Index, Index cols) { m_cols = cols; }
  function EIGEN_DEVICE_FUNC (line 358) | EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 359) | EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 415) | EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete...
  function EIGEN_DEVICE_FUNC (line 422) | EIGEN_DEVICE_FUNC Index rows(void) const {return m_rows;}
  function EIGEN_DEVICE_FUNC (line 423) | EIGEN_DEVICE_FUNC Index cols(void) const {return m_cols;}
  function conservativeResize (line 424) | void conservativeResize(Index size, Index rows, Index cols)
  function EIGEN_DEVICE_FUNC (line 430) | EIGEN_DEVICE_FUNC void resize(Index size, Index rows, Index cols)
  function EIGEN_DEVICE_FUNC (line 444) | EIGEN_DEVICE_FUNC const T *data() const { return m_data; }
  function EIGEN_DEVICE_FUNC (line 445) | EIGEN_DEVICE_FUNC T *data() { return m_data; }
  function explicit (line 455) | explicit DenseStorage(internal::constructor_without_unaligned_array_asse...
  function EIGEN_DEVICE_FUNC (line 456) | EIGEN_DEVICE_FUNC DenseStorage(Index size, Index rows, Index cols) : m_d...
  function EIGEN_DEVICE_FUNC (line 462) | EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
  function EIGEN_DEVICE_FUNC (line 479) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 495) | EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete...
  function EIGEN_DEVICE_FUNC (line 500) | EIGEN_DEVICE_FUNC static Index rows(void) {return _Rows;}
  function EIGEN_DEVICE_FUNC (line 501) | EIGEN_DEVICE_FUNC Index cols(void) const {return m_cols;}
  function EIGEN_DEVICE_FUNC (line 502) | EIGEN_DEVICE_FUNC void conservativeResize(Index size, Index, Index cols)
  function resize (line 507) | void resize(Index size, Index, Index cols)
  function EIGEN_DEVICE_FUNC (line 520) | EIGEN_DEVICE_FUNC const T *data() const { return m_data; }
  function EIGEN_DEVICE_FUNC (line 521) | EIGEN_DEVICE_FUNC T *data() { return m_data; }
  function explicit (line 531) | explicit DenseStorage(internal::constructor_without_unaligned_array_asse...
  function EIGEN_DEVICE_FUNC (line 532) | EIGEN_DEVICE_FUNC DenseStorage(Index size, Index rows, Index cols) : m_d...
  function EIGEN_DEVICE_FUNC (line 538) | EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
  function EIGEN_DEVICE_FUNC (line 555) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 571) | EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete...
  function EIGEN_DEVICE_FUNC (line 576) | EIGEN_DEVICE_FUNC Index rows(void) const {return m_rows;}
  function EIGEN_DEVICE_FUNC (line 577) | EIGEN_DEVICE_FUNC static Index cols(void) {return _Cols;}
  function conservativeResize (line 578) | void conservativeResize(Index size, Index rows, Index)
  function resize (line 583) | void resize(Index size, Index rows, Index)
  function EIGEN_DEVICE_FUNC (line 596) | EIGEN_DEVICE_FUNC const T *data() const { return m_data; }
  function EIGEN_DEVICE_FUNC (line 597) | EIGEN_DEVICE_FUNC T *data() { return m_data; }

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Diagonal.h
  function namespace (line 14) | namespace Eigen {
  type typename (line 69) | typedef typename internal::dense_xpr_base<Diagonal>::type Base;
  function explicit (line 73) | explicit inline Diagonal(MatrixType& matrix, Index a_index = DiagIndex) ...
  type typename (line 102) | typedef typename internal::conditional<
  function EIGEN_DEVICE_FUNC (line 108) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 110) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 113) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 120) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 126) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 132) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 139) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 145) | EIGEN_DEVICE_FUNC

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/DiagonalMatrix.h
  function namespace (line 14) | namespace Eigen {
  function EIGEN_DEVICE_FUNC (line 162) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 166) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 170) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 174) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 178) | EIGEN_DEVICE_FUNC
  function EIGEN_STRONG_INLINE (line 193) | EIGEN_STRONG_INLINE
  function EIGEN_STRONG_INLINE (line 201) | EIGEN_STRONG_INLINE DiagonalMatrix(const std::initializer_list<std::init...
  function m_diagonal (line 208) | inline DiagonalMatrix(const DiagonalBase<OtherDerived>& other) : m_diago...
  function m_diagonal (line 212) | inline DiagonalMatrix(const DiagonalMatrix& other) : m_diagonal(other.di...
  function explicit (line 218) | explicit inline DiagonalMatrix(const MatrixBase<OtherDerived>& other) : ...
  function EIGEN_DEVICE_FUNC (line 243) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 246) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 249) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 252) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 255) | EIGEN_DEVICE_FUNC
  function namespace (line 273) | namespace internal {
  type _DiagonalVectorType (line 298) | typedef _DiagonalVectorType DiagonalVectorType;
  type DiagonalWrapper (line 299) | typedef DiagonalWrapper Nested;
  function m_diagonal (line 304) | inline DiagonalWrapper(DiagonalVectorType& a_diagonal) : m_diagonal(a_di...
  function DiagonalWrapper (line 324) | inline const DiagonalWrapper<const Derived>
  function namespace (line 357) | namespace internal {
  function run (line 383) | static void run(DstXprType &dst, const SrcXprType &src, const internal::...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/DiagonalProduct.h
  function namespace (line 14) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Dot.h
  function namespace (line 13) | namespace Eigen {
  type internal (line 78) | typedef internal::scalar_conj_product_op<Scalar,typename
  type typename (line 126) | typedef typename internal::nested_eval<Derived,2>::type _Nested;
  type typename (line 169) | typedef typename internal::nested_eval<Derived,3>::type _Nested;
  function namespace (line 201) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/EigenBase.h
  function namespace (line 14) | namespace Eigen {
  function evalTo (line 72) | inline void evalTo(Dest& dst) const
  function addTo (line 78) | inline void addTo(Dest& dst) const
  function subTo (line 90) | inline void subTo(Dest& dst) const
  function applyThisOnTheRight (line 101) | inline void applyThisOnTheRight(Dest& dst) const
  function applyThisOnTheLeft (line 110) | inline void applyThisOnTheLeft(Dest& dst) const

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/ForceAlignedAccess.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Fuzzy.h
  function namespace (line 14) | namespace Eigen {
  function typename (line 65) | typename Derived::RealScalar& prec)
  function EIGEN_DEVICE_FUNC (line 74) | EIGEN_DEVICE_FUNC

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/GeneralProduct.h
  function namespace (line 14) | namespace Eigen {
  type product_type_selector (line 103) | struct product_type_selector
  type product_type_selector (line 104) | struct product_type_selector
  type product_type_selector (line 105) | struct product_type_selector
  type product_type_selector (line 106) | struct product_type_selector
  type product_type_selector (line 107) | struct product_type_selector
  type product_type_selector (line 108) | struct product_type_selector
  type product_type_selector (line 109) | struct product_type_selector
  type product_type_selector (line 110) | struct product_type_selector
  type product_type_selector (line 111) | struct product_type_selector
  type product_type_selector (line 112) | struct product_type_selector
  type product_type_selector (line 113) | struct product_type_selector
  type product_type_selector (line 114) | struct product_type_selector
  type product_type_selector (line 115) | struct product_type_selector
  type product_type_selector (line 116) | struct product_type_selector
  type product_type_selector (line 117) | struct product_type_selector
  type product_type_selector (line 118) | struct product_type_selector
  type product_type_selector (line 119) | struct product_type_selector
  type product_type_selector (line 120) | struct product_type_selector
  type product_type_selector (line 121) | struct product_type_selector
  type product_type_selector (line 122) | struct product_type_selector
  function namespace (line 152) | namespace internal {
  function namespace (line 159) | namespace internal {
  function EIGEN_STRONG_INLINE (line 184) | EIGEN_STRONG_INLINE Scalar* data() { return m_data.array; }
  function EIGEN_STRONG_INLINE (line 189) | EIGEN_STRONG_INLINE Scalar* data() {
  type gemv_dense_selector (line 211) | struct gemv_dense_selector
  function run (line 214) | inline void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typena...
  type gemv_dense_selector (line 304) | struct gemv_dense_selector
  function run (line 307) | void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typename Dest...
  type gemv_dense_selector (line 356) | struct gemv_dense_selector
  function run (line 359) | void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typename Dest...
  type gemv_dense_selector (line 370) | struct gemv_dense_selector
  function run (line 373) | void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typename Dest...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/GenericPacketMath.h
  function namespace (line 14) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/GlobalFunctions.h
  function namespace (line 54) | namespace Eigen

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/IO.h
  function namespace (line 14) | namespace Eigen {
  function namespace (line 114) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/IndexedView.h
  function namespace (line 13) | namespace Eigen {
  function Index (line 125) | Index rows() const { return internal::size(m_rowIndices); }
  function typename (line 135) | typename internal::remove_reference<XprType>::type&
  function namespace (line 160) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Inverse.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 73) | typedef typename XprType::Scalar Scalar;
  function namespace (line 80) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Map.h
  function namespace (line 14) | namespace Eigen {
  type PointerType (line 103) | typedef PointerType PointerArgType;
  function EIGEN_DEVICE_FUNC (line 104) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 107) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 128) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 141) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 155) | EIGEN_DEVICE_FUNC

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/MapBase.h
  function namespace (line 18) | namespace Eigen {
  type typename (line 229) | typedef typename Base::Scalar Scalar;
  type typename (line 230) | typedef typename Base::PacketScalar PacketScalar;
  type typename (line 231) | typedef typename Base::StorageIndex StorageIndex;
  type typename (line 232) | typedef typename Base::PointerType PointerType;
  type typename (line 246) | typedef typename internal::conditional<
  function EIGEN_DEVICE_FUNC (line 252) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 254) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 257) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 263) | EIGEN_DEVICE_FUNC
  function writePacket (line 271) | void writePacket(Index row, Index col, const PacketScalar& val)
  function writePacket (line 278) | void writePacket(Index index, const PacketScalar& val)
  function EIGEN_DEVICE_FUNC (line 285) | EIGEN_DEVICE_FUNC explicit inline MapBase(PointerType dataPtr) : Base(da...
  function EIGEN_DEVICE_FUNC (line 286) | EIGEN_DEVICE_FUNC inline MapBase(PointerType dataPtr, Index vecSize) : B...
  function EIGEN_DEVICE_FUNC (line 287) | EIGEN_DEVICE_FUNC inline MapBase(PointerType dataPtr, Index rows, Index ...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/MathFunctions.h
  function namespace (line 19) | namespace Eigen {
  type Scalar (line 763) | typedef Scalar type;
  function Scalar (line 776) | static inline Scalar run()
  type typename (line 837) | typedef typename make_unsigned<Scalar>::type ScalarU;
  type typename (line 841) | typedef typename conditional<(ScalarU(-1) > unsigned(-1)), ScalarU, unsi...
  function Scalar (line 859) | static inline Scalar run()
  function Scalar (line 882) | static inline Scalar run()
  function isinf_impl (line 942) | bool>::type
  function isinf_msvc_helper (line 974) | bool isinf_msvc_helper(T x)
  function EIGEN_DEVICE_FUNC (line 980) | EIGEN_DEVICE_FUNC inline bool isnan_impl(const long double& x) { return ...
  function EIGEN_DEVICE_FUNC (line 981) | EIGEN_DEVICE_FUNC inline bool isnan_impl(const double& x)      { return ...
  function EIGEN_DEVICE_FUNC (line 982) | EIGEN_DEVICE_FUNC inline bool isnan_impl(const float& x)       { return ...
  function EIGEN_DEVICE_FUNC (line 984) | EIGEN_DEVICE_FUNC inline bool isinf_impl(const long double& x) { return ...
  function EIGEN_DEVICE_FUNC (line 985) | EIGEN_DEVICE_FUNC inline bool isinf_impl(const double& x)      { return ...
  function EIGEN_DEVICE_FUNC (line 986) | EIGEN_DEVICE_FUNC inline bool isinf_impl(const float& x)       { return ...
  function isnan_impl (line 998) | bool isnan_impl(const long double& x) { return __builtin_isnan(x); }
  function isnan_impl (line 999) | bool isnan_impl(const double& x)      { return __builtin_isnan(x); }
  function isnan_impl (line 1000) | bool isnan_impl(const float& x)       { return __builtin_isnan(x); }
  function isinf_impl (line 1001) | bool isinf_impl(const double& x)      { return __builtin_isinf(x); }
  function isinf_impl (line 1002) | bool isinf_impl(const float& x)       { return __builtin_isinf(x); }
  function isinf_impl (line 1003) | bool isinf_impl(const long double& x) { return __builtin_isinf(x); }
  function namespace (line 1023) | namespace numext {
  function floor (line 1357) | float floor(const float &x) { return ::floorf(x); }
  function floor (line 1360) | double floor(const double &x) { return ::floor(x); }
  function ceil (line 1377) | float ceil(const float &x) { return ::ceilf(x); }
  function ceil (line 1380) | double ceil(const double &x) { return ::ceil(x); }
  function log2 (line 1386) | inline int log2(int x)
  function log (line 1438) | float log(const float &x) { return ::logf(x); }
  function log (line 1441) | double log(const double &x) { return ::log(x); }
  function typename (line 1454) | typename NumTraits<T>::Real>::type
  function abs (line 1466) | float abs(const float &x) { return ::fabsf(x); }
  function abs (line 1469) | double abs(const double &x) { return ::fabs(x); }
  function exp (line 1495) | float exp(const float &x) { return ::expf(x); }
  function exp (line 1498) | double exp(const double &x) { return ::exp(x); }
  function expm1 (line 1530) | float expm1(const float &x) { return ::expm1f(x); }
  function expm1 (line 1533) | double expm1(const double &x) { return ::expm1(x); }
  function cos (line 1549) | float cos(const float &x) { return ::cosf(x); }
  function cos (line 1552) | double cos(const double &x) { return ::cos(x); }
  function sin (line 1568) | float sin(const float &x) { return ::sinf(x); }
  function sin (line 1571) | double sin(const double &x) { return ::sin(x); }
  function tan (line 1587) | float tan(const float &x) { return ::tanf(x); }
  function tan (line 1590) | double tan(const double &x) { return ::tan(x); }
  function EIGEN_ALWAYS_INLINE (line 1602) | EIGEN_ALWAYS_INLINE
  function acos (line 1616) | float acos(const float &x) { return ::acosf(x); }
  function acos (line 1619) | double acos(const double &x) { return ::acos(x); }
  function EIGEN_ALWAYS_INLINE (line 1631) | EIGEN_ALWAYS_INLINE
  function asin (line 1645) | float asin(const float &x) { return ::asinf(x); }
  function asin (line 1648) | double asin(const double &x) { return ::asin(x); }
  function EIGEN_ALWAYS_INLINE (line 1660) | EIGEN_ALWAYS_INLINE
  function atan (line 1674) | float atan(const float &x) { return ::atanf(x); }
  function atan (line 1677) | double atan(const double &x) { return ::atan(x); }
  function cosh (line 1694) | float cosh(const float &x) { return ::coshf(x); }
  function cosh (line 1697) | double cosh(const double &x) { return ::cosh(x); }
  function sinh (line 1713) | float sinh(const float &x) { return ::sinhf(x); }
  function sinh (line 1716) | double sinh(const double &x) { return ::sinh(x); }
  function tanh (line 1728) | float tanh(float x) { return internal::generic_fast_tanh_float(x); }
  function tanh (line 1737) | float tanh(const float &x) { return ::tanhf(x); }
  function tanh (line 1740) | double tanh(const double &x) { return ::tanh(x); }
  function fmod (line 1757) | float fmod(const float& a, const float& b) {
  function fmod (line 1763) | double fmod(const double& a, const double& b) {
  function namespace (line 1787) | namespace internal {
  type typename (line 1840) | typedef typename NumTraits<Scalar>::Real RealScalar;
  function isMuchSmallerThan (line 1842) | static inline bool isMuchSmallerThan(const Scalar& x, const Scalar&, con...
  function EIGEN_DEVICE_FUNC (line 1846) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 1851) | EIGEN_DEVICE_FUNC
  type typename (line 1861) | typedef typename NumTraits<Scalar>::Real RealScalar;
  function isMuchSmallerThan (line 1863) | static inline bool isMuchSmallerThan(const Scalar& x, const OtherScalar&...
  function EIGEN_DEVICE_FUNC (line 1867) | EIGEN_DEVICE_FUNC
  function isMuchSmallerThan (line 1878) | bool isMuchSmallerThan(const Scalar& x, const OtherScalar& y,
  function isApprox (line 1885) | bool isApprox(const Scalar& x, const Scalar& y,
  function isApproxOrLessThan (line 1892) | bool isApproxOrLessThan(const Scalar& x, const Scalar& y,
  function bool (line 1902) | struct random_impl<bool>
  function bool (line 1915) | struct scalar_fuzzy_impl<bool>

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/MathFunctionsImpl.h
  function namespace (line 14) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Matrix.h
  function namespace (line 14) | namespace Eigen {
  type PlainObjectBase (line 186) | typedef PlainObjectBase<Matrix> Base;
  function EIGEN_STRONG_INLINE (line 266) | EIGEN_STRONG_INLINE
  function EIGEN_STRONG_INLINE (line 295) | EIGEN_STRONG_INLINE
  function EIGEN_STRONG_INLINE (line 321) | EIGEN_STRONG_INLINE Matrix(const std::initializer_list<std::initializer_...
  function EIGEN_STRONG_INLINE (line 328) | EIGEN_STRONG_INLINE
  function EIGEN_STRONG_INLINE (line 336) | EIGEN_STRONG_INLINE
  function Base (line 414) | Matrix(const Matrix& other) : Base(other)
  function EIGEN_STRONG_INLINE (line 422) | EIGEN_STRONG_INLINE Matrix(const EigenBase<OtherDerived> &other)
  type internal (line 445) | struct internal

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/MatrixBase.h
  function namespace (line 14) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/NestByValue.h
  function namespace (line 14) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/NoAlias.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/NumTraits.h
  function namespace (line 13) | namespace Eigen {
  function run (line 56) | static int run() { return std::numeric_limits<T>::digits; }
  function EIGEN_CONSTEXPR (line 62) | EIGEN_CONSTEXPR
  function EIGEN_CONSTEXPR (line 74) | EIGEN_CONSTEXPR
  function namespace (line 80) | namespace numext {
  type T (line 155) | typedef T Real;
  type typename (line 156) | typedef typename internal::conditional<
  type T (line 161) | typedef T Nested;
  type T (line 162) | typedef T Literal;
  function Real (line 165) | static inline Real epsilon()
  function digits10 (line 171) | static inline int digits10()
  function digits (line 177) | static inline int digits()
  function Real (line 183) | static inline Real dummy_precision()
  function T (line 191) | static inline T highest() {
  function T (line 196) | static inline T lowest()  {
  function T (line 202) | static inline T infinity() {
  function T (line 207) | static inline T quiet_NaN() {
  type NumTraits (line 215) | struct NumTraits
  function dummy_precision (line 219) | static inline float dummy_precision() { return 1e-5f; }
  type NumTraits (line 222) | struct NumTraits
  function dummy_precision (line 225) | static inline double dummy_precision() { return 1e-12; }
  type NumTraits (line 228) | struct NumTraits
  function dummy_precision (line 232) | double dummy_precision() { return 1e-15l; }
  type _Real (line 238) | typedef _Real Real;
  type typename (line 239) | typedef typename NumTraits<_Real>::Literal Literal;
  function Real (line 249) | static inline Real epsilon() { return NumTraits<Real>::epsilon(); }
  function Real (line 251) | static inline Real dummy_precision() { return NumTraits<Real>::dummy_pre...
  function digits10 (line 253) | static inline int digits10() { return NumTraits<Real>::digits10(); }
  type typename (line 260) | typedef typename NumTraits<Scalar>::Real RealScalar;
  type Array (line 261) | typedef Array<RealScalar, Rows, Cols, Options, MaxRows, MaxCols> Real;
  type typename (line 262) | typedef typename NumTraits<Scalar>::NonInteger NonIntegerScalar;
  type Array (line 263) | typedef Array<NonIntegerScalar, Rows, Cols, Options, MaxRows, MaxCols> N...
  type ArrayType (line 264) | typedef ArrayType & Nested;
  type typename (line 265) | typedef typename NumTraits<Scalar>::Literal Literal;
  function RealScalar (line 278) | static inline RealScalar epsilon() { return NumTraits<RealScalar>::epsil...
  function RealScalar (line 280) | static inline RealScalar dummy_precision() { return NumTraits<RealScalar...
  function EIGEN_CONSTEXPR (line 282) | EIGEN_CONSTEXPR
  function string (line 286) | struct NumTraits<std::string>
  function void (line 309) | struct NumTraits<void> {}
  type NumTraits (line 311) | struct NumTraits

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/PartialReduxEvaluator.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 105) | typedef typename redux_traits<Func, Evaluator>::PacketType PacketScalar;
  function PacketType (line 109) | static PacketType run(const Evaluator &eval, const Func& func, Index size)
  type typename (line 136) | typedef typename internal::nested_eval<ArgType,1>::type ArgTypeNested;
  type typename (line 137) | typedef typename internal::add_const_on_value_type<ArgTypeNested>::type ...
  type typename (line 138) | typedef typename internal::remove_all<ArgTypeNested>::type ArgTypeNested...
  type typename (line 139) | typedef typename ArgType::Scalar InputScalar;
  type typename (line 140) | typedef typename XprType::Scalar Scalar;
  type typename (line 144) | typedef typename MemberOp::template Cost<int(TraversalSize)> CostOpType;
  function EIGEN_DEVICE_FUNC (line 165) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType xpr)
  type typename (line 172) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function Scalar (line 175) | const Scalar coeff(Index i, Index j) const
  function Scalar (line 181) | const Scalar coeff(Index index) const
  function EIGEN_STRONG_INLINE (line 187) | EIGEN_STRONG_INLINE
  function EIGEN_DEVICE_FUNC (line 194) | EIGEN_DEVICE_FUNC

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/PermutationMatrix.h
  function namespace (line 14) | namespace Eigen {
  type internal (line 300) | typedef internal::traits<PermutationMatrix> Traits;
  type typename (line 306) | typedef typename Traits::IndicesType IndicesType;
  type typename (line 307) | typedef typename Traits::StorageIndex StorageIndex;
  function explicit (line 315) | explicit inline PermutationMatrix(Index size) : m_indices(size)
  function m_indices (line 333) | inline PermutationMatrix(const MatrixBase<Other>& indices) : m_indices(i...
  function namespace (line 391) | namespace internal {
  type internal (line 408) | typedef internal::traits<Map> Traits;
  type typename (line 412) | typedef typename Traits::IndicesType IndicesType;
  type typename (line 413) | typedef typename IndicesType::Scalar StorageIndex;
  function m_indices (line 416) | inline Map(const StorageIndex* indicesPtr)
  function namespace (line 456) | namespace internal {
  type internal (line 489) | typedef internal::traits<PermutationWrapper> Traits;
  type typename (line 493) | typedef typename Traits::IndicesType IndicesType;
  function m_indices (line 496) | inline PermutationWrapper(const IndicesType& indices)
  type internal (line 540) | typedef internal::traits<PermutationType> PermTraits;
  type typename (line 548) | typedef typename PermutationType::DenseMatrixType DenseMatrixType;
  function namespace (line 597) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/PlainObjectBase.h
  function namespace (line 25) | namespace Eigen {
  function Scalar (line 160) | const Scalar& coeff(Index rowId, Index colId) const
  function Scalar (line 173) | const Scalar& coeff(Index index) const
  function Scalar (line 204) | const Scalar& coeffRef(Index rowId, Index colId) const
  function Scalar (line 215) | const Scalar& coeffRef(Index index) const
  function PacketScalar (line 222) | PacketScalar packet(Index rowId, Index colId) const
  function PacketScalar (line 232) | PacketScalar packet(Index index) const
  function writePacket (line 239) | void writePacket(Index rowId, Index colId, const PacketScalar& val)
  function writePacket (line 249) | void writePacket(Index index, const PacketScalar& val)
  function Scalar (line 255) | const Scalar *data() const
  function Scalar (line 259) | Scalar *data()
  function resize (line 279) | void resize(Index rows, Index cols)
  function EIGEN_DEVICE_FUNC (line 308) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 333) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 347) | EIGEN_DEVICE_FUNC
  function conservativeResize (line 390) | void conservativeResize(Index rows, Index cols)
  function conservativeResize (line 403) | void conservativeResize(Index rows, NoChange_t)
  function conservativeResize (line 417) | void conservativeResize(NoChange_t, Index cols)
  function conservativeResize (line 432) | void conservativeResize(Index size)
  function EIGEN_DEVICE_FUNC (line 493) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 502) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 521) | EIGEN_DEVICE_FUNC
  function EIGEN_STRONG_INLINE (line 541) | EIGEN_STRONG_INLINE
  function EIGEN_STRONG_INLINE (line 560) | EIGEN_STRONG_INLINE PlainObjectBase(const std::initializer_list<std::ini...
  function _init2 (line 824) | void _init2(const Index& val0, const Index& val1,
  function _init1 (line 862) | void _init1(const Index& val0,
  function _init1 (line 875) | void _init1(const Scalar* data){
  function _init1 (line 889) | void _init1(const Derived& other){
  function EIGEN_STRONG_INLINE (line 910) | EIGEN_STRONG_INLINE void _init1(const RotationBase<OtherDerived,ColsAtCo...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Product.h
  function namespace (line 13) | namespace Eigen {
  type _Rhs (line 79) | typedef _Rhs Rhs;
  type typename (line 81) | typedef typename ProductImpl<
  type typename (line 89) | typedef typename internal::ref_selector<Rhs>::type RhsNested;
  type typename (line 90) | typedef typename internal::remove_all<LhsNested>::type LhsNestedCleaned;
  type typename (line 91) | typedef typename internal::remove_all<RhsNested>::type RhsNestedCleaned;
  function namespace (line 117) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/ProductEvaluators.h
  function namespace (line 16) | namespace Eigen {
  type evaluator (line 56) | typedef evaluator<Product<EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar1...
  function explicit (line 58) | explicit evaluator(const XprType& xpr)
  type evaluator (line 69) | typedef evaluator<Diagonal<const Product<Lhs, Rhs, LazyProduct>, DiagInd...
  function explicit (line 71) | explicit evaluator(const XprType& xpr)
  type typename (line 100) | typedef typename XprType::PlainObject PlainObject;
  type evaluator (line 101) | typedef evaluator<PlainObject> Base;
  function explicit (line 107) | explicit product_evaluator(const XprType& xpr)
  function run (line 141) | void run(DstXprType &dst, const SrcXprType &src, const internal::assign_...
  function run (line 159) | void run(DstXprType &dst, const SrcXprType &src, const internal::add_ass...
  function run (line 174) | void run(DstXprType &dst, const SrcXprType &src, const internal::sub_ass...
  function run (line 194) | void run(DstXprType &dst, const SrcXprType &src, const AssignFunc& func)
  function addTo (line 255) | void addTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
  function subTo (line 261) | void subTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
  type typename (line 543) | typedef typename find_best_packet<Scalar,RowsAtCompileTime>::type LhsVec...
  type typename (line 544) | typedef typename find_best_packet<Scalar,ColsAtCompileTime>::type RhsVec...
  function CoeffReturnType (line 604) | const CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 614) | const CoeffReturnType coeff(Index index) const
  function EIGEN_STRONG_INLINE (line 622) | EIGEN_STRONG_INLINE
  function EIGEN_STRONG_INLINE (line 634) | EIGEN_STRONG_INLINE
  type Product (line 657) | typedef Product<Lhs, Rhs, DefaultProduct> XprType;
  type Product (line 658) | typedef Product<Lhs, Rhs, LazyProduct> BaseProduct;
  type product_evaluator (line 659) | typedef product_evaluator<BaseProduct, CoeffBasedProductMode, DenseShape...
  function explicit (line 664) | explicit product_evaluator(const XprType& xpr)
  function run (line 676) | void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index inn...
  function run (line 686) | void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index inn...
  function run (line 696) | void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*i...
  function run (line 705) | void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*i...
  function run (line 714) | void run(Index /*row*/, Index /*col*/, const Lhs& /*lhs*/, const Rhs& /*...
  function run (line 723) | void run(Index /*row*/, Index /*col*/, const Lhs& /*lhs*/, const Rhs& /*...
  function run (line 732) | void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index inn...
  function run (line 743) | void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index inn...
  type typename (line 764) | typedef typename Product<Lhs,Rhs>::Scalar Scalar;
  type typename (line 778) | typedef typename Product<Lhs,Rhs>::Scalar Scalar;
  type typename (line 799) | typedef typename Product<Lhs,Rhs>::Scalar Scalar;
  function scaleAndAddTo (line 803) | void scaleAndAddTo(Dest& dst, const Lhs& lhs, const Rhs& rhs, const Scal...
  type typename (line 813) | typedef typename Product<Lhs,Rhs>::Scalar Scalar;
  type typename (line 831) | typedef typename ScalarBinaryOpTraits<typename MatrixType::Scalar, typename
  function EIGEN_DEVICE_FUNC (line 862) | EIGEN_DEVICE_FUNC diagonal_product_evaluator_base(const MatrixType &mat,...
  function Scalar (line 869) | const Scalar coeff(Index idx) const
  function PacketType (line 879) | PacketType packet_impl(Index row, Index col, Index id, internal::true_ty...
  function PacketType (line 886) | PacketType packet_impl(Index row, Index col, Index id, internal::false_t...
  type diagonal_product_evaluator_base (line 905) | typedef diagonal_product_evaluator_base<Rhs, typename
  type typename (line 909) | typedef typename Base::Scalar Scalar;
  type Product (line 911) | typedef Product<Lhs, Rhs, ProductKind> XprType;
  type typename (line 912) | typedef typename XprType::PlainObject PlainObject;
  type typename (line 913) | typedef typename Lhs::DiagonalVectorType DiagonalType;
  function EIGEN_DEVICE_FUNC (line 918) | EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
  function Scalar (line 923) | const Scalar coeff(Index row, Index col) const
  function PacketType (line 930) | PacketType packet(Index row, Index col) const
  function PacketType (line 939) | PacketType packet(Index idx) const
  type diagonal_product_evaluator_base (line 951) | typedef diagonal_product_evaluator_base<Lhs, typename
  type typename (line 955) | typedef typename Base::Scalar Scalar;
  type Product (line 957) | typedef Product<Lhs, Rhs, ProductKind> XprType;
  type typename (line 958) | typedef typename XprType::PlainObject PlainObject;
  function EIGEN_DEVICE_FUNC (line 962) | EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
  function Scalar (line 967) | const Scalar coeff(Index row, Index col) const
  function PacketType (line 974) | PacketType packet(Index row, Index col) const
  function PacketType (line 981) | PacketType packet(Index idx) const
  type typename (line 1003) | typedef typename nested_eval<ExpressionType, 1>::type MatrixType;
  type typename (line 1004) | typedef typename remove_all<MatrixType>::type MatrixTypeCleaned;
  function run (line 1007) | void run(Dest& dst, const PermutationType& perm, const ExpressionType& xpr)
  type typename (line 1111) | typedef typename nested_eval<ExpressionType, 1>::type MatrixType;
  type typename (line 1112) | typedef typename remove_all<MatrixType>::type MatrixTypeCleaned;
  function run (line 1115) | void run(Dest& dst, const TranspositionType& tr, const ExpressionType& xpr)

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Random.h
  function namespace (line 15) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Redux.h
  function namespace (line 16) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Ref.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 62) | typedef typename internal::traits<Derived>::PlainObjectType PlainObjectT...
  type typename (line 63) | typedef typename internal::traits<Derived>::StrideType StrideType;
  function Index (line 70) | inline Index innerStride() const
  function EIGEN_DEVICE_FUNC (line 97) | static EIGEN_DEVICE_FUNC Index resolveInnerStride(Index inner) {
  function EIGEN_DEVICE_FUNC (line 105) | static EIGEN_DEVICE_FUNC Index resolveOuterStride(Index inner, Index out...
  function EIGEN_DEVICE_FUNC (line 360) | EIGEN_DEVICE_FUNC inline Ref(const Ref& other) : Base(other) {
  function construct (line 372) | void construct(const Expression& expr,internal::true_type)
  function construct (line 381) | void construct(const Expression& expr, internal::false_type)

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Replicate.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 64) | typedef typename internal::traits<Replicate>::MatrixTypeNested MatrixTyp...
  type typename (line 65) | typedef typename internal::traits<Replicate>::_MatrixTypeNested _MatrixT...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Reshaped.h
  function namespace (line 14) | namespace Eigen {
  function EIGEN_INHERIT_ASSIGNMENT_OPERATORS (line 103) | EIGEN_GENERIC_PUBLIC_INTERFACE(Reshaped)
  function EIGEN_DEVICE_FUNC (line 118) | EIGEN_DEVICE_FUNC
  function Impl (line 139) | inline ReshapedImpl(XprType& xpr) : Impl(xpr) {}
  function EIGEN_DEVICE_FUNC (line 140) | EIGEN_DEVICE_FUNC inline ReshapedImpl(XprType& xpr, Index reshapeRows, I...
  function namespace (line 144) | namespace internal {
  function EIGEN_DEVICE_FUNC (line 183) | EIGEN_DEVICE_FUNC inline Index innerStride() const;
  function EIGEN_DEVICE_FUNC (line 227) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 239) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 250) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 343) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 351) | EIGEN_DEVICE_FUNC
  function CoeffReturnType (line 359) | const CoeffReturnType coeff(Index rowId, Index colId) const
  function EIGEN_DEVICE_FUNC (line 365) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 375) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 383) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 391) | EIGEN_DEVICE_FUNC
  function writePacket (line 402) | inline void writePacket(Index rowId, Index colId, const PacketScalar& val)
  function PacketScalar (line 411) | inline PacketScalar packet(Index index) const
  function writePacket (line 420) | inline void writePacket(Index index, const PacketScalar& val)
  type typename (line 440) | typedef typename XprType::Scalar Scalar;

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/ReturnByValue.h
  function namespace (line 14) | namespace Eigen {
  type typename (line 56) | typedef typename internal::dense_xpr_base<ReturnByValue>::type Base;
  function evalTo (line 61) | inline void evalTo(Dest& dst) const
  function class (line 68) | class Unusable{
  function namespace (line 88) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Reverse.h
  function namespace (line 15) | namespace Eigen {
  type internal (line 85) | typedef internal::reverse_packet_cond<PacketScalar,ReversePacket> revers...
  function m_matrix (line 88) | inline Reverse(const MatrixType& matrix) : m_matrix(matrix) { }
  function reverseInPlace (line 139) | inline void DenseBase<Derived>::reverseInPlace()
  function namespace (line 163) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Select.h
  function namespace (line 13) | namespace Eigen {
  function EIGEN_DEVICE_FUNC (line 73) | inline EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 82) | inline EIGEN_DEVICE_FUNC

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/SelfAdjointView.h
  function namespace (line 13) | namespace Eigen {
  type _MatrixType (line 54) | typedef _MatrixType MatrixType;
  type TriangularBase (line 55) | typedef TriangularBase<SelfAdjointView> Base;
  type typename (line 56) | typedef typename internal::traits<SelfAdjointView>::MatrixTypeNested Mat...
  type typename (line 57) | typedef typename internal::traits<SelfAdjointView>::MatrixTypeNestedClea...
  type MatrixTypeNestedCleaned (line 58) | typedef MatrixTypeNestedCleaned NestedExpression;
  type typename (line 61) | typedef typename internal::traits<SelfAdjointView>::Scalar Scalar;
  type typename (line 62) | typedef typename MatrixType::StorageIndex StorageIndex;
  type typename (line 63) | typedef typename internal::remove_all<typename
  type SelfAdjointView (line 64) | typedef SelfAdjointView<typename
  type typename (line 71) | typedef typename MatrixType::PlainObject PlainObject;
  function m_matrix (line 74) | inline SelfAdjointView(MatrixType& matrix) : m_matrix(matrix)
  function EIGEN_DEVICE_FUNC (line 91) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 101) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 115) | EIGEN_DEVICE_FUNC
  type SelfAdjointView (line 195) | typedef SelfAdjointView<const MatrixConjugateReturnType,UpLo> ConjugateR...
  function EIGEN_DEVICE_FUNC (line 197) | EIGEN_DEVICE_FUNC
  type typename (line 297) | typedef typename Base::DstXprType DstXprType;
  type typename (line 298) | typedef typename Base::SrcXprType SrcXprType;
  type typename (line 305) | typedef typename Base::SrcEvaluatorType SrcEvaluatorType;
  type typename (line 306) | typedef typename Base::Scalar Scalar;
  type typename (line 307) | typedef typename Base::AssignmentTraits AssignmentTraits;
  function EIGEN_DEVICE_FUNC (line 310) | EIGEN_DEVICE_FUNC triangular_dense_assignment_kernel(DstEvaluatorType &d...
  function EIGEN_DEVICE_FUNC (line 314) | EIGEN_DEVICE_FUNC void assignCoeff(Index row, Index col)
  function EIGEN_DEVICE_FUNC (line 322) | EIGEN_DEVICE_FUNC void assignDiagonalCoeff(Index id)
  function EIGEN_DEVICE_FUNC (line 327) | EIGEN_DEVICE_FUNC void assignOppositeCoeff(Index, Index)

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Solve.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 66) | typedef typename internal::traits<Solve>::StorageIndex StorageIndex;
  function namespace (line 110) | namespace internal {
  type Solve (line 139) | typedef Solve<DecType,RhsType> SrcXprType;
  function run (line 140) | static void run(DstXprType &dst, const SrcXprType &src, const internal::...
  type Solve (line 155) | typedef Solve<Transpose<const DecType>,RhsType> SrcXprType;
  function run (line 156) | static void run(DstXprType &dst, const SrcXprType &src, const internal::...
  function run (line 173) | static void run(DstXprType &dst, const SrcXprType &src, const internal::...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/SolveTriangular.h
  function namespace (line 13) | namespace Eigen {
  function EIGEN_DEVICE_FUNC (line 121) | static EIGEN_DEVICE_FUNC void run(const Lhs& lhs, Rhs& rhs)
  function EIGEN_DEVICE_FUNC (line 141) | static EIGEN_DEVICE_FUNC void run(const Lhs& lhs, Rhs& rhs)
  type typename (line 177) | typedef typename internal::conditional<copy,
  function namespace (line 197) | namespace internal {
  type ReturnByValue (line 210) | typedef ReturnByValue<triangular_solve_retval> Base;

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/SolverBase.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 73) | typedef typename internal::traits<Derived>::Scalar Scalar;
  type Scalar (line 74) | typedef Scalar CoeffReturnType;
  type internal (line 77) | struct internal
  type typename (line 113) | typedef typename internal::add_const<Transpose<const Derived> >::type Co...
  function ConstTransposeReturnType (line 121) | inline ConstTransposeReturnType transpose() const
  function namespace (line 155) | namespace internal {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/StableNorm.h
  function namespace (line 17) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/StlIterators.h
  function namespace (line 10) | namespace Eigen {
  function operator (line 75) | bool operator< (const indexed_based_stl_iterator_base& other) const { ei...
  function operator (line 77) | bool operator> (const indexed_based_stl_iterator_base& other) const { ei...
  function operator (line 82) | bool operator< (const other_iterator& other) const { eigen_assert(mp_xpr...
  function operator (line 84) | bool operator> (const other_iterator& other) const { eigen_assert(mp_xpr...
  type typename (line 101) | typedef typename traits::XprType XprType;
  type indexed_based_stl_reverse_iterator_base (line 102) | typedef indexed_based_stl_reverse_iterator_base<typename
  type indexed_based_stl_reverse_iterator_base (line 103) | typedef indexed_based_stl_reverse_iterator_base<typename
  type typename (line 104) | typedef typename internal::conditional<internal::is_const<XprType>::valu...
  type std (line 110) | typedef std::random_access_iterator_tag iterator_category;
  function operator (line 154) | bool operator< (const indexed_based_stl_reverse_iterator_base& other) co...
  function operator (line 156) | bool operator> (const indexed_based_stl_reverse_iterator_base& other) co...
  function operator (line 161) | bool operator< (const other_iterator& other) const { eigen_assert(mp_xpr...
  function operator (line 163) | bool operator> (const other_iterator& other) const { eigen_assert(mp_xpr...
  type pointer_based_stl_iterator (line 179) | typedef pointer_based_stl_iterator<typename
  type pointer_based_stl_iterator (line 180) | typedef pointer_based_stl_iterator<typename
  type typename (line 181) | typedef typename internal::conditional<internal::is_const<XprType>::valu...
  type typename (line 187) | typedef typename XprType::Scalar value_type;
  type std (line 188) | typedef std::random_access_iterator_tag iterator_category;
  type typename (line 189) | typedef typename internal::conditional<bool(is_lvalue), value_type*, const
  type typename (line 190) | typedef typename internal::conditional<bool(is_lvalue), value_type&, const
  function reference (line 210) | reference operator*()         const { return *m_ptr;   }
  function reference (line 211) | reference operator[](Index i) const { return *(m_ptr+i*m_incr.value()); }
  function pointer (line 212) | pointer   operator->()        const { return m_ptr;    }
  type generic_randaccess_stl_iterator (line 261) | typedef generic_randaccess_stl_iterator<typename
  type indexed_based_stl_iterator_base (line 277) | typedef indexed_based_stl_iterator_base<generic_randaccess_stl_iterator>...
  type value_type (line 284) | typedef const value_type read_only_ref_t;
  type typename (line 289) | typedef typename internal::conditional<bool(is_lvalue), value_type&, rea...
  function Base (line 293) | generic_randaccess_stl_iterator(const typename Base::non_const_iterator&...
  function reference (line 296) | reference operator*()         const { return   (*mp_xpr)(m_index);   }
  function reference (line 297) | reference operator[](Index i) const { return   (*mp_xpr)(m_index+i); }
  function pointer (line 298) | pointer   operator->()        const { return &((*mp_xpr)(m_index)); }
  type _XprType (line 304) | typedef _XprType XprType;
  type subvector_stl_iterator (line 305) | typedef subvector_stl_iterator<typename
  type subvector_stl_iterator (line 306) | typedef subvector_stl_iterator<typename
  type indexed_based_stl_iterator_base (line 316) | typedef indexed_based_stl_iterator_base<subvector_stl_iterator> Base;
  type typename (line 320) | typedef typename internal::conditional<Direction==Vertical,typename
  type typename (line 321) | typedef typename internal::conditional<Direction==Vertical,typename
  type typename (line 326) | typedef typename reference::PlainObject value_type;
  function reference (line 344) | reference operator*()         const { return (*mp_xpr).template subVecto...
  function reference (line 345) | reference operator[](Index i) const { return (*mp_xpr).template subVecto...
  function pointer (line 346) | pointer   operator->()        const { return (*mp_xpr).template subVecto...
  type _XprType (line 352) | typedef _XprType XprType;
  type subvector_stl_reverse_iterator (line 353) | typedef subvector_stl_reverse_iterator<typename
  type subvector_stl_reverse_iterator (line 354) | typedef subvector_stl_reverse_iterator<typename
  type indexed_based_stl_reverse_iterator_base (line 364) | typedef indexed_based_stl_reverse_iterator_base<subvector_stl_reverse_it...
  type typename (line 368) | typedef typename internal::conditional<Direction==Vertical,typename
  type typename (line 369) | typedef typename internal::conditional<Direction==Vertical,typename
  type typename (line 374) | typedef typename reference::PlainObject value_type;
  function reference (line 392) | reference operator*()         const { return (*mp_xpr).template subVecto...
  function reference (line 393) | reference operator[](Index i) const { return (*mp_xpr).template subVecto...
  function pointer (line 394) | pointer   operator->()        const { return (*mp_xpr).template subVecto...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Stride.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Swap.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Transpose.h
  function namespace (line 14) | namespace Eigen {
  function namespace (line 93) | namespace internal {
  type typename (line 133) | typedef typename internal::conditional<
  function ScalarWithConstIfNotLvalue (line 140) | ScalarWithConstIfNotLvalue* data() { return derived().nestedExpression()...
  function Scalar (line 142) | const Scalar* data() const { return derived().nestedExpression().data(); }
  function Scalar (line 146) | const Scalar& coeffRef(Index rowId, Index colId) const
  function Scalar (line 152) | const Scalar& coeffRef(Index index) const
  function namespace (line 230) | namespace internal {
  type typename (line 249) | typedef typename MatrixType::Scalar Scalar;
  type typename (line 250) | typedef typename internal::packet_traits<typename
  type typename (line 265) | typedef typename MatrixType::Scalar Scalar;
  type typename (line 266) | typedef typename internal::packet_traits<typename
  type typename (line 303) | typedef typename MatrixType::Scalar Scalar;
  function transposeInPlace (line 344) | inline void DenseBase<Derived>::transposeInPlace()
  function adjointInPlace (line 375) | inline void MatrixBase<Derived>::adjointInPlace()
  function namespace (line 384) | namespace internal {
  function run (line 403) | static bool run(const Scalar* dest, const OtherDerived& src)
  function run (line 432) | static void run(const Derived& dst, const OtherDerived& other)

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Transpositions.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 161) | typedef typename Traits::IndicesType IndicesType;
  type typename (line 162) | typedef typename IndicesType::Scalar StorageIndex;
  function m_indices (line 173) | inline Transpositions(const MatrixBase<Other>& indices) : m_indices(indi...
  function m_indices (line 185) | inline Transpositions(Index size) : m_indices(size)
  function EIGEN_DEVICE_FUNC (line 192) | EIGEN_DEVICE_FUNC
  function namespace (line 201) | namespace internal {
  type typename (line 220) | typedef typename Traits::IndicesType IndicesType;
  type typename (line 221) | typedef typename IndicesType::Scalar StorageIndex;
  function explicit (line 223) | explicit inline Map(const StorageIndex* indicesPtr)
  function EIGEN_DEVICE_FUNC (line 254) | EIGEN_DEVICE_FUNC
  function namespace (line 262) | namespace internal {
  type typename (line 279) | typedef typename Traits::IndicesType IndicesType;
  type typename (line 280) | typedef typename IndicesType::Scalar StorageIndex;
  function explicit (line 282) | explicit inline TranspositionsWrapper(IndicesType& indices)
  function EIGEN_DEVICE_FUNC (line 298) | EIGEN_DEVICE_FUNC
  function namespace (line 334) | namespace internal {
  type TranspositionsDerived (line 346) | typedef TranspositionsDerived TranspositionType;
  type typename (line 347) | typedef typename TranspositionType::IndicesType IndicesType;

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/TriangularMatrix.h
  function namespace (line 14) | namespace Eigen {
  type typename (line 193) | typedef typename internal::traits<TriangularView>::Scalar Scalar;
  type _MatrixType (line 194) | typedef _MatrixType MatrixType;
  type typename (line 198) | typedef typename internal::traits<TriangularView>::MatrixTypeNestedNonRe...
  type typename (line 200) | typedef typename internal::remove_all<typename
  type TriangularView (line 201) | typedef TriangularView<typename
  type typename (line 206) | typedef typename internal::traits<TriangularView>::MatrixTypeNestedClean...
  function m_matrix (line 219) | inline TriangularView(MatrixType& matrix) : m_matrix(matrix)
  function EIGEN_DEVICE_FUNC (line 236) | EIGEN_DEVICE_FUNC
  type TriangularView (line 239) | typedef TriangularView<const MatrixConjugateReturnType,Mode> ConjugateRe...
  function EIGEN_DEVICE_FUNC (line 241) | EIGEN_DEVICE_FUNC
  type TriangularBase (line 351) | typedef TriangularBase<TriangularViewType> Base;
  type typename (line 352) | typedef typename internal::traits<TriangularViewType>::Scalar Scalar;
  type _MatrixType (line 354) | typedef _MatrixType MatrixType;
  type typename (line 355) | typedef typename MatrixType::PlainObject DenseMatrixType;
  type DenseMatrixType (line 356) | typedef DenseMatrixType PlainObject;
  type typename (line 362) | typedef typename internal::traits<TriangularViewType>::StorageKind Stora...
  function EIGEN_DEVICE_FUNC (line 401) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 404) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 408) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 411) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 417) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 427) | EIGEN_DEVICE_FUNC
  function solveInPlace (line 521) | void solveInPlace(const MatrixBase<OtherDerived>& other) const
  function swap (line 530) | void swap(TriangularBase<OtherDerived> const & other)
  function namespace (line 716) | namespace internal {
  type evaluator (line 734) | typedef evaluator<typename
  function EIGEN_DEVICE_FUNC (line 735) | EIGEN_DEVICE_FUNC
  type Triangular2Triangular (line 740) | struct Triangular2Triangular    {}
  type Triangular2Dense (line 741) | struct Triangular2Dense         {}
  type Dense2Triangular (line 742) | struct Dense2Triangular         {}
  type typename (line 758) | typedef typename Base::DstXprType DstXprType;
  type typename (line 759) | typedef typename Base::SrcXprType SrcXprType;
  type typename (line 766) | typedef typename Base::SrcEvaluatorType SrcEvaluatorType;
  type typename (line 767) | typedef typename Base::Scalar Scalar;
  type typename (line 768) | typedef typename Base::AssignmentTraits AssignmentTraits;
  function EIGEN_DEVICE_FUNC (line 771) | EIGEN_DEVICE_FUNC triangular_dense_assignment_kernel(DstEvaluatorType &d...
  function EIGEN_DEVICE_FUNC (line 776) | EIGEN_DEVICE_FUNC void assignCoeff(Index row, Index col)
  function EIGEN_DEVICE_FUNC (line 785) | EIGEN_DEVICE_FUNC void assignDiagonalCoeff(Index id)
  function EIGEN_DEVICE_FUNC (line 792) | EIGEN_DEVICE_FUNC void assignOppositeCoeff(Index row, Index col)
  type evaluator (line 804) | typedef evaluator<DstXprType> DstEvaluatorType;
  type evaluator (line 805) | typedef evaluator<SrcXprType> SrcEvaluatorType;
  type triangular_dense_assignment_kernel (line 815) | typedef triangular_dense_assignment_kernel< Mode
  function Kernel (line 817) | Kernel kernel(dstEvaluator, srcEvaluator, func, dst.const_cast_derived());
  type AssignmentKind (line 836) | struct AssignmentKind
  type Triangular2Dense (line 836) | typedef Triangular2Dense      Kind;
  type AssignmentKind (line 837) | struct AssignmentKind
  type Dense2Triangular (line 837) | typedef Dense2Triangular      Kind;
  type typename (line 875) | typedef typename DstEvaluatorType::XprType DstXprType;
  type typename (line 882) | typedef typename Kernel::Scalar Scalar;
  function namespace (line 957) | namespace internal {
  function run (line 980) | static void run(DstXprType &dst, const SrcXprType &src, const internal::...
  function run (line 991) | static void run(DstXprType &dst, const SrcXprType &src, const internal::...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/VectorBlock.h
  function namespace (line 14) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/VectorwiseOp.h
  function namespace (line 14) | namespace Eigen {
  function namespace (line 104) | namespace internal {
  type typename (line 191) | typedef typename ExpressionType::RealScalar RealScalar;
  type Eigen (line 192) | typedef Eigen::Index Index;
  type typename (line 193) | typedef typename internal::ref_selector<ExpressionType>::non_const_type ...
  type typename (line 194) | typedef typename internal::remove_all<ExpressionTypeNested>::type Expres...
  type PartialReduxExpr (line 199) | typedef PartialReduxExpr<ExpressionType,
  type PartialReduxExpr (line 207) | typedef PartialReduxExpr<ExpressionType,
  type Replicate (line 221) | typedef Replicate<OtherDerived,
  type Replicate (line 244) | typedef Replicate<OtherDerived,
  function m_matrix (line 268) | inline VectorwiseOp(ExpressionType& matrix) : m_matrix(matrix) {}
  function EIGEN_DEVICE_FUNC (line 271) | EIGEN_DEVICE_FUNC
  function reverse_iterator (line 300) | reverse_iterator        rbegin()       { return reverse_iterator       (...
  function iterator (line 309) | iterator                 end()         { return iterator      (m_matrix,...
  function reverse_iterator (line 318) | reverse_iterator        rend()         { return reverse_iterator       (...
  type typename (line 343) | typedef typename ReturnType<internal::member_minCoeff>::Type MinCoeffRet...
  type typename (line 344) | typedef typename ReturnType<internal::member_maxCoeff>::Type MaxCoeffRet...
  type PartialReduxExpr (line 345) | typedef PartialReduxExpr<const CwiseUnaryOp<internal::scalar_abs2_op<Sca...
  type CwiseUnaryOp (line 346) | typedef CwiseUnaryOp<internal::scalar_sqrt_op<RealScalar>, const
  type typename (line 347) | typedef typename ReturnType<internal::member_blueNorm,RealScalar>::Type ...
  type typename (line 348) | typedef typename ReturnType<internal::member_stableNorm,RealScalar>::Typ...
  type typename (line 349) | typedef typename ReturnType<internal::member_hypotNorm,RealScalar>::Type...
  type typename (line 350) | typedef typename ReturnType<internal::member_sum>::Type SumReturnType;
  type MeanReturnType (line 351) | typedef EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(SumReturnType,Scalar,quot...
  type typename (line 352) | typedef typename ReturnType<internal::member_all>::Type AllReturnType;
  type typename (line 353) | typedef typename ReturnType<internal::member_any>::Type AnyReturnType;
  type PartialReduxExpr (line 354) | typedef PartialReduxExpr<ExpressionType, internal::member_count<Index,Sc...
  type typename (line 355) | typedef typename ReturnType<internal::member_prod>::Type ProdReturnType;
  type Reverse (line 356) | typedef Reverse<const ExpressionType, Direction> ConstReverseReturnType;
  type Reverse (line 357) | typedef Reverse<ExpressionType, Direction> ReverseReturnType;
  type PartialReduxExpr (line 360) | typedef PartialReduxExpr<ExpressionType, internal::member_lpnorm<p,RealS...
  function EIGEN_DEVICE_FUNC (line 409) | EIGEN_DEVICE_FUNC
  function typename (line 435) | const typename LpNormReturnType<p>::Type lpNorm() const
  function EIGEN_DEVICE_FUNC (line 504) | EIGEN_DEVICE_FUNC

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/Visitor.h
  function namespace (line 13) | namespace Eigen {
  function run (line 55) | static inline void run(const Derived& mat, Visitor& visitor)
  type typename (line 74) | typedef typename XprType::Scalar Scalar;
  type typename (line 75) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function EIGEN_DEVICE_FUNC (line 86) | EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index row, Index col) const
  type typename (line 122) | typedef typename internal::visitor_evaluator<Derived> ThisEvaluator;
  function namespace (line 132) | namespace internal {
  type typename (line 163) | typedef typename Derived::Scalar Scalar;
  function EIGEN_DEVICE_FUNC (line 164) | EIGEN_DEVICE_FUNC
  type typename (line 191) | typedef typename Derived::Scalar Scalar;
  function EIGEN_DEVICE_FUNC (line 192) | EIGEN_DEVICE_FUNC
  function typename (line 225) | typename internal::traits<Derived>::Scalar
  function typename (line 248) | typename internal::traits<Derived>::Scalar
  function typename (line 272) | typename internal::traits<Derived>::Scalar
  function typename (line 295) | typename internal::traits<Derived>::Scalar

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX/Complex.h
  function namespace (line 13) | namespace Eigen {
  function Packet4cf (line 145) | Packet4cf preverse(const Packet4cf& a) {
  type conj_helper (line 170) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 172) | EIGEN_STRONG_INLINE Packet4cf pmadd(const Packet4cf& x, const Packet4cf&...
  function EIGEN_STRONG_INLINE (line 175) | EIGEN_STRONG_INLINE Packet4cf pmul(const Packet4cf& a, const Packet4cf& ...
  type conj_helper (line 181) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 183) | EIGEN_STRONG_INLINE Packet4cf pmadd(const Packet4cf& x, const Packet4cf&...
  function EIGEN_STRONG_INLINE (line 186) | EIGEN_STRONG_INLINE Packet4cf pmul(const Packet4cf& a, const Packet4cf& ...
  type conj_helper (line 192) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 194) | EIGEN_STRONG_INLINE Packet4cf pmadd(const Packet4cf& x, const Packet4cf&...
  function EIGEN_STRONG_INLINE (line 197) | EIGEN_STRONG_INLINE Packet4cf pmul(const Packet4cf& a, const Packet4cf& ...
  type Packet2cd (line 220) | struct Packet2cd
  type packet_traits (line 228) | struct packet_traits
  function default_packet_traits (line 228) | double> >  : default_packet_traits
  function Packet2cd (line 253) | struct unpacket_traits<Packet2cd> {
  function Packet2cd (line 268) | Packet2cd pnegate(const Packet2cd& a) { return Packet2cd(pnegate(a.v)); }
  function Packet2cd (line 269) | Packet2cd pconj(const Packet2cd& a)
  function Packet2cd (line 286) | Packet2cd pcmp_eq(const Packet2cd& a, const Packet2cd& b) {
  function Packet2cd (line 336) | Packet2cd preverse(const Packet2cd& a) {
  type conj_helper (line 353) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 355) | EIGEN_STRONG_INLINE Packet2cd pmadd(const Packet2cd& x, const Packet2cd&...
  function EIGEN_STRONG_INLINE (line 358) | EIGEN_STRONG_INLINE Packet2cd pmul(const Packet2cd& a, const Packet2cd& ...
  type conj_helper (line 364) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 366) | EIGEN_STRONG_INLINE Packet2cd pmadd(const Packet2cd& x, const Packet2cd&...
  function EIGEN_STRONG_INLINE (line 369) | EIGEN_STRONG_INLINE Packet2cd pmul(const Packet2cd& a, const Packet2cd& ...
  type conj_helper (line 375) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 377) | EIGEN_STRONG_INLINE Packet2cd pmadd(const Packet2cd& x, const Packet2cd&...
  function EIGEN_STRONG_INLINE (line 380) | EIGEN_STRONG_INLINE Packet2cd pmul(const Packet2cd& a, const Packet2cd& ...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h
  function namespace (line 17) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX/PacketMath.h
  function namespace (line 13) | namespace Eigen {
  function Packet8f (line 247) | Packet8f pzero(const Packet8f& /*a*/) { return _mm256_setzero_ps(); }
  function Packet4d (line 248) | Packet4d pzero(const Packet4d& /*a*/) { return _mm256_setzero_pd(); }
  function Packet8i (line 249) | Packet8i pzero(const Packet8i& /*a*/) { return _mm256_setzero_si256(); }
  function Packet8f (line 252) | Packet8f peven_mask(const Packet8f& /*a*/) { return _mm256_castsi256_ps(...
  function Packet8i (line 253) | Packet8i peven_mask(const Packet8i& /*a*/) { return _mm256_set_epi32(0, ...
  function Packet4d (line 254) | Packet4d peven_mask(const Packet4d& /*a*/) { return _mm256_castsi256_pd(...
  function Packet8f (line 277) | Packet8f pnegate(const Packet8f& a)
  function Packet4d (line 281) | Packet4d pnegate(const Packet4d& a)
  function Packet8f (line 286) | Packet8f pconj(const Packet8f& a) { return a; }
  function Packet4d (line 287) | Packet4d pconj(const Packet4d& a) { return a; }
  function Packet8i (line 288) | Packet8i pconj(const Packet8i& a) { return a; }
  function Packet8h (line 910) | struct unpacket_traits<Packet8h> { typedef Eigen::half type; enum {size=...
  function EIGEN_STRONG_INLINE (line 962) | EIGEN_STRONG_INLINE Packet8f half2float(const Packet8h& a) {
  function EIGEN_STRONG_INLINE (line 981) | EIGEN_STRONG_INLINE Packet8h float2half(const Packet8f& a) {
  function EIGEN_STRONG_INLINE (line 1234) | EIGEN_STRONG_INLINE Packet8f Bf16ToF32(const Packet8bf& a) {
  function EIGEN_STRONG_INLINE (line 1248) | EIGEN_STRONG_INLINE Packet8bf F32ToBf16(const Packet8f& a) {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX512/Complex.h
  function namespace (line 13) | namespace Eigen {
  function Packet8cf (line 130) | Packet8cf preverse(const Packet8cf& a) {
  type conj_helper (line 156) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 158) | EIGEN_STRONG_INLINE Packet8cf pmadd(const Packet8cf& x, const Packet8cf&...
  function EIGEN_STRONG_INLINE (line 161) | EIGEN_STRONG_INLINE Packet8cf pmul(const Packet8cf& a, const Packet8cf& ...
  type conj_helper (line 167) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 169) | EIGEN_STRONG_INLINE Packet8cf pmadd(const Packet8cf& x, const Packet8cf&...
  function EIGEN_STRONG_INLINE (line 172) | EIGEN_STRONG_INLINE Packet8cf pmul(const Packet8cf& a, const Packet8cf& ...
  type conj_helper (line 178) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 180) | EIGEN_STRONG_INLINE Packet8cf pmadd(const Packet8cf& x, const Packet8cf&...
  function EIGEN_STRONG_INLINE (line 183) | EIGEN_STRONG_INLINE Packet8cf pmul(const Packet8cf& a, const Packet8cf& ...
  type Packet4cd (line 206) | struct Packet4cd
  type packet_traits (line 213) | struct packet_traits
  function default_packet_traits (line 213) | double> >  : default_packet_traits
  function Packet4cd (line 237) | struct unpacket_traits<Packet4cd> {
  function Packet4cd (line 252) | Packet4cd pnegate(const Packet4cd& a) { return Packet4cd(pnegate(a.v)); }
  function Packet4cd (line 253) | Packet4cd pconj(const Packet4cd& a)
  function Packet4cd (line 277) | Packet4cd pcmp_eq(const Packet4cd& a, const Packet4cd& b) {
  function Packet4cd (line 329) | Packet4cd preverse(const Packet4cd& a) {
  type conj_helper (line 345) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 347) | EIGEN_STRONG_INLINE Packet4cd pmadd(const Packet4cd& x, const Packet4cd&...
  function EIGEN_STRONG_INLINE (line 350) | EIGEN_STRONG_INLINE Packet4cd pmul(const Packet4cd& a, const Packet4cd& ...
  type conj_helper (line 356) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 358) | EIGEN_STRONG_INLINE Packet4cd pmadd(const Packet4cd& x, const Packet4cd&...
  function EIGEN_STRONG_INLINE (line 361) | EIGEN_STRONG_INLINE Packet4cd pmul(const Packet4cd& a, const Packet4cd& ...
  type conj_helper (line 367) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 369) | EIGEN_STRONG_INLINE Packet4cd pmadd(const Packet4cd& x, const Packet4cd&...
  function EIGEN_STRONG_INLINE (line 372) | EIGEN_STRONG_INLINE Packet4cd pmul(const Packet4cd& a, const Packet4cd& ...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h
  function namespace (line 13) | namespace Eigen {
  function Packet16f (line 218) | Packet16f pzero(const Packet16f& /*a*/) { return _mm512_setzero_ps(); }
  function Packet8d (line 219) | Packet8d pzero(const Packet8d& /*a*/) { return _mm512_setzero_pd(); }
  function Packet16i (line 220) | Packet16i pzero(const Packet16i& /*a*/) { return _mm512_setzero_si512(); }
  function Packet16f (line 222) | Packet16f peven_mask(const Packet16f& /*a*/) {
  function Packet16i (line 226) | Packet16i peven_mask(const Packet16i& /*a*/) {
  function Packet8d (line 230) | Packet8d peven_mask(const Packet8d& /*a*/) {
  function Packet16f (line 290) | Packet16f pnegate(const Packet16f& a) {
  function Packet8d (line 294) | Packet8d pnegate(const Packet8d& a) {
  function Packet16f (line 299) | Packet16f pconj(const Packet16f& a) {
  function Packet8d (line 303) | Packet8d pconj(const Packet8d& a) {
  function Packet16i (line 307) | Packet16i pconj(const Packet16i& a) {
  function Packet16f (line 340) | Packet16f pmadd(const Packet16f& a, const Packet16f& b,
  function Packet8d (line 345) | Packet8d pmadd(const Packet8d& a, const Packet8d& b,
  function Packet16f (line 352) | inline Packet16f pselect(const Packet16f& mask,
  function Packet8d (line 361) | inline Packet8d pselect(const Packet8d& mask,
  function Packet8f (line 431) | Packet8f extract256(Packet16f x) { return _mm512_extractf32x8_ps(x,I_); }
  function Packet2d (line 432) | Packet2d extract128(Packet8d x) { return _mm512_extractf64x2_pd(x,I_); }
  function EIGEN_STRONG_INLINE (line 433) | EIGEN_STRONG_INLINE Packet16f cat256(Packet8f a, Packet8f b) { return _m...
  function Packet8f (line 436) | Packet8f extract256(Packet16f x) {
  function Packet2d (line 441) | Packet2d extract128(Packet8d x) {
  function EIGEN_STRONG_INLINE (line 445) | EIGEN_STRONG_INLINE Packet16f cat256(Packet8f a, Packet8f b) {
  function EIGEN_STRONG_INLINE (line 453) | EIGEN_STRONG_INLINE __m256i Pack32To16(Packet16f rf) {
  function Packet16f (line 471) | Packet16f pcmp_eq(const Packet16f& a, const Packet16f& b) {
  function Packet16f (line 476) | Packet16f pcmp_le(const Packet16f& a, const Packet16f& b) {
  function Packet16f (line 482) | Packet16f pcmp_lt(const Packet16f& a, const Packet16f& b) {
  function Packet16f (line 488) | Packet16f pcmp_lt_or_nan(const Packet16f& a, const Packet16f& b) {
  function Packet16i (line 494) | Packet16i pcmp_eq(const Packet16i& a, const Packet16i& b) {
  function Packet8d (line 501) | Packet8d pcmp_eq(const Packet8d& a, const Packet8d& b) {
  function Packet8d (line 507) | Packet8d pcmp_le(const Packet8d& a, const Packet8d& b) {
  function Packet8d (line 513) | Packet8d pcmp_lt(const Packet8d& a, const Packet8d& b) {
  function Packet8d (line 519) | Packet8d pcmp_lt_or_nan(const Packet8d& a, const Packet8d& b) {
  function Packet16i (line 665) | Packet16i parithmetic_shift_right(Packet16i a) {
  function Packet16i (line 669) | Packet16i plogical_shift_right(Packet16i a) {
  function Packet16i (line 673) | Packet16i plogical_shift_left(Packet16i a) {
  function Packet16f (line 874) | Packet16f preverse(const Packet16f& a)
  function Packet8d (line 879) | Packet8d preverse(const Packet8d& a)
  function Packet16f (line 884) | Packet16f pabs(const Packet16f& a)
  function Packet8d (line 890) | Packet8d pabs(const Packet8d& a) {
  function predux_any (line 1077) | bool predux_any(const Packet16f& x)
  function Packet16f (line 1338) | Packet16f pblend(const Selector<16>& /*ifPacket*/,
  function Packet8d (line 1345) | Packet8d pblend(const Selector<8>& ifPacket,
  function Packet16h (line 1401) | Packet16h
  function EIGEN_STRONG_INLINE (line 1410) | EIGEN_STRONG_INLINE Packet16f half2float(const Packet16h& a) {
  function EIGEN_STRONG_INLINE (line 1438) | EIGEN_STRONG_INLINE Packet16h float2half(const Packet16f& a) {
  function Packet16h (line 1467) | Packet16h ptrue(const Packet16h& a) {
  function Packet16h (line 1472) | Packet16h pabs(const Packet16h& a) {
  function Packet16h (line 1494) | Packet16h por(const Packet16h& a,const Packet16h& b) {
  function Packet16h (line 1499) | Packet16h pxor(const Packet16h& a,const Packet16h& b) {
  function Packet16h (line 1502) | Packet16h pand(const Packet16h& a,const Packet16h& b) {
  function Packet16h (line 1505) | Packet16h pandnot(const Packet16h& a,const Packet16h& b) {
  function Packet16h (line 1509) | Packet16h pselect(const Packet16h& mask, const Packet16h& a, const Packe...
  function Packet16h (line 1529) | Packet16h pcmp_eq(const Packet16h& a,const Packet16h& b) {
  function Packet16h (line 1535) | Packet16h pcmp_le(const Packet16h& a,const Packet16h& b) {
  function Packet16h (line 1539) | Packet16h pcmp_lt(const Packet16h& a,const Packet16h& b) {
  function Packet16h (line 1543) | Packet16h pcmp_lt_or_nan(const Packet16h& a,const Packet16h& b) {
  function Packet16h (line 1547) | Packet16h pconj(const Packet16h& a) { return a; }
  function Packet16h (line 1549) | Packet16h pnegate(const Packet16h& a) {
  function Packet16h (line 1611) | Packet16h preverse(const Packet16h& a)
  function Packet16bf (line 1822) | struct is_arithmetic<Packet16bf> { enum { value = true }; }
  function default_packet_traits (line 1825) | struct packet_traits<bfloat16> : default_packet_traits {
  function Packet16bf (line 1857) | struct unpacket_traits<Packet16bf>
  function Packet16bf (line 1912) | Packet16bf
  function EIGEN_STRONG_INLINE (line 1922) | EIGEN_STRONG_INLINE Packet16f Bf16ToF32(const Packet16bf& a) {
  function EIGEN_STRONG_INLINE (line 1927) | EIGEN_STRONG_INLINE Packet16bf F32ToBf16(const Packet16f& a) {
  function Packet16bf (line 1970) | Packet16bf ptrue(const Packet16bf& a) {
  function Packet16bf (line 1975) | Packet16bf por(const Packet16bf& a, const Packet16bf& b) {
  function Packet16bf (line 1980) | Packet16bf pxor(const Packet16bf& a, const Packet16bf& b) {
  function Packet16bf (line 1985) | Packet16bf pand(const Packet16bf& a, const Packet16bf& b) {
  function Packet16bf (line 1990) | Packet16bf pandnot(const Packet16bf& a,
  function Packet16bf (line 1996) | Packet16bf pselect(const Packet16bf& mask,
  function Packet16bf (line 2022) | Packet16bf pcmp_eq(const Packet16bf& a,
  function Packet16bf (line 2028) | Packet16bf pcmp_le(const Packet16bf& a,
  function Packet16bf (line 2034) | Packet16bf pcmp_lt(const Packet16bf& a,
  function Packet16bf (line 2040) | Packet16bf pcmp_lt_or_nan(const Packet16bf& a,
  function Packet16bf (line 2046) | Packet16bf pnegate(const Packet16bf& a) {
  function Packet16bf (line 2052) | Packet16bf pconj(const Packet16bf& a) {
  function Packet16bf (line 2057) | Packet16bf pabs(const Packet16bf& a) {
  function Packet16bf (line 2131) | Packet16bf preverse(const Packet16bf& a) {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AltiVec/Complex.h
  function namespace (line 14) | namespace Eigen {
  function Packet2cf (line 100) | Packet2cf pnegate(const Packet2cf& a) { return Packet2cf(pnegate(a.v)); }
  function Packet2cf (line 101) | Packet2cf pconj(const Packet2cf& a) { return Packet2cf(pxor<Packet4f>(a....
  function Packet2cf (line 137) | Packet2cf preverse(const Packet2cf& a)
  type conj_helper (line 162) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 164) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 167) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 173) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 175) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 178) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 184) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 186) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 189) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  function Packet2cf (line 217) | Packet2cf pcmp_eq(const Packet2cf& a, const Packet2cf& b) {
  function Packet2cf (line 223) | Packet2cf pblend(const Selector<2>& ifPacket, const Packet2cf& thenPacke...
  type Packet1cd (line 232) | struct Packet1cd
  type packet_traits (line 239) | struct packet_traits
  function default_packet_traits (line 239) | double> >  : default_packet_traits
  function Packet1cd (line 262) | struct unpacket_traits<Packet1cd> { typedef std::complex<double> type; e...
  function Packet1cd (line 283) | Packet1cd pnegate(const Packet1cd& a) { return Packet1cd(pnegate(Packet2...
  function Packet1cd (line 284) | Packet1cd pconj(const Packet1cd& a) { return Packet1cd(pxor(a.v, reinter...
  function Packet1cd (line 321) | Packet1cd preverse(const Packet1cd& a) { return a; }
  type conj_helper (line 327) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 329) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 332) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 338) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 340) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 343) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 349) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 351) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 354) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  function EIGEN_STRONG_INLINE (line 370) | EIGEN_STRONG_INLINE Packet1cd pcplxflip/*<Packet1cd>*/(const Packet1cd& x)
  function Packet1cd (line 382) | Packet1cd pcmp_eq(const Packet1cd& a, const Packet1cd& b) {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h
  function namespace (line 15) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h
  function namespace (line 33) | namespace Eigen {
  function EIGEN_STRONG_INLINE (line 408) | EIGEN_STRONG_INLINE void operator()(std::complex<Scalar>* blockA, const ...
  function EIGEN_STRONG_INLINE (line 583) | EIGEN_STRONG_INLINE void operator()(Scalar* blockA, const DataMapper& lh...
  function EIGEN_STRONG_INLINE (line 658) | EIGEN_STRONG_INLINE void operator()(std::complex<Scalar>* blockB, const ...
  function EIGEN_STRONG_INLINE (line 831) | EIGEN_STRONG_INLINE void operator()(Scalar* blockB, const DataMapper& rh...
  function Packet (line 1400) | Packet ploadLhs(const Scalar *lhs)
  function gemm (line 1482) | void gemm(const DataMapper& res, const Scalar* blockA, const Scalar* blo...
  function gemm_complex (line 2000) | void gemm_complex(const DataMapper& res, const LhsScalar* blockAc, const...
  type typename (line 2540) | typedef typename quad_traits<float>::rhstype      RhsPacket;
  type Packet2cf (line 2577) | typedef Packet2cf  Packetc;
  type Packet4f (line 2578) | typedef Packet4f   RhsPacket;
  type Packet2cf (line 2616) | typedef Packet2cf  Packetc;
  type Packet4f (line 2617) | typedef Packet4f   RhsPacket;
  type Packet2cf (line 2654) | typedef Packet2cf  Packetc;
  type Packet4f (line 2655) | typedef Packet4f   RhsPacket;
  type typename (line 2692) | typedef typename quad_traits<double>::rhstype     RhsPacket;
  type Packet1cd (line 2729) | typedef Packet1cd  Packetc;
  type quad_traits (line 2730) | typedef quad_traits<double>::rhstype   RhsPacket;
  type Packet1cd (line 2767) | typedef Packet1cd  Packetc;
  type quad_traits (line 2768) | typedef quad_traits<double>::rhstype   RhsPacket;
  type Packet1cd (line 2805) | typedef Packet1cd  Packetc;
  type quad_traits (line 2806) | typedef quad_traits<double>::rhstype   RhsPacket;

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h
  function namespace (line 1) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h
  function namespace (line 15) | namespace Eigen {
  function accCols (line 221) | int accCols)
  function accCols (line 334) | int accCols)

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h
  function namespace (line 13) | namespace Eigen {
  function pstore_common (line 481) | void pstore_common(__UNPACK_TYPE__(Packet)* to, const Packet& from){
  function Packet (line 529) | Packet pset1_size4(const __UNPACK_TYPE__(Packet)& from)
  function Packet (line 536) | Packet pset1_size8(const __UNPACK_TYPE__(Packet)& from)
  function Packet (line 543) | Packet pset1_size16(const __UNPACK_TYPE__(Packet)& from)
  function pbroadcast4_common (line 581) | void
  function Packet (line 605) | inline Packet pgather_common(const __UNPACK_TYPE__(Packet)* from, Index ...
  function Packet (line 625) | inline Packet pgather_size8(const __UNPACK_TYPE__(Packet)* from, Index s...
  function Packet (line 654) | inline Packet pgather_size16(const __UNPACK_TYPE__(Packet)* from, Index ...
  function pscatter_size4 (line 687) | void pscatter_size4(__UNPACK_TYPE__(Packet)* to, const Packet& from, Ind...
  function pscatter_size8 (line 707) | inline void pscatter_size8(__UNPACK_TYPE__(Packet)* to, const Packet& fr...
  function pscatter_size16 (line 737) | void pscatter_size16(__UNPACK_TYPE__(Packet)* to, const Packet& from, In...
  function Packet4f (line 791) | Packet4f pnegate(const Packet4f& a) { return p4f_ZERO - a; }
  function Packet4i (line 792) | Packet4i pnegate(const Packet4i& a) { return p4i_ZERO - a; }
  function Packet4f (line 794) | Packet4f pconj(const Packet4f& a) { return a; }
  function Packet4i (line 795) | Packet4i pconj(const Packet4i& a) { return a; }
  function Packet (line 973) | Packet ploaddup_common(const __UNPACK_TYPE__(Packet)*   from)
  function pstoreu_common (line 1042) | void pstoreu_common(__UNPACK_TYPE__(Packet)*  to, const Packet& from)
  function pfirst_common (line 1098) | __UNPACK_TYPE__(Packet) pfirst_common(const Packet& a) {
  function a (line 1104) | short int pfirst<Packet8s>(const Packet8s& a) {
  function a (line 1108) | unsigned short int pfirst<Packet8us>(const Packet8us& a) {
  function a (line 1112) | signed char pfirst<Packet16c>(const Packet16c& a)
  function a (line 1117) | unsigned char pfirst<Packet16uc>(const Packet16uc& a)
  function Packet4f (line 1122) | Packet4f preverse(const Packet4f& a)
  function Packet4i (line 1126) | Packet4i preverse(const Packet4i& a)
  function Packet8s (line 1130) | Packet8s preverse(const Packet8s& a)
  function Packet8us (line 1134) | Packet8us preverse(const Packet8us& a)
  function Packet16c (line 1138) | Packet16c preverse(const Packet16c& a)
  function Packet16uc (line 1142) | Packet16uc preverse(const Packet16uc& a)
  function Packet8bf (line 1146) | Packet8bf preverse(const Packet8bf& a)
  function Packet4f (line 1151) | Packet4f pabs(const Packet4f& a) { return vec_abs(a); }
  function Packet4i (line 1152) | Packet4i pabs(const Packet4i& a) { return vec_abs(a); }
  function Packet8s (line 1153) | Packet8s pabs(const Packet8s& a) { return vec_abs(a); }
  function Packet8us (line 1154) | Packet8us pabs(const Packet8us& a) { return a; }
  function Packet16c (line 1155) | Packet16c pabs(const Packet16c& a) { return vec_abs(a); }
  function Packet16uc (line 1156) | Packet16uc pabs(const Packet16uc& a) { return a; }
  function Packet8bf (line 1157) | Packet8bf  pabs(const Packet8bf& a) {
  function Packet4i (line 1162) | Packet4i parithmetic_shift_right(Packet4i a)
  function Packet4i (line 1164) | Packet4i plogical_shift_right(Packet4i a)
  function Packet4i (line 1166) | Packet4i plogical_shift_left(Packet4i a)
  function Packet4f (line 1168) | Packet4f plogical_shift_left(Packet4f a)
  function Packet4f (line 1175) | Packet4f plogical_shift_right(Packet4f a)
  function Packet4ui (line 1182) | Packet4ui plogical_shift_right(Packet4ui a)
  function Packet4ui (line 1188) | Packet4ui plogical_shift_left(Packet4ui a)
  function Packet8us (line 1194) | Packet8us plogical_shift_left(Packet8us a)
  function EIGEN_STRONG_INLINE (line 1200) | EIGEN_STRONG_INLINE Packet4f Bf16ToF32Even(const Packet8bf& bf){
  function EIGEN_STRONG_INLINE (line 1204) | EIGEN_STRONG_INLINE Packet4f Bf16ToF32Odd(const Packet8bf& bf){
  function EIGEN_STRONG_INLINE (line 1212) | EIGEN_STRONG_INLINE Packet8bf F32ToBf16(Packet4f p4f){
  function EIGEN_STRONG_INLINE (line 1252) | EIGEN_STRONG_INLINE Packet8bf F32ToBf16(Packet4f even, Packet4f odd){
  function Packet8bf (line 1322) | Packet8bf pmadd(const Packet8bf& a, const Packet8bf& b, const Packet8bf&...
  function Packet8bf (line 1342) | Packet8bf pcmp_lt(const Packet8bf& a, const Packet8bf& b) {
  function Packet8bf (line 1345) | Packet8bf pcmp_le(const Packet8bf& a, const Packet8bf& b) {
  function Packet8bf (line 1348) | Packet8bf pcmp_eq(const Packet8bf& a, const Packet8bf& b) {
  function bfloat16 (line 1352) | bfloat16 pfirst(const Packet8bf& a) {
  function predux_size8 (line 1404) | __UNPACK_TYPE__(Packet) predux_size8(const Packet& a)
  function a (line 1420) | short int predux<Packet8s>(const Packet8s& a)
  function a (line 1425) | unsigned short int predux<Packet8us>(const Packet8us& a)
  function predux_size16 (line 1430) | __UNPACK_TYPE__(Packet) predux_size16(const Packet& a)
  function a (line 1452) | signed char predux<Packet16c>(const Packet16c& a)
  function a (line 1457) | unsigned char predux<Packet16uc>(const Packet16uc& a)
  function predux_mul (line 1478) | short int predux_mul<Packet8s>(const Packet8s& a)
  function predux_mul (line 1489) | unsigned short int predux_mul<Packet8us>(const Packet8us& a)
  function predux_mul (line 1509) | signed char predux_mul<Packet16c>(const Packet16c& a)
  function a (line 1521) | unsigned char predux_mul<Packet16uc>(const Packet16uc& a)
  function predux_min4 (line 1535) | __UNPACK_TYPE__(Packet) predux_min4(const Packet& a)
  function predux_min (line 1562) | short int predux_min<Packet8s>(const Packet8s& a)
  function predux_min (line 1577) | unsigned short int predux_min<Packet8us>(const Packet8us& a)
  function predux_min (line 1592) | signed char predux_min<Packet16c>(const Packet16c& a)
  function a (line 1604) | unsigned char predux_min<Packet16uc>(const Packet16uc& a)
  function predux_max4 (line 1616) | __UNPACK_TYPE__(Packet) predux_max4(const Packet& a)
  function predux_max (line 1642) | short int predux_max<Packet8s>(const Packet8s& a)
  function predux_max (line 1657) | unsigned short int predux_max<Packet8us>(const Packet8us& a)
  function predux_max (line 1672) | signed char predux_max<Packet16c>(const Packet16c& a)
  function a (line 1684) | unsigned char predux_max<Packet16uc>(const Packet16uc& a)
  function predux_any (line 1696) | bool predux_any(const Packet4f& x)
  function ptranpose_common (line 1701) | inline void
  function Packet (line 2032) | Packet pblend4(const Selector<4>& ifPacket, const Packet& thenPacket, co...
  function Packet4i (line 2038) | Packet4i pblend(const Selector<4>& ifPacket, const Packet4i& thenPacket,...
  function Packet4f (line 2042) | Packet4f pblend(const Selector<4>& ifPacket, const Packet4f& thenPacket,...
  function Packet8s (line 2046) | Packet8s pblend(const Selector<8>& ifPacket, const Packet8s& thenPacket,...
  function Packet8us (line 2054) | Packet8us pblend(const Selector<8>& ifPacket, const Packet8us& thenPacke...
  function Packet8bf (line 2061) | Packet8bf pblend(const Selector<8>& ifPacket, const Packet8bf& thenPacke...
  function Packet16c (line 2065) | Packet16c pblend(const Selector<16>& ifPacket, const Packet16c& thenPack...
  function Packet16uc (line 2075) | Packet16uc pblend(const Selector<16>& ifPacket, const Packet16uc& thenPa...
  type type_casting_traits (line 2086) | struct type_casting_traits
  type type_casting_traits (line 2095) | struct type_casting_traits
  type type_casting_traits (line 2104) | struct type_casting_traits
  type type_casting_traits (line 2113) | struct type_casting_traits
  function bfloat16 (line 2113) | int, bfloat16> {
  type __vector (line 2187) | typedef __vector double              Packet2d;
  type Packet2ul (line 2188) | typedef __vector unsigned long long  Packet2ul;
  type Packet2l (line 2189) | typedef __vector long long           Packet2l;
  type Packet2ul (line 2191) | typedef Packet2ul                    Packet2bl;
  type __vector (line 2193) | typedef __vector __bool
  function default_packet_traits (line 2220) | struct packet_traits<double> : default_packet_traits
  function Packet2d (line 2251) | struct unpacket_traits<Packet2d> { typedef double type; enum {size=2, al...
  function Packet2d (line 2326) | Packet2d pnegate(const Packet2d& a) { return p2d_ZERO - a; }
  function Packet2d (line 2328) | Packet2d pconj(const Packet2d& a) { return a; }
  function Packet2d (line 2334) | Packet2d pmadd(const Packet2d& a, const Packet2d& b, const Packet2d& c) ...
  function Packet2d (line 2352) | Packet2d pcmp_le(const Packet2d& a, const Packet2d& b) { return reinterp...
  function Packet2d (line 2353) | Packet2d pcmp_lt(const Packet2d& a, const Packet2d& b) { return reinterp...
  function Packet2d (line 2354) | Packet2d pcmp_eq(const Packet2d& a, const Packet2d& b) { return reinterp...
  function Packet2d (line 2355) | Packet2d pcmp_lt_or_nan(const Packet2d& a, const Packet2d& b) {
  function Packet2d (line 2396) | Packet2d preverse(const Packet2d& a)
  function Packet2d (line 2400) | Packet2d pabs(const Packet2d& a) { return vec_abs(a); }
  function Packet2l (line 2408) | static inline Packet2l ConvertToPacket2l(const Packet2d& x) {
  function Packet2d (line 2491) | Packet2d pblend(const Selector<2>& ifPacket, const Packet2d& thenPacket,...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/CUDA/Complex.h
  function namespace (line 17) | namespace Eigen {
  type typename (line 60) | typedef typename std::complex<T> result_type;
  function EIGEN_STRONG_INLINE (line 63) | EIGEN_STRONG_INLINE std::complex<T> operator() (const std::complex<T>& a...
  type typename (line 81) | typedef typename std::complex<T> result_type;
  function EIGEN_STRONG_INLINE (line 84) | EIGEN_STRONG_INLINE std::complex<T> operator() (const std::complex<T>& a...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/Default/BFloat16.h
  function namespace (line 26) | namespace Eigen {
  function namespace (line 88) | namespace std {
  function namespace (line 138) | namespace Eigen {
  function namespace (line 606) | namespace internal {
  function bfloat16 (line 625) | struct NumTraits<Eigen::bfloat16>
  function namespace (line 658) | namespace std {
  function namespace (line 672) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h
  function namespace (line 19) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/Default/Half.h
  function namespace (line 60) | namespace Eigen {
  function namespace (line 168) | namespace std {
  function namespace (line 218) | namespace Eigen {
  function namespace (line 760) | namespace std {
  function namespace (line 773) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/Default/TypeCasting.h
  function namespace (line 14) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/GPU/PacketMath.h
  function namespace (line 13) | namespace Eigen {
  type ulonglong2 (line 496) | typedef ulonglong2 Packet4h2;
  type unpacket_traits (line 497) | struct unpacket_traits
  type Packet4h2 (line 505) | typedef Packet4h2 type;
  type Packet4h2 (line 506) | typedef Packet4h2 half;
  function half2 (line 527) | half2 combine_half(const __half& a, const __half& b) {
  function __half (line 536) | __half get_half2_low(const half2& a) {
  function __half (line 544) | __half get_half2_high(const half2& a) {
  function half2 (line 579) | half2 pload(const Eigen::half* from) {
  function half2 (line 583) | half2 ploadu(const Eigen::half* from) {
  function half2 (line 587) | half2 ploaddup(const Eigen::half*  from) {
  function pstore (line 591) | void pstore(Eigen::half* to,
  function pstoreu (line 596) | void pstoreu(Eigen::half* to,
  function half2 (line 603) | half2 ploadt_ro_aligned(
  function half2 (line 612) | half2 ploadt_ro_unaligned(
  function half2 (line 621) | half2 pgather(const Eigen::half* from,
  function pscatter (line 626) | void pscatter(
  function half2 (line 636) | half2 pabs(const half2& a) {
  function half2 (line 644) | half2 ptrue(const half2& /*a*/) {
  function half2 (line 649) | half2 pzero(const half2& /*a*/) {
  function ptranspose (line 654) | void
  function half2 (line 664) | half2 plset(const Eigen::half& a) {
  function half2 (line 673) | half2 pselect(const half2& mask,
  function half2 (line 683) | half2 pcmp_eq(const half2& a,
  function half2 (line 696) | half2 pcmp_lt(const half2& a,
  function half2 (line 709) | half2 pand(const half2& a,
  function half2 (line 720) | half2 por(const half2& a,
  function half2 (line 731) | half2 pxor(const half2& a,
  function half2 (line 742) | half2 pandnot(const half2& a,
  function half2 (line 753) | half2 padd(const half2& a,
  function half2 (line 768) | half2 psub(const half2& a,
  function half2 (line 783) | half2 pnegate(const half2& a) {
  function half2 (line 793) | half2 pconj(const half2& a) { return a; }
  function half2 (line 795) | half2 pmul(const half2& a,
  function half2 (line 810) | half2 pmadd(const half2& a,
  function half2 (line 828) | half2 pdiv(const half2& a,
  function half2 (line 843) | half2 pmin(const half2& a,
  function half2 (line 854) | half2 pmax(const half2& a,
  function half2 (line 909) | half2 plog1p(const half2& a) {
  function half2 (line 917) | half2 pexpm1(const half2& a) {
  function half2 (line 929) | half2 plog(const half2& a) {
  function half2 (line 934) | half2 pexp(const half2& a) {
  function half2 (line 939) | half2 psqrt(const half2& a) {
  function half2 (line 944) | half2 prsqrt(const half2& a) {
  function half2 (line 950) | half2 plog(const half2& a) {
  function half2 (line 958) | half2 pexp(const half2& a) {
  function half2 (line 966) | half2 psqrt(const half2& a) {
  function half2 (line 974) | half2 prsqrt(const half2& a) {
  function ptranspose_double (line 1115) | void ptranspose_double(
  function ptranspose_half2 (line 1136) | void ptranspose_half2(
  function ptranspose_half (line 1148) | void
  function ptranspose (line 1158) | void

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/MSA/Complex.h
  function namespace (line 18) | namespace Eigen {
  type packet_traits (line 104) | struct packet_traits
  function default_packet_traits (line 104) | float> > : default_packet_traits {
  function Packet2cf (line 128) | struct unpacket_traits<Packet2cf> {
  function Packet2cf (line 159) | Packet2cf pnegate(const Packet2cf& a) {
  function Packet2cf (line 166) | Packet2cf pconj(const Packet2cf& a) {
  function Packet2cf (line 278) | Packet2cf preverse(const Packet2cf& a) {
  type conj_helper (line 309) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 310) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf& y,
  function EIGEN_STRONG_INLINE (line 315) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 321) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 322) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf& y,
  function EIGEN_STRONG_INLINE (line 327) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 333) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 334) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf& y,
  function EIGEN_STRONG_INLINE (line 339) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  function Packet2cf (line 369) | Packet2cf pblend(const Selector<2>& ifPacket, const Packet2cf& thenPacket,
  type Packet1cd (line 377) | struct Packet1cd {
  function explicit (line 380) | explicit Packet1cd(const std::complex<double>& a) {
  function EIGEN_STRONG_INLINE (line 384) | EIGEN_STRONG_INLINE explicit Packet1cd(const Packet2d& a) : v(a) {
  function EIGEN_STRONG_INLINE (line 386) | EIGEN_STRONG_INLINE Packet1cd(const Packet1cd& a) : v(a.v) {
  function EIGEN_STRONG_INLINE (line 392) | EIGEN_STRONG_INLINE Packet1cd conjugate(void) const {
  type packet_traits (line 455) | struct packet_traits
  function default_packet_traits (line 455) | double> > : default_packet_traits {
  function Packet1cd (line 478) | struct unpacket_traits<Packet1cd> {
  function Packet1cd (line 520) | Packet1cd pnegate(const Packet1cd& a) {
  function Packet1cd (line 527) | Packet1cd pconj(const Packet1cd& a) {
  function Packet1cd (line 627) | Packet1cd preverse(const Packet1cd& a) {
  type conj_helper (line 648) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 649) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd& y,
  function EIGEN_STRONG_INLINE (line 654) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 660) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 661) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd& y,
  function EIGEN_STRONG_INLINE (line 666) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 672) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 673) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd& y,
  function EIGEN_STRONG_INLINE (line 678) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  function EIGEN_STRONG_INLINE (line 692) | EIGEN_STRONG_INLINE Packet1cd pcplxflip /*<Packet1cd>*/ (const Packet1cd...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h
  function namespace (line 29) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/MSA/PacketMath.h
  function namespace (line 19) | namespace Eigen {
  function Packet4f (line 208) | Packet4f pnegate(const Packet4f& a) {
  function Packet4i (line 215) | Packet4i pnegate(const Packet4i& a) {
  function Packet4f (line 222) | Packet4f pconj(const Packet4f& a) {
  function Packet4i (line 229) | Packet4i pconj(const Packet4i& a) {
  function Packet4f (line 264) | Packet4f pmadd(const Packet4f& a, const Packet4f& b, const Packet4f& c) {
  function Packet4i (line 271) | Packet4i pmadd(const Packet4i& a, const Packet4i& b, const Packet4i& c) {
  function EIGEN_DEBUG_ALIGNED_LOAD (line 388) | EIGEN_DEBUG_ALIGNED_LOAD return (Packet4f)__builtin_msa_ld_w(const_cast<...
  function EIGEN_DEBUG_UNALIGNED_LOAD (line 402) | EIGEN_DEBUG_UNALIGNED_LOAD return (Packet4f)__builtin_msa_ld_w(const_cas...
  function Packet4f (line 541) | Packet4f preverse(const Packet4f& a) {
  function Packet4i (line 548) | Packet4i preverse(const Packet4i& a) {
  function Packet4f (line 555) | Packet4f pabs(const Packet4f& a) {
  function Packet4i (line 562) | Packet4i pabs(const Packet4i& a) {
  function Packet4f (line 727) | Packet4f psqrt(const Packet4f& a) {
  function Packet4f (line 734) | Packet4f prsqrt(const Packet4f& a) {
  function Packet4f (line 805) | Packet4f pblend(const Selector<4>& ifPacket, const Packet4f& thenPacket,
  function Packet4i (line 814) | Packet4i pblend(const Selector<4>& ifPacket, const Packet4i& thenPacket,
  type v2f64 (line 824) | typedef v2f64 Packet2d;
  type v2i64 (line 825) | typedef v2i64 Packet2l;
  type v2u64 (line 826) | typedef v2u64 Packet2ul;
  function default_packet_traits (line 848) | struct packet_traits<double> : default_packet_traits {
  function Packet2d (line 869) | struct unpacket_traits<Packet2d> {
  function Packet2d (line 906) | Packet2d pnegate(const Packet2d& a) {
  function Packet2d (line 913) | Packet2d pconj(const Packet2d& a) {
  function Packet2d (line 934) | Packet2d pmadd(const Packet2d& a, const Packet2d& b, const Packet2d& c) {
  function EIGEN_DEBUG_UNALIGNED_LOAD (line 1011) | EIGEN_DEBUG_UNALIGNED_LOAD return (Packet2d)__builtin_msa_ld_d(const_cas...
  function Packet2d (line 1072) | Packet2d preverse(const Packet2d& a) {
  function Packet2d (line 1079) | Packet2d pabs(const Packet2d& a) {
  function Packet2d (line 1134) | Packet2d psqrt(const Packet2d& a) {
  function Packet2d (line 1141) | Packet2d prsqrt(const Packet2d& a) {
  function Packet2d (line 1226) | Packet2d pblend(const Selector<2>& ifPacket, const Packet2d& thenPacket,

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/NEON/Complex.h
  function namespace (line 14) | namespace Eigen {
  function Packet1cf (line 297) | Packet1cf preverse(const Packet1cf& a) { return a; }
  function Packet2cf (line 298) | Packet2cf preverse(const Packet2cf& a)
  type conj_helper (line 352) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 354) | EIGEN_STRONG_INLINE Packet1cf pmadd(const Packet1cf& x, const Packet1cf&...
  function EIGEN_STRONG_INLINE (line 357) | EIGEN_STRONG_INLINE Packet1cf pmul(const Packet1cf& a, const Packet1cf& ...
  type conj_helper (line 361) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 363) | EIGEN_STRONG_INLINE Packet1cf pmadd(const Packet1cf& x, const Packet1cf&...
  function EIGEN_STRONG_INLINE (line 366) | EIGEN_STRONG_INLINE Packet1cf pmul(const Packet1cf& a, const Packet1cf& ...
  type conj_helper (line 370) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 372) | EIGEN_STRONG_INLINE Packet1cf pmadd(const Packet1cf& x, const Packet1cf&...
  function EIGEN_STRONG_INLINE (line 375) | EIGEN_STRONG_INLINE Packet1cf pmul(const Packet1cf& a, const Packet1cf& ...
  type conj_helper (line 379) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 381) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 384) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 388) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 390) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 393) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 397) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 399) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 402) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type Packet1cd (line 461) | struct Packet1cd
  type packet_traits (line 468) | struct packet_traits
  function default_packet_traits (line 468) | double> >  : default_packet_traits
  function Packet1cd (line 492) | struct unpacket_traits<Packet1cd>
  function Packet1cd (line 525) | Packet1cd pnegate(const Packet1cd& a)
  function Packet1cd (line 528) | Packet1cd pconj(const Packet1cd& a)
  function Packet1cd (line 551) | Packet1cd pcmp_eq(const Packet1cd& a, const Packet1cd& b)
  function Packet1cd (line 607) | Packet1cd preverse(const Packet1cd& a) { return a; }
  type conj_helper (line 613) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 615) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 618) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 622) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 624) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 627) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 631) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 633) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 636) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  function EIGEN_STRONG_INLINE (line 652) | EIGEN_STRONG_INLINE Packet1cd pcplxflip/*<Packet1cd>*/(const Packet1cd& x)

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h
  function namespace (line 11) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/NEON/PacketMath.h
  function namespace (line 15) | namespace Eigen {
  function Packet2f (line 875) | Packet2f pnegate(const Packet2f& a) { return vneg_f32(a); }
  function Packet4f (line 876) | Packet4f pnegate(const Packet4f& a) { return vnegq_f32(a); }
  function Packet4c (line 877) | Packet4c pnegate(const Packet4c& a)
  function Packet8c (line 879) | Packet8c pnegate(const Packet8c& a) { return vneg_s8(a); }
  function Packet16c (line 880) | Packet16c pnegate(const Packet16c& a) { return vnegq_s8(a); }
  function Packet4s (line 881) | Packet4s pnegate(const Packet4s& a) { return vneg_s16(a); }
  function Packet8s (line 882) | Packet8s pnegate(const Packet8s& a) { return vnegq_s16(a); }
  function Packet2i (line 883) | Packet2i pnegate(const Packet2i& a) { return vneg_s32(a); }
  function Packet4i (line 884) | Packet4i pnegate(const Packet4i& a) { return vnegq_s32(a); }
  function Packet2l (line 885) | Packet2l pnegate(const Packet2l& a) {
  function Packet2f (line 895) | Packet2f pconj(const Packet2f& a) { return a; }
  function Packet4f (line 896) | Packet4f pconj(const Packet4f& a) { return a; }
  function Packet4c (line 897) | Packet4c pconj(const Packet4c& a) { return a; }
  function Packet8c (line 898) | Packet8c pconj(const Packet8c& a) { return a; }
  function Packet16c (line 899) | Packet16c pconj(const Packet16c& a) { return a; }
  function Packet4uc (line 900) | Packet4uc pconj(const Packet4uc& a) { return a; }
  function Packet8uc (line 901) | Packet8uc pconj(const Packet8uc& a) { return a; }
  function Packet16uc (line 902) | Packet16uc pconj(const Packet16uc& a) { return a; }
  function Packet4s (line 903) | Packet4s pconj(const Packet4s& a) { return a; }
  function Packet8s (line 904) | Packet8s pconj(const Packet8s& a) { return a; }
  function Packet4us (line 905) | Packet4us pconj(const Packet4us& a) { return a; }
  function Packet8us (line 906) | Packet8us pconj(const Packet8us& a) { return a; }
  function Packet2i (line 907) | Packet2i pconj(const Packet2i& a) { return a; }
  function Packet4i (line 908) | Packet4i pconj(const Packet4i& a) { return a; }
  function Packet2ui (line 909) | Packet2ui pconj(const Packet2ui& a) { return a; }
  function Packet4ui (line 910) | Packet4ui pconj(const Packet4ui& a) { return a; }
  function Packet2l (line 911) | Packet2l pconj(const Packet2l& a) { return a; }
  function Packet2ul (line 912) | Packet2ul pconj(const Packet2ul& a) { return a; }
  function Packet2f (line 2325) | Packet2f preverse(const Packet2f& a) { return vrev64_f32(a); }
  function Packet4f (line 2326) | Packet4f preverse(const Packet4f& a)
  function Packet4c (line 2331) | Packet4c preverse(const Packet4c& a)
  function Packet8c (line 2333) | Packet8c preverse(const Packet8c& a) { return vrev64_s8(a); }
  function Packet16c (line 2334) | Packet16c preverse(const Packet16c& a)
  function Packet4uc (line 2339) | Packet4uc preverse(const Packet4uc& a)
  function Packet8uc (line 2341) | Packet8uc preverse(const Packet8uc& a) { return vrev64_u8(a); }
  function Packet16uc (line 2342) | Packet16uc preverse(const Packet16uc& a)
  function Packet4s (line 2347) | Packet4s preverse(const Packet4s& a) { return vrev64_s16(a); }
  function Packet8s (line 2348) | Packet8s preverse(const Packet8s& a)
  function Packet4us (line 2353) | Packet4us preverse(const Packet4us& a) { return vrev64_u16(a); }
  function Packet8us (line 2354) | Packet8us preverse(const Packet8us& a)
  function Packet2i (line 2359) | Packet2i preverse(const Packet2i& a) { return vrev64_s32(a); }
  function Packet4i (line 2360) | Packet4i preverse(const Packet4i& a)
  function Packet2ui (line 2365) | Packet2ui preverse(const Packet2ui& a) { return vrev64_u32(a); }
  function Packet4ui (line 2366) | Packet4ui preverse(const Packet4ui& a)
  function Packet2l (line 2371) | Packet2l preverse(const Packet2l& a)
  function Packet2ul (line 2373) | Packet2ul preverse(const Packet2ul& a)
  function Packet2f (line 2376) | Packet2f pabs(const Packet2f& a) { return vabs_f32(a); }
  function Packet4f (line 2377) | Packet4f pabs(const Packet4f& a) { return vabsq_f32(a); }
  function Packet8c (line 2380) | Packet8c pabs(const Packet8c& a) { return vabs_s8(a); }
  function Packet16c (line 2381) | Packet16c pabs(const Packet16c& a) { return vabsq_s8(a); }
  function Packet4uc (line 2382) | Packet4uc pabs(const Packet4uc& a) { return a; }
  function Packet8uc (line 2383) | Packet8uc pabs(const Packet8uc& a) { return a; }
  function Packet16uc (line 2384) | Packet16uc pabs(const Packet16uc& a) { return a; }
  function Packet4s (line 2385) | Packet4s pabs(const Packet4s& a) { return vabs_s16(a); }
  function Packet8s (line 2386) | Packet8s pabs(const Packet8s& a) { return vabsq_s16(a); }
  function Packet4us (line 2387) | Packet4us pabs(const Packet4us& a) { return a; }
  function Packet8us (line 2388) | Packet8us pabs(const Packet8us& a) { return a; }
  function Packet2i (line 2389) | Packet2i pabs(const Packet2i& a) { return vabs_s32(a); }
  function Packet4i (line 2390) | Packet4i pabs(const Packet4i& a) { return vabsq_s32(a); }
  function Packet2ui (line 2391) | Packet2ui pabs(const Packet2ui& a) { return a; }
  function Packet4ui (line 2392) | Packet4ui pabs(const Packet4ui& a) { return a; }
  function Packet2l (line 2393) | Packet2l pabs(const Packet2l& a) {
  function Packet2ul (line 2402) | Packet2ul pabs(const Packet2ul& a) { return a; }
  function predux_any (line 2793) | bool predux_any(const Packet4f& x)
  function ptranspose (line 2800) | void ptranspose(PacketBlock<Packet2f, 2>& kernel)
  function ptranspose (line 2806) | void ptranspose(PacketBlock<Packet4f, 4>& kernel)
  function ptranspose (line 2816) | void ptranspose(PacketBlock<Packet4c, 4>& kernel)
  function ptranspose (line 2829) | void ptranspose(PacketBlock<Packet8c, 8>& kernel)
  function ptranspose (line 2859) | void ptranspose(PacketBlock<Packet16c, 16>& kernel)
  function ptranspose (line 2906) | void ptranspose(PacketBlock<Packet4uc, 4>& kernel)
  function ptranspose (line 2919) | void ptranspose(PacketBlock<Packet8uc, 8>& kernel)
  function ptranspose (line 2949) | void ptranspose(PacketBlock<Packet16uc, 16>& kernel)
  function ptranspose (line 2994) | void ptranspose(PacketBlock<Packet4s, 4>& kernel)
  function ptranspose (line 3008) | void ptranspose(PacketBlock<Packet8s, 4>& kernel)
  function ptranspose (line 3022) | void ptranspose(PacketBlock<Packet16uc, 4>& kernel)
  function ptranspose (line 3036) | void ptranspose(PacketBlock<Packet8s, 8>& kernel)
  function ptranspose (line 3057) | void ptranspose(PacketBlock<Packet4us, 4>& kernel)
  function ptranspose (line 3070) | void ptranspose(PacketBlock<Packet8us, 8>& kernel)
  function ptranspose (line 3091) | void ptranspose(PacketBlock<Packet2i, 2>& kernel)
  function ptranspose (line 3097) | void ptranspose(PacketBlock<Packet4i, 4>& kernel)
  function ptranspose (line 3107) | void ptranspose(PacketBlock<Packet2ui, 2>& kernel)
  function ptranspose (line 3113) | void ptranspose(PacketBlock<Packet4ui, 4>& kernel)
  function ptranspose (line 3123) | void
  function ptranspose (line 3142) | void
  function Packet4uc (line 3201) | Packet4uc psqrt(const Packet4uc& a) {
  function Packet8uc (line 3214) | Packet8uc psqrt(const Packet8uc& a) {
  function Packet16uc (line 3226) | Packet16uc psqrt(const Packet16uc& a) {
  function Packet4us (line 3238) | Packet4us psqrt(const Packet4us& a) {
  function Packet8us (line 3250) | Packet8us psqrt(const Packet8us& a) {
  function Packet2ui (line 3262) | Packet2ui psqrt(const Packet2ui& a) {
  function Packet4ui (line 3274) | Packet4ui psqrt(const Packet4ui& a) {
  function Packet4f (line 3296) | Packet4f psqrt(const Packet4f& _x){
  function Packet2f (line 3309) | Packet2f psqrt(const Packet2f& _x) {
  function Packet4f (line 3322) | Packet4f psqrt(const Packet4f& _x){return vsqrtq_f32(_x);}
  function Packet2f (line 3323) | Packet2f psqrt(const Packet2f& _x){return vsqrt_f32(_x); }
  type eigen_packet_wrapper (line 3330) | typedef eigen_packet_wrapper<uint16x4_t, 19> Packet4bf;
  function Packet4bf (line 3332) | struct is_arithmetic<Packet4bf> { enum { value = true }; }
  function default_packet_traits (line 3334) | struct packet_traits<bfloat16> : default_packet_traits
  function Packet4bf (line 3375) | struct unpacket_traits<Packet4bf>
  function EIGEN_STRONG_INLINE (line 3389) | EIGEN_STRONG_INLINE Packet4bf F32ToBf16(const Packet4f& p)
  function EIGEN_STRONG_INLINE (line 3416) | EIGEN_STRONG_INLINE Packet4f Bf16ToF32(const Packet4bf& p)
  function EIGEN_STRONG_INLINE (line 3421) | EIGEN_STRONG_INLINE Packet4bf F32MaskToBf16Mask(const Packet4f& p) {
  function Packet4bf (line 3458) | Packet4bf pabs(const Packet4bf& a) {
  function Packet4bf (line 3501) | Packet4bf por(const Packet4bf& a,const Packet4bf& b) {
  function Packet4bf (line 3505) | Packet4bf pxor(const Packet4bf& a,const Packet4bf& b) {
  function Packet4bf (line 3509) | Packet4bf pand(const Packet4bf& a,const Packet4bf& b) {
  function Packet4bf (line 3513) | Packet4bf pandnot(const Packet4bf& a,const Packet4bf& b) {
  function Packet4bf (line 3528) | Packet4bf pconj(const Packet4bf& a) { return a; }
  function ptranspose (line 3583) | void ptranspose(PacketBlock<Packet4bf, 4>& kernel)
  type float64x2_t (line 3645) | typedef float64x2_t Packet2d;
  type float64x1_t (line 3646) | typedef float64x1_t Packet1d;
  function EIGEN_STRONG_INLINE (line 3651) | EIGEN_STRONG_INLINE Packet2d shuffle(const Packet2d& m, const Packet2d& ...
  function EIGEN_STRONG_INLINE (line 3659) | EIGEN_STRONG_INLINE Packet2d vec2d_swizzle2(const Packet2d& a, const Pac...
  function EIGEN_STRONG_INLINE (line 3663) | EIGEN_STRONG_INLINE Packet2d vec2d_unpacklo(const Packet2d& a,const Pack...
  function EIGEN_STRONG_INLINE (line 3667) | EIGEN_STRONG_INLINE Packet2d vec2d_unpackhi(const Packet2d& a,const Pack...
  function default_packet_traits (line 3674) | struct packet_traits<double>  : default_packet_traits
  function Packet2d (line 3714) | struct unpacket_traits<Packet2d>
  function Packet2d (line 3747) | Packet2d pnegate(const Packet2d& a) { return vnegq_f64(a); }
  function Packet2d (line 3749) | Packet2d pconj(const Packet2d& a) { return a; }
  function Packet2d (line 3757) | Packet2d pmadd(const Packet2d& a, const Packet2d& b, const Packet2d& c)
  function Packet2d (line 3760) | Packet2d pmadd(const Packet2d& a, const Packet2d& b, const Packet2d& c)
  function Packet2d (line 3808) | Packet2d pcmp_le(const Packet2d& a, const Packet2d& b)
  function Packet2d (line 3811) | Packet2d pcmp_lt(const Packet2d& a, const Packet2d& b)
  function Packet2d (line 3814) | Packet2d pcmp_lt_or_nan(const Packet2d& a, const Packet2d& b)
  function Packet2d (line 3817) | Packet2d pcmp_eq(const Packet2d& a, const Packet2d& b)
  function Packet2d (line 3852) | Packet2d preverse(const Packet2d& a)
  function Packet2d (line 3855) | Packet2d pabs(const Packet2d& a) { return vabsq_f64(a); }
  function ptranspose (line 3885) | void
  function Packet2d (line 3907) | Packet2d psqrt(const Packet2d& _x){ return vsqrtq_f64(_x); }
  type float16x4_t (line 3913) | typedef float16x4_t Packet4hf;
  type float16x8_t (line 3914) | typedef float16x8_t Packet8hf;
  function default_packet_traits (line 3917) | struct packet_traits<Eigen::half> : default_packet_traits {
  function Packet4hf (line 3958) | struct unpacket_traits<Packet4hf> {
  function Packet8hf (line 3971) | struct unpacket_traits<Packet8hf> {
  function Packet8hf (line 4033) | Packet8hf pnegate(const Packet8hf& a) {
  function Packet4hf (line 4038) | Packet4hf pnegate(const Packet4hf& a) {
  function Packet8hf (line 4043) | Packet8hf pconj(const Packet8hf& a) {
  function Packet4hf (line 4048) | Packet4hf pconj(const Packet4hf& a) {
  function Packet8hf (line 4073) | Packet8hf pmadd(const Packet8hf& a, const Packet8hf& b, const Packet8hf&...
  function Packet4hf (line 4078) | Packet4hf pmadd(const Packet4hf& a, const Packet4hf& b, const Packet4hf&...
  function Packet8hf (line 4283) | Packet8hf pinsertfirst(const Packet8hf& a, Eigen::half b) { return vsetq...
  function Packet4hf (line 4285) | Packet4hf pinsertfirst(const Packet4hf& a, Eigen::half b) { return vset_...
  function Packet8hf (line 4297) | Packet8hf pinsertlast(const Packet8hf& a, Eigen::half b) { return vsetq_...
  function Packet4hf (line 4299) | Packet4hf pinsertlast(const Packet4hf& a, Eigen::half b) { return vset_l...
  function Packet8hf (line 4388) | Packet8hf preverse(const Packet8hf& a) {
  function ptranspose (line 4512) | void ptranspose(PacketBlock<Packet8hf, 4>& kernel)
  function ptranspose (line 4541) | void ptranspose(PacketBlock<Packet4hf, 4>& kernel) {
  function ptranspose (line 4552) | void ptranspose(PacketBlock<Packet8hf, 8>& kernel) {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h
  function namespace (line 14) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/SSE/Complex.h
  function namespace (line 13) | namespace Eigen {
  function Packet2cf (line 168) | Packet2cf preverse(const Packet2cf& a) { return Packet2cf(_mm_castpd_ps(...
  type conj_helper (line 180) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 182) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 185) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 198) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 200) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 203) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 216) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 218) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 221) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  function EIGEN_STRONG_INLINE (line 244) | EIGEN_STRONG_INLINE Packet2cf pcplxflip/* <Packet2cf> */(const Packet2cf...
  type Packet1cd (line 251) | struct Packet1cd
  type packet_traits (line 261) | struct packet_traits
  function default_packet_traits (line 261) | double> >  : default_packet_traits
  function Packet1cd (line 286) | struct unpacket_traits<Packet1cd> {
  function Packet1cd (line 301) | Packet1cd pnegate(const Packet1cd& a) { return Packet1cd(pnegate(Packet2...
  function Packet1cd (line 302) | Packet1cd pconj(const Packet1cd& a)
  function Packet1cd (line 351) | Packet1cd preverse(const Packet1cd& a) { return a; }
  type conj_helper (line 363) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 365) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 368) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 381) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 383) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 386) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 399) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 401) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 404) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  function EIGEN_STRONG_INLINE (line 427) | EIGEN_STRONG_INLINE Packet1cd pcplxflip/* <Packet1cd> */(const Packet1cd...
  function Packet2cf (line 442) | Packet2cf pcmp_eq(const Packet2cf& a, const Packet2cf& b)
  function Packet1cd (line 448) | Packet1cd pcmp_eq(const Packet1cd& a, const Packet1cd& b)
  function Packet2cf (line 454) | Packet2cf pblend(const Selector<2>& ifPacket, const Packet2cf& thenPacke...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h
  function namespace (line 18) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/SSE/PacketMath.h
  function namespace (line 13) | namespace Eigen {
  function Packet4f (line 270) | Packet4f peven_mask(const Packet4f& /*a*/) { return _mm_castsi128_ps(_mm...
  function Packet4i (line 271) | Packet4i peven_mask(const Packet4i& /*a*/) { return _mm_set_epi32(0, -1,...
  function Packet2d (line 272) | Packet2d peven_mask(const Packet2d& /*a*/) { return _mm_castsi128_pd(_mm...
  function Packet4f (line 274) | Packet4f pzero(const Packet4f& /*a*/) { return _mm_setzero_ps(); }
  function Packet2d (line 275) | Packet2d pzero(const Packet2d& /*a*/) { return _mm_setzero_pd(); }
  function Packet4i (line 276) | Packet4i pzero(const Packet4i& /*a*/) { return _mm_setzero_si128(); }
  function Packet4f (line 326) | Packet4f pnegate(const Packet4f& a)
  function Packet2d (line 331) | Packet2d pnegate(const Packet2d& a)
  function Packet4i (line 336) | Packet4i pnegate(const Packet4i& a)
  function Packet16b (line 341) | Packet16b pnegate(const Packet16b& a)
  function Packet4f (line 346) | Packet4f pconj(const Packet4f& a) { return a; }
  function Packet2d (line 347) | Packet2d pconj(const Packet2d& a) { return a; }
  function Packet4i (line 348) | Packet4i pconj(const Packet4i& a) { return a; }
  function Packet4i (line 374) | Packet4i pmadd(const Packet4i& a, const Packet4i& b, const Packet4i& c) ...
  function Packet4f (line 376) | Packet4f pmadd(const Packet4f& a, const Packet4f& b, const Packet4f& c) ...
  function Packet2d (line 377) | Packet2d pmadd(const Packet2d& a, const Packet2d& b, const Packet2d& c) ...
  function Packet4f (line 381) | inline Packet4f pselect(const Packet4f& mask, const Packet4f& a, const P...
  function Packet4i (line 385) | inline Packet4i pselect(const Packet4i& mask, const Packet4i& a, const P...
  function Packet2d (line 389) | inline Packet2d pselect(const Packet2d& mask, const Packet2d& a, const P...
  function Packet16b (line 391) | inline Packet16b pselect(const Packet16b& mask, const Packet16b& a, cons...
  function Packet16b (line 395) | inline Packet16b pselect(const Packet16b& mask, const Packet16b& a, cons...
  function Packet4f (line 402) | Packet4f pcmp_le(const Packet4f& a, const Packet4f& b) { return _mm_cmpl...
  function Packet4f (line 403) | Packet4f pcmp_lt(const Packet4f& a, const Packet4f& b) { return _mm_cmpl...
  function Packet4f (line 404) | Packet4f pcmp_lt_or_nan(const Packet4f& a, const Packet4f& b) { return _...
  function Packet4f (line 405) | Packet4f pcmp_eq(const Packet4f& a, const Packet4f& b) { return _mm_cmpe...
  function Packet2d (line 407) | Packet2d pcmp_le(const Packet2d& a, const Packet2d& b) { return _mm_cmpl...
  function Packet2d (line 408) | Packet2d pcmp_lt(const Packet2d& a, const Packet2d& b) { return _mm_cmpl...
  function Packet2d (line 409) | Packet2d pcmp_lt_or_nan(const Packet2d& a, const Packet2d& b) { return _...
  function Packet2d (line 410) | Packet2d pcmp_eq(const Packet2d& a, const Packet2d& b) { return _mm_cmpe...
  function Packet4i (line 412) | Packet4i pcmp_lt(const Packet4i& a, const Packet4i& b) { return _mm_cmpl...
  function Packet4i (line 413) | Packet4i pcmp_eq(const Packet4i& a, const Packet4i& b) { return _mm_cmpe...
  function Packet16b (line 414) | Packet16b pcmp_eq(const Packet16b& a, const Packet16b& b) { return _mm_c...
  function Packet (line 550) | Packet pminmax_propagate_numbers(const Packet& a, const Packet& b, Op op) {
  function Packet (line 559) | Packet pminmax_propagate_nan(const Packet& a, const Packet& b, Op op) {
  function Packet4i (line 601) | Packet4i parithmetic_shift_right(Packet4i a) { return _mm_srai_epi32(a,N...
  function Packet4i (line 602) | Packet4i plogical_shift_right(Packet4i a) { return _mm_srli_epi32(a,N); }
  function Packet4i (line 603) | Packet4i plogical_shift_left(Packet4i a) { return _mm_slli_epi32(a,N); }
  function Index (line 767) | Index stride)
  function EIGEN_STRONG_INLINE (line 927) | EIGEN_STRONG_INLINE void punpackp(Packet4f* vecs)
  function pmadd (line 1223) | float pmadd(const float& a, const float& b, const float& c) {
  function pmadd (line 1226) | double pmadd(const double& a, const double& b, const double& c) {
  type Packet4h (line 1237) | typedef struct {
  function Packet4h (line 1242) | struct is_arithmetic<Packet4h> { enum { value = true }; }
  function default_packet_traits (line 1245) | struct packet_traits<Eigen::half> : default_packet_traits {
  function Packet4h (line 1274) | struct unpacket_traits<Packet4h> { typedef Eigen::half type; enum {size=...
  function Packet4h (line 1286) | Packet4h pconj(const Packet4h& a) { return a; }
  function __m128 (line 1445) | static inline __m128  _mm_castpd_ps   (__m128d x) { return reinterpret_c...
  function __m128i (line 1446) | static inline __m128i _mm_castpd_si128(__m128d x) { return reinterpret_c...
  function __m128d (line 1447) | static inline __m128d _mm_castps_pd   (__m128  x) { return reinterpret_c...
  function __m128i (line 1448) | static inline __m128i _mm_castps_si128(__m128  x) { return reinterpret_c...
  function __m128 (line 1449) | static inline __m128  _mm_castsi128_ps(__m128i x) { return reinterpret_c...
  function __m128d (line 1450) | static inline __m128d _mm_castsi128_pd(__m128i x) { return reinterpret_c...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h
  function namespace (line 24) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h
  function namespace (line 23) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h
  function namespace (line 24) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h
  function namespace (line 36) | namespace Eigen {
  function clear (line 323) | inline void clear() {
  function virtual_pointer_t (line 331) | inline virtual_pointer_t add_pointer(const buffer_t &b) {
  function virtual_pointer_t (line 338) | inline virtual_pointer_t add_pointer(buffer_t &&b) {
  function fuse_forward (line 348) | void fuse_forward(typename pointerMap_t::iterator &node) {
  function fuse_backward (line 370) | void fuse_backward(typename pointerMap_t::iterator &node) {
  function pMapNode_t (line 431) | pMapNode_t p{b, bufSize, false};
  type T (line 549) | typedef T scalar_t;
  type scalar_t (line 550) | typedef scalar_t &ref_t;
  type typename (line 551) | typedef typename cl::sycl::global_ptr<scalar_t>::pointer_t ptr_t;
  type cl (line 554) | typedef cl::sycl::accessor<scalar_t, 1, AcMd, global_access, is_place_ho...
  type RangeAccess (line 557) | typedef RangeAccess<AcMd, T> self_t;
  function i (line 598) | nullptr_t i) {
  function set_offset (line 633) | void set_offset(std::ptrdiff_t offset) {
  function ref_t (line 637) | ref_t operator*() const {
  function ref_t (line 641) | ref_t operator*() {
  function ref_t (line 647) | ref_t operator[](int x) {
  function ref_t (line 651) | ref_t operator[](int x) const {
  function scalar_t (line 655) | scalar_t *get_virtual_pointer() const {
  function bind (line 673) | void bind(
  type RangeAccess (line 686) | typedef RangeAccess<AcMd, T> Base;

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h
  function namespace (line 24) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/ZVector/Complex.h
  function namespace (line 14) | namespace Eigen {
  function Packet1cd (line 119) | Packet1cd pnegate(const Packet1cd& a) { return Packet1cd(pnegate(Packet2...
  function Packet1cd (line 120) | Packet1cd pconj(const Packet1cd& a) { return Packet1cd((Packet2d)vec_xor...
  function Packet1cd (line 143) | Packet1cd pcmp_eq(const Packet1cd& a, const Packet1cd& b) {
  function Packet1cd (line 159) | Packet1cd preverse(const Packet1cd& a) { return a; }
  type conj_helper (line 168) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 170) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 173) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 179) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 181) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 184) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 190) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 192) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 195) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  function EIGEN_STRONG_INLINE (line 211) | EIGEN_STRONG_INLINE Packet1cd pcplxflip/*<Packet1cd>*/(const Packet1cd& x)
  function Packet2cf (line 276) | Packet2cf pnegate(const Packet2cf& a) { return Packet2cf(pnegate(Packet4...
  function Packet2cf (line 290) | Packet2cf pcmp_eq(const Packet2cf& a, const Packet2cf& b) {
  function Packet2cf (line 300) | Packet2cf pconj(const Packet2cf& a)
  function Packet2cf (line 316) | Packet2cf preverse(const Packet2cf& a)
  type conj_helper (line 340) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 342) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 345) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 351) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 353) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 356) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 362) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 364) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 367) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  function EIGEN_STRONG_INLINE (line 384) | EIGEN_STRONG_INLINE Packet2cf pcplxflip/*<Packet2cf>*/(const Packet2cf& x)
  function Packet2cf (line 399) | Packet2cf pblend(const Selector<2>& ifPacket, const Packet2cf& thenPacke...
  function Packet2cf (line 406) | Packet2cf pcmp_eq(const Packet2cf& a, const Packet2cf& b) {
  function Packet2cf (line 411) | Packet2cf pconj(const Packet2cf& a) { return Packet2cf(pxor<Packet4f>(a....
  function Packet2cf (line 434) | Packet2cf preverse(const Packet2cf& a)
  type conj_helper (line 459) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 461) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 464) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 470) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 472) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 475) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 481) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 483) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 486) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  function Packet2cf (line 514) | Packet2cf pblend(const Selector<2>& ifPacket, const Packet2cf& thenPacke...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h
  function namespace (line 19) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h
  function namespace (line 15) | namespace Eigen {
  function Packet4i (line 412) | Packet4i pnegate(const Packet4i& a) { return (-a); }
  function Packet2d (line 413) | Packet2d pnegate(const Packet2d& a) { return (-a); }
  function Packet4i (line 415) | Packet4i pconj(const Packet4i& a) { return a; }
  function Packet2d (line 416) | Packet2d pconj(const Packet2d& a) { return a; }
  function Packet4i (line 418) | Packet4i pmadd(const Packet4i& a, const Packet4i& b, const Packet4i& c) ...
  function Packet2d (line 419) | Packet2d pmadd(const Packet2d& a, const Packet2d& b, const Packet2d& c) ...
  function Packet4i (line 471) | Packet4i preverse(const Packet4i& a)
  function Packet2d (line 476) | Packet2d preverse(const Packet2d& a)
  function Packet4i (line 565) | Packet4i pblend(const Selector<4>& ifPacket, const Packet4i& thenPacket,...
  function Packet2d (line 572) | Packet2d pblend(const Selector<2>& ifPacket, const Packet2d& thenPacket,...
  function Packet4f (line 584) | Packet4f vec_splat_packet4f(const Packet4f&   from)
  function Packet4f (line 697) | Packet4f pnegate(const Packet4f& a)
  function Packet4f (line 705) | Packet4f pmadd(const Packet4f& a, const Packet4f& b, const Packet4f& c)
  function Packet4f (line 795) | Packet4f preverse(const Packet4f& a)
  function Packet4f (line 879) | Packet4f pblend(const Selector<4>& ifPacket, const Packet4f& thenPacket,...
  function Packet4f (line 994) | Packet4f preverse(const Packet4f& a)
  function Packet4f (line 1048) | Packet4f pblend(const Selector<4>& ifPacket, const Packet4f& thenPacket,...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/functors/AssignmentFunctors.h
  function namespace (line 13) | namespace Eigen {
  function assignCoeff (line 70) | void assignCoeff(DstScalar& a, const SrcScalar& b) const { a -= b; }
  function assignPacket (line 73) | void assignPacket(DstScalar* a, const Packet& b) const
  function assignCoeff (line 92) | void assignCoeff(DstScalar& a, const SrcScalar& b) const { a *= b; }
  function assignPacket (line 95) | void assignPacket(DstScalar* a, const Packet& b) const
  function assignCoeff (line 113) | void assignCoeff(DstScalar& a, const SrcScalar& b) const { a /= b; }
  function assignPacket (line 116) | void assignPacket(DstScalar* a, const Packet& b) const
  function assignCoeff (line 145) | void assignCoeff(Scalar& a, const Scalar& b) const

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/functors/BinaryFunctors.h
  function namespace (line 13) | namespace Eigen {
  function const (line 98) | bool>::operator() (const bool& a, const bool& b) const { return a && b; }
  type typename (line 114) | typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar,scalar_conj_pr...
  function EIGEN_STRONG_INLINE (line 117) | EIGEN_STRONG_INLINE result_type operator() (const LhsScalar& a, const Rh...
  function EIGEN_STRONG_INLINE (line 121) | EIGEN_STRONG_INLINE Packet packetOp(const Packet& a, const Packet& b) const
  type typename (line 140) | typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar,scalar_min_op>...
  function EIGEN_STRONG_INLINE (line 142) | EIGEN_STRONG_INLINE result_type operator() (const LhsScalar& a, const Rh...
  function EIGEN_STRONG_INLINE (line 146) | EIGEN_STRONG_INLINE Packet packetOp(const Packet& a, const Packet& b) const
  type typename (line 173) | typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar,scalar_max_op>...
  function EIGEN_STRONG_INLINE (line 175) | EIGEN_STRONG_INLINE result_type operator() (const LhsScalar& a, const Rh...
  function EIGEN_STRONG_INLINE (line 179) | EIGEN_STRONG_INLINE Packet packetOp(const Packet& a, const Packet& b) const
  function const (line 223) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return a=...
  function const (line 230) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return a<b;}
  function const (line 237) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return a<...
  function const (line 244) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return a>b;}
  function const (line 251) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return a>...
  function const (line 258) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return !(...
  function const (line 265) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return a!...
  function EIGEN_STRONG_INLINE (line 286) | EIGEN_STRONG_INLINE const result_type operator() (const LhsScalar& a, co...
  function Packet (line 291) | const Packet packetOp(const Packet& a, const Packet& b) const
  function EIGEN_STRONG_INLINE (line 299) | EIGEN_STRONG_INLINE const result_type operator() (const LhsScalar& a, co...
  function Packet (line 304) | const Packet packetOp(const Packet& a, const Packet& b) const
  function EIGEN_STRONG_INLINE (line 312) | EIGEN_STRONG_INLINE const result_type operator() (const LhsScalar& a, co...
  function Packet (line 317) | const Packet packetOp(const Packet& a, const Packet& b) const
  function EIGEN_STRONG_INLINE (line 325) | EIGEN_STRONG_INLINE const result_type operator() (const LhsScalar& a, co...
  function Packet (line 330) | const Packet packetOp(const Packet& a, const Packet& b) const
  function EIGEN_STRONG_INLINE (line 338) | EIGEN_STRONG_INLINE const result_type operator() (const LhsScalar& a, co...
  function Packet (line 343) | const Packet packetOp(const Packet& a, const Packet& b) const
  function EIGEN_STRONG_INLINE (line 351) | EIGEN_STRONG_INLINE const result_type operator() (const LhsScalar& a, co...
  function Packet (line 356) | const Packet packetOp(const Packet& a, const Packet& b) const
  function EIGEN_STRONG_INLINE (line 364) | EIGEN_STRONG_INLINE const result_type operator() (const LhsScalar& a, co...
  function Packet (line 369) | const Packet packetOp(const Packet& a, const Packet& b) const
  function Scalar (line 383) | const Scalar operator() (const Scalar &x, const Scalar &y) const
  type typename (line 410) | typedef typename ScalarBinaryOpTraits<Scalar,Exponent,scalar_pow_op>::Re...
  type Scalar (line 415) | typedef Scalar LhsScalar;
  type Exponent (line 416) | typedef Exponent RhsScalar;
  function EIGEN_DEVICE_FUNC (line 420) | EIGEN_DEVICE_FUNC
  type typename (line 440) | typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar,scalar_differe...
  function result_type (line 448) | const result_type operator() (const LhsScalar& a, const RhsScalar& b) co...
  function Packet (line 450) | const Packet packetOp(const Packet& a, const Packet& b) const
  type typename (line 469) | typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar,scalar_quotien...
  function result_type (line 477) | const result_type operator() (const LhsScalar& a, const RhsScalar& b) co...
  function Packet (line 479) | const Packet packetOp(const Packet& a, const Packet& b) const
  type scalar_boolean_and_op (line 498) | struct scalar_boolean_and_op {
  function EIGEN_STRONG_INLINE (line 502) | EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a, const Packet&...
  function scalar_boolean_and_op (line 505) | struct functor_traits<scalar_boolean_and_op> {
  type scalar_boolean_or_op (line 517) | struct scalar_boolean_or_op {
  function EIGEN_STRONG_INLINE (line 521) | EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a, const Packet&...
  function scalar_boolean_or_op (line 524) | struct functor_traits<scalar_boolean_or_op> {
  type scalar_boolean_xor_op (line 536) | struct scalar_boolean_xor_op {
  function EIGEN_STRONG_INLINE (line 540) | EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a, const Packet&...
  function scalar_boolean_xor_op (line 543) | struct functor_traits<scalar_boolean_xor_op> {
  type typename (line 558) | typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar,scalar_absolut...
  function result_type (line 566) | const result_type operator() (const LhsScalar& a, const RhsScalar& b) const
  function Packet (line 569) | const Packet packetOp(const Packet& a, const Packet& b) const
  type typename (line 590) | typedef typename BinaryOp::first_argument_type  first_argument_type;
  type typename (line 591) | typedef typename BinaryOp::second_argument_type second_argument_type;
  type typename (line 592) | typedef typename BinaryOp::result_type          result_type;
  function EIGEN_DEVICE_FUNC (line 594) | EIGEN_DEVICE_FUNC explicit bind1st_op(const first_argument_type &val) : ...
  function result_type (line 596) | const result_type operator() (const second_argument_type& b) const { ret...
  function Packet (line 599) | const Packet packetOp(const Packet& b) const
  type typename (line 609) | typedef typename BinaryOp::first_argument_type  first_argument_type;
  type typename (line 610) | typedef typename BinaryOp::second_argument_type second_argument_type;
  type typename (line 611) | typedef typename BinaryOp::result_type          result_type;
  function EIGEN_DEVICE_FUNC (line 613) | EIGEN_DEVICE_FUNC explicit bind2nd_op(const second_argument_type &val) :...
  function result_type (line 615) | const result_type operator() (const first_argument_type& a) const { retu...
  function Packet (line 618) | const Packet packetOp(const Packet& a) const

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/functors/NullaryFunctors.h
  function namespace (line 13) | namespace Eigen {
  function Scalar (line 102) | const Scalar operator() (IndexType i) const
  function EIGEN_DEVICE_FUNC (line 132) | EIGEN_DEVICE_FUNC linspaced_op(const Scalar& low, const Scalar& high, In...
  function Scalar (line 137) | const Scalar operator() (IndexType i) const { return impl(i); }
  function EIGEN_STRONG_INLINE (line 140) | EIGEN_STRONG_INLINE const Packet packetOp(IndexType i) const { return im...

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/functors/StlFunctors.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/functors/TernaryFunctors.h
  function namespace (line 13) | namespace Eigen {

FILE: evogym/simulator/externals/eigen/Eigen/src/Core/functors/UnaryFunctors.h
  function namespace (line 13) | namespace Eigen {
  function EIGEN_STRONG_INLINE (line 178) | EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a) const
  function Packet (line 181) | const Packet packetOp(const Packet& a) const
  function EIGEN_STRONG_INLINE (line 197) | EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a) const
  function Packet (line 200) | const Packet packetOp(const Packet& a) const
  function result_type (line 217) | result_type operator() (const Scalar& a) const { return numext::real(a); }
  function result_type (line 233) | result_type operator() (const Scalar& a) const { return numext::imag(a); }
  function Scalar (line 279) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 281) | inline Packet packetOp(const Packet& a) const { return internal::pexp(a); }
  function Scalar (line 319) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 321) | inline Packet packetOp(const Packet& a) const { return internal::pexpm1(...
  function Scalar (line 339) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 341) | inline Packet packetOp(const Packet& a) const { return internal::plog(a); }
  function Scalar (line 370) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 372) | inline Packet packetOp(const Packet& a) const { return internal::plog1p(...
  function Scalar (line 390) | inline const Scalar operator() (const Scalar& a) const { EIGEN_USING_STD...
  function Packet (line 392) | inline Packet packetOp(const Packet& a) const { return internal::plog10(...
  function Scalar (line 406) | inline const Scalar operator() (const Scalar& a) const { return Scalar(E...
  function Packet (line 408) | inline Packet packetOp(const Packet& a) const { return internal::plog2(a...
  function Scalar (line 420) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 422) | inline Packet packetOp(const Packet& a) const { return internal::psqrt(a...
  function bool (line 442) | struct scalar_sqrt_op<bool> {
  type functor_traits (line 449) | struct functor_traits
  function Scalar (line 459) | inline const Scalar operator() (const Scalar& a) const { return Scalar(1...
  function Packet (line 461) | inline Packet packetOp(const Packet& a) const { return internal::prsqrt(...
  function Scalar (line 478) | inline Scalar operator() (const Scalar& a) const { return numext::cos(a); }
  function Pac
Condensed preview — 467 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,142K chars).
[
  {
    "path": ".github/workflows/test.yml",
    "chars": 1256,
    "preview": "name: Test\n\non: [push]\n\npermissions:\n  contents: read\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  "
  },
  {
    "path": ".github/workflows/wheels.yml",
    "chars": 1549,
    "preview": "name: Build\n\non: [push]\n\njobs:\n  build_wheels:\n    name: Build wheels on ${{ matrix.os }}\n    runs-on: ${{ matrix.os }}\n"
  },
  {
    "path": ".gitignore",
    "chars": 338,
    "preview": "evogym/simulator/.vs/\nevogym/simulator/x64/\nevogym/simulator/SimulatorCPP/x64/\nold/\n.vs/\n.idea\n.idea/\n.vscode\n*.vcxproj\n"
  },
  {
    "path": ".gitmodules",
    "chars": 711,
    "preview": "[submodule \"examples/externals/pytorch_a2c_ppo_acktr_gail\"]\n\tpath = examples/externals/pytorch_a2c_ppo_acktr_gail\n\turl ="
  },
  {
    "path": "LICENSE",
    "chars": 1066,
    "preview": "MIT License\n\nCopyright (c) 2022 jagdeepsb\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\n"
  },
  {
    "path": "MANIFEST.in",
    "chars": 23,
    "preview": "graft evogym/simulator\n"
  },
  {
    "path": "README.md",
    "chars": 8305,
    "preview": "# Evolution Gym\n\n[![Build](https://github.com/EvolutionGym/evogym/actions/workflows/wheels.yml/badge.svg?branch=main)](h"
  },
  {
    "path": "environment.yml",
    "chars": 628,
    "preview": "name: evogym\nchannels:\n  - defaults\ndependencies:\n  - python=3.7.11\n  - pip\n  - pip:\n    - glfw==2.5.0\n    - gpy==1.10.0"
  },
  {
    "path": "evogym/__init__.py",
    "chars": 139,
    "preview": "from evogym.world import EvoWorld, WorldObject\nfrom evogym.sim import EvoSim\nfrom evogym.viewer import EvoViewer\nfrom ev"
  },
  {
    "path": "evogym/envs/__init__.py",
    "chars": 4293,
    "preview": "\nfrom evogym.envs.base import *\nfrom evogym.envs.balance import *\nfrom evogym.envs.manipulate import *\nfrom evogym.envs."
  },
  {
    "path": "evogym/envs/balance.py",
    "chars": 5930,
    "preview": "import gymnasium as gym\nfrom gymnasium import error, spaces\nfrom gymnasium import utils\nfrom gymnasium.utils import seed"
  },
  {
    "path": "evogym/envs/base.py",
    "chars": 17778,
    "preview": "\nimport gymnasium as gym\nfrom gymnasium import error, spaces\nfrom gymnasium import utils\nfrom gymnasium.utils import see"
  },
  {
    "path": "evogym/envs/change_shape.py",
    "chars": 11857,
    "preview": "import gymnasium as gym\nfrom gymnasium import error, spaces\nfrom gymnasium import utils\nfrom gymnasium.utils import seed"
  },
  {
    "path": "evogym/envs/climb.py",
    "chars": 7397,
    "preview": "import gymnasium as gym\nfrom gymnasium import error, spaces\nfrom gymnasium import utils\nfrom gymnasium.utils import seed"
  },
  {
    "path": "evogym/envs/flip.py",
    "chars": 3168,
    "preview": "import gymnasium as gym\nfrom gymnasium import error, spaces\nfrom gymnasium import utils\nfrom gymnasium.utils import seed"
  },
  {
    "path": "evogym/envs/jump.py",
    "chars": 2750,
    "preview": "import gymnasium as gym\nfrom gymnasium import error, spaces\nfrom gymnasium import utils\nfrom gymnasium.utils import seed"
  },
  {
    "path": "evogym/envs/manipulate.py",
    "chars": 36310,
    "preview": "from evogym.envs.base import EvoGymBase\nimport gymnasium as gym\nfrom gymnasium import error, spaces\nfrom gymnasium impor"
  },
  {
    "path": "evogym/envs/multi_goal.py",
    "chars": 6599,
    "preview": "import gymnasium as gym\nfrom gymnasium import error, spaces\nfrom gymnasium import utils\nfrom gymnasium.utils import seed"
  },
  {
    "path": "evogym/envs/sim_files/Balancer-v0.json",
    "chars": 5298,
    "preview": "{\n    \"grid_width\": 30,\n    \"grid_height\": 5,\n    \"objects\": {\n        \"ground\": {\n            \"indices\": [\n            "
  },
  {
    "path": "evogym/envs/sim_files/Balancer-v1.json",
    "chars": 5430,
    "preview": "{\n    \"grid_width\": 30,\n    \"grid_height\": 5,\n    \"objects\": {\n        \"ground\": {\n            \"indices\": [\n            "
  },
  {
    "path": "evogym/envs/sim_files/BeamSlider-v0.json",
    "chars": 15100,
    "preview": "{\n    \"grid_width\": 70,\n    \"grid_height\": 7,\n    \"objects\": {\n        \"beam\": {\n            \"indices\": [\n              "
  },
  {
    "path": "evogym/envs/sim_files/BeamToppler-v0.json",
    "chars": 13884,
    "preview": "{\n    \"grid_width\": 70,\n    \"grid_height\": 7,\n    \"objects\": {\n        \"beam\": {\n            \"indices\": [\n              "
  },
  {
    "path": "evogym/envs/sim_files/BidirectionalWalker-v0.json",
    "chars": 9165,
    "preview": "{\n    \"grid_width\": 70,\n    \"grid_height\": 1,\n    \"objects\": {\n        \"new_object_1\": {\n            \"indices\": [\n      "
  },
  {
    "path": "evogym/envs/sim_files/BridgeWalker-v0.json",
    "chars": 29333,
    "preview": "{\n    \"grid_width\": 60,\n    \"grid_height\": 5,\n    \"objects\": {\n        \"new_object_2\": {\n            \"indices\": [\n      "
  },
  {
    "path": "evogym/envs/sim_files/Carrier-v0.json",
    "chars": 14026,
    "preview": "{\n    \"grid_width\": 100,\n    \"grid_height\": 8,\n    \"objects\": {\n        \"package\": {\n            \"indices\": [\n          "
  },
  {
    "path": "evogym/envs/sim_files/Carrier-v1.json",
    "chars": 10301,
    "preview": "{\n    \"grid_width\": 60,\n    \"grid_height\": 12,\n    \"objects\": {\n        \"package\": {\n            \"indices\": [\n          "
  },
  {
    "path": "evogym/envs/sim_files/CaveCrawler-v0.json",
    "chars": 27049,
    "preview": "{\n    \"grid_width\": 70,\n    \"grid_height\": 14,\n    \"objects\": {\n        \"terrain\": {\n            \"indices\": [\n          "
  },
  {
    "path": "evogym/envs/sim_files/Climber-v0.json",
    "chars": 25316,
    "preview": "{\n    \"grid_width\": 7,\n    \"grid_height\": 90,\n    \"objects\": {\n        \"pipe\": {\n            \"indices\": [\n              "
  },
  {
    "path": "evogym/envs/sim_files/Climber-v1.json",
    "chars": 19996,
    "preview": "{\n    \"grid_width\": 7,\n    \"grid_height\": 70,\n    \"objects\": {\n        \"pipe\": {\n            \"indices\": [\n              "
  },
  {
    "path": "evogym/envs/sim_files/Climber-v2.json",
    "chars": 18085,
    "preview": "{\n    \"grid_width\": 27,\n    \"grid_height\": 42,\n    \"objects\": {\n        \"pipe\": {\n            \"indices\": [\n             "
  },
  {
    "path": "evogym/envs/sim_files/DownStepper-v0.json",
    "chars": 11300,
    "preview": "{\n    \"grid_width\": 75,\n    \"grid_height\": 10,\n    \"objects\": {\n        \"ground\": {\n            \"indices\": [\n           "
  },
  {
    "path": "evogym/envs/sim_files/Flipper-v0.json",
    "chars": 9165,
    "preview": "{\n    \"grid_width\": 70,\n    \"grid_height\": 1,\n    \"objects\": {\n        \"new_object_1\": {\n            \"indices\": [\n      "
  },
  {
    "path": "evogym/envs/sim_files/GapJumper-v0.json",
    "chars": 8554,
    "preview": "{\n    \"grid_width\": 80,\n    \"grid_height\": 6,\n    \"objects\": {\n        \"platform_1\": {\n            \"indices\": [\n        "
  },
  {
    "path": "evogym/envs/sim_files/Hurdler-v0.json",
    "chars": 11634,
    "preview": "{\n    \"grid_width\": 70,\n    \"grid_height\": 6,\n    \"objects\": {\n        \"ground\": {\n            \"indices\": [\n            "
  },
  {
    "path": "evogym/envs/sim_files/Jumper-v0.json",
    "chars": 9724,
    "preview": "{\n    \"grid_width\": 60,\n    \"grid_height\": 8,\n    \"objects\": {\n        \"ground\": {\n            \"indices\": [\n            "
  },
  {
    "path": "evogym/envs/sim_files/Lifter-v0.json",
    "chars": 2957,
    "preview": "{\n    \"grid_width\": 11,\n    \"grid_height\": 5,\n    \"objects\": {\n        \"ground\": {\n            \"indices\": [\n            "
  },
  {
    "path": "evogym/envs/sim_files/ObstacleTraverser-v0.json",
    "chars": 14566,
    "preview": "{\n    \"grid_width\": 80,\n    \"grid_height\": 3,\n    \"objects\": {\n        \"ground\": {\n            \"indices\": [\n            "
  },
  {
    "path": "evogym/envs/sim_files/ObstacleTraverser-v1.json",
    "chars": 30635,
    "preview": "{\n    \"grid_width\": 60,\n    \"grid_height\": 10,\n    \"objects\": {\n        \"ground\": {\n            \"indices\": [\n           "
  },
  {
    "path": "evogym/envs/sim_files/PlatformJumper-v0.json",
    "chars": 11416,
    "preview": "{\n    \"grid_width\": 91,\n    \"grid_height\": 9,\n    \"objects\": {\n        \"platform_3\": {\n            \"indices\": [\n        "
  },
  {
    "path": "evogym/envs/sim_files/Pusher-v0.json",
    "chars": 14026,
    "preview": "{\n    \"grid_width\": 100,\n    \"grid_height\": 3,\n    \"objects\": {\n        \"package\": {\n            \"indices\": [\n          "
  },
  {
    "path": "evogym/envs/sim_files/Pusher-v1.json",
    "chars": 14026,
    "preview": "{\n    \"grid_width\": 100,\n    \"grid_height\": 3,\n    \"objects\": {\n        \"package\": {\n            \"indices\": [\n          "
  },
  {
    "path": "evogym/envs/sim_files/ShapeChange.json",
    "chars": 8318,
    "preview": "{\n    \"grid_width\": 20,\n    \"grid_height\": 10,\n    \"objects\": {\n        \"new_object_4\": {\n            \"indices\": [\n     "
  },
  {
    "path": "evogym/envs/sim_files/Thrower-v0.json",
    "chars": 15449,
    "preview": "{\n    \"grid_width\": 70,\n    \"grid_height\": 10,\n    \"objects\": {\n        \"ground\": {\n            \"indices\": [\n           "
  },
  {
    "path": "evogym/envs/sim_files/Traverser-v0.json",
    "chars": 9880,
    "preview": "{\n    \"grid_width\": 60,\n    \"grid_height\": 9,\n    \"objects\": {\n        \"ground\": {\n            \"indices\": [\n            "
  },
  {
    "path": "evogym/envs/sim_files/UpStepper-v0.json",
    "chars": 10378,
    "preview": "{\n    \"grid_width\": 70,\n    \"grid_height\": 9,\n    \"objects\": {\n        \"ground\": {\n            \"indices\": [\n            "
  },
  {
    "path": "evogym/envs/sim_files/Walker-v0.json",
    "chars": 13030,
    "preview": "{\n    \"grid_width\": 100,\n    \"grid_height\": 1,\n    \"objects\": {\n        \"ground\": {\n            \"indices\": [\n           "
  },
  {
    "path": "evogym/envs/sim_files/package.json",
    "chars": 1008,
    "preview": "{\n    \"grid_width\": 3,\n    \"grid_height\": 2,\n    \"objects\": {\n        \"peg\": {\n            \"indices\": [\n                "
  },
  {
    "path": "evogym/envs/sim_files/peg.json",
    "chars": 791,
    "preview": "{\n    \"grid_width\": 5,\n    \"grid_height\": 1,\n    \"objects\": {\n        \"peg\": {\n            \"indices\": [\n                "
  },
  {
    "path": "evogym/envs/sim_files/rigid_1x1.json",
    "chars": 284,
    "preview": "{\n    \"grid_width\": 1,\n    \"grid_height\": 1,\n    \"objects\": {\n        \"new_object_1\": {\n            \"indices\": [\n       "
  },
  {
    "path": "evogym/envs/sim_files/rigid_2x2.json",
    "chars": 721,
    "preview": "{\n    \"grid_width\": 2,\n    \"grid_height\": 2,\n    \"objects\": {\n        \"new_object_2\": {\n            \"indices\": [\n       "
  },
  {
    "path": "evogym/envs/sim_files/rigid_3x3.json",
    "chars": 1484,
    "preview": "{\n    \"grid_width\": 3,\n    \"grid_height\": 3,\n    \"objects\": {\n        \"new_object_3\": {\n            \"indices\": [\n       "
  },
  {
    "path": "evogym/envs/traverse.py",
    "chars": 23225,
    "preview": "from evogym.envs.base import EvoGymBase\nimport gymnasium as gym\nfrom gymnasium import error, spaces\nfrom gymnasium impor"
  },
  {
    "path": "evogym/envs/walk.py",
    "chars": 7797,
    "preview": "import gymnasium as gym\nfrom gymnasium import error, spaces\nfrom gymnasium import utils\nfrom gymnasium.utils import seed"
  },
  {
    "path": "evogym/sim.py",
    "chars": 9512,
    "preview": "#!/usr/bin/env python\n\n\"\"\"\nThis module defines the EvoSim class which provides a clean interface to Evolution Gym's simu"
  },
  {
    "path": "evogym/simulator/CMakeLists.txt",
    "chars": 1287,
    "preview": "cmake_minimum_required(VERSION 3.1.0)\n\nset(CMAKE_SUPPRESS_REGENERATION true)\nset(CMAKE_POSITION_INDEPENDENT_CODE ON)\n\npr"
  },
  {
    "path": "evogym/simulator/FindGLEW.cmake",
    "chars": 528,
    "preview": "# FindGLEW.cmake\n# Search for GLEW library and include directories\n\nfind_path(GLEW_INCLUDE_DIR GL/glew.h)\nfind_library(G"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/BBTreeNode.cpp",
    "chars": 417,
    "preview": "#include \"BBTreeNode.h\"\n\n\n\nBBTreeNode::BBTreeNode()\n{\n}\n\nBBTreeNode::BBTreeNode(int a_index, int b_index) {\n\tBBTreeNode:"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/BBTreeNode.h",
    "chars": 403,
    "preview": "#ifndef BB_TREE_NODE_H\n#define BB_TREE_NODE_H\n\n#include \"main.h\"\n#include <vector>\n#include <unordered_set>\n\nclass BBTre"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Boxel.cpp",
    "chars": 3229,
    "preview": "#include \"Boxel.h\"\n#include <iostream>\n\nBoxel::Boxel(int cell_type, int grid_index)\n{\n\tpoint_top_right_index = NULL;\n\tpo"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Boxel.h",
    "chars": 1087,
    "preview": "#ifndef BOXEL_H\n#define BOXEL_H\n\n#include <Eigen/Dense>\n#include <vector>\n#include \"main.h\"\n#include \"Edge.h\"\n\nusing nam"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/CMakeLists.txt",
    "chars": 1115,
    "preview": "set(SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR})\n\nfile(GLOB_RECURSE HEADER ${SOURCE_DIR}/*.h)\nfile(GLOB_RECURSE SOURCE ${SOURCE"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Camera.cpp",
    "chars": 3688,
    "preview": "#include \"Camera.h\"\n\nCamera::Camera() {\n\n}\n\nCamera::Camera(Vector2d pos, Vector2d size, Vector2d resolution, bool is_ren"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Camera.h",
    "chars": 944,
    "preview": "#ifndef CAMERA_H\n#define CAMERA_H\n\n#include \"GL/glew.h\"\n#include \"glfw3.h\"\n\n#include <Eigen/Dense>\n#include <iostream>\n\n"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Colors.h",
    "chars": 9221,
    "preview": "#ifndef COLORS_H\n#define COLORS_H\n\ndouble orange[100][3]{\n\t{1.0, 0.96078, 0.92156},\n\t{ 0.99968, 0.95603, 0.91237 },\n\t{ 0"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Edge.cpp",
    "chars": 686,
    "preview": "#include \"Edge.h\"\n\nEdge::Edge(int a_index, int b_index, double length_eq, double spring_const, int color)\n{\n\tEdge::a_ind"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Edge.h",
    "chars": 481,
    "preview": "#ifndef EDGE_H\n#define EDGE_H\n\n#include \"main.h\"\n#include <vector>\n\nusing namespace std;\n\nclass Edge\n{\npublic:\n\n\tint a_i"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Environment.cpp",
    "chars": 13002,
    "preview": "#include \"Environment.h\"\n\n#include <fstream>\n#include <iostream>\n#include \"Boxel.h\"\n\nEnvironment::Environment(){\n\n}\n\nvoi"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Environment.h",
    "chars": 2981,
    "preview": "#ifndef ENVIRONMENT_H\n#define ENVIRONMENT_H\n\n#include \"main.h\"\n#include <vector>\n#include <map>\n#include <tuple>\n#includ"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Interface.cpp",
    "chars": 15559,
    "preview": "#include \"Interface.h\"\n#include \"Colors.h\"\n\nInterface::Interface(Sim* sim)\n{\n\t//RENDERING\n\tint debug_window_width = 640;"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Interface.h",
    "chars": 1488,
    "preview": "#ifndef INTERFACE_H\n#define INTERFACE_H\n\n#include \"main.h\"\n\n//#include \"GL/glew.h\"\n//#include \"glfw3.h\"\n//#include \"GL/g"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/ObjectCreator.cpp",
    "chars": 20751,
    "preview": "#include \"ObjectCreator.h\"\n\n#include <fstream>\n#include <iostream>\n#include \"Boxel.h\"\n\nObjectCreator::ObjectCreator() {\n"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/ObjectCreator.h",
    "chars": 2403,
    "preview": "#ifndef OBJECTCREATOR_H\n#define OBJECTCREATOR_H\n\n#include <vector>\n\n#include \"main.h\"\n\n#include \"Environment.h\"\n#include"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/PhysicsEngine.cpp",
    "chars": 41604,
    "preview": "#include \"PhysicsEngine.h\"\n\n#include <iostream>\n#include <set>\n#include <map>\n#include <unordered_set>\n\nPhysicsEngine::P"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/PhysicsEngine.h",
    "chars": 3555,
    "preview": "#ifndef PHYSICS_ENGINE_H\n#define PHYSICS_ENGINE_H\n\n#include <vector>\n#include \"main.h\"\n#include \"SimObject.h\"\n#include \""
  },
  {
    "path": "evogym/simulator/SimulatorCPP/PythonBindings.cpp",
    "chars": 2753,
    "preview": "#include \"main.h\"\n\n#include \"Interface.h\"\n#include \"Sim.h\"\n#include \"Camera.h\"\n\n#include <pybind11/pybind11.h>\n#include "
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Robot.cpp",
    "chars": 837,
    "preview": "#include \"Robot.h\"\n\n\n\nRobot::Robot()\n{\n}\n\nvoid Robot::init() {\n\n\tvector<int> indicies;\n\tfor (int i = 0; i < boxels.size("
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Robot.h",
    "chars": 433,
    "preview": "#ifndef ROBOT_H\n#define ROBOT_H\n\n#include \"main.h\"\n\n#include <vector>\n#include <map>\n\n#include \"SimObject.h\"\n#include \"B"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Sim.cpp",
    "chars": 4682,
    "preview": "#include \"Sim.h\"\n#include \"main.h\"\n\nvoid Sim::get_version() {\n\tcout << \"Using Evolution Gym Simulator v2.2.5\" << \"\\n\";\n}"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Sim.h",
    "chars": 1590,
    "preview": "#ifndef SIM_H\n#define SIM_H\n\n#include <fstream>\n\n#include \"main.h\"\n\n#include \"Environment.h\"\n#include \"ObjectCreator.h\"\n"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/SimObject.cpp",
    "chars": 12910,
    "preview": "#include \"SimObject.h\"\n\n#include <iostream>\n#include <float.h>\n\nSimObject::SimObject()\n{\n\tis_robot = false;\n}\n\nvoid SimO"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/SimObject.h",
    "chars": 1167,
    "preview": "#ifndef SIMOBJECT_H\n#define SIMOBJECT_H\n\n\n#include \"main.h\"\n\n#include <vector>\n#include <map>\n#include <unordered_set>\n\n"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Snapshot.cpp",
    "chars": 734,
    "preview": "#include \"Snapshot.h\"\n\n\n\nSnapshot::Snapshot()\n{\n}\n\nSnapshot::Snapshot(long int sim_time) {\n\tSnapshot::sim_time = sim_tim"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/Snapshot.h",
    "chars": 601,
    "preview": "#ifndef SNAPSHOT_H\n#define SNAPSHOT_H\n\n\n#include <vector>\n#include \"main.h\"\n#include \"SimObject.h\"\n\nusing namespace std;"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/main.cpp",
    "chars": 6502,
    "preview": "#include \"main.h\";\n\n#include <sstream>\n#include <vector>\n#include <tuple>\n#include <cstdlib>\n#include <cmath>\n#include <"
  },
  {
    "path": "evogym/simulator/SimulatorCPP/main.h",
    "chars": 3193,
    "preview": "#ifndef MAIN_H\n#define MAIN_H\t\n\n#include \"GL/glew.h\"\n#include \"glfw3.h\"\n\n//#include <pybind11/pybind11.h>\n//#include <py"
  },
  {
    "path": "evogym/simulator/externals/CMakeLists.txt",
    "chars": 853,
    "preview": "# CMake entry point.\ncmake_minimum_required(VERSION 3.1)\n\n# Do not want to generate zeor_check because they cause messy "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/Cholesky",
    "chars": 1206,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/CholmodSupport",
    "chars": 1900,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/Core",
    "chars": 12201,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/Dense",
    "chars": 122,
    "preview": "#include \"Core\"\n#include \"LU\"\n#include \"Cholesky\"\n#include \"QR\"\n#include \"SVD\"\n#include \"Geometry\"\n#include \"Eigenvalues"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/Eigen",
    "chars": 35,
    "preview": "#include \"Dense\"\n#include \"Sparse\"\n"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/Eigenvalues",
    "chars": 1822,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/Geometry",
    "chars": 1985,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/Householder",
    "chars": 874,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/IterativeLinearSolvers",
    "chars": 2083,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/Jacobi",
    "chars": 939,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/KLUSupport",
    "chars": 1389,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/LU",
    "chars": 1468,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/MetisSupport",
    "chars": 991,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/OrderingMethods",
    "chars": 2451,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/PaStiXSupport",
    "chars": 1751,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/PardisoSupport",
    "chars": 1116,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/QR",
    "chars": 1317,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/QtAlignedMalloc",
    "chars": 945,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/SPQRSupport",
    "chars": 1162,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/SVD",
    "chars": 1629,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/Sparse",
    "chars": 888,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/SparseCholesky",
    "chars": 1235,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2013 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/SparseCore",
    "chars": 2240,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/SparseLU",
    "chars": 1812,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2012 Désiré"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/SparseQR",
    "chars": 1195,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/StdDeque",
    "chars": 797,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/StdList",
    "chars": 726,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Hauke "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/StdVector",
    "chars": 803,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/SuperLUSupport",
    "chars": 2243,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/UmfPackSupport",
    "chars": 1382,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Cholesky/LDLT.h",
    "chars": 24872,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2011 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Cholesky/LLT.h",
    "chars": 18683,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h",
    "chars": 3974,
    "preview": "/*\n Copyright (c) 2011, Intel Corporation. All rights reserved.\n\n Redistribution and use in source and binary forms, wit"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/CholmodSupport/CholmodSupport.h",
    "chars": 25441,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2010 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/ArithmeticSequence.h",
    "chars": 19214,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2017 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Array.h",
    "chars": 16713,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/ArrayBase.h",
    "chars": 8217,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/ArrayWrapper.h",
    "chars": 6775,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Assign.h",
    "chars": 2738,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007 Michae"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/AssignEvaluator.h",
    "chars": 40933,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2011 Benoit"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Assign_MKL.h",
    "chars": 12488,
    "preview": "/*\n Copyright (c) 2011, Intel Corporation. All rights reserved.\n Copyright (C) 2015 Gael Guennebaud <gael.guennebaud@inr"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/BandMatrix.h",
    "chars": 13910,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Block.h",
    "chars": 18400,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/BooleanRedux.h",
    "chars": 4409,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/CommaInitializer.h",
    "chars": 5981,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/ConditionEstimator.h",
    "chars": 6990,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2016 Rasmus"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/CoreEvaluators.h",
    "chars": 63980,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2011 Benoit"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/CoreIterators.h",
    "chars": 4745,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2014 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/CwiseBinaryOp.h",
    "chars": 7942,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2014 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/CwiseNullaryOp.h",
    "chars": 33010,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2010 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/CwiseTernaryOp.h",
    "chars": 8256,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2014 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/CwiseUnaryOp.h",
    "chars": 3877,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2014 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/CwiseUnaryView.h",
    "chars": 5453,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/DenseBase.h",
    "chars": 29978,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007-2010 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/DenseCoeffsBase.h",
    "chars": 24220,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2010 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/DenseStorage.h",
    "chars": 22741,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Diagonal.h",
    "chars": 9705,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007-2009 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/DiagonalMatrix.h",
    "chars": 14670,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/DiagonalProduct.h",
    "chars": 988,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Dot.h",
    "chars": 11646,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008, "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/EigenBase.h",
    "chars": 5751,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Benoit"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/ForceAlignedAccess.h",
    "chars": 4769,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Fuzzy.h",
    "chars": 5759,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/GeneralProduct.h",
    "chars": 21679,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/GenericPacketMath.h",
    "chars": 35516,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/GlobalFunctions.h",
    "chars": 11543,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2010-2016 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/IO.h",
    "chars": 8238,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/IndexedView.h",
    "chars": 9620,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2017 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Inverse.h",
    "chars": 3449,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014-2019 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Map.h",
    "chars": 7227,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007-2010 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/MapBase.h",
    "chars": 11212,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007-2010 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/MathFunctions.h",
    "chars": 57155,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2010 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/MathFunctionsImpl.h",
    "chars": 5103,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Pedro "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Matrix.h",
    "chars": 24280,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2010 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/MatrixBase.h",
    "chars": 23856,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2009 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/NestByValue.h",
    "chars": 2458,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/NoAlias.h",
    "chars": 3620,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/NumTraits.h",
    "chars": 11609,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2010 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/PartialReduxEvaluator.h",
    "chars": 9197,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2011-2018 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/PermutationMatrix.h",
    "chars": 20748,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Benoit"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/PlainObjectBase.h",
    "chars": 48524,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2009 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Product.h",
    "chars": 7333,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2011 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/ProductEvaluators.h",
    "chars": 53794,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Random.h",
    "chars": 6397,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Redux.h",
    "chars": 18669,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Ref.h",
    "chars": 17999,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2012 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Replicate.h",
    "chars": 5631,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Reshaped.h",
    "chars": 17001,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2017 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/ReturnByValue.h",
    "chars": 4218,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Reverse.h",
    "chars": 7457,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Select.h",
    "chars": 6074,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2010 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/SelfAdjointView.h",
    "chars": 14873,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h",
    "chars": 1697,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Solve.h",
    "chars": 6797,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/SolveTriangular.h",
    "chars": 9279,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2009 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/SolverBase.h",
    "chars": 6170,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2015 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/StableNorm.h",
    "chars": 8776,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/StlIterators.h",
    "chars": 21445,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2018 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Stride.h",
    "chars": 3865,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2010 Benoit"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Swap.h",
    "chars": 2765,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Transpose.h",
    "chars": 17546,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008 B"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Transpositions.h",
    "chars": 13474,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2010-2011 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/TriangularMatrix.h",
    "chars": 38109,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Benoit"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/VectorBlock.h",
    "chars": 3488,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2010 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/VectorwiseOp.h",
    "chars": 35117,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2019 G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/Visitor.h",
    "chars": 9304,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX/Complex.h",
    "chars": 17249,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Benoit"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h",
    "chars": 7267,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Pedro "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX/PacketMath.h",
    "chars": 64056,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Benoit"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h",
    "chars": 2564,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2015 Benoit"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX512/Complex.h",
    "chars": 18173,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2018 Gael G"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h",
    "chars": 14950,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2016 Pedro "
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h",
    "chars": 87661,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2016 Benoit"
  },
  {
    "path": "evogym/simulator/externals/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h",
    "chars": 2134,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2019 Rasmus"
  }
]

// ... and 267 more files (download for full content)

About this extraction

This page contains the full source code of the EvolutionGym/evogym GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 467 files (6.6 MB), approximately 1.7M tokens, and a symbol index with 4135 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!