casadi 3.6.5__cp38-none-macosx_11_0_arm64.whl → 3.6.7__cp38-none-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- casadi/_casadi.so +0 -0
- casadi/casadi-cli +0 -0
- casadi/casadi.py +739 -308
- casadi/cbc +0 -0
- casadi/clp +0 -0
- casadi/cmake/casadi-config-version.cmake +1 -1
- casadi/cmake/casadi-targets.cmake +10 -6
- casadi/cmake/highs/highs-config.cmake +6 -13
- casadi/cmake/highs/highs-targets-release.cmake +13 -13
- casadi/cmake/highs/highs-targets.cmake +25 -22
- casadi/cmake/osqp/osqp-targets.cmake +10 -6
- casadi/cmake/proxsuite/proxsuiteConfigVersion.cmake +0 -5
- casadi/cmake/proxsuite/proxsuiteTargets.cmake +12 -12
- casadi/cmake/qdldl/qdldl-targets.cmake +10 -6
- casadi/cmake/sleqp/sleqp-config-version.cmake +0 -5
- casadi/cmake/sleqp/sleqp-targets.cmake +10 -6
- casadi/cmake/trlib/trlib-config-release.cmake +1 -1
- casadi/cmake/trlib/trlib-config-version.cmake +0 -5
- casadi/cmake/trlib/trlib-config.cmake +12 -12
- casadi/highs +0 -0
- casadi/include/casadi/casadi.i +3 -0
- casadi/include/casadi/casadi_c.h +2 -0
- casadi/include/casadi/config.h +9 -9
- casadi/include/casadi/core/casadi_common.hpp +1 -0
- casadi/include/casadi/core/casadi_export.h +1 -0
- casadi/include/casadi/core/casadi_misc.hpp +52 -0
- casadi/include/casadi/core/casadi_types.hpp +3 -2
- casadi/include/casadi/core/code_generator.hpp +30 -1
- casadi/include/casadi/core/global_options.hpp +2 -0
- casadi/include/casadi/core/mx.hpp +18 -3
- casadi/include/casadi/core/optistack.hpp +23 -0
- casadi/include/casadi/core/runtime/casadi_nlp.hpp +19 -4
- casadi/include/casadi/core/runtime/casadi_ocp_block.hpp +55 -0
- casadi/include/casadi/core/runtime/casadi_oracle.hpp +44 -0
- casadi/include/casadi/core/runtime/casadi_oracle_callback.hpp +39 -0
- casadi/include/casadi/core/runtime/casadi_runtime.hpp +4 -1
- casadi/include/casadi/core/runtime/casadi_scaled_copy.hpp +31 -0
- casadi/include/casadi/core/serializing_stream.hpp +2 -2
- casadi/include/casadi/core/sparsity.hpp +7 -0
- casadi/include/casadi/doc.i +1513 -1016
- casadi/include/casadi/doc_merged.i +965 -719
- casadi/include/casadi/mem.h +1 -0
- casadi/include/daqp/api.h +46 -0
- casadi/include/daqp/auxiliary.h +29 -0
- casadi/include/daqp/bnb.h +32 -0
- casadi/include/daqp/codegen.h +18 -0
- casadi/include/daqp/constants.h +92 -0
- casadi/include/daqp/daqp.h +22 -0
- casadi/include/daqp/daqp_prox.h +18 -0
- casadi/include/daqp/factorization.h +18 -0
- casadi/include/daqp/types.h +161 -0
- casadi/include/daqp/utils.h +44 -0
- casadi/include/fatrop/auxiliary/Common.hpp +34 -0
- casadi/include/fatrop/auxiliary/DynamicLib.hpp +34 -0
- casadi/include/fatrop/auxiliary/FatropOptions.hpp +68 -0
- casadi/include/fatrop/auxiliary/FatropVector.hpp +143 -0
- casadi/include/fatrop/auxiliary/LinearAlgebra.hpp +88 -0
- casadi/include/fatrop/auxiliary/VectorUtils.hpp +54 -0
- casadi/include/fatrop/blasfeo_wrapper/LinearAlgebraBlasfeo.hpp +493 -0
- casadi/include/fatrop/fatrop.hpp +39 -0
- casadi/include/fatrop/function_evaluation/CasadiCodegen.hpp +104 -0
- casadi/include/fatrop/function_evaluation/FunctionEvaluation.hpp +60 -0
- casadi/include/fatrop/json/json.h +946 -0
- casadi/include/fatrop/ocp/CasadiCApiUserdataWrap.hpp +87 -0
- casadi/include/fatrop/ocp/DuInfEvaluator.hpp +38 -0
- casadi/include/fatrop/ocp/FatropOCP.hpp +161 -0
- casadi/include/fatrop/ocp/FatropOCPBuilder.hpp +52 -0
- casadi/include/fatrop/ocp/FatropOCPResto.hpp +299 -0
- casadi/include/fatrop/ocp/OCP.hpp +82 -0
- casadi/include/fatrop/ocp/OCPAbstract.hpp +254 -0
- casadi/include/fatrop/ocp/OCPAdapter.hpp +197 -0
- casadi/include/fatrop/ocp/OCPCInterface.h +289 -0
- casadi/include/fatrop/ocp/OCPDims.hpp +60 -0
- casadi/include/fatrop/ocp/OCPInitializer.hpp +41 -0
- casadi/include/fatrop/ocp/OCPKKT.hpp +69 -0
- casadi/include/fatrop/ocp/OCPLSRiccati.hpp +198 -0
- casadi/include/fatrop/ocp/OCPLSScaler.hpp +66 -0
- casadi/include/fatrop/ocp/OCPLinearSolver.hpp +75 -0
- casadi/include/fatrop/ocp/OCPNoScaling.hpp +42 -0
- casadi/include/fatrop/ocp/OCPScalingMethod.hpp +42 -0
- casadi/include/fatrop/ocp/StageOCP.hpp +592 -0
- casadi/include/fatrop/ocp/StageOCPApplication.hpp +242 -0
- casadi/include/fatrop/ocp/StageOCPExpressions.hpp +182 -0
- casadi/include/fatrop/ocp/UStageEvalAbstract.hpp +168 -0
- casadi/include/fatrop/ocp/UStageOCPImpl.hpp +152 -0
- casadi/include/fatrop/quasi_newton/bfgs.hpp +159 -0
- casadi/include/fatrop/solver/AlgBuilder.hpp +76 -0
- casadi/include/fatrop/solver/AlgStrategy.hpp +33 -0
- casadi/include/fatrop/solver/FatropAlg.hpp +121 -0
- casadi/include/fatrop/solver/FatropData.hpp +188 -0
- casadi/include/fatrop/solver/FatropOptions.hpp +95 -0
- casadi/include/fatrop/solver/FatropPrinter.hpp +65 -0
- casadi/include/fatrop/solver/FatropStats.hpp +63 -0
- casadi/include/fatrop/solver/Filter.hpp +54 -0
- casadi/include/fatrop/solver/IterationData.hpp +56 -0
- casadi/include/fatrop/solver/LineSearch.hpp +86 -0
- casadi/include/fatrop/solver/NLPL1.hpp +263 -0
- casadi/include/fatrop/templates/NLPAlg.hpp +104 -0
- casadi/include/highs/HConfig.h +8 -7
- casadi/include/highs/Highs.h +93 -23
- casadi/include/highs/filereaderlp/def.hpp +19 -0
- casadi/include/highs/interfaces/highs_c_api.h +200 -24
- casadi/include/highs/io/Filereader.h +1 -1
- casadi/include/highs/io/FilereaderEms.h +1 -1
- casadi/include/highs/io/FilereaderLp.h +1 -1
- casadi/include/highs/io/FilereaderMps.h +1 -1
- casadi/include/highs/io/HMPSIO.h +1 -1
- casadi/include/highs/io/HMpsFF.h +5 -3
- casadi/include/highs/io/HighsIO.h +18 -8
- casadi/include/highs/io/LoadOptions.h +1 -1
- casadi/include/highs/ipm/IpxSolution.h +35 -0
- casadi/include/highs/ipm/IpxWrapper.h +1 -1
- casadi/include/highs/ipm/basiclu/basiclu.h +161 -0
- casadi/include/highs/ipm/basiclu/basiclu_factorize.h +247 -0
- casadi/include/highs/ipm/basiclu/basiclu_get_factors.h +108 -0
- casadi/include/highs/ipm/basiclu/basiclu_initialize.h +119 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_factorize.h +34 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_free.h +19 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_get_factors.h +34 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_initialize.h +46 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_solve_dense.h +29 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_solve_for_update.h +42 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_solve_sparse.h +32 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_update.h +31 -0
- casadi/include/highs/ipm/basiclu/basiclu_object.h +30 -0
- casadi/include/highs/ipm/basiclu/basiclu_solve_dense.h +75 -0
- casadi/include/highs/ipm/basiclu/basiclu_solve_for_update.h +169 -0
- casadi/include/highs/ipm/basiclu/basiclu_solve_sparse.h +112 -0
- casadi/include/highs/ipm/basiclu/basiclu_update.h +125 -0
- casadi/include/highs/ipm/basiclu/lu_def.h +39 -0
- casadi/include/highs/ipm/basiclu/lu_file.h +21 -0
- casadi/include/highs/ipm/basiclu/lu_internal.h +220 -0
- casadi/include/highs/ipm/basiclu/lu_list.h +168 -0
- casadi/include/highs/ipm/ipx/basiclu_kernel.h +20 -0
- casadi/include/highs/ipm/ipx/basiclu_wrapper.h +47 -0
- casadi/include/highs/ipm/ipx/basis.h +351 -0
- casadi/include/highs/ipm/ipx/conjugate_residuals.h +74 -0
- casadi/include/highs/ipm/ipx/control.h +163 -0
- casadi/include/highs/ipm/ipx/crossover.h +157 -0
- casadi/include/highs/ipm/ipx/diagonal_precond.h +45 -0
- casadi/include/highs/ipm/ipx/forrest_tomlin.h +102 -0
- casadi/include/highs/ipm/ipx/guess_basis.h +21 -0
- casadi/include/highs/ipm/ipx/indexed_vector.h +113 -0
- casadi/include/highs/ipm/ipx/info.h +27 -0
- casadi/include/highs/ipm/ipx/ipm.h +94 -0
- casadi/include/highs/ipm/ipx/ipx_c.h +47 -0
- casadi/include/highs/ipm/ipx/ipx_config.h +9 -0
- casadi/include/highs/ipm/ipx/ipx_info.h +111 -0
- casadi/include/highs/ipm/ipx/ipx_internal.h +88 -0
- casadi/include/highs/ipm/ipx/ipx_parameters.h +75 -0
- casadi/include/highs/ipm/ipx/ipx_status.h +57 -0
- casadi/include/highs/ipm/ipx/iterate.h +328 -0
- casadi/include/highs/ipm/ipx/kkt_solver.h +70 -0
- casadi/include/highs/ipm/ipx/kkt_solver_basis.h +66 -0
- casadi/include/highs/ipm/ipx/kkt_solver_diag.h +48 -0
- casadi/include/highs/ipm/ipx/linear_operator.h +26 -0
- casadi/include/highs/ipm/ipx/lp_solver.h +201 -0
- casadi/include/highs/ipm/ipx/lu_factorization.h +79 -0
- casadi/include/highs/ipm/ipx/lu_update.h +129 -0
- casadi/include/highs/ipm/ipx/maxvolume.h +54 -0
- casadi/include/highs/ipm/ipx/model.h +409 -0
- casadi/include/highs/ipm/ipx/multistream.h +52 -0
- casadi/include/highs/ipm/ipx/normal_matrix.h +44 -0
- casadi/include/highs/ipm/ipx/power_method.h +44 -0
- casadi/include/highs/ipm/ipx/sparse_matrix.h +195 -0
- casadi/include/highs/ipm/ipx/sparse_utils.h +58 -0
- casadi/include/highs/ipm/ipx/splitted_normal_matrix.h +63 -0
- casadi/include/highs/ipm/ipx/starting_basis.h +39 -0
- casadi/include/highs/ipm/ipx/symbolic_invert.h +29 -0
- casadi/include/highs/ipm/ipx/timer.h +24 -0
- casadi/include/highs/ipm/ipx/utils.h +39 -0
- casadi/include/highs/lp_data/HConst.h +20 -10
- casadi/include/highs/lp_data/HStruct.h +23 -1
- casadi/include/highs/lp_data/HighsAnalysis.h +1 -1
- casadi/include/highs/lp_data/HighsCallback.h +10 -3
- casadi/include/highs/lp_data/HighsCallbackStruct.h +31 -5
- casadi/include/highs/lp_data/HighsDebug.h +1 -1
- casadi/include/highs/lp_data/HighsInfo.h +20 -2
- casadi/include/highs/lp_data/HighsInfoDebug.h +1 -1
- casadi/include/highs/lp_data/HighsLp.h +17 -1
- casadi/include/highs/lp_data/HighsLpSolverObject.h +1 -1
- casadi/include/highs/lp_data/HighsLpUtils.h +19 -19
- casadi/include/highs/lp_data/HighsModelUtils.h +1 -1
- casadi/include/highs/lp_data/HighsOptions.h +237 -10
- casadi/include/highs/lp_data/HighsRanging.h +1 -1
- casadi/include/highs/lp_data/HighsRuntimeOptions.h +2 -2
- casadi/include/highs/lp_data/HighsSolution.h +2 -2
- casadi/include/highs/lp_data/HighsSolutionDebug.h +1 -1
- casadi/include/highs/lp_data/HighsSolve.h +3 -1
- casadi/include/highs/lp_data/HighsStatus.h +1 -1
- casadi/include/highs/mip/HighsCliqueTable.h +4 -4
- casadi/include/highs/mip/HighsConflictPool.h +1 -1
- casadi/include/highs/mip/HighsCutGeneration.h +1 -1
- casadi/include/highs/mip/HighsCutPool.h +2 -2
- casadi/include/highs/mip/HighsDebugSol.h +22 -29
- casadi/include/highs/mip/HighsDomain.h +10 -2
- casadi/include/highs/mip/HighsDomainChange.h +1 -1
- casadi/include/highs/mip/HighsDynamicRowMatrix.h +5 -3
- casadi/include/highs/mip/HighsGFkSolve.h +3 -3
- casadi/include/highs/mip/HighsImplications.h +3 -3
- casadi/include/highs/mip/HighsLpAggregator.h +1 -1
- casadi/include/highs/mip/HighsLpRelaxation.h +6 -1
- casadi/include/highs/mip/HighsMipSolver.h +4 -2
- casadi/include/highs/mip/HighsMipSolverData.h +47 -4
- casadi/include/highs/mip/HighsModkSeparator.h +2 -2
- casadi/include/highs/mip/HighsNodeQueue.h +5 -3
- casadi/include/highs/mip/HighsObjectiveFunction.h +1 -1
- casadi/include/highs/mip/HighsPathSeparator.h +2 -2
- casadi/include/highs/mip/HighsPrimalHeuristics.h +1 -1
- casadi/include/highs/mip/HighsPseudocost.h +35 -23
- casadi/include/highs/mip/HighsRedcostFixing.h +1 -1
- casadi/include/highs/mip/HighsSearch.h +2 -1
- casadi/include/highs/mip/HighsSeparation.h +1 -1
- casadi/include/highs/mip/HighsSeparator.h +1 -1
- casadi/include/highs/mip/HighsTableauSeparator.h +1 -1
- casadi/include/highs/mip/HighsTransformedLp.h +1 -1
- casadi/include/highs/model/HighsHessian.h +5 -0
- casadi/include/highs/model/HighsHessianUtils.h +2 -0
- casadi/include/highs/model/HighsModel.h +10 -1
- casadi/include/highs/parallel/HighsMutex.h +2 -1
- casadi/include/highs/parallel/HighsParallel.h +7 -2
- casadi/include/highs/parallel/HighsTask.h +1 -2
- casadi/include/highs/pdlp/CupdlpWrapper.h +93 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +41 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +423 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +183 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +19 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +31 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_scaling_cuda.h +28 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +98 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +33 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +1726 -0
- casadi/include/highs/pdqsort/pdqsort.h +532 -0
- casadi/include/highs/presolve/HPresolve.h +27 -14
- casadi/include/highs/presolve/HPresolveAnalysis.h +1 -1
- casadi/include/highs/presolve/HighsPostsolveStack.h +92 -68
- casadi/include/highs/presolve/HighsSymmetry.h +6 -5
- casadi/include/highs/presolve/ICrash.h +8 -2
- casadi/include/highs/presolve/ICrashUtil.h +1 -1
- casadi/include/highs/presolve/ICrashX.h +1 -1
- casadi/include/highs/presolve/PresolveComponent.h +1 -1
- casadi/include/highs/qpsolver/a_asm.hpp +23 -12
- casadi/include/highs/qpsolver/a_quass.hpp +8 -1
- casadi/include/highs/qpsolver/basis.hpp +150 -0
- casadi/include/highs/qpsolver/crashsolution.hpp +12 -0
- casadi/include/highs/qpsolver/dantzigpricing.hpp +72 -0
- casadi/include/highs/qpsolver/devexpricing.hpp +99 -0
- casadi/include/highs/qpsolver/eventhandler.hpp +23 -0
- casadi/include/highs/qpsolver/factor.hpp +400 -0
- casadi/include/highs/qpsolver/feasibility_bounded.hpp +105 -0
- casadi/include/highs/qpsolver/feasibility_highs.hpp +270 -0
- casadi/include/highs/qpsolver/gradient.hpp +39 -0
- casadi/include/highs/qpsolver/instance.hpp +63 -0
- casadi/include/highs/qpsolver/matrix.hpp +335 -0
- casadi/include/highs/qpsolver/pricing.hpp +15 -0
- casadi/include/highs/qpsolver/qpconst.hpp +27 -0
- casadi/include/highs/qpsolver/{vector.hpp → qpvector.hpp} +25 -25
- casadi/include/highs/qpsolver/quass.hpp +1 -1
- casadi/include/highs/qpsolver/ratiotest.hpp +19 -0
- casadi/include/highs/qpsolver/runtime.hpp +38 -0
- casadi/include/highs/qpsolver/settings.hpp +57 -0
- casadi/include/highs/qpsolver/snippets.hpp +29 -0
- casadi/include/highs/qpsolver/statistics.hpp +23 -0
- casadi/include/highs/qpsolver/steepestedgepricing.hpp +167 -0
- casadi/include/highs/simplex/HApp.h +1 -1
- casadi/include/highs/simplex/HEkk.h +52 -18
- casadi/include/highs/simplex/HEkkDual.h +1 -1
- casadi/include/highs/simplex/HEkkDualRHS.h +6 -7
- casadi/include/highs/simplex/HEkkDualRow.h +2 -2
- casadi/include/highs/simplex/HEkkPrimal.h +6 -1
- casadi/include/highs/simplex/HSimplex.h +1 -3
- casadi/include/highs/simplex/HSimplexDebug.h +1 -1
- casadi/include/highs/simplex/HSimplexNla.h +1 -1
- casadi/include/highs/simplex/HSimplexReport.h +1 -1
- casadi/include/highs/simplex/HighsSimplexAnalysis.h +228 -100
- casadi/include/highs/simplex/SimplexConst.h +1 -1
- casadi/include/highs/simplex/SimplexStruct.h +2 -2
- casadi/include/highs/simplex/SimplexTimer.h +1 -1
- casadi/include/highs/test/DevKkt.h +1 -1
- casadi/include/highs/test/KktCh2.h +1 -1
- casadi/include/highs/util/FactorTimer.h +1 -1
- casadi/include/highs/util/HFactor.h +35 -6
- casadi/include/highs/util/HFactorConst.h +1 -1
- casadi/include/highs/util/HFactorDebug.h +1 -1
- casadi/include/highs/util/HSet.h +1 -1
- casadi/include/highs/util/HVector.h +1 -1
- casadi/include/highs/util/HVectorBase.h +1 -1
- casadi/include/highs/util/HighsCDouble.h +3 -3
- casadi/include/highs/util/HighsComponent.h +1 -1
- casadi/include/highs/util/HighsDataStack.h +4 -4
- casadi/include/highs/util/HighsDisjointSets.h +1 -1
- casadi/include/highs/util/HighsHash.h +28 -21
- casadi/include/highs/util/HighsHashTree.h +63 -63
- casadi/include/highs/util/HighsInt.h +1 -1
- casadi/include/highs/util/HighsIntegers.h +8 -9
- casadi/include/highs/util/HighsLinearSumBounds.h +1 -1
- casadi/include/highs/util/HighsMatrixPic.h +1 -1
- casadi/include/highs/util/HighsMatrixSlice.h +9 -6
- casadi/include/highs/util/HighsMatrixUtils.h +1 -1
- casadi/include/highs/util/HighsMemoryAllocation.h +55 -0
- casadi/include/highs/util/HighsRandom.h +27 -15
- casadi/include/highs/util/HighsRbTree.h +2 -2
- casadi/include/highs/util/HighsSort.h +7 -7
- casadi/include/highs/util/HighsSparseMatrix.h +5 -2
- casadi/include/highs/util/HighsSparseVectorSum.h +2 -2
- casadi/include/highs/util/HighsSplay.h +1 -1
- casadi/include/highs/util/HighsTimer.h +18 -9
- casadi/include/highs/util/HighsUtils.h +15 -8
- casadi/include/highs/util/stringutil.h +9 -4
- casadi/include/highs/zstr/strict_fstream.hpp +237 -0
- casadi/include/highs/zstr/zstr.hpp +472 -0
- casadi/include/highs_export.h +43 -0
- casadi/include/licenses/daqp-external/LICENSE +21 -0
- casadi/include/licenses/{alpaqa-external/LICENSE → fatrop-external/LICENSE.txt} +2 -2
- casadi/include/licenses/fatrop-external/external/blasfeo/LICENSE.txt +26 -0
- casadi/include/licenses/fatrop-external/external/pybind11/LICENSE +29 -0
- casadi/include/licenses/fatrop-external/misc/license_header.txt +17 -0
- casadi/include/licenses/highs-external/{LICENSE → LICENSE.txt} +1 -1
- casadi/include/osqp/constants.h +2 -3
- casadi/include/osqp/version.h +9 -0
- casadi/include/sleqp/defs.h +4 -4
- casadi/include/sleqp/export.h +1 -0
- casadi/lib/cmake/tinyxml2/tinyxml2-config-version.cmake +0 -5
- casadi/lib/cmake/tinyxml2/tinyxml2-static-targets.cmake +10 -6
- casadi/lib/libtinyxml2.a +0 -0
- casadi/lib/pkgconfig/tinyxml2.pc +1 -1
- casadi/libCbc.3.10.11.dylib +0 -0
- casadi/libCbc.3.dylib +0 -0
- casadi/libCbc.dylib +0 -0
- casadi/libCbc.la +2 -2
- casadi/libCbcSolver.3.10.11.dylib +0 -0
- casadi/libCbcSolver.3.dylib +0 -0
- casadi/libCbcSolver.dylib +0 -0
- casadi/libCbcSolver.la +2 -2
- casadi/libCgl.1.10.8.dylib +0 -0
- casadi/libCgl.1.dylib +0 -0
- casadi/libCgl.dylib +0 -0
- casadi/libCgl.la +2 -2
- casadi/libClp.1.14.9.dylib +0 -0
- casadi/libClp.1.dylib +0 -0
- casadi/libClp.dylib +0 -0
- casadi/libClp.la +2 -2
- casadi/libClpSolver.1.14.9.dylib +0 -0
- casadi/libClpSolver.1.dylib +0 -0
- casadi/libClpSolver.dylib +0 -0
- casadi/libClpSolver.la +2 -2
- casadi/libCoinUtils.3.11.10.dylib +0 -0
- casadi/libCoinUtils.3.dylib +0 -0
- casadi/libCoinUtils.dylib +0 -0
- casadi/libCoinUtils.la +1 -1
- casadi/libOsi.1.13.9.dylib +0 -0
- casadi/libOsi.1.dylib +0 -0
- casadi/libOsi.dylib +0 -0
- casadi/libOsi.la +2 -2
- casadi/libOsiCbc.3.10.11.dylib +0 -0
- casadi/libOsiCbc.3.dylib +0 -0
- casadi/libOsiCbc.dylib +0 -0
- casadi/libOsiCbc.la +2 -2
- casadi/libOsiClp.1.14.9.dylib +0 -0
- casadi/libOsiClp.1.dylib +0 -0
- casadi/libOsiClp.dylib +0 -0
- casadi/libOsiClp.la +2 -2
- casadi/libOsiCommonTests.1.13.9.dylib +0 -0
- casadi/libOsiCommonTests.1.dylib +0 -0
- casadi/libOsiCommonTests.dylib +0 -0
- casadi/libOsiCommonTests.la +2 -2
- casadi/libblasfeo.dylib +0 -0
- casadi/libbonmin.4.8.9.dylib +0 -0
- casadi/libbonmin.4.dylib +0 -0
- casadi/libbonmin.dylib +0 -0
- casadi/libbonmin.la +2 -2
- casadi/libc++.1.0.dylib +0 -0
- casadi/libcasadi.3.7.dylib +0 -0
- casadi/libcasadi.dylib +0 -0
- casadi/libcasadi_conic_cbc.3.7.dylib +0 -0
- casadi/libcasadi_conic_cbc.dylib +0 -0
- casadi/libcasadi_conic_clp.3.7.dylib +0 -0
- casadi/libcasadi_conic_clp.dylib +0 -0
- casadi/libcasadi_conic_cplex.3.7.dylib +0 -0
- casadi/libcasadi_conic_cplex.dylib +0 -0
- casadi/libcasadi_conic_daqp.3.7.dylib +0 -0
- casadi/libcasadi_conic_daqp.dylib +0 -0
- casadi/libcasadi_conic_fatrop.3.7.dylib +0 -0
- casadi/libcasadi_conic_fatrop.dylib +0 -0
- casadi/libcasadi_conic_gurobi.3.7.dylib +0 -0
- casadi/libcasadi_conic_gurobi.dylib +0 -0
- casadi/libcasadi_conic_highs.3.7.dylib +0 -0
- casadi/libcasadi_conic_highs.dylib +0 -0
- casadi/libcasadi_conic_ipqp.3.7.dylib +0 -0
- casadi/libcasadi_conic_ipqp.dylib +0 -0
- casadi/libcasadi_conic_nlpsol.3.7.dylib +0 -0
- casadi/libcasadi_conic_nlpsol.dylib +0 -0
- casadi/libcasadi_conic_osqp.3.7.dylib +0 -0
- casadi/libcasadi_conic_osqp.dylib +0 -0
- casadi/libcasadi_conic_proxqp.3.7.dylib +0 -0
- casadi/libcasadi_conic_proxqp.dylib +0 -0
- casadi/libcasadi_conic_qpoases.3.7.dylib +0 -0
- casadi/libcasadi_conic_qpoases.dylib +0 -0
- casadi/libcasadi_conic_qrqp.3.7.dylib +0 -0
- casadi/libcasadi_conic_qrqp.dylib +0 -0
- casadi/libcasadi_conic_superscs.3.7.dylib +0 -0
- casadi/libcasadi_conic_superscs.dylib +0 -0
- casadi/libcasadi_importer_shell.3.7.dylib +0 -0
- casadi/libcasadi_importer_shell.dylib +0 -0
- casadi/libcasadi_integrator_collocation.3.7.dylib +0 -0
- casadi/libcasadi_integrator_collocation.dylib +0 -0
- casadi/libcasadi_integrator_cvodes.3.7.dylib +0 -0
- casadi/libcasadi_integrator_cvodes.dylib +0 -0
- casadi/libcasadi_integrator_idas.3.7.dylib +0 -0
- casadi/libcasadi_integrator_idas.dylib +0 -0
- casadi/libcasadi_integrator_rk.3.7.dylib +0 -0
- casadi/libcasadi_integrator_rk.dylib +0 -0
- casadi/libcasadi_interpolant_bspline.3.7.dylib +0 -0
- casadi/libcasadi_interpolant_bspline.dylib +0 -0
- casadi/libcasadi_interpolant_linear.3.7.dylib +0 -0
- casadi/libcasadi_interpolant_linear.dylib +0 -0
- casadi/libcasadi_linsol_csparse.3.7.dylib +0 -0
- casadi/libcasadi_linsol_csparse.dylib +0 -0
- casadi/libcasadi_linsol_csparsecholesky.3.7.dylib +0 -0
- casadi/libcasadi_linsol_csparsecholesky.dylib +0 -0
- casadi/libcasadi_linsol_lapacklu.3.7.dylib +0 -0
- casadi/libcasadi_linsol_lapacklu.dylib +0 -0
- casadi/libcasadi_linsol_lapackqr.3.7.dylib +0 -0
- casadi/libcasadi_linsol_lapackqr.dylib +0 -0
- casadi/libcasadi_linsol_ldl.3.7.dylib +0 -0
- casadi/libcasadi_linsol_ldl.dylib +0 -0
- casadi/libcasadi_linsol_lsqr.3.7.dylib +0 -0
- casadi/libcasadi_linsol_lsqr.dylib +0 -0
- casadi/libcasadi_linsol_ma27.3.7.dylib +0 -0
- casadi/libcasadi_linsol_ma27.dylib +0 -0
- casadi/libcasadi_linsol_mumps.3.7.dylib +0 -0
- casadi/libcasadi_linsol_mumps.dylib +0 -0
- casadi/libcasadi_linsol_qr.3.7.dylib +0 -0
- casadi/libcasadi_linsol_qr.dylib +0 -0
- casadi/libcasadi_linsol_symbolicqr.3.7.dylib +0 -0
- casadi/libcasadi_linsol_symbolicqr.dylib +0 -0
- casadi/libcasadi_linsol_tridiag.3.7.dylib +0 -0
- casadi/libcasadi_linsol_tridiag.dylib +0 -0
- casadi/libcasadi_nlpsol_ampl.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_ampl.dylib +0 -0
- casadi/libcasadi_nlpsol_blocksqp.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_blocksqp.dylib +0 -0
- casadi/libcasadi_nlpsol_bonmin.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_bonmin.dylib +0 -0
- casadi/libcasadi_nlpsol_fatrop.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_fatrop.dylib +0 -0
- casadi/libcasadi_nlpsol_feasiblesqpmethod.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_feasiblesqpmethod.dylib +0 -0
- casadi/libcasadi_nlpsol_ipopt.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_ipopt.dylib +0 -0
- casadi/libcasadi_nlpsol_knitro.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_knitro.dylib +0 -0
- casadi/libcasadi_nlpsol_madnlp.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_madnlp.dylib +0 -0
- casadi/libcasadi_nlpsol_qrsqp.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_qrsqp.dylib +0 -0
- casadi/libcasadi_nlpsol_scpgen.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_scpgen.dylib +0 -0
- casadi/libcasadi_nlpsol_sleqp.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_sleqp.dylib +0 -0
- casadi/libcasadi_nlpsol_snopt.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_snopt.dylib +0 -0
- casadi/libcasadi_nlpsol_sqpmethod.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_sqpmethod.dylib +0 -0
- casadi/libcasadi_rootfinder_fast_newton.3.7.dylib +0 -0
- casadi/libcasadi_rootfinder_fast_newton.dylib +0 -0
- casadi/libcasadi_rootfinder_kinsol.3.7.dylib +0 -0
- casadi/libcasadi_rootfinder_kinsol.dylib +0 -0
- casadi/libcasadi_rootfinder_newton.3.7.dylib +0 -0
- casadi/libcasadi_rootfinder_newton.dylib +0 -0
- casadi/libcasadi_rootfinder_nlpsol.3.7.dylib +0 -0
- casadi/libcasadi_rootfinder_nlpsol.dylib +0 -0
- casadi/libcasadi_sundials_common.3.7.dylib +0 -0
- casadi/libcasadi_sundials_common.dylib +0 -0
- casadi/libcasadi_xmlfile_tinyxml.3.7.dylib +0 -0
- casadi/libcasadi_xmlfile_tinyxml.dylib +0 -0
- casadi/libcoinmetis.2.dylib +0 -0
- casadi/libcoinmetis.dylib +0 -0
- casadi/libcoinmetis.la +1 -1
- casadi/libcoinmumps.3.dylib +0 -0
- casadi/libcoinmumps.dylib +0 -0
- casadi/libcoinmumps.la +2 -2
- casadi/libcplex_adaptor.dylib +0 -0
- casadi/{libamd.3.0.3.dylib → libdaqp.dylib} +0 -0
- casadi/libdaqpstat.a +0 -0
- casadi/libfatrop.dylib +0 -0
- casadi/libgcc_s.1.1.dylib +0 -0
- casadi/libgfortran.5.dylib +0 -0
- casadi/libgurobi_adaptor.dylib +0 -0
- casadi/libhighs.1.7.dylib +0 -0
- casadi/libhighs.1.dylib +0 -0
- casadi/libhighs.dylib +0 -0
- casadi/libindirect.a +0 -0
- casadi/libipopt.3.dylib +0 -0
- casadi/libipopt.dylib +0 -0
- casadi/libipopt.la +2 -2
- casadi/liblinsys.a +0 -0
- casadi/{libsuitesparseconfig.7.0.1.dylib → libmatlab_ipc.dylib} +0 -0
- casadi/libosqp.a +0 -0
- casadi/libosqp.dylib +0 -0
- casadi/libqdldl.a +0 -0
- casadi/libqdldl.dylib +0 -0
- casadi/libquadmath.0.dylib +0 -0
- casadi/libsipopt.3.dylib +0 -0
- casadi/libsipopt.dylib +0 -0
- casadi/libsipopt.la +2 -2
- casadi/libsleqp.1.0.1.dylib +0 -0
- casadi/libsleqp.dylib +0 -0
- casadi/libsuperscs.a +0 -0
- casadi/libtrlib.0.4.dylib +0 -0
- casadi/libtrlib.dylib +0 -0
- casadi/libz.1.2.13.dylib +0 -0
- casadi/pkgconfig/bonmin.pc +1 -1
- casadi/pkgconfig/casadi.pc +5 -5
- casadi/pkgconfig/cbc.pc +1 -1
- casadi/pkgconfig/cgl.pc +1 -1
- casadi/pkgconfig/clp.pc +1 -1
- casadi/pkgconfig/coinmetis.pc +1 -1
- casadi/pkgconfig/coinmumps.pc +2 -2
- casadi/pkgconfig/coinutils.pc +2 -2
- casadi/pkgconfig/highs.pc +4 -4
- casadi/pkgconfig/ipopt.pc +2 -2
- casadi/pkgconfig/osi-cbc.pc +1 -1
- casadi/pkgconfig/osi-clp.pc +1 -1
- casadi/pkgconfig/osi-unittests.pc +1 -1
- casadi/pkgconfig/osi.pc +1 -1
- casadi/pkgconfig/sleqp.pc +1 -1
- casadi/tools/__init__.py +4 -0
- casadi/tools/bounds.py +3 -3
- {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/METADATA +2 -2
- {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/RECORD +532 -477
- casadi/cmake/alpaqa/alpaqaConfig.cmake +0 -24
- casadi/cmake/alpaqa/alpaqaConfigVersion.cmake +0 -70
- casadi/cmake/alpaqa/alpaqaTargets-release.cmake +0 -19
- casadi/cmake/alpaqa/alpaqaTargets.cmake +0 -116
- casadi/include/alpaqa/accelerators/anderson.hpp +0 -133
- casadi/include/alpaqa/accelerators/internal/anderson-helpers.hpp +0 -92
- casadi/include/alpaqa/accelerators/internal/limited-memory-qr.hpp +0 -295
- casadi/include/alpaqa/accelerators/lbfgs.hpp +0 -244
- casadi/include/alpaqa/accelerators/steihaugcg.hpp +0 -143
- casadi/include/alpaqa/alpaqa.hpp +0 -3
- casadi/include/alpaqa/casadi/CasADiControlProblem.hpp +0 -185
- casadi/include/alpaqa/casadi/CasADiFunctionWrapper.hpp +0 -104
- casadi/include/alpaqa/casadi/CasADiProblem.hpp +0 -102
- casadi/include/alpaqa/casadi-loader-export.hpp +0 -15
- casadi/include/alpaqa/casadi-ocp-loader-export.hpp +0 -15
- casadi/include/alpaqa/config/config.hpp +0 -165
- casadi/include/alpaqa/dl/dl-problem.h +0 -476
- casadi/include/alpaqa/dl/dl-problem.hpp +0 -301
- casadi/include/alpaqa/export.h +0 -42
- casadi/include/alpaqa/export.hpp +0 -30
- casadi/include/alpaqa/implementation/accelerators/lbfgs.tpp +0 -240
- casadi/include/alpaqa/implementation/casadi/CasADiControlProblem.tpp +0 -594
- casadi/include/alpaqa/implementation/casadi/CasADiLoader-util.hpp +0 -50
- casadi/include/alpaqa/implementation/casadi/CasADiProblem.tpp +0 -425
- casadi/include/alpaqa/implementation/inner/directions/panoc/structured-lbfgs.tpp +0 -164
- casadi/include/alpaqa/implementation/inner/panoc-helpers.tpp +0 -389
- casadi/include/alpaqa/implementation/inner/panoc-ocp.tpp +0 -798
- casadi/include/alpaqa/implementation/inner/panoc.tpp +0 -448
- casadi/include/alpaqa/implementation/inner/pantr.tpp +0 -474
- casadi/include/alpaqa/implementation/inner/zerofpr.tpp +0 -482
- casadi/include/alpaqa/implementation/outer/alm.tpp +0 -228
- casadi/include/alpaqa/implementation/outer/internal/alm-helpers.tpp +0 -80
- casadi/include/alpaqa/implementation/params/params.tpp +0 -158
- casadi/include/alpaqa/implementation/problem/ocproblem.tpp +0 -56
- casadi/include/alpaqa/implementation/problem/type-erased-problem.tpp +0 -211
- casadi/include/alpaqa/implementation/util/io/csv.tpp +0 -120
- casadi/include/alpaqa/implementation/util/print.tpp +0 -151
- casadi/include/alpaqa/inner/directions/panoc/anderson.hpp +0 -98
- casadi/include/alpaqa/inner/directions/panoc/lbfgs.hpp +0 -94
- casadi/include/alpaqa/inner/directions/panoc/structured-lbfgs.hpp +0 -146
- casadi/include/alpaqa/inner/directions/panoc/structured-newton.hpp +0 -264
- casadi/include/alpaqa/inner/directions/panoc-direction-update.hpp +0 -96
- casadi/include/alpaqa/inner/directions/panoc-ocp/lqr.hpp +0 -181
- casadi/include/alpaqa/inner/directions/panoc-ocp/ocp-vars.hpp +0 -492
- casadi/include/alpaqa/inner/directions/pantr/newton-tr.hpp +0 -192
- casadi/include/alpaqa/inner/directions/pantr/pantr-direction.hpp +0 -99
- casadi/include/alpaqa/inner/inner-solve-options.hpp +0 -30
- casadi/include/alpaqa/inner/internal/lipschitz.hpp +0 -27
- casadi/include/alpaqa/inner/internal/panoc-helpers.hpp +0 -10
- casadi/include/alpaqa/inner/internal/panoc-stop-crit.hpp +0 -124
- casadi/include/alpaqa/inner/internal/solverstatus.hpp +0 -42
- casadi/include/alpaqa/inner/panoc-ocp.hpp +0 -302
- casadi/include/alpaqa/inner/panoc.hpp +0 -274
- casadi/include/alpaqa/inner/pantr.hpp +0 -284
- casadi/include/alpaqa/inner/zerofpr.hpp +0 -274
- casadi/include/alpaqa/ipopt/ipopt-adapter.hpp +0 -81
- casadi/include/alpaqa/ipopt/ipopt-enums.hpp +0 -35
- casadi/include/alpaqa/lbfgsb/lbfgsb-adapter.hpp +0 -111
- casadi/include/alpaqa/newton-tr-pantr-alm.hpp +0 -27
- casadi/include/alpaqa/outer/alm.hpp +0 -190
- casadi/include/alpaqa/outer/internal/alm-helpers.hpp +0 -10
- casadi/include/alpaqa/panoc-alm.hpp +0 -27
- casadi/include/alpaqa/panoc-anderson-alm.hpp +0 -27
- casadi/include/alpaqa/params/params.hpp +0 -60
- casadi/include/alpaqa/problem/box-constr-problem.hpp +0 -220
- casadi/include/alpaqa/problem/box.hpp +0 -82
- casadi/include/alpaqa/problem/functional-problem.hpp +0 -73
- casadi/include/alpaqa/problem/kkt-error.hpp +0 -43
- casadi/include/alpaqa/problem/ocproblem-counters.hpp +0 -116
- casadi/include/alpaqa/problem/ocproblem.hpp +0 -662
- casadi/include/alpaqa/problem/problem-counters.hpp +0 -116
- casadi/include/alpaqa/problem/problem-with-counters.hpp +0 -141
- casadi/include/alpaqa/problem/type-erased-problem.hpp +0 -874
- casadi/include/alpaqa/problem/unconstr-problem.hpp +0 -37
- casadi/include/alpaqa/structured-panoc-alm.hpp +0 -27
- casadi/include/alpaqa/structured-zerofpr-alm.hpp +0 -27
- casadi/include/alpaqa/util/alloc-check.hpp +0 -23
- casadi/include/alpaqa/util/atomic-stop-signal.hpp +0 -24
- casadi/include/alpaqa/util/check-dim.hpp +0 -64
- casadi/include/alpaqa/util/copyable_unique_ptr.hpp +0 -32
- casadi/include/alpaqa/util/demangled-typename.hpp +0 -9
- casadi/include/alpaqa/util/enumerate.hpp +0 -70
- casadi/include/alpaqa/util/float.hpp +0 -25
- casadi/include/alpaqa/util/index-set.hpp +0 -97
- casadi/include/alpaqa/util/io/csv.hpp +0 -43
- casadi/include/alpaqa/util/iter-adapter.hpp +0 -68
- casadi/include/alpaqa/util/max-history.hpp +0 -47
- casadi/include/alpaqa/util/noop-delete.hpp +0 -15
- casadi/include/alpaqa/util/not-implemented.hpp +0 -12
- casadi/include/alpaqa/util/print.hpp +0 -78
- casadi/include/alpaqa/util/quadmath/quadmath-print.hpp +0 -20
- casadi/include/alpaqa/util/quadmath/quadmath.hpp +0 -137
- casadi/include/alpaqa/util/required-method.hpp +0 -29
- casadi/include/alpaqa/util/ringbuffer.hpp +0 -212
- casadi/include/alpaqa/util/set-intersection.hpp +0 -129
- casadi/include/alpaqa/util/sparse-ops.hpp +0 -164
- casadi/include/alpaqa/util/timed.hpp +0 -22
- casadi/include/alpaqa/util/type-erasure.hpp +0 -568
- casadi/include/alpaqa/util/type-traits.hpp +0 -58
- casadi/include/alpaqa/zerofpr-alm.hpp +0 -27
- casadi/include/alpaqa/zerofpr-anderson-alm.hpp +0 -27
- casadi/include/alpaqa-version.h +0 -8
- casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
- casadi/include/licenses/alpaqa-external/src/thirdparty/lbfgsb/Lbfgsb.3.0/License.txt +0 -71
- casadi/libFortranHighs.dylib +0 -0
- casadi/libalpaqa.1.0.0.dylib +0 -0
- casadi/libalpaqa.dylib +0 -0
- casadi/libcamd.3.0.3.dylib +0 -0
- casadi/libcasadi_nlpsol_alpaqa.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_alpaqa.dylib +0 -0
- casadi/libccolamd.3.0.3.dylib +0 -0
- casadi/libcholmod.4.0.3.dylib +0 -0
- casadi/libcholmod_cuda.4.0.3.dylib +0 -0
- casadi/libcolamd.3.0.3.dylib +0 -0
- casadi/libhighs.1.6.0.dylib +0 -0
- casadi/libhighs.1.6.dylib +0 -0
- casadi/libumfpack.6.1.0.dylib +0 -0
- {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/WHEEL +0 -0
@@ -1,78 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
#include <alpaqa/export.hpp>
|
4
|
-
#include <alpaqa/util/float.hpp>
|
5
|
-
|
6
|
-
#include <iosfwd>
|
7
|
-
#include <limits>
|
8
|
-
#include <string>
|
9
|
-
#include <string_view>
|
10
|
-
|
11
|
-
#include <Eigen/Core>
|
12
|
-
|
13
|
-
namespace alpaqa {
|
14
|
-
|
15
|
-
template <std::floating_point F>
|
16
|
-
ALPAQA_EXPORT std::string
|
17
|
-
float_to_str(F value, int precision = std::numeric_limits<F>::max_digits10);
|
18
|
-
|
19
|
-
template <class T>
|
20
|
-
ALPAQA_EXPORT std::ostream &
|
21
|
-
print_csv_impl(std::ostream &os, const T &M, std::string_view sep = ",",
|
22
|
-
std::string_view begin = "", std::string_view end = "\n");
|
23
|
-
|
24
|
-
template <class T>
|
25
|
-
ALPAQA_EXPORT std::ostream &print_matlab_impl(std::ostream &os, const T &M,
|
26
|
-
std::string_view end = ";\n");
|
27
|
-
|
28
|
-
template <class T>
|
29
|
-
ALPAQA_EXPORT std::ostream &print_python_impl(std::ostream &os, const T &M,
|
30
|
-
std::string_view end = "\n");
|
31
|
-
|
32
|
-
#define ALPAQA_PRINT_CSV_OVL_IMPL(type) \
|
33
|
-
inline std::ostream &print_csv( \
|
34
|
-
std::ostream &os, const Eigen::Ref<const Eigen::MatrixX<type>> &M, \
|
35
|
-
std::string_view sep, std::string_view begin, std::string_view end) { \
|
36
|
-
return print_csv_impl(os, M, sep, begin, end); \
|
37
|
-
} \
|
38
|
-
inline std::ostream &print_csv( \
|
39
|
-
std::ostream &os, const Eigen::Ref<const Eigen::MatrixX<type>> &M, \
|
40
|
-
std::string_view sep, std::string_view begin) { \
|
41
|
-
return print_csv_impl(os, M, sep, begin); \
|
42
|
-
} \
|
43
|
-
inline std::ostream &print_csv( \
|
44
|
-
std::ostream &os, const Eigen::Ref<const Eigen::MatrixX<type>> &M, \
|
45
|
-
std::string_view sep) { \
|
46
|
-
return print_csv_impl(os, M, sep); \
|
47
|
-
} \
|
48
|
-
inline std::ostream &print_csv( \
|
49
|
-
std::ostream &os, const Eigen::Ref<const Eigen::MatrixX<type>> &M) { \
|
50
|
-
return print_csv_impl(os, M); \
|
51
|
-
}
|
52
|
-
#define ALPAQA_PRINT_OVL_IMPL(name, type) \
|
53
|
-
inline std::ostream &print_##name( \
|
54
|
-
std::ostream &os, const Eigen::Ref<const Eigen::MatrixX<type>> &M, \
|
55
|
-
std::string_view end) { \
|
56
|
-
return print_##name##_impl(os, M, end); \
|
57
|
-
} \
|
58
|
-
inline std::ostream &print_##name( \
|
59
|
-
std::ostream &os, const Eigen::Ref<const Eigen::MatrixX<type>> &M) { \
|
60
|
-
return print_##name##_impl(os, M); \
|
61
|
-
}
|
62
|
-
#define ALPAQA_PRINT_OVL(type) \
|
63
|
-
ALPAQA_PRINT_CSV_OVL_IMPL(type) \
|
64
|
-
ALPAQA_PRINT_OVL_IMPL(matlab, type) \
|
65
|
-
ALPAQA_PRINT_OVL_IMPL(python, type)
|
66
|
-
|
67
|
-
ALPAQA_PRINT_OVL(float)
|
68
|
-
ALPAQA_PRINT_OVL(double)
|
69
|
-
ALPAQA_PRINT_OVL(long double)
|
70
|
-
#ifdef ALPAQA_WITH_QUAD_PRECISION
|
71
|
-
ALPAQA_PRINT_OVL(__float128)
|
72
|
-
#endif
|
73
|
-
|
74
|
-
#undef ALPAQA_PRINT_OVL
|
75
|
-
#undef ALPAQA_PRINT_OVL_IMPL
|
76
|
-
#undef ALPAQA_PRINT_CSV_OVL_IMPL
|
77
|
-
|
78
|
-
} // namespace alpaqa
|
@@ -1,20 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
#ifdef ALPAQA_WITH_QUAD_PRECISION
|
4
|
-
|
5
|
-
#include <alpaqa/util/quadmath/quadmath.hpp>
|
6
|
-
|
7
|
-
#include <cassert>
|
8
|
-
#include <ostream>
|
9
|
-
|
10
|
-
namespace std {
|
11
|
-
inline ostream &operator<<(ostream &os, __float128 f) {
|
12
|
-
char buf[128];
|
13
|
-
auto precision = static_cast<int>(os.precision());
|
14
|
-
[[maybe_unused]] int n = quadmath_snprintf(buf, sizeof(buf), "%#.*Qg", precision, f);
|
15
|
-
assert((size_t)n < sizeof buf);
|
16
|
-
return os << buf;
|
17
|
-
}
|
18
|
-
} // namespace std
|
19
|
-
|
20
|
-
#endif
|
@@ -1,137 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
#ifdef ALPAQA_WITH_QUAD_PRECISION
|
4
|
-
#pragma GCC system_header
|
5
|
-
|
6
|
-
#include <quadmath.h>
|
7
|
-
|
8
|
-
#include <alpaqa/export.h>
|
9
|
-
|
10
|
-
#include <cmath>
|
11
|
-
#include <iosfwd>
|
12
|
-
#include <limits>
|
13
|
-
|
14
|
-
namespace std {
|
15
|
-
|
16
|
-
// From GCC 11's <limits>
|
17
|
-
|
18
|
-
/// numeric_limits<__float128> specialization.
|
19
|
-
template <>
|
20
|
-
struct numeric_limits<__float128> {
|
21
|
-
static constexpr bool is_specialized = true;
|
22
|
-
|
23
|
-
static constexpr __float128 min() noexcept { return FLT128_MIN; }
|
24
|
-
static constexpr __float128 max() noexcept { return FLT128_MAX; }
|
25
|
-
static constexpr __float128 lowest() noexcept { return -FLT128_MAX; }
|
26
|
-
|
27
|
-
static constexpr int digits = FLT128_MANT_DIG;
|
28
|
-
static constexpr int digits10 = FLT128_DIG;
|
29
|
-
static constexpr int max_digits10 = (2 + FLT128_MANT_DIG * 643L / 2136);
|
30
|
-
static constexpr bool is_signed = true;
|
31
|
-
static constexpr bool is_integer = false;
|
32
|
-
static constexpr bool is_exact = false;
|
33
|
-
static constexpr int radix = 2;
|
34
|
-
|
35
|
-
static constexpr __float128 epsilon() noexcept { return FLT128_EPSILON; }
|
36
|
-
static constexpr __float128 round_error() noexcept { return 0.5Q; }
|
37
|
-
|
38
|
-
static constexpr int min_exponent = FLT128_MIN_EXP;
|
39
|
-
static constexpr int min_exponent10 = FLT128_MIN_10_EXP;
|
40
|
-
static constexpr int max_exponent = FLT128_MAX_EXP;
|
41
|
-
static constexpr int max_exponent10 = FLT128_MAX_10_EXP;
|
42
|
-
|
43
|
-
static constexpr bool has_infinity = true;
|
44
|
-
static constexpr bool has_quiet_NaN = true;
|
45
|
-
static constexpr bool has_signaling_NaN = has_quiet_NaN;
|
46
|
-
static constexpr float_denorm_style has_denorm = denorm_present;
|
47
|
-
static constexpr bool has_denorm_loss = false;
|
48
|
-
|
49
|
-
static constexpr __float128 infinity() noexcept { return __builtin_huge_valq(); }
|
50
|
-
static constexpr __float128 quiet_NaN() noexcept { return __builtin_nanq(""); }
|
51
|
-
static constexpr __float128 signaling_NaN() noexcept { return __builtin_nansq(""); }
|
52
|
-
static constexpr __float128 denorm_min() noexcept { return FLT128_DENORM_MIN; }
|
53
|
-
|
54
|
-
static constexpr bool is_iec559 = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
|
55
|
-
static constexpr bool is_bounded = true;
|
56
|
-
static constexpr bool is_modulo = false;
|
57
|
-
|
58
|
-
static constexpr bool traps = false;
|
59
|
-
static constexpr bool tinyness_before = false;
|
60
|
-
static constexpr float_round_style round_style = round_to_nearest;
|
61
|
-
};
|
62
|
-
|
63
|
-
// From GCC's quadmath.h
|
64
|
-
|
65
|
-
inline __float128 acos(__float128 x) { return ::acosq(x); }
|
66
|
-
inline __float128 acosh(__float128 x) { return ::acoshq(x); }
|
67
|
-
inline __float128 asin(__float128 x) { return ::asinq(x); }
|
68
|
-
inline __float128 asinh(__float128 x) { return ::asinhq(x); }
|
69
|
-
inline __float128 atan(__float128 x) { return ::atanq(x); }
|
70
|
-
inline __float128 atanh(__float128 x) { return ::atanhq(x); }
|
71
|
-
inline __float128 atan2(__float128 x, __float128 y) { return ::atan2q(x, y); }
|
72
|
-
inline __float128 cbrt(__float128 x) { return ::cbrtq(x); }
|
73
|
-
inline __float128 ceil(__float128 x) { return ::ceilq(x); }
|
74
|
-
inline __float128 copysign(__float128 x, __float128 y) { return ::copysignq(x, y); }
|
75
|
-
inline __float128 cosh(__float128 x) { return ::coshq(x); }
|
76
|
-
inline __float128 cos(__float128 x) { return ::cosq(x); }
|
77
|
-
inline __float128 erf(__float128 x) { return ::erfq(x); }
|
78
|
-
inline __float128 erfc(__float128 x) { return ::erfcq(x); }
|
79
|
-
inline __float128 exp2(__float128 x) { return ::exp2q(x); }
|
80
|
-
inline __float128 exp(__float128 x) { return ::expq(x); }
|
81
|
-
inline __float128 expm1(__float128 x) { return ::expm1q(x); }
|
82
|
-
inline __float128 fabs(__float128 x) { return ::fabsq(x); }
|
83
|
-
inline __float128 fdim(__float128 x, __float128 y) { return ::fdimq(x, y); }
|
84
|
-
inline int finite(__float128 x) { return ::finiteq(x); }
|
85
|
-
inline __float128 floor(__float128 x) { return ::floorq(x); }
|
86
|
-
inline __float128 fma(__float128 x, __float128 y, __float128 z) { return ::fmaq(x, y, z); }
|
87
|
-
inline __float128 fmax(__float128 x, __float128 y) { return ::fmaxq(x, y); }
|
88
|
-
inline __float128 fmin(__float128 x, __float128 y) { return ::fminq(x, y); }
|
89
|
-
inline __float128 fmod(__float128 x, __float128 y) { return ::fmodq(x, y); }
|
90
|
-
inline __float128 frexp(__float128 x, int *y) { return ::frexpq(x, y); }
|
91
|
-
inline __float128 hypot(__float128 x, __float128 y) { return ::hypotq(x, y); }
|
92
|
-
inline int isinf(__float128 x) { return ::isinfq(x); }
|
93
|
-
inline int ilogb(__float128 x) { return ::ilogbq(x); }
|
94
|
-
inline int isfinite(__float128 x) { return ::finiteq(x); }
|
95
|
-
inline int isnan(__float128 x) { return ::isnanq(x); }
|
96
|
-
inline int issignaling(__float128 x) { return ::issignalingq(x); }
|
97
|
-
inline __float128 j0(__float128 x) { return ::j0q(x); }
|
98
|
-
inline __float128 j1(__float128 x) { return ::j1q(x); }
|
99
|
-
inline __float128 jn(int n, __float128 x) { return ::jnq(n, x); }
|
100
|
-
inline __float128 ldexp(__float128 x, int y) { return ::ldexpq(x, y); }
|
101
|
-
inline __float128 lgamma(__float128 x) { return ::lgammaq(x); }
|
102
|
-
inline long long int llrint(__float128 x) { return ::llrintq(x); }
|
103
|
-
inline long long int llround(__float128 x) { return ::llroundq(x); }
|
104
|
-
inline __float128 logb(__float128 x) { return ::logbq(x); }
|
105
|
-
inline __float128 log(__float128 x) { return ::logq(x); }
|
106
|
-
inline __float128 log10(__float128 x) { return ::log10q(x); }
|
107
|
-
inline __float128 log2(__float128 x) { return ::log2q(x); }
|
108
|
-
inline __float128 log1p(__float128 x) { return ::log1pq(x); }
|
109
|
-
inline long int lrint(__float128 x) { return ::lrintq(x); }
|
110
|
-
inline long int lround(__float128 x) { return ::lroundq(x); }
|
111
|
-
inline __float128 modf(__float128 x, __float128 *y) { return ::modfq(x, y); }
|
112
|
-
// inline __float128 nan(const char *x) { return ::nanq(x); }
|
113
|
-
inline __float128 nearbyint(__float128 x) { return ::nearbyintq(x); }
|
114
|
-
inline __float128 nextafter(__float128 x, __float128 y) { return ::nextafterq(x, y); }
|
115
|
-
inline __float128 pow(__float128 x, __float128 y) { return ::powq(x, y); }
|
116
|
-
inline __float128 remainder(__float128 x, __float128 y) { return ::remainderq(x, y); }
|
117
|
-
inline __float128 remquo(__float128 x, __float128 y, int *z) { return ::remquoq(x, y, z); }
|
118
|
-
inline __float128 rint(__float128 x) { return ::rintq(x); }
|
119
|
-
inline __float128 round(__float128 x) { return ::roundq(x); }
|
120
|
-
inline __float128 scalbln(__float128 x, long int y) { return ::scalblnq(x, y); }
|
121
|
-
inline __float128 scalbn(__float128 x, int y) { return ::scalbnq(x, y); }
|
122
|
-
inline int signbit(__float128 x) { return ::signbitq(x); }
|
123
|
-
inline void sincosq(__float128 x, __float128 *y, __float128 *z) { return ::sincosq(x, y, z); }
|
124
|
-
inline __float128 sinh(__float128 x) { return ::sinhq(x); }
|
125
|
-
inline __float128 sin(__float128 x) { return ::sinq(x); }
|
126
|
-
inline __float128 sqrt(__float128 x) { return ::sqrtq(x); }
|
127
|
-
inline __float128 tan(__float128 x) { return ::tanq(x); }
|
128
|
-
inline __float128 tanh(__float128 x) { return ::tanhq(x); }
|
129
|
-
inline __float128 tgamma(__float128 x) { return ::tgammaq(x); }
|
130
|
-
inline __float128 trunc(__float128 x) { return ::truncq(x); }
|
131
|
-
inline __float128 y0(__float128 x) { return ::y0q(x); }
|
132
|
-
inline __float128 y1(__float128 x) { return ::y1q(x); }
|
133
|
-
inline __float128 yn(int n, __float128 x) { return ::ynq(n, x); }
|
134
|
-
|
135
|
-
} // namespace std
|
136
|
-
|
137
|
-
#endif
|
@@ -1,29 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
#include <alpaqa/util/type-erasure.hpp>
|
4
|
-
#include <functional> // std::invoke
|
5
|
-
|
6
|
-
#define ALPAQA_TE_REQUIRED_METHOD(vtable, type, member) \
|
7
|
-
do { \
|
8
|
-
static_assert( \
|
9
|
-
requires { &type::member; }, \
|
10
|
-
"Missing required method '" #type "::" #member "'"); \
|
11
|
-
(vtable).member = util::type_erased_wrapped<type, &type::member>(); \
|
12
|
-
} while (0)
|
13
|
-
#define ALPAQA_TE_OPTIONAL_METHOD(vtable, type, member, instance) \
|
14
|
-
do { \
|
15
|
-
if constexpr (requires { &type::member; }) { \
|
16
|
-
using vtable_t = std::remove_cvref_t<decltype(vtable)>; \
|
17
|
-
auto assign_vtable = [&] { \
|
18
|
-
(vtable).member = \
|
19
|
-
util::type_erased_wrapped<type, &type::member, \
|
20
|
-
const vtable_t &>(); \
|
21
|
-
}; \
|
22
|
-
if constexpr (requires { &type::provides_##member; }) { \
|
23
|
-
if (std::invoke(&type::provides_##member, instance)) \
|
24
|
-
assign_vtable(); \
|
25
|
-
} else { \
|
26
|
-
assign_vtable(); \
|
27
|
-
} \
|
28
|
-
} \
|
29
|
-
} while (0)
|
@@ -1,212 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
#include <cstddef>
|
4
|
-
#include <iterator>
|
5
|
-
|
6
|
-
namespace alpaqa {
|
7
|
-
|
8
|
-
template <class IndexT = size_t>
|
9
|
-
struct CircularIndices {
|
10
|
-
using Index = IndexT;
|
11
|
-
CircularIndices(Index zerobased, Index circular)
|
12
|
-
: zerobased(zerobased), circular(circular) {}
|
13
|
-
Index zerobased;
|
14
|
-
Index circular;
|
15
|
-
};
|
16
|
-
/// @related CircularIndices
|
17
|
-
/// @note Only valid for two indices in the same range.
|
18
|
-
template <class IndexT>
|
19
|
-
bool operator==(CircularIndices<IndexT> a, CircularIndices<IndexT> b) {
|
20
|
-
return a.zerobased == b.zerobased;
|
21
|
-
}
|
22
|
-
/// @related CircularIndices
|
23
|
-
/// @note Only valid for two indices in the same range.
|
24
|
-
template <class IndexT>
|
25
|
-
bool operator!=(CircularIndices<IndexT> a, CircularIndices<IndexT> b) {
|
26
|
-
return !(a == b);
|
27
|
-
}
|
28
|
-
|
29
|
-
template <class IndexT = size_t>
|
30
|
-
struct CircularIndexIterator {
|
31
|
-
using Index = IndexT;
|
32
|
-
using Indices = CircularIndices<Index>;
|
33
|
-
|
34
|
-
CircularIndexIterator() : i{0, 0}, max{0} {}
|
35
|
-
CircularIndexIterator(Indices i, Index max) : i(i), max(max) {}
|
36
|
-
|
37
|
-
Indices i;
|
38
|
-
Index max;
|
39
|
-
|
40
|
-
using value_type = Indices;
|
41
|
-
using reference = value_type;
|
42
|
-
using difference_type = std::ptrdiff_t; // This is required but not used
|
43
|
-
using pointer = void;
|
44
|
-
using iterator_category = std::input_iterator_tag;
|
45
|
-
|
46
|
-
reference operator*() const { return i; }
|
47
|
-
CircularIndexIterator &operator++() {
|
48
|
-
assert(i.zerobased < max);
|
49
|
-
++i.zerobased;
|
50
|
-
i.circular = i.circular + 1 == max ? Index{0} : i.circular + 1;
|
51
|
-
return *this;
|
52
|
-
}
|
53
|
-
CircularIndexIterator &operator--() {
|
54
|
-
assert(i.zerobased > 0);
|
55
|
-
--i.zerobased;
|
56
|
-
i.circular = i.circular == Index{0} ? max - 1 : i.circular - 1;
|
57
|
-
return *this;
|
58
|
-
}
|
59
|
-
CircularIndexIterator operator++(int) {
|
60
|
-
auto r = *this;
|
61
|
-
++(*this);
|
62
|
-
return r;
|
63
|
-
}
|
64
|
-
CircularIndexIterator operator--(int) {
|
65
|
-
auto r = *this;
|
66
|
-
--(*this);
|
67
|
-
return r;
|
68
|
-
}
|
69
|
-
};
|
70
|
-
|
71
|
-
/// @related CircularIndexIterator
|
72
|
-
/// @note Only valid for two indices in the same range.
|
73
|
-
template <class IndexT>
|
74
|
-
bool operator==(CircularIndexIterator<IndexT> a,
|
75
|
-
CircularIndexIterator<IndexT> b) {
|
76
|
-
assert(a.max == b.max);
|
77
|
-
return a.i == b.i;
|
78
|
-
}
|
79
|
-
/// @related CircularIndexIterator
|
80
|
-
/// @note Only valid for two indices in the same range.
|
81
|
-
template <class IndexT>
|
82
|
-
bool operator!=(CircularIndexIterator<IndexT> a,
|
83
|
-
CircularIndexIterator<IndexT> b) {
|
84
|
-
return !(a == b);
|
85
|
-
}
|
86
|
-
|
87
|
-
template <class IndexT = size_t>
|
88
|
-
struct ReverseCircularIndexIterator {
|
89
|
-
using ForwardIterator = CircularIndexIterator<IndexT>;
|
90
|
-
using Index = typename ForwardIterator::Index;
|
91
|
-
using Indices = typename ForwardIterator::Indices;
|
92
|
-
|
93
|
-
ReverseCircularIndexIterator() : forwardit() {}
|
94
|
-
ReverseCircularIndexIterator(Indices i, Index max) : forwardit(i, max) {}
|
95
|
-
ReverseCircularIndexIterator(ForwardIterator forwardit)
|
96
|
-
: forwardit(forwardit) {}
|
97
|
-
|
98
|
-
ForwardIterator forwardit;
|
99
|
-
|
100
|
-
using value_type = Indices;
|
101
|
-
using reference = value_type;
|
102
|
-
using difference_type = std::ptrdiff_t; // This is required but not used
|
103
|
-
using pointer = void;
|
104
|
-
using iterator_category = std::input_iterator_tag;
|
105
|
-
|
106
|
-
reference operator*() const {
|
107
|
-
auto tmp = forwardit;
|
108
|
-
return *(--tmp);
|
109
|
-
}
|
110
|
-
ReverseCircularIndexIterator &operator++() {
|
111
|
-
--forwardit;
|
112
|
-
return *this;
|
113
|
-
}
|
114
|
-
ReverseCircularIndexIterator &operator--() {
|
115
|
-
++forwardit;
|
116
|
-
return *this;
|
117
|
-
}
|
118
|
-
ReverseCircularIndexIterator operator++(int) {
|
119
|
-
auto r = *this;
|
120
|
-
++(*this);
|
121
|
-
return r;
|
122
|
-
}
|
123
|
-
ReverseCircularIndexIterator operator--(int) {
|
124
|
-
auto r = *this;
|
125
|
-
--(*this);
|
126
|
-
return r;
|
127
|
-
}
|
128
|
-
};
|
129
|
-
|
130
|
-
/// @related ReverseCircularIndexIterator
|
131
|
-
/// @note Only valid for two indices in the same range.
|
132
|
-
template <class IndexT>
|
133
|
-
bool operator==(ReverseCircularIndexIterator<IndexT> a,
|
134
|
-
ReverseCircularIndexIterator<IndexT> b) {
|
135
|
-
return a.forwardit == b.forwardit;
|
136
|
-
}
|
137
|
-
/// @related ReverseCircularIndexIterator
|
138
|
-
/// @note Only valid for two indices in the same range.
|
139
|
-
template <class IndexT>
|
140
|
-
bool operator!=(ReverseCircularIndexIterator<IndexT> a,
|
141
|
-
ReverseCircularIndexIterator<IndexT> b) {
|
142
|
-
return !(a == b);
|
143
|
-
}
|
144
|
-
|
145
|
-
template <class IndexT>
|
146
|
-
class CircularRange {
|
147
|
-
public:
|
148
|
-
using Index = IndexT;
|
149
|
-
using Indices = CircularIndices<Index>;
|
150
|
-
|
151
|
-
CircularRange(Index size, Index idx1, Index idx2, Index max)
|
152
|
-
: size(size), idx1(idx1), idx2(idx2), max(max) {}
|
153
|
-
|
154
|
-
using const_iterator = CircularIndexIterator<Index>;
|
155
|
-
using iterator = const_iterator;
|
156
|
-
|
157
|
-
using const_reverse_iterator = ReverseCircularIndexIterator<Index>;
|
158
|
-
using reverse_iterator = const_reverse_iterator;
|
159
|
-
|
160
|
-
iterator begin() const { return {{Index{0}, idx1}, max}; }
|
161
|
-
iterator end() const { return {{size, idx2}, max}; }
|
162
|
-
const_iterator cbegin() const { return begin(); }
|
163
|
-
const_iterator cend() const { return end(); }
|
164
|
-
|
165
|
-
reverse_iterator rbegin() const { return reverse_iterator{end()}; }
|
166
|
-
reverse_iterator rend() const { return reverse_iterator{begin()}; }
|
167
|
-
const_reverse_iterator crbegin() const {
|
168
|
-
return const_reverse_iterator{end()};
|
169
|
-
}
|
170
|
-
const_reverse_iterator crend() const {
|
171
|
-
return const_reverse_iterator{begin()};
|
172
|
-
}
|
173
|
-
|
174
|
-
private:
|
175
|
-
Index size;
|
176
|
-
Index idx1, idx2;
|
177
|
-
Index max;
|
178
|
-
};
|
179
|
-
|
180
|
-
template <class IndexT>
|
181
|
-
class ReverseCircularRange {
|
182
|
-
public:
|
183
|
-
using ForwardRange = CircularRange<IndexT>;
|
184
|
-
using Index = typename ForwardRange::Index;
|
185
|
-
using Indices = typename ForwardRange::Indices;
|
186
|
-
|
187
|
-
ReverseCircularRange(const ForwardRange &forwardrange)
|
188
|
-
: forwardrange(forwardrange) {}
|
189
|
-
ReverseCircularRange(Index size, Index idx1, Index idx2, Index max)
|
190
|
-
: forwardrange(size, idx1, idx2, max) {}
|
191
|
-
|
192
|
-
using const_iterator = typename ForwardRange::const_reverse_iterator;
|
193
|
-
using iterator = typename ForwardRange::reverse_iterator;
|
194
|
-
|
195
|
-
using const_reverse_iterator = typename ForwardRange::const_iterator;
|
196
|
-
using reverse_iterator = typename ForwardRange::iterator;
|
197
|
-
|
198
|
-
iterator begin() const { return forwardrange.rbegin(); }
|
199
|
-
iterator end() const { return forwardrange.rend(); }
|
200
|
-
const_iterator cbegin() const { return forwardrange.crbegin(); }
|
201
|
-
const_iterator cend() const { return forwardrange.crend(); }
|
202
|
-
|
203
|
-
reverse_iterator rbegin() const { return forwardrange.begin(); }
|
204
|
-
reverse_iterator rend() const { return forwardrange.end(); }
|
205
|
-
const_reverse_iterator crbegin() const { return forwardrange.cbegin(); }
|
206
|
-
const_reverse_iterator crend() const { return forwardrange.cend(); }
|
207
|
-
|
208
|
-
private:
|
209
|
-
ForwardRange forwardrange;
|
210
|
-
};
|
211
|
-
|
212
|
-
} // namespace alpaqa
|
@@ -1,129 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
#include <algorithm>
|
4
|
-
#include <functional>
|
5
|
-
#include <iterator>
|
6
|
-
#include <ranges>
|
7
|
-
|
8
|
-
namespace alpaqa::util {
|
9
|
-
|
10
|
-
template <std::ranges::input_range R1, std::ranges::input_range R2,
|
11
|
-
class Comp = std::ranges::less, class Proj1 = std::identity,
|
12
|
-
class Proj2 = std::identity>
|
13
|
-
requires(std::ranges::view<R1> && std::ranges::view<R2>)
|
14
|
-
struct set_intersection_iterable
|
15
|
-
: std::ranges::view_interface<
|
16
|
-
set_intersection_iterable<R1, R2, Comp, Proj1, Proj2>> {
|
17
|
-
|
18
|
-
R1 range1;
|
19
|
-
R2 range2;
|
20
|
-
Comp comp;
|
21
|
-
Proj1 proj1;
|
22
|
-
Proj2 proj2;
|
23
|
-
|
24
|
-
// P2325R3: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2325r3.html
|
25
|
-
set_intersection_iterable() = default;
|
26
|
-
set_intersection_iterable(R1 &&range1, R2 &&range2, Comp &&comp,
|
27
|
-
Proj1 &&proj1, Proj2 &&proj2)
|
28
|
-
: range1{std::forward<R1>(range1)}, range2{std::forward<R2>(range2)},
|
29
|
-
comp{std::forward<Comp>(comp)}, proj1{std::forward<Proj1>(proj1)},
|
30
|
-
proj2{std::forward<Proj2>(proj2)} {}
|
31
|
-
|
32
|
-
struct sentinel_t {};
|
33
|
-
template <std::input_iterator I1, std::sentinel_for<I1> S1,
|
34
|
-
std::input_iterator I2, std::sentinel_for<I2> S2>
|
35
|
-
struct iter_t {
|
36
|
-
// P2325R3: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2325r3.html
|
37
|
-
iter_t() = default;
|
38
|
-
iter_t(I1 first1, S1 last1, I2 first2, S2 last2, Comp comp, Proj1 proj1,
|
39
|
-
Proj2 proj2)
|
40
|
-
: first1{std::move(first1)}, last1{std::move(last1)},
|
41
|
-
first2{std::move(first2)}, last2{std::move(last2)},
|
42
|
-
comp{std::move(comp)}, proj1{std::move(proj1)}, proj2{std::move(
|
43
|
-
proj2)} {}
|
44
|
-
I1 first1;
|
45
|
-
S1 last1;
|
46
|
-
I2 first2;
|
47
|
-
S2 last2;
|
48
|
-
Comp comp;
|
49
|
-
Proj1 proj1;
|
50
|
-
Proj2 proj2;
|
51
|
-
|
52
|
-
using difference_type = std::ptrdiff_t; // TODO
|
53
|
-
using value_type = std::tuple<decltype(*first1), decltype(*first2)>;
|
54
|
-
|
55
|
-
bool operator!=(sentinel_t) const {
|
56
|
-
return first1 != last1 && first2 != last2;
|
57
|
-
}
|
58
|
-
bool operator==(sentinel_t s) const { return !(*this != s); }
|
59
|
-
// TODO: For Clang bug
|
60
|
-
friend bool operator!=(sentinel_t s, const iter_t &i) { return i != s; }
|
61
|
-
friend bool operator==(sentinel_t s, const iter_t &i) { return i == s; }
|
62
|
-
|
63
|
-
iter_t &operator++() {
|
64
|
-
++first1, ++first2;
|
65
|
-
advance();
|
66
|
-
return *this;
|
67
|
-
}
|
68
|
-
iter_t operator++(int) {
|
69
|
-
auto tmp = *this;
|
70
|
-
++*this;
|
71
|
-
return tmp;
|
72
|
-
}
|
73
|
-
value_type operator*() const { return {*first1, *first2}; }
|
74
|
-
void advance() {
|
75
|
-
while (*this != sentinel_t{}) {
|
76
|
-
if (std::invoke(comp, std::invoke(proj1, *first1),
|
77
|
-
std::invoke(proj2, *first2)))
|
78
|
-
++first1;
|
79
|
-
else if (std::invoke(comp, std::invoke(proj2, *first2),
|
80
|
-
std::invoke(proj1, *first1)))
|
81
|
-
++first2;
|
82
|
-
else
|
83
|
-
break;
|
84
|
-
}
|
85
|
-
}
|
86
|
-
};
|
87
|
-
|
88
|
-
private:
|
89
|
-
template <class I1, class S1, class I2, class S2>
|
90
|
-
iter_t<I1, S1, I2, S2> iter(I1 first1, S1 last1, I2 first2,
|
91
|
-
S2 last2) const {
|
92
|
-
return {first1, last1, first2, last2, comp, proj1, proj2};
|
93
|
-
}
|
94
|
-
|
95
|
-
public:
|
96
|
-
auto begin() const -> std::input_or_output_iterator auto{
|
97
|
-
auto it = iter(std::ranges::begin(range1), std::ranges::end(range1),
|
98
|
-
std::ranges::begin(range2), std::ranges::end(range2));
|
99
|
-
it.advance();
|
100
|
-
return it;
|
101
|
-
}
|
102
|
-
auto end() const
|
103
|
-
// -> std::sentinel_for< decltype(std::declval<set_intersection_iterable>().begin())> auto
|
104
|
-
{
|
105
|
-
return sentinel_t{};
|
106
|
-
}
|
107
|
-
};
|
108
|
-
|
109
|
-
template <std::ranges::viewable_range R1, std::ranges::viewable_range R2,
|
110
|
-
class Comp = std::ranges::less, class Proj1 = std::identity,
|
111
|
-
class Proj2 = std::identity>
|
112
|
-
set_intersection_iterable<std::ranges::views::all_t<R1>,
|
113
|
-
std::ranges::views::all_t<R2>, Comp, Proj1, Proj2>
|
114
|
-
iter_set_intersection(R1 &&r1, R2 &&r2, Comp comp = {}, Proj1 proj1 = {},
|
115
|
-
Proj2 proj2 = {}) {
|
116
|
-
static_assert(
|
117
|
-
requires(set_intersection_iterable<std::ranges::views::all_t<R1>,
|
118
|
-
std::ranges::views::all_t<R2>, Comp,
|
119
|
-
Proj1, Proj2>
|
120
|
-
s) {
|
121
|
-
{ s.end() } -> std::sentinel_for<decltype(s.begin())>;
|
122
|
-
});
|
123
|
-
return {
|
124
|
-
std::forward<R1>(r1), std::forward<R2>(r2), std::move(comp),
|
125
|
-
std::move(proj1), std::move(proj2),
|
126
|
-
};
|
127
|
-
}
|
128
|
-
|
129
|
-
} // namespace alpaqa::util
|